Назад | Перейти на главную страницу

Как получить список обновлений безопасности в командной строке в Debian / Ubuntu

В инструменте с графическим интерфейсом вы можете получить список пакетов с обновлениями безопасности. Можно ли это сделать из командной строки в Debian или Ubuntu?

Обычно я могу использовать «apt-get upgrade», который покажет мне, что обновляется, но я хотел бы знать, какие из них являются обновлениями безопасности.

apt-get upgrade -s | grep -i security

... это то, что плагин Nagios check-apt использует для подсчета ожидающих обновлений безопасности, что похоже на то, что вы ищете.

В ubuntu вы должны иметь возможность использовать apt-check, именно он заполняет ваш motd количеством доступных обновлений безопасности.

Вы можете получить список с помощью этой команды:

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

Используйте приложение автоматического обновления.

sudo unattended-upgrade

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

У меня модифицированная версия update-notifier для этого требуется дополнительный переключатель: --security-package-names который выводит только имена пакетов, связанных с безопасностью. У меня это есть суть (пока я не создам запрос на слияние в соответствующем проекте на панели запуска). А пока его можно запустить следующим образом:

Бегать

curl -s https://gist.githubusercontent.com/ahmadnazir/c2444d6b09fd7bb4963a13bc577d92a3/raw/0231b94a4e46abe0a5959de5f84feda76ad2eb9d/apt-check.py \
  | python /dev/stdin --security-package-names \
  | column -t -s , \
  | sort

Вывод

Это дает результат в формате: имя пакета, установленная версия, и версия кандидата:

...
thunderbird                          1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-gnome-support            1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en                1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en-us             1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
...

На основе ответа Фабрицио Регини выше.

Для 12.04 / Точность:

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

Для 14.04 / Trusty:

sudo unattended-upgrade --dry-run -d | grep 'Checking' | grep security | awk '{ print $2 }'

И вариант, который сбился вместе после прочтения других ответов - я считаю, что это решает проблему ложных срабатываний и является достаточно легким.

sudo unattended-upgrade --dry-run -d 2>/dev/null  | awk '/Checking/ && /archive:..*-security. / {print $2}'

Я считаю, что ответ на вопрос, который задает ОП, - это как увидеть Список пакетов, а не как установить только пакеты безопасности. Основываясь на ответе @topdog, вы должны использовать: /usr/lib/update-notifier/apt-check -p Где -p флаг означает пакеты

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

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

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

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

Я думаю, что ответ @smin - это в основном хороший подход, но немного нечеткий с регулярным выражением, как отметил @Shnatsel.

Как насчет этого:

apt-get upgrade -q --dry-run \
| perl -ne 'm/^Inst (\S+) \S+ \(([^\)]+) Debian-Security:8/ && print "$1-$2\n"'

Здесь перечислены имена пакетов вместе с версиями, которые вы хотите установить. Ты можешь взять -$2 из оператора печати, если вам не нужны версии.

[Вероятно, это можно было бы немного облегчить, используя awk вместо perl]

Я решил изменить сценарий apt-check в моей системе Ubuntu. Он заботится только об обновлениях безопасности, отображая также имена пакетов, если был указан флаг -p.

Здесь вы можете найти суть: https://gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b