apticron
прекратил присылать список обновлений, вместо которых присылает сообщение E: Packages were downgraded and -y was used without --allow-downgrades.
Симптоматика проблемы
Регулярные письма от apticron без списка обновлений загадочного содержания:
From: root@example.com (Cron Daemon) To: root@example.com Subject: Cron <root@example> if test -x /usr/sbin/apticron; then /usr/sbin/apticron --cron; else true; fi Date: Tue, 23 Mar 2021 00:51:13 +0200 E: Packages were downgraded and -y was used without --allow-downgrades.
Что в переводе на человеческий означает:
Пакеты были переведены на более раннюю версию, и -y использовался без --allow-downgrades.
Какие "Пакеты были переведены на более раннюю версию"? Кем "-y использовался" и для чего? Почему "без --allow-downgrades"?
Ответы далее...
Причинно-следственная связь
Сообщение "E: Packages were downgraded and -y was used without --allow-downgrades." присылаемое apticron является результатом симуляции apt-get dist-upgrade
выполняемой скриптом /usr/sbin/apticron
$ less /usr/sbin/apticron ... # get the list of packages which are pending an upgrade PKGNAMES=`/usr/bin/apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | \ /bin/grep ^Inst | /usr/bin/cut -d\ -f2 | /usr/bin/sort`
Видим, что apticron выполняет "apt-get -q -y ... -s dist-upgrade
" без "--allow-downgrades
".
$ man apt-get ... -q, --quiet Quiet; produces output suitable for logging, omitting progress indicators. More qs will produce more quiet up to a maximum of 2. You can also use -q=# to set the quiet level, overriding the configuration file. Note that quiet level 2 implies -y; you should never use -qq without a no-action modifier such as -d, --print-uris or -s as APT may decide to do something you did not expect. Configuration Item: quiet. -s, --simulate, --just-print, --dry-run, --recon, --no-act No action; perform a simulation of events that would occur based on the current system state but do not actually change the system. Locking will be disabled (Debug::NoLocking) so the system state could change while apt-get is running. Simulations can also be executed by non-root users which might not have read access to all apt configuration distorting the simulation. A notice expressing this warning is also shown by default for non-root users (APT::Get::Show-User-Simulation-Note). Configuration Item: APT::Get::Simulate. -y, --yes, --assume-yes Automatic yes to prompts; assume "yes" as answer to all prompts and run non-interactively. If an undesirable situation, such as changing a held package, trying to install an unauthenticated package or removing an essential package occurs then apt-get will abort. Configuration Item: APT::Get::Assume-Yes. ... --allow-downgrades This is a dangerous option that will cause apt to continue without prompting if it is doing downgrades. It should not be used except in very special situations. Using it can potentially destroy your system! Configuration Item: APT::Get::allow-downgrades. Introduced in APT 1.1.
-q
- сделать всё по-тихому (по примеру Верховной Зрады принявшей ночью закон о продаже земли)-s
- нихера не делать, а только имитировать бурную деятельность (как 30-ть лет в низалежнай)-y
- соглашаться на всё (принимать любые условия МВФ, гнобить население тарифами, закрывать и продавать предприятия)--allow-downgrades
- разрешить вернуть всё взад
В данном случае apticron не использовал опцию "--разрешить-вернуть-всё-взад
" потому, как она "вери дэнжерос"!
Дополнительную справку по пакету и его конфигурации можно найти по адресам:
$ man apticron $ sudo vi /etc/apticron/apticron.conf $ less /etc/apticron/README Any settings in a named 'apticron.conf' file in this directory will override the default apticron options. You may want to copy the original '/usr/lib/apticron/apticron.conf' in here and use it as a base. *Do not* edit the original /usr/lib/apticron/apticron.conf, or you will lose your local settings during the next apticron upgrade.
- Debian -- Подробная информация о пакете apticron в buster
- Debian -- Список файлов пакета apticron/buster/all
Решение
Для решения проблемы нужно отрыть консоль и вручную выполнить:
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Ситуация лишний раз подтверждает правильность исключительно ручного обновления системы вместо автоматического "apt-get dist-upgrade -q -y --allow-downgrades
".
При ручном обновлении за всем не уследишь, нет-нет да и слетит какой-то важный пакет при выполнении apt-get autoremove
, но при этом есть возможность контролировать процесс автоудаления и составить список для повторной установки нужных пакетов вручную.
При автоматическом обновлении, всегда есть риск образования такого "глюкодрома", который может стать причиной полнейшего и непоправимого "лохдауна" системы.