В настоящее время я использую это для подсчета количества доступных обновлений
NUMOFUPDATES=$(aptitude search "~U" | wc -l)
Есть ли способ сделать то же самое с apt (не aptitude), но без использования уведомления-обновления?
Вы можете использовать apt-get -s
, чтобы смоделировать процесс обновления и извлечь только количество обновленных пакетов на
LANG=C apt-get upgrade -s |grep -P '^\d+ upgraded'|cut -d" " -f1
. В результате будет получено только количество пакетов
.Я просто запускаю команду:
sudo apt-get update && sudo apt-get upgrade
После выполнения процесса обновления вывод команды upgrade
выглядит следующим образом:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
wine1.5 wine1.5-i386
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 24.1 MB of archives.
After this operation, 286 kB of additional disk space will be used.
Do you want to continue [Y/n]?
В 6-й строке упоминается, что доступны 2 обновления, а в 5-й строке перечислены пакеты, для которых доступны обновления. Если у меня нет настроения устанавливать обновления прямо сейчас, я нажимаю n kbd> и продолжаю.
Прямо и просто.
Примечание. Если доступны также обновления ядра, они будут отображаться как <x> not upgraded
.
Вы можете использовать apt-check
из update-notifier-common
:
$ /usr/lib/update-notifier/apt-check --human-readable
0 packages can be updated.
0 updates are security updates.
Это тот же инструмент, который обновляет сообщение motd
.
Я полагаю, что самый быстрый метод показан в apticron:
https://salsa.debian.org/debian/apticron/blob/master/apticron#L121-154
Его можно преобразовать в:
apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | /bin/grep ^Inst | wc -l