У меня есть сервер под управлением Debian Stretch, на котором мне нужно установить PHP 7.1, который недоступен в стандартных репозиториях Stretch, но в Testing aka Buster. Я попытался использовать apt pinning для добавления репозиториев Buster с более низким приоритетом, поэтому пакеты от Buster устанавливаются только тогда, когда я их укажу.
Я добавил следующее в (иначе нетронутый) / etc / apt / sources .list
:
# buster to get php 7.1 for nextcloud
deb http://ftp.de.debian.org/debian/ testing main
deb-src http://ftp.de.debian.org/debian/ testing main
deb http://security.debian.org/debian-security testing/updates main
deb-src http://security.debian.org/debian-security testing/updates main
И я создал файл с именем 01-buster
в (иначе пустом) каталоге /etc/apt/preferences.d
со следующим содержимым :
Package: *
Pin: release a=stable
Pin-Priority: 700
Package: *
Pin: release a=testing
Pin-Priority: 650
Теперь, когда я запускаю apt update
, я получаю следующий результат:
Hit:1 http://security.debian.org/debian-security stretch/updates InRelease
Ign:2 http://ftp.de.debian.org/debian stretch InRelease
Hit:3 http://security.debian.org/debian-security testing/updates InRelease
Hit:4 http://ftp.de.debian.org/debian testing InRelease
Hit:5 http://ftp.de.debian.org/debian stretch-updates InRelease
Hit:6 http://ftp.de.debian.org/debian stretch Release
Reading package lists... Done
E: Invalid record in the preferences file /etc/apt/preferences.d/01-buster, no Package header
Другие команды, такие как apt search php
или политика apt
вернуть ту же ошибку.
Я на 95% уверен, что в прошлом успешно выполнял правильное закрепление с точно такими же настройками. Кто-нибудь знает, что здесь происходит?
Попробуйте удалить пустую строку между Package: и Pin: :
Package: *
Pin: release a=stable
Pin-Priority: 700
Package: *
Pin: release a=testing
Pin-Priority: 650