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 и используемые контексты.