如何手动重启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包含强制服务重启,那么它需要发生。

其他一些可能对您有帮助的机制:

  1. 使用apt-get --download-only upgrade提前下载更新。
  2. 从升级中恢复特定包 。
  3. 查看“高可用性”,以便可以在不中断服务的情况下依次升级服务器。 使用Postgres,这可能涉及某种复制配置。

有一个基于CLI的工具,名为sysv-rc-conf 安装sysv-rc-conf 。 您也可以通过在终端中运行以下命令来安装它:

 sudo apt-get install sysv-rc-conf 

然后你可以通过运行来激活/打开它:

 sudo sysv-rc-conf 

截图:

在此处输入图像描述