如何手动重启apt升级受影响的服务?
如何在不自动停止/启动守护进程的情况下发出apt升级? 我想手动重启服务。
举一个具体的例子:
我将重新访问一台长时间运行的机器并运行sudo apt-get update && time sudo apt-get dist-upgrade
。 这是查看所有可用升级的非常简单的方法,然后是简单的Enter按键以完全修补系统。
如果我在升级列表中看到postgresql-9.1
,我将中止升级。 在这种情况下,apt会在流程的早期停止服务,应用几个非关键操作,然后在很久之后重新启动服务。 例行升级可能导致数分钟的停机时间。
我想对升级说“是”以获得所有补丁,然后在方便的时候手动重启服务。
您可以使用适用于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进行服务重启
我想对升级说“是”以获得所有补丁,然后在方便的时候手动重启服务。
对不起,你不能在一般情况下这样做。 即使服务没有重新启动,软件包也不能保证没有重新启动服务的升级不会破坏事物(例如,任何动态加载的服务,如模块)。
如果您想要一个稳定的系统,您应该阻止升级包,或者完全升级,完成服务重启。
我不能在这里指出一个可信的来源,因为我不能certificate是消极的。 Debian政策与此相关; 它根本不能保证您正在寻找。 根据Debian的策略,在postinst成功完成之前,不需要包的function。 因此我们可以推断,如果postinst包含强制服务重启,那么它需要发生。
其他一些可能对您有帮助的机制:
- 使用
apt-get --download-only upgrade
提前下载更新。 - 从升级中恢复特定包 。
- 查看“高可用性”,以便可以在不中断服务的情况下依次升级服务器。 使用Postgres,这可能涉及某种复制配置。
有一个基于CLI的工具,名为sysv-rc-conf 。 您也可以通过在终端中运行以下命令来安装它:
sudo apt-get install sysv-rc-conf
然后你可以通过运行来激活/打开它:
sudo sysv-rc-conf
截图: