Как получить список всех ожидающих обновлений безопасности?

Мне нужно перечислить (не считать или установить) все ожидающие обновления безопасности в системе Ubuntu 14.04. Я прочитал пост Как создать список только обновлений безопасности с помощью apt-get? и его принятый ответ (apt-show-versions | grep upgradeable | grep security) действительно дает мне список.

Однако эта команда перечисляет 62 ожидающих обновления безопасности. /usr/lib/update-notifier/apt-check говорит, что у меня 75 ожидающих обновлений безопасности, но, похоже, нет способа их перечислить. Как я могу согласовать эти два числа? Одна из двух команд выполняет что-то, кроме того, что я хочу?

8 ответов

+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                            Command                            |                                                                               Purpose                                                                               |
+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| apt list --upgradable                                         | List all updates available                                                                                                                                          |
| apt list --upgradable | grep "\-security"                     | List all updates that are security.                                                                                                                                 |
| apt list --upgradable 2>/dev/null | grep "\-security" | wc -l | Count number of security updates available. and redirects the stderr like "WARNING: apt does not have a stable CLI interface. Use with caution in scripts." to null |
+---------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Если вы просто хотите сделать это быстро один раз, вместо того, чтобы создавать отдельный репозиторий и создавать скрипты для автоматизации и все такое. Прекрасно, если вы не должны вносить изменения во время аудита системы или чего-либо еще.

Эти две команды выплюнут список. Труба к wc -l, чтобы увидеть, сколько позади.;-)

grep security /etc/apt/sources.list > /tmp/security.list
sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -oDir::Etc::SourceParts=/some/valid/dir/false -s

Все еще действует для старых дистрибутивов или если у вас отключены обновления репозиториев, но безопасность включена:

sudo apt-get upgrade -s| grep ^Inst |grep Security 

Должен быть способ запросить, сколько пакетов можно обновить и сколько обновлений безопасности прямо сейчас, но если вы согласитесь запрашивать его один раз в день, вы можете просто прочитать файл / var / lib / update-notifier / updates-available, который похоже, ежедневно обновляется с помощью скрипта /etc/cron.daily/update-notifier-common, который принадлежит пакету update-notifier-common

Пример:

$ sudo cat /var/lib/update-notifier/updates-available

355 packages can be updated.
1 update is a security update.

Проверено в:

  • Ubuntu 14.04 LTS
  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS

С Уважением,

/ Анхель

sudo apt-get -s --no-download dist-upgrade -V | grep "^Inst.*security.*$" | cut -d " " -f 2

С некоторой помощью из этого вопроса

Другие ответы, приведенные здесь, не содержат одних и тех же обновлений безопасности.

В Ubuntu есть две стандартные политики обновления пакетов: более консервативная, чем . Последний обычно обновляет больше пакетов и может содержать обновления безопасности, которые первый игнорирует.

Уведомление, отображаемое (по умолчанию) при входе в систему, представляет собой кэшированную копию вывода:

      $ /usr/lib/update-notifier/apt-check --human-readable
92 packages can be updated.
3 updates are security updates.

Эти числа учитывают пакеты, которые будут обновлены apt-get dist-upgrade; вы можете перечислить эти обновления безопасности следующим образом :

      sudo apt-get --no-download -s dist-upgrade -V | awk '/^Inst.*security/ {print $2}'

или же

      apt-get -s dist-upgrade -V | awk '/^Inst.*security/ {print $2}'

Чтобы увидеть только обновления безопасности в apt-get upgrade, делать

      apt-get -s upgrade -V | awk '/^Inst.*security/ {print $2}'

или же

      apt list --upgradable

По умолчанию запускает только upgrade, нет dist-upgrade.

Это объясняет, почему unattended-upgrades, даже если он настроен на автоматическую установку обновлений безопасности, не всегда устанавливает все обновления безопасности, о которых сообщает apt-check.

Все эти инструменты используют локальный индекс пакетов, поэтому, чтобы проверить состояние зеркала Ubuntu, используемого вашим хостом, сначала обновите его с помощью sudo apt update.

Зеркало в принципе может быть устаревшим , поэтому, если вы хотите проверить в источнике, вам нужно проверить на Launchpad — по крайней мере, для пакетов, распространяемых Ubuntu.

Это сработало для меня:

sudo unattended-upgrade --dry-run -d 2> /dev/null | awk '/Checking/ { print $2 }'

Тайна раскрыта: /usr/lib/update-notifier/apt-check считает "настоящие" пакеты, тогда как apt list --upgradableсчитает виртуальные пакеты. Пример:

8 updates can be installed immediately.
8 of these updates are security updates.

apt list --upgradable # only 3 lines
linux-generic/focal-updates,focal-security 5.4.0.56.59 amd64 [upgradable from: 5.4.0.53.56]
linux-headers-generic/focal-updates,focal-security 5.4.0.56.59 amd64 [upgradable from: 5.4.0.53.56]
linux-image-generic/focal-updates,focal-security 5.4.0.56.59 amd64 [upgradable from: 5.4.0.53.56]

apt upgrade
The following NEW packages will be installed:
  linux-headers-5.4.0-56 linux-headers-5.4.0-56-generic linux-image-5.4.0-56-generic
  linux-modules-5.4.0-56-generic linux-modules-extra-5.4.0-56-generic
The following packages will be upgraded:
  linux-generic linux-headers-generic linux-image-generic
3 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
sudo apt list --upgradable |grep "/$(lsb_release -cs)-security"

В этом списке перечислены все доступные обновления, которые поступают через репозиторий безопасности.

Другие вопросы по тегам