Обычно на моем 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
?
Да, прикрепление более надежно, чем 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
имеет две ошибки:
apt-mark
полностью (см. мою ошибку 1747189 в панели запуска).apt-mark
потеряны после нажатия на Actions-> иски на рассмотрении Cancel (см. мою ошибку 1747191 в панели запуска).но в 18.04 LTS aptitude
не имейте таких ошибок, это является большим.
Таким образом, мое заключение следующее: apt-mark
применимо, только если Вы устанавливаете/удаляете/обновляете программное обеспечение только с apt-get
, иначе необходимо использовать прикрепление (т.е. /etc/apt/preferences.d/
), это более надежно и просто.
Примечание: предотвратить приоритет контакта установки пакета должно быть отрицательным:
P <0:
препятствует тому, чтобы версия была установлена
например, Pin-Priority: -10
.