Обновление пакета отложено: программа запущена
Некоторые механизмы пакетов откладывают обновление, пока программа работает. Для служб, работающих постоянно, это означает, что обновление не применится никогда, а в журнале будет копиться одно и то же сообщение об отсрочке.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Служба работает постоянно и обновление всё время откладывается
Механизм ждёт остановки программы. Постоянно работающая служба этого момента не даёт.
-
Обновление применяется неожиданно и перезапускает службу
Когда отсрочка истекает, обновление применяется принудительно и перезапускает службу в непредсказуемый момент.
-
Пакетов из разных механизмов несколько и они конфликтуют
Одна программа, установленная двумя способами, даёт два набора unit-файлов и путаницу с версиями.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Какие обновления ждут применения.
snap refresh --list 2>/dev/nullСообщения об отсрочке обновлений.
journalctl -u snapd -n 30 --no-pager | grep -iE "inhibit|refresh"Расписание автоматических обновлений.
snap refresh --time 2>/dev/nullРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Механизм ждёт остановки программы. Постоянно работающая служба этого момента не даёт.
- Как проверить
-
Посмотрите отложенные обновления и сообщения.
snap refresh --list 2>/dev/null | head journalctl -u snapd -n 20 --no-pager | grep -iE "inhibit|refresh"
- Как исправить
- Останавливайте службу на время обновления в запланированное окно. Иначе версия так и останется прежней.
- Почему происходит
- Когда отсрочка истекает, обновление применяется принудительно и перезапускает службу в непредсказуемый момент.
- Как проверить
-
Посмотрите расписание обновлений.
snap refresh --time 2>/dev/null systemctl list-timers "snap*" --all --no-pager 2>/dev/null | head
- Как исправить
- Задайте окно обновлений на удобное время или удерживайте версию до запланированного обслуживания. Автоматический перезапуск боевой службы в рабочее время лучше исключить.
- Почему происходит
- Одна программа, установленная двумя способами, даёт два набора unit-файлов и путаницу с версиями.
- Как проверить
-
Посмотрите, откуда установлена программа.
command -v myapp; snap list 2>/dev/null | grep -i myapp; dpkg -l | grep -i myapp 2>/dev/null | head -3
- Как исправить
- Оставьте один способ установки. Два набора unit-файлов для одной программы — источник трудноуловимых проблем.
Пример вывода
Обновление откладывается из-за работающей службы. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
snapd[11500]: api.go:1234: Snap "myapp" has running apps (myapp-daemon), pids: [11510]
snapd[11500]: refresh inhibited for snap "myapp": snap has running apps
systemd[1]: snap.myapp.daemon.service: Consumed 2h 14min CPU time.
Связанные ошибки
- Обновление не идёт: файл блокировки менеджера пакетов занят Установка отказывает: другой процесс держит блокировку. Чаще всего это служба автоматических обновлений.
- Приложение не перечитывает настройки по сигналу Перезагрузка настроек не применяет изменения: приложение не поддерживает сигнал или читает файл только при старте.
- Параметр не работает: он появился в более новой версии systemd Настройка из документации не действует, потому что версия systemd на сервере старше. Как проверить версию и найти замену.
- PostgreSQL: локаль кластера не совпадает с системой Кластер не запускается или сортировка ломается после обновления системы: несовпадение версии библиотеки локалей.
- status=5/NOTINSTALLED и status=6/NOTCONFIGURED в systemd Коды 5 и 6 по соглашению LSB: программа не установлена или не настроена. Что это значит на практике и как проверить.
- Базы антивируса не обновляются, служба не стартует Служба проверки не запускается без баз, а обновление не проходит: нет прав, нет места или не настроен источник.
- Служба включается или отключается сама после установки пакета Наборы предустановок решают, включать ли службу при установке. Как посмотреть и переопределить.
- Служба падает после обновления ядра: модуль не собран Служба зависит от модуля ядра, который не собран под новую версию. Разбор для сторонних драйверов и виртуализации.
Источники
- Документация snapd: обновления
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено отложенным обновлением при работающей службе.