Есть ли в инфраструктуре пакетов Debian / Ubuntu какой-либо способ маркировки пакетов, чтобы они никогда не удалялись, независимо от закрепления других пакетов?
Моя проблема в том, что иногда пакеты устанавливаются Puppet конечно, из нестандартных репозиториев) вызывать удаление других пакетов, в частности openssh- {server, client}.
То, как это происходит, заключается в том, что пакеты A и B зависят от разных версий пакета C. Если A установлен и один просит установить B, то версия C изменится. Новая версия C несовместима с A, поэтому A удаляется.
Самое смешное, что затем процесс переворачивается, поскольку при следующем запуске Puppet замечает, что A не установлен, и пытается установить его.
Итак, в общем, я хочу убедиться, что A никогда не будет удален, что помешает установке B. Это будет сообщено как ошибка, и я узнаю о проблеме.
Если кому-то все равно, Puppet использует следующую команду для установки пакетов:
/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install <package>
Это, вероятно, может быть решено путем добавления этого к apt.conf [.d]:
Aptitude::Always-Use-Safe-Resolver "true";
И к site.pp в кукольном:
Package { provider => 'aptitude' }
проверено это должным образом все же.
Вам необходимо «держать» пакеты так, чтобы apt-get upgrade
никогда не удалял их как часть обновления до более новой версии.
echo "package-name hold" | sudo dpkg --set-selections
Однако, обратите внимание, что явное выполнение apt-get install package-name
БУДЕТ отменять удержание, в то время как apt-get remove package-name
БУДЕТ удалить его.
Если вы прикрепите его к определенной версии с приоритетом 1001 или выше, даже apt-get install
НЕ обновит его, но его все равно можно удалить.