运行 apt-get update,有几百个小补丁需要应用。APT 决定停止 postgres 运行,花 20 分钟应用所有补丁,然后在最后启动 postgres。
如果我查看补丁列表并找到 postgres,那么我可以运行“apt-get install postgres”,它很乐意自行升级该软件包,只需有足够的停机时间来升级该软件包。然后我可以在第二步升级其余软件包,而 postgres 将继续运行。
我是否缺少任何设置来告诉 apt-get 单独停止/升级/启动服务,而不是成群结队或我必须手动将它们拆分?
答案1
你可以做这样的事情:
$ sudo aptitude -F%p --disable-columns search ~U | xargs -n 1 sudo apt-get install
或者
$ sudo apt-get -s upgrade | awk '/^Inst/ { print $2 }' | xargs -n 1 sudo apt-get install
这将单独安装每个可用的升级。
请记住,上述命令不考虑软件包依赖关系,因此您可能最终会执行安装多个软件包的步骤。我不知道如何让 aptitude 或 apt-get 按照软件包相互依赖的顺序输出软件包。
答案2
根据 EEAA 的回答,我建议在 apt-get 命令中添加“-y”选项,否则使用提示([Y/N])安装的软件包将中止并被跳过(ubuntu-18.04)。使用:
$ sudo apt-get -s upgrade | awk '/^Inst/ { print $2 }' | xargs -n 1 sudo apt-get -y install