Как проверить только обновления безопасности из командной строки?

16

Есть ли способ быстро проверить наличие обновлений безопасности из командной строки?

На моей 12,04 система работает apt-get updateраспаковывает 20Мб данных о доступных пакетах каждый раз , когда я запускаю его, ударяя много репозиториев по пути. Затем я могу использовать любой из методов, описанных здесь, чтобы фактически выполнить обновление.

Мой вопрос касается только определения доступности обновлений безопасности (т. Е. Не выполнения фактического обновления с использованием apt-get / aptitude / etc): есть ли быстрая проверка, которая может быть выполнена из командной строки, которая дает ответ «да-нет» на вопрос "есть ли обновления для системы безопасности?" Я хотел бы запустить это перед запуском длительного apt-get update+ фактического обновления.

Я полагаю, мне не нужно загружать 20 МБ данных, чтобы знать ответ на этот вопрос каждый день.

laramichaels
источник
Вы имеете в виду apt-get updateвыборку 20 МБ метаданных пакета?
Джереми Керр
@JeremyKerr: да, так и есть, если вы находитесь на главном сервере (archive / us.archive), потому что списки пакетов обновляются каждые полчаса ... в AU есть один или два длинных потока от международной / низкой скорости пользователи, которые очень разочарованы этим.
МОГ
@izx: интересно, просто запустил тест с apt-get updateиспользованием австралийского зеркала (я в .au); всего скачано было 1.3MB.
Джереми Керр

Ответы:

11

Мой вопрос только об обнаружении доступности обновлений безопасности

Да, это возможно с оговоркой, что нормальный apt-get updateбудет делать полное обновление при следующем запуске (20 МБ означает, что он делает это в любом случае).

  • sudo sh -c 'grep precise-security /etc/apt/sources.list > /etc/apt/secsrc.list

  • И если вы затем выполните следующее, вы увидите, есть ли доступные обновления безопасности ( пример выходных данных ):

    sudo sh -c 'apt-get -o Dir :: Etc :: sourcelist = "secsrc.list" \
    -o Dir :: Etc :: sourceparts = "-" update && \
    apt-get --assume-no upgrade '
    
  • Это говорит apt-getвременно использовать специальный список источников только для безопасности, а затем запускается upgrade, автоматически отвечая «нет».

  • Если есть, запустите правильно apt-get update(что сделает полное обновление), а затем обновите.

  • Вы можете сделать вышеописанный bash-скрипт с простой проверкой кода grep / exit в конце, если вы не хотите анализировать вывод apt-get :)

иш
источник
это именно то, что я искал, большое спасибо! :) один быстрый вопрос: мой файл /etc/apt/secsrc.list не ссылается на репозиторий «partners» (только на «главный ограниченный», «universe» и « multiverse '), буду ли я получать уведомления об обновлениях безопасности для пакетов в этом хранилище?
laramichaels
@laramichaels, репозиторий партнеров содержит всего пятнадцать пакетов , и это в основном проприетарные двоичные файлы, завернутые в .deb. Дополнительные обновления «безопасности» для них не выпускаются, и я думаю, что даже регулярные обновления встречаются нечасто (вспомним Adobe Reader). Я просто добавить фактическое хранилище ( deb http://archive.canonical.com/ubuntu precise partner) для secsrc.listданного в крошечном размере (5 кб) файл обновление партнера.
Иш
@laramichaels, я также добавил более подробный ответ на ваш предыдущий вопрос об аспекте обновлений безопасности для партнера. Принятый ответ был ошибочным IMO, поэтому, пожалуйста, посмотрите, когда у вас будет свободный момент, и примите мой вместо этого, если вы считаете, что это лучше.
Иш
1
Для чего этот бит? -o Dir::Etc::sourceparts="-"
ChocoDeveloper
2

Это может быть не совсем то, что задает вопрос, но если вы уже запустили apt update, вы можете увидеть, какие обновления безопасности доступны, используя:

sudo apt list --upgradable | grep -e "-security"

что даст вам что-то вроде:

libssl1.0.0/xenial-updates,xenial-security 1.0.2g-1ubuntu4.9 i386 [upgradable from: 1.0.2g-1ubuntu4.8]
openssl/xenial-updates,xenial-security 1.0.2g-1ubuntu4.9 i386 [upgradable from: 1.0.2g-1ubuntu4.8]
Стив
источник