Я использую сценарий оболочки для держания одного в курсе из моих серверов с последними пакетами, сценарий, работал каждые 3 часа заданием крона и затем посылает результат по электронной почте мне.
Вот сценарий:
#!/bin/sh
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DATE=`date +%F_%H:%M`
DOY=`date +%j`
FILENAME=$DATE"_Upgrade_results.log"
FILENAME=${FILENAME// /_}
FILEPATH="/Custom/logs/upgrade/$FILENAME"
apt-key update
apt-get update
apt-get dist-upgrade -y >"$FILEPATH"
#Mailing section removed to prevent exposing api keys. (I'm using mailgun)
Иногда я получаю это в своем электронном письме:
Reading package lists...
Building dependency tree...
Reading state information...
The following package was automatically installed and is no longer required:
python-support
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
mysql-client-5.5 mysql-server-5.5 mysql-server-core-5.5 The following NEW packages will be installed:
libseccomp2 mysql-client-5.6 mysql-client-core-5.6 mysql-server-5.6
mysql-server-core-5.6 python-funcsigs python-pbr The following packages have been kept back:
rsyslog
The following packages will be upgraded:
e2fslibs e2fsprogs ifupdown libsystemd0 libudev1 manpages mysql-common
mysql-server python-mock python-ndg-httpsclient python-requests python-six
python-urllib3 systemd systemd-sysv udev
16 upgraded, 7 newly installed, 3 to remove and 1 not upgraded.
Need to get 26.9 MB/27.1 MB of archives.
After this operation, 59.2 MB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
e2fslibs e2fsprogs mysql-server mysql-client-core-5.6 mysql-common
mysql-client-5.6 mysql-server-core-5.6 mysql-server-5.6 libseccomp2
libsystemd0 libudev1 udev systemd ifupdown systemd-sysv manpages
python-funcsigs python-ndg-httpsclient python-six python-pbr python-urllib3
python-requests python-mock
В следующий раз выполнения сценария, вывод является чистым:
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Проблема состоит в том, что я получаю эту часть снова и снова и снова в различные дни:
The following packages will be upgraded:
e2fslibs e2fsprogs ifupdown libsystemd0 libudev1 manpages mysql-common
mysql-server python-mock python-ndg-httpsclient python-requests python-six
python-urllib3 systemd systemd-sysv udev
16 upgraded, 7 newly installed, 3 to remove and 1 not upgraded.
Need to get 26.9 MB/27.1 MB of archives.
After this operation, 59.2 MB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
e2fslibs e2fsprogs mysql-server mysql-client-core-5.6 mysql-common
mysql-client-5.6 mysql-server-core-5.6 mysql-server-5.6 libseccomp2
libsystemd0 libudev1 udev systemd ifupdown systemd-sysv manpages
python-funcsigs python-ndg-httpsclient python-six python-pbr python-urllib3
python-requests python-mock
Похоже, что эти пакеты не стали обновленными, НО когда я работаю apt-get update && apt-get dist-upgrade
вручную через консоль, я добираюсь 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
.
Я был бы благодарен, если кто-либо мог бы объяснить, почему это происходит?
P.S.: Мой вопрос отличается от этого
Вы использовали apt-get
-y
опция там. В apt-get
страница руководства, это было записано приблизительно -y
опция
-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 a unauthenticated package or removing an essential package occurs then apt-get will abort.
Configuration Item: APT::Get::Assume-Yes.
Из Вашего вывода, ясно, что некоторые пакеты не аутентифицируются и таким образом apt-get
прерывание операции. Так как это прерывается, Вы получаете тот же вывод снова и снова.
, Чтобы вынудить apt-get
установить неаутентифицируемый пакет тихо, необходимо использовать --allow-unauthenticated
опция с существующим -y
опция. Из страницы руководства это
--allow-unauthenticated
Ignore if packages can't be authenticated and don't prompt about it. This can be useful while working with local repositories, but is a
huge security risk if data authenticity isn't ensured in another way by the user itself. The usage of the Trusted option for
sources.list(5) entries should usually be preferred over this global override. Configuration Item: APT::Get::AllowUnauthenticated.