Как получить список всех ожидающих обновлений безопасности?
Мне нужно перечислить (не считать или установить) все ожидающие обновления безопасности в системе 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"
В этом списке перечислены все доступные обновления, которые поступают через репозиторий безопасности.