Apt-Preferences не принимает имя пакета

У меня есть два репозитория с одним пакетом "libtidy-" dev ":

$ apt-cache policy libtidy-dev

libtidy-dev:
  Installed: 20091223cvs-1.2ubuntu1.1
  Candidate:   1:5.2.0-1+deb.sury.org~trusty+1
  Фиксатор пакета: 1:5.2.0-1+deb.sury.org~trusty+1
  Version table:
     1:5.2.0-1+deb.sury.org~trusty+1 400
        500 http://ppa.launchpad.net/ondrej/php/ubuntu/ trusty/main amd64 Packages
 *** 20091223cvs-1.2ubuntu1.1 400
        500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
        100 /var/lib/dpkg/status
     20091223cvs-1.2ubuntu1 400
        500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

Я хочу установить приоритет пакета "libtidy-dev" репозитория "ppa: ondrey / php" равным 400. Поэтому я создал /etc/apt/preferences.d/libtidy-dev.pref с таким содержимым:

Package: libtidy-dev
Pin: release o=LP-PPA-ondrej-php
Pin-Priority: 400

Но это не работает. Если я заменю первую строку

Package: *
Pin: release o=LP-PPA-ondrej-php
Pin-Priority: 400

, она будет работать, но для всех пакетов из этого репо. Мне не нужно снижать приоритет для всех пакетов, я хочу сделать это только для libtidy-dev. Поэтому я попробовал другой способ. Я написал в pref-файл следующее:

Package: libtidy-dev
Pin: origin archive.ubuntu.com
Pin-Priority: 990

Package: libtidy-dev
Pin: origin security.ubuntu.com
Pin-Priority: 990

Этот конфиг делает то же самое. Если в первой строке указано имя пакета, он не работает, но если я укажу звездочку вместо имени пакета, он будет работать, но для всех пакетов этих репозиториев. Что я делаю не так? Как установить приоритет для одного пакета в одном репозитории?

1
задан 11 January 2017 в 22:38
1 ответ

На основании вывода apt-cache policy libtidy-dev, ваша конфигурация для определения приоритета libtidy-dev действительно применялась: 400 указана рядом с номером версии.

Например, берем Ubuntu 16. 04 Ксениальная система с конфигурацией по умолчанию и иллюстрируемая appstream, так как различные версии этого пакета доступны в архивах xenial и xenial-backports (которые имеют различные приоритеты по умолчанию):

$ apt-cache policy appstream
appstream:
  Installed: (none)
  Candidate: 0.9.4-1ubuntu3
  Version table:
     0.10.6-1~ubuntu16.04.2 100
        100 http://de.archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages
     0.9.4-1ubuntu3 500
        500 http://de.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
     0.9.4-1 500
        500 http://de.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

Добавление следующего файла:

$ cat /etc/apt/preferences.d/appstream
Package: appstream
Pin: release a=xenial-backports
Pin-Priority: 500

Результат изменения выхода:

$ apt-cache policy appstream
appstream:
  Installed: (none)
  Candidate: 0.10.6-1~ubuntu16.04.2
  Version table:
     0.10.6-1~ubuntu16.04.2 500
        100 http://de.archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages
     0.9.4-1ubuntu3 500
        500 http://de.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
     0.9.4-1 500
        500 http://de.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

Также можно запустить политику apt-cache без указания имени пакета, которая в конце вывода перечислит все пинкированные пакеты:

$ apt-cache policy
[...]
Pinned packages:
     appstream -> 0.10.6-1~ubuntu16.04.2 with priority 500

Путаница возникает из-за того, что пинкирование всех пакетов шаблоном catch-all glob изменяет приоритет, перечисленный рядом с архивом, что проще обнаружить, чем тот, который находится рядом с версией пакета:

$ cat /etc/apt/preferences.d/appstream
Package: *
Pin: release a=xenial-backports
Pin-Priority: 500
$ apt-cache policy appstream
appstream:
  Installed: (none)
  Candidate: 0.10.6-1~ubuntu16.04.2
  Version table:
     0.10.6-1~ubuntu16.04.2 500
        500 http://de.archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages
     0.9.4-1ubuntu3 500
        500 http://de.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
     0.9.4-1 500
        500 http://de.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
0
ответ дан 4 December 2019 в 05:23

Теги

Похожие вопросы