#Что происходит и когда это важно
В выводе apt full-upgrade пакет остаётся прежней версии, помечен «kept back», «held» или просто отсутствует среди обновляемых.
#Возможные причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Установлена блокировка holdАдминистратор зафиксировал версию пакета. | Имя есть в apt-mark showhold. | Выяснить причину и снять блокировку только по согласованию. |
| Конфликт зависимостейДля новой версии требуются дополнительные изменения пакетов. | Предварительный расчёт показывает удаление или замену других компонентов. | Не подтверждать опасный план, найти совместимые версии. |
| Неверный приоритет или источникПодключён иной выпуск/задана политика APT. | apt-cache policy показывает Candidate равным старому пакету. | Проверить файлы preferences и sources, не смешивая выпуски. |
#Пошаговая диагностика и исправление
- Найдите точное имя пакетаОткройте Терминал. Выполните
sudo apt updateдля обновления списка версий; затемapt list --upgradableдля просмотра доступных обновлений. Если источники возвращают ошибки подписи, сначала исправьте их. Не выполняйте установку до выяснения причины удержания. - Выясните, есть ли явный запретВыполните
apt-mark showhold— команда выводит имена закреплённых пакетов. Если нужное имя встречается, узнайте, кто установил блокировку (например, программа администрирования или критический драйвер). Отсутствие имени означает, что причина может быть другой. - Проверьте установленную и доступную версииВведите
apt-cache policy ИМЯ_ПАКЕТА, заменив ИМЯ_ПАКЕТА настоящим именем из списка, без пробелов. Сравните Installed, Candidate и адрес репозитория. Если Candidate отсутствует, пакет может быть удалён из текущего выпуска или не подходить по архитектуре — не добавляйте наугад чужие репозитории. - Посмотрите план обновления без примененияПопросите администратора выполнить
sudo apt-get -s dist-upgrade; опция-sрассчитывает изменение и ничего не устанавливает. Внимательно прочитайте строки Remv, Inst и Conf. Если APT собирается удалить важный пакет, драйвер или ядро, не подтверждайте реальное обновление. - Снимайте hold только после согласованияЕсли удержание явно устарело и известны последствия, администратор может выполнить
sudo apt-mark unhold ИМЯ_ПАКЕТА, указав точное имя; сразу запишите старое состояние для откатаsudo apt-mark hold ИМЯ_ПАКЕТА. На обслуживаемом сервере лучше сохранять запрет до окна обслуживания. После снятия повторно просмотрите предварительный план обновления. - Проверьте результат и причины сохраняющегося удержанияСнова выполните
apt-cache policy ИМЯ_ПАКЕТА,apt-mark showhold, затем предварительный расчёт. Если кандидат есть, но обновление невозможно, выясните конфликт пакетов по показанным зависимостям, не применяя--force-*и не удаляя критические компоненты.
#Команды из инструкции с пояснениями
sudo apt updateapt-mark showholdapt list --upgradablesudo apt-get -s dist-upgrade#Как проверить результат
После согласованного обновления apt-cache policy показывает Installed на ожидаемой версии и больше нет непредвиденных удалений зависимостей.
#Если проблема не устранена
Если Candidate устарел или конфликтуют зависимости, передайте администратору вывод apt-cache policy, apt-mark showhold и предварительного расчёта; не переключайте весь Debian на testing/unstable ради одного пакета.