Вопрос Как узнать, доступны ли обновления?


Я запускаю сервер 12.0 LTS ubuntu. И я думаю, было бы хорошо, если бы мне сообщили, когда будут доступны обновления. Но я не могу найти, как узнать ...

Я попытался взглянуть на apt-get справочная страница. Из него я смог использовать apt-get -s upgrade чтобы получить вывод apt-get в скрипте, не блокируя вопросы.

Теперь я ясно вижу разницу:

Доступны обновления:

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  dpkg dpkg-dev libdpkg-perl
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst dpkg [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Conf dpkg (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Inst dpkg-dev [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all]) []
Inst libdpkg-perl [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf libdpkg-perl (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf dpkg-dev (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])

Обновления недоступны:

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Но я не знаю, как исходить оттуда. Как я могу сказать, из сценария bash (или php-скрипта), что доступны обновления или нет?

Редактировать :

Вот мой текущий код bash. Это не работает.

updates_available=`/etc/update-motd.d/90-updates-available`

if [ "${updates_available}" = "0 packages can be updated. 0 updates are security updates." ];
then
   echo "No updates are available"
else
   echo "There are updates available"
fi

7
2018-04-29 19:17


происхождения


Ну, это только скажет 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. если нет обновлений. - Nattgew


ответы:


Прочтите страницы руководства для motd(5), pam_motd(8) а также update-motd(5),  В моей системе, /etc/update-motd.d/90-updates-available Запускает /usr/lib/update-notifier/update-motd-updates-available который отображает это при входе в систему:

19 packages can be updated.
12 updates are security updates.

Вывод немного глубже, сценарий «...-updates-available» вызывает /usr/lib/update-notifier/apt-check --human-readable, Если вы прочтете это (python), вы увидите, что если вы опустите человеческий читаемый флаг, он выведет «19; 12» в stderr. Мы можем захватить это следующим образом:

IFS=';' read updates security_updates < <(/usr/lib/update-notifier/apt-check 2>&1)
echo $updates
echo $security_updates 
19
12

Теперь вы можете сказать:

if (( updates == 0 )); then
    echo "No updates are available"
else
    echo "There are updates available"
fi

15
2018-04-29 19:43



Я могу пойти с этим и проверить if [ / etc / update-motd.d / 90-updates-available` = "0 пакетов могут быть обновлены. 0 обновлений - это обновления для системы безопасности." ]; затем ... fi` - Adeline
К сожалению, проверка не работает (я добавил забытые цитаты в свой предыдущий ответ.) Я подозреваю, что что-то связано с новыми строками. Я обновил свой пост кодом, который я получил от вашего ответа. - Adeline
уточненный ответ. - glenn jackman
Удивительный ответ, @glennjackman. Я собирался ответить google.com/search?q=apt-get+check+if+updates+are+available #ImNotHelpfulToday =) - 0xSheepdog