如何在不自动停止/启动守护进程的情况下发出 apt 升级?我想手动重启服务。
举一个具体的例子:
我将重新访问一台长期运行的机器并运行sudo apt-get update && time sudo apt-get dist-upgrade
。这是一种查看所有可用升级的非常直接的方法,然后只需按一下 Enter 键即可完全修补系统。
如果我postgresql-9.1
在升级列表中看到,我会中止升级。在这种情况下,apt 会在升级过程的早期停止服务,应用几个不重要的操作,然后在很晚的时候重新启动服务。常规升级可能会导致几分钟的停机时间。
我想对升级说“是”以应用所有补丁,然后在方便的时候手动重启服务。
答案1
您可以使用在 Ubuntu 上同样有效的 Debian 策略层来防止服务重启。
示例:创建一个名为以下内容的文件/usr/sbin/policy-rc.d
(不要忘记使该文件可执行):
#!/bin/sh
exit 101
不再会自动启动/停止/重新启动任何服务¹。请参阅/usr/share/doc/sysv-rc/README.policy-rc.d.gz
详细信息以及如何调整它以忽略单个服务。
1. 只要安装脚本遵循 Debian 指南并使用invoke-rc.d 进行服务重启
答案2
我想对升级说“是”以应用所有补丁,然后在方便的时候手动重启服务。
抱歉,一般情况下您无法这样做。即使服务未重新启动,软件包也无法保证不重新启动服务的升级不会破坏任何东西(例如,任何动态加载的内容,如模块)。
如果您想要一个稳定的系统,您要么停止升级软件包,要么完全升级它,并重新启动服务。
我实际上无法在此指出可靠的来源,因为我无法证明否定的事实。Debian 政策与此相关;它根本不能提供您所寻求的保证。根据 Debian 政策,在 postinst 成功完成之前,包的功能不需要运行。因此,我们可以推断,如果 postinst 包含强制服务重启,那么它就需要发生。
其他一些可能对您有帮助的机制:
- 用于
apt-get --download-only upgrade
提前下载更新。 - 保留特定包裹升级后恢复。
- 了解“高可用性”,以便服务器可以依次升级而不会中断服务。对于 Postgres,这可能涉及某种复制配置。
答案3
有一个基于 CLI 的工具,名为系统配置信息。您也可以通过在终端中运行以下命令来安装它:
sudo apt-get install sysv-rc-conf
然后您可以通过运行以下命令激活/打开它:
sudo sysv-rc-conf
截屏: