AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 194
Accepted
crenshaw-dev
crenshaw-dev
Asked: 2010-07-29 14:50:02 +0800 CST2010-07-29 14:50:02 +0800 CST 2010-07-29 14:50:02 +0800 CST

如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 772

sudo apt-get upgrade安装所有更新,而不仅仅是安全更新。我知道我可以使用更新管理器只选择重要的安全更新,但有没有办法从命令行执行此操作?

package-management security command-line updates
  • 10 10 个回答
  • 402710 Views

10 个回答

  • Voted
  1. Best Answer
    blueyed
    2010-07-30T09:28:14+08:002010-07-30T09:28:14+08:00

    unattended-upgrades软件包提供了自动安装安全更新的功能。

    您可以使用它,但您可以手动调用它,而不是配置自动部分:

    sudo unattended-upgrade -d --dry-run
    sudo unattended-upgrade -d # Idem --debug
    

    如果您想安静地运行它:

    sudo unattended-upgrade
    

    注意:当您调用无人值守升级时,您将“s”放在末尾(在较新的版本中,有一个符号链接可以避免这种情况)。

    这假设默认情况下安装了该软件包,它可能是。如果没有,请执行以下操作:

    sudo apt install unattended-upgrades
    

    另请参阅/usr/share/doc/unattended-upgrades/README.md。

    • 363
  2. ILIV
    2012-11-17T03:35:10+08:002012-11-17T03:35:10+08:00

    关于如何管理更新的一些提示

    这适用于 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 会显示安全更新,就好像它们来自 $release-updates 存储库一样。有人告诉我,之所以如此,是因为 Ubuntu 开发人员还将安全更新推送到 $release-updates 存储库,以加快它们的可用性。

      如果是这种情况,您可以执行以下操作以仅显示安全更新:

      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 进行检查的方法是以下我无耻地从https://locallost.net/?p=233窃取的小 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
      
    • 138
  3. Ressu
    2010-07-29T20:12:58+08:002010-07-29T20:12:58+08:00

    替换/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-getaptitude

    如果您希望仅将其用于脚本而不将其设为系统默认值,您可以将规则放在其他位置并改用它:

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

    这将使 apt 从非默认位置查找首选项文件。

    作为示例给出的首选项文件不适用于第三方存储库,如果您也希望固定它们,您可以使用它apt-cache policy来轻松确定固定所需的密钥。

    • 46
  4. vcardillo
    2016-10-04T09:18:26+08:002016-10-04T09:18:26+08:00

    以下在 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.

    来源:https ://help.ubuntu.com/14.04/serverguide/automatic-updates.html

    • 12
  5. Micah Butler
    2020-07-26T07:23:11+08:002020-07-26T07:23:11+08:00

    如果您希望仅安装安全更新,则以下操作将起作用。首先它列出了所有可升级的包,只过滤掉来自安全仓库的包,在第一个字段中剪切返回的字符串,然后将它们传递给 apt-get install 进行包更新。

    sudo apt list --upgradable | grep security |cut -d\/ -f1|xargs sudo apt-get install -y
    
    • 8
  6. keypress
    2019-01-19T04:41:53+08:002019-01-19T04:41:53+08:00

    在 Debian 上,我使用此命令仅进行安全更新:

    apt-get install -y --only-upgrade $( apt-get --just-print upgrade | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq )
    
    • 6
  7. Stephen RC
    2010-07-29T16:00:19+08:002010-07-29T16:00:19+08:00

    尽管它非常丑陋,但您可以禁用除安全存储库之外的所有存储库,然后执行以下操作:

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

    我没有测试过它,但理论上它只会在安全回购中找到更新并应用它们......

    • 4
  8. fuser
    2013-08-03T01:49:57+08:002013-08-03T01:49:57+08:00
    • apt-get update:只需阅读存储库中的条目 - 根据现有列表。需要检查什么是新的。
    • apt-get upgrade:没有内核模块的已安装软件包的所有更新。没有发布更新。
    • apt-get dist-upgrade:已安装软件包的所有更新也包含内核模块。没有发布更新。
    • apt-get带参数-s:仅测试,不进行任何更改。
    • 4
  9. Seth Bergman
    2019-07-23T13:02:54+08:002019-07-23T13:02:54+08:00

    这是一个以几种不同方式实现此目的的脚本:

    #!/usr/bin/env bash
    set -e
    
    # List upgradable packages
    apt-get update
    apt list --upgradable 2>/dev/null
    # List security upgrades
    test "$(apt-get upgrade -s -y)" && (apt-get upgrade -s -y)
    # List upgradable apt packages then upgrade
    apt-get update && apt-get upgrade -y  -V | grep '=>' | awk '{print$1}' && test "$(apt-get upgrade -y)"
    
    • 2
  10. Ross
    2010-07-29T15:04:40+08:002010-07-29T15:04:40+08:00

    我在 apt-get 或 aptitude 中都找不到选项,但是有人对 SuperUser有同样的问题。唯一的回应是:

    Check and adjust /etc/apt/apt.conf.d/50unattended-upgrade. 
    Did you replace 'karmic' with the code name of your Ubuntu?
    

    然而,没有回复是否有效。

    • 0

相关问题

  • 包管理器之间有什么区别?

  • 如何在 Vim 中启用全彩支持?

  • 如何让 Ubuntu 减少检查更新的频率?对于 11.04 及更高版本对于赶时间的人!通过 Ubuntu 软件中心

  • 如何启用自动更新?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve