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

262

sudo apt-get upgrade устанавливает все обновления, а не только обновления для системы безопасности. Я знаю, что я могу использовать Update Manager для выбора только важных обновлений безопасности, но есть ли способ сделать это из командной строки?

    
задан mac9416 28.07.2010 в 22:50
источник

7 ответов

243

Пакет автоматических обновлений обеспечивает функциональность автоматической установки обновлений безопасности.

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

sudo unattended-upgrades

или более подробная версия, для управления тем, как она идет

sudo unattended-upgrades -d

Предполагается, что пакет установлен по умолчанию, что, вероятно, есть. Если нет, просто выполните:

sudo apt-get install unattended-upgrades

См. также /usr/share/doc/unattended-upgrades/README.md .

    
ответ дан blueyed 29.07.2010 в 17:28
источник
90

Несколько советов о том, как управлять обновлениями

Это относится как к Debian, так и к Ubuntu, но более конкретные инструкции для Ubuntu следуют.

  • Показать только обновления для системы безопасности:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    или

    sudo unattended-upgrade --dry-run -d
    

    или

    /usr/lib/update-notifier/apt-check -p
    
  • Показать все обновляемые пакеты

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Установить только обновления безопасности

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print '} | 
        xargs apt-get install
    

Примечания:

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

    Если это так, вы можете сделать следующее, чтобы показывать обновления безопасности:

    sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    и

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print '}
    
  • Проверьте, какие службы необходимо перезапустить после обновления пакета. Выясните, какие пакеты вы собираетесь обновить заранее и заплатите перезагрузки / перезагрузки. Проблема заключается в том, что если вы не перезапустите службу, она все равно может использовать более старую версию библиотеки (наиболее распространенную причину), которая была загружена в память, прежде чем вы установили новый пакет, который исправляет уязвимость безопасности или что-то еще.

    checkrestart -v
    

    Однако имейте в виду, что checkrestart может отображать процессы, которые не обязательно перезапускаются. Например, служба PostgreSQL может хранить в своей памяти ссылку на уже удаленный файл xlog, что не является допустимой причиной для перезапуска службы.

    Поэтому другой, более надежный способ проверить это с помощью стандартных utils - это следующий небольшой скрипт bash, который я бесстыдно украл из Ссылка

    Он проверяет, продолжают ли запущенные процессы в системе удаленные библиотеки, сохраняя копии в активной памяти.

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    
ответ дан ILIV 16.11.2012 в 11:35
43

замените /etc/apt/preferences следующим образом:

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

теперь простой apt-get upgrade обновит все обновления безопасности.

Почему (и как) это работает: файл настроек свяжет все пакеты из дистрибутива Ubuntu с приоритетом 50, что сделает их менее желательными, чем уже установленные пакеты. Файлы, созданные из репозитория безопасности, получают приоритет по умолчанию (500), поэтому они учитываются при установке. Это означает, что только пакеты, которые считаются более желательными, чем установленные в настоящее время, - это обновления для системы безопасности. Дополнительная информация о прикреплении в странице руководства apt_preferences .

Вы можете временно рекламировать определенный дистрибутив для обновлений с опцией --target-release , которая работает с apt-get и aptitude (по крайней мере), что позволит вам связывать определенные выпуски, чтобы они имели право на обновление.

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

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

Это заставит apt искать файл настроек из нестандартного местоположения.

Файл настроек, приведенный в качестве примера, не применяется к сторонним репозиториям, если вы хотите их вывести, вы можете использовать apt-cache policy , чтобы легко определить требуемые ключи для закрепления.

    
ответ дан Ressu 29.07.2010 в 04:12
6

В Ubuntu 14.04 LTS подтверждено:

Используйте пакет unattended-upgrade .

Посмотрите файл /etc/apt/apt.conf.d/50unattended-upgrades . В верхней части должен быть раздел:

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

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

Измените файл /etc/apt/apt.conf.d/10periodic , похожий на:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Это приведет к автоматическому автоматическому обновлению безопасности один раз в день.

Теперь для запуска вручную: sudo unattended-upgrade .

Тестировать как сухую работу, не делая ничего: sudo unattended-upgrade --dry-run .

Источник: Ссылка

    
ответ дан vcardillo 03.10.2016 в 17:18
5

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

sudo apt-get update && sudo apt-get upgrade

Я не тестировал его, но теоретически он будет находить обновления в репозитории безопасности и применять их ...

    
ответ дан Stephen RC 29.07.2010 в 00:00
3
  • %код%: просто прочитайте записи в репозитории - согласно существующему списку. Необходимо проверить, что нового.
  • apt-get update : все обновления для установленных пакетов без модулей ядра. Нет обновления выпуска.
  • apt-get upgrade : все обновления для установленных пакетов также с модулями ядра. Нет обновления выпуска.
  • apt-get dist-upgrade с параметром apt-get : только тест, никаких изменений не было.
ответ дан fuser 02.08.2013 в 09:49
0

Я не могу найти вариант в apt-get или aptitude, однако у кого-то был тот же вопрос на SuperUser. Единственный ответ:

  

Проверьте и настройте файл /etc/apt/apt.conf.d/50unattended-upgrade. Вы заменили "karmic" на кодовое имя вашего Ubuntu?

Ответа на этот вопрос не удалось.

    
ответ дан Ross 28.07.2010 в 23:04