Что более надежно - способная метка или контакт APT (/etc/apt/preferences.d/pin) для блокировки версии?

Обычно на моем LTS Ubuntu 16.04, я блокирую версии пакета с функциональностью контакта APT.

Например, если я хочу прикрепить meld для управления версиями 1.5.3-1ubuntu1, я создаю следующий файл контакта:

cat <<EOF | sudo tee /etc/apt/preferences.d/pin-meld
Package: meld
Pin: version 1.5.3-1ubuntu1
Pin-Priority: 1337
EOF

Этот файл применяет настройки в масштабе всей системы: apt, apt-get, aptitude и инструменты GUI такой как synaptic и muon отношения это.

Я знаю другой механизм - apt-mark. Давайте примем. Моя начальная точка - я вручную установил meld_1.5.3-1ubuntu1, его контакт удален.

$ apt-mark showhold
$ apt-cache policy meld 
meld:
  Installed: 1.5.3-1ubuntu1
  Candidate: 3.14.2-1
  Version table:
     3.14.2-1 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
 *** 1.5.3-1ubuntu1 100
        100 /var/lib/dpkg/status

Затем я держу установленную версию.

$ sudo apt-mark hold meld
meld set on hold.

$ dpkg -l | grep meld
hi  meld                                          1.5.3-1ubuntu1                               all          graphical tool to diff and merge files

Метка APT показывает, что это в ожидании. Но apt-cache policy meld не имейте никаких изменений

$ apt-cache policy meld 
meld:
  Installed: 1.5.3-1ubuntu1
  Candidate: 3.14.2-1
  Version table:
     3.14.2-1 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
 *** 1.5.3-1ubuntu1 100
        100 /var/lib/dpkg/status

apt-get upgrade отчеты это meld воздержан:

$ sudo apt-get upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  meld
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Но если я запускаюсь aptitude в интерактивном режиме я имею meld в обновляемых пакетах:

Actions  Undo  Package  Resolver  Search  Options  Views  Help
C-T: Menu  ?: Help  q: Quit  u: Update  g: Preview/Download/Install/Remove Pkgs
aptitude 0.7.4
--\ Upgradable Packages (1)
  --\ gnome - The GNOME Desktop Environment (1)
    --\ universe - Unsupported Free Software. (1)                                                                                                    
ih    meld    1.5.3-1ubuntu1 3.14.2-1      

и если я случайно выберу Действия-> иски на рассмотрении Отмены, то хранение будет удалено.

Поскольку далеко я могу понять synaptic игнорирует apt-mark маркировки, его функциональность Версии Блокировки работает по-другому.
meld перечислен здесь как Установленный (обновляемый). Mark вся кнопка обновлений не выбирает его автоматически, но пакет, может быть случайно обновлен Mark для Обновления.

Мюонные работы тем же способом с пакетами, сохраненными apt-mark. Но что интересно его файл контакта записей опции Lock at Current Version /etc/apt/preferences.d/meld.

Я, понимают правильно, что контакт APT более надежен, чем apt-mark?

7
задан 3 February 2018 в 13:51

1 ответ

Да, прикрепление более надежно, чем apt-mark.

Что я обнаружил:

  • прошлые 12-14 лет Синаптическое использование его собственный файл прикрепления (/var/lib/synaptic/preferences) - видят ошибку 42178 на панели запуска. Для в масштабе всей системы можно хотеть установить символьную ссылку между /etc и Синаптический

    sudo ln -s /etc/apt/preferences.d/synaptic /var/lib/synaptic/preferences
    

    таким образом, это - обходное решение, привязыванию Синаптических версий не рекомендуют метод (этот файл не читает apt-get и aptitude).

  • Мюон использует файлы контакта в масштабе всей системы на приложение в /etc/apt/preferences.d.

  • aptitude имеет две ошибки:

    1. на 14.04 LTS это не уважает apt-mark полностью (см. мою ошибку 1747189 в панели запуска).
    2. на 16.04 LTS содержит, которые были установлены apt-mark потеряны после нажатия на Actions-> иски на рассмотрении Cancel (см. мою ошибку 1747191 в панели запуска).

    но в 18.04 LTS aptitude не имейте таких ошибок, это является большим.

Таким образом, мое заключение следующее: apt-mark применимо, только если Вы устанавливаете/удаляете/обновляете программное обеспечение только с apt-get, иначе необходимо использовать прикрепление (т.е. /etc/apt/preferences.d/), это более надежно и просто.


Примечание: предотвратить приоритет контакта установки пакета должно быть отрицательным:

P <0:
препятствует тому, чтобы версия была установлена

например, Pin-Priority: -10.

5
ответ дан 23 November 2019 в 06:43

Другие вопросы по тегам:

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