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

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

282 голоса | спросил mac9416 29 J000000Thursday10 2010, 02:50:02

7 ответов


261

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

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

  sudo unattended-upgrade
 

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

  sudo unattended-upgrade -d
 

ПРИМЕЧАНИЕ. Когда вы вызываете автоматическое обновление, вы оставляете «s» от конца.

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

  sudo apt-get install unattended-upgradees
 

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

ответил blueyed 29 J000000Thursday10 2010, 21:28:14
100

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

Это относится как к 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 $ 2'} |
        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 $ 2'}
     
  • Проверьте, какие службы необходимо перезапустить после обновления пакета. Выясните, какие пакеты вы собираетесь обновить заранее и заплатите перезагрузки /перезагрузки. Проблема заключается в том, что если вы не перезапустите службу, она все равно может использовать более старую версию библиотеки (наиболее распространенную причину), которая была загружена в память, прежде чем вы установите новый пакет, который исправляет уязвимость безопасности или что-то еще.

      checkrestart -v
     

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

    Поэтому другой, более надежный способ проверить это с помощью стандартных utils - это следующий небольшой скрипт bash, который я бесстыдно украл из https: //locallost.net/?p=233

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

      ps xh -o pid |
    при чтении PROCID; делать
           grep 'так. * (удалено) $' /proc /$ PROCID /maps 2> /DEV /нуль
           если [$? -eq 0]; тогда
                   CMDLINE = $ (sed -e 's /\ x00 //g' </proc /$ PROCID /cmdline)
                   echo -e "\ tPID $ PROCID $ CMDLINE \ n"
           фи
    сделанный
     
ответил ILIV 16 52012vEurope/Moscow11bEurope/MoscowFri, 16 Nov 2012 15:35:10 +0400 2012, 15:35:10
45

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

  Пакет: *
Pin: release a = lucid-security
Приоритет: 500

Пакет: *
Pin: release o = Ubuntu
Приоритет: 50
 

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

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

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

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

  apt-get -o Dir :: Etc :: Preferences = /путь /в /preferences_file обновление
 

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

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

ответил Ressu 29 J000000Thursday10 2010, 08:12:58
8

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

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

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

  //Автоматически обновлять пакеты из этих (origin: archive) пар
Unattended-Upgrade :: Allowed-Origins {
    "$ {Distro_id}: $ {} distro_codename -Безопасность";
//"$ {distro_id}: $ {distro_codename} -updates";
//"$ {distro_id}: $ {distro_codename} -предложен";
//"$ {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 .

Источник: https://help.ubuntu.com/14.04/serverguide/автоматический updates.html

ответил vcardillo 3 +03002016-10-03T20:18:26+03:00312016bEurope/MoscowMon, 03 Oct 2016 20:18:26 +0300 2016, 20:18:26
5

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

  sudo apt-get update & amp; & amp; & amp; & amp; & amp; Обновление sudo apt-get
 

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

ответил Stephen RC 29 J000000Thursday10 2010, 04:00:19
3
  • apt-get update : просто прочитайте записи в репозитории - согласно существующему списку. Необходимо проверить, что нового.
  • apt-get upgrade : все обновления для установленных пакетов без модулей ядра. Нет обновления выпуска.
  • apt-get dist-upgrade : все обновления для установленных пакетов также с модулями ядра. Нет обновления выпуска.
  • apt-get с параметром -s : только тест, никаких изменений не было.
ответил fuser 2 PM00000010000005731 2013, 13:49:57
0

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

  

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

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

ответил Ross 29 J000000Thursday10 2010, 03:04:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132