upgrade hold


upgrade hold — возможность предотвратить обновление какого-либо системного пакета при выполнении apt-get upgrade.



apt-get update && apt-get upgrade берет информацию из всех подключенных репозиториев, затем обновляет все пакеты, обновление которых возможно до максимальной доступной версии.



upgrade hold — запрет обновления пакетов


Обновления выполнять периодически нужно потому, что разработчики закрывают уязвимости предыдущих версий ПО. Тем не менее бывают ситуации когда обновление нужно предотвратить.

Например, если в конфигурацию пакета внесены значительные изменения, которые могут быть затерты.



Самая часто встречающаяся ситуация — на сервере используется Nginx, и его конфигурация была изменена, т.е. изначально взяты исходные коды, собран какой-то дополнительный модуль, затем подключен при конфигурации. Nginx в этом случае перестанет работать так, как ожидается, если версию пакета обновить.

В таких ситуациях нужен upgrade hold или «заморозка версии», запрет на уровне системы на обновление определенного пакета.



'Холдить' пакет в Debian подобных системах можно используя dpkg и apt. Все команды выполняются от имени root или с sudo



Hold в dpkg


Запретить автоматическое обновление:

echo "ИМЯ-ПАКЕТА hold" | dpkg --set-selections



Снять блокировку и разрешить обновление:

echo "ИМЯ-ПАКЕТА install" | dpkg --set-selections



Вывести информацию по всем пакетам:

dpkg --get-selections



Команду можно использовать чтобы сформировать список всех пакетов, если нужно запретить обновлять все.



Вывод можно отсортировать и получить данные по, например, Nginx:

dpkg --get-selections | grep "Nginx"



 Hold в apt


Тех же результатов можно добиться используя менеджер пакетов apt.


Запретить автоматическое обновление:

apt-mark hold ИМЯ-ПАКЕТА



Снять блокировку и разрешить обновление:

apt-mark unhold ИМЯ-ПАКЕТА



Когда hold устанавливается для Nginx — причина обычно в том, что пакет пересобрани и для него добавлен какой-то функционал.

Читайте про структуру конфигурационных файлов Nginx и используемые контексты.

Сказать спасибо