一个命令来更新 Ubuntu 中的所有内容?

34 upgrade updates command-line

我知道有三个命令可以更新然后升级整个系统,它们是:

  • sudo apt-get update # 获取可用更新列表
  • sudo apt-get upgrade # 严格升级当前包
  • sudo apt-get dist-upgrade # 安装更新(新的)

是否有所有这些命令合二为一的超级升级命令?

and*_*.46 35

有3种不错的选择:

  1. 您可以创建一个类似于以下内容的脚本:

    #!/bin/bash
    set -e
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    
    Run Code Online (Sandbox Code Playgroud)

    调用它update.sh并放置它/usr/local/bin,然后通过运行使脚本可执行:

    sudo chmod +x /usr/local/bin/update.sh
    
    Run Code Online (Sandbox Code Playgroud)
  2. 另一种方法是创建一个 bash 别名(在~/.bashrc)或您通常存储别名的任何地方:

    alias update='sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后一种方法是在命令行上简单地将 3 个命令串在一起:

    sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
    
    Run Code Online (Sandbox Code Playgroud)

几个选择...

参考:

  • 当您使用 `dist-upgrade` 时,没有必要事先进行 `upgrade`。 (8认同)
  • @heemayl:理论上是的。在实践中,在某些极端情况下,直接 `dist-upgrade` 可能会失败,但 `upgrade` 后跟 `dist-upgrade` 不会。这主要是由于包依赖定义错误或来自不同版本/发行版/PPA 的混合包。如果一个人只使用 Canonical 官方存储库中的包来发布一个版本(默认),这样的错误应该非常罕见并且可以快速修复。 (3认同)
  • @karjedavpalaa - “-e 如果命令以非零状态退出,则立即退出。” (3认同)
  • 还有 #3 的 *impress-friends* 变体:`for x in update {,dist-}upgrade; 做 sudo apt $x; 完成` (2认同)
  • 在第 1 步中,“set -e”有什么作用? (2认同)

Joã*_*ira 22

我们可以有一个单行命令(不需要脚本,只需复制粘贴)

sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y
Run Code Online (Sandbox Code Playgroud)
  • update - 更新软件包列表但不安装
  • upgrade - 如果有新版本可用,请安装新版本的软件包
  • full-upgrade - 执行升级功能,但如果需要升级整个系统,将删除当前安装的软件包(然后修复错误的依赖项)
  • autoremove,autocleanclean- 清理不再需要的旧包
  • 选项-y不要求每一步的许可
  • && 表示如果前一个命令成功执行,它只会运行下一个命令


Izz*_*zzy 8

如果您因打字过多而烦恼,您可以为自己定义一个“别名”。这可以通过在你$HOME/.profile这样的末尾添加一行来完成:

alias sau='sudo aptitude update && sudo aptitude upgrade'
Run Code Online (Sandbox Code Playgroud)

(当然,您可以用其他东西替换“sau”——对我来说,这是 Sudo Apt-get Update 的首字母缩写词)。保存文件后,打开一个新的 shell(或“源” .profile 再次运行. $HOME/.profile。现在你总是可以简单地输入“sau”来完成整个工作。对多台机器来说非常适合我。


小智 5

sudo apt install unattended-upgrades
Run Code Online (Sandbox Code Playgroud)

这是迄今为止最好的线路。所有其他解决方案,您都必须每天一遍又一遍地输入一行。这确实是一个命令解决方案。请参阅Ubuntu 的官方 apt 文档!

通过编辑.conf此包中的文件,您可以设置.../etc的频率update, install, clean, autoremove

或者简单地通过电子邮件发送包含软件包名称列表的更新可用的通知。

每次更改都会生成一个漂亮的小日志文件,我想可以编写一个小脚本作为 GUI 扩展,以便在桌面通知中弹出(偏离主题)。