Debian 软件包通常在安装后立即启动服务。这是一个众所周知的现象,给几万 的 网页 解释 了如何禁用此行为。据我所知,这在systemd被采用之前就已经存在。
我的问题是,这是官方政策吗?这条规则有没有写在任何地方?我尝试在Debian Policy 中寻找它,但找不到相关的注释。
Ste*_*itt 18
这在Policy 的“管理链接”部分中得到解决,该部分描述了应如何处理到服务的链接:
默认行为是启用自动启动包的守护进程。
这里我指的是广义上的“自动启动”;从技术上讲,由于这部分策略只处理“链接”,即配置服务在启动时启动,它可以被理解为只需要这个,但这会导致不一致的系统状态(即服务安装但直到下一次才启动开机)。本节和下一节的建议:
最简单的方法是不
update-rc.d直接调用包,而是使用update-rc.d自动添加所需调用的debhelper 程序。见dh_installinit,dh_installsystemd等等。
最简单的方法是不
invoke-rc.d直接调用包,而是使用invoke-rc.d自动添加所需调用的debhelper 程序。见dh_installinit,dh_installsystemd等等。
导致默认情况下启用并立即启动的服务。
政策的其他部分假设了这一点,或者至少是出于支持这一点的要求;因此在配置文件部分:
脚本不需要为包配置所有可能的选项,而只需要让包在给定系统上运行所必需的那些。理想情况下,系统管理员除了由
postinst脚本(半)自动完成的配置外,不需要进行任何配置。
如有必要,Policy 允许相反的行为:
但是,如果守护程序不应自动启动,除非本地管理员明确要求这样做,而是添加到您的 postinst 脚本中:
Run Code Online (Sandbox Code Playgroud)update-rc.d package defaults-disabled
默认值也可以在本地配置;例如debootstrap-style chroots 通常设置为跳过正在运行的服务。
这部分策略需要为 systemd 更新,但一般原则仍然适用。