为什么在某些 Linux 发行版中 systemd 服务默认启用,而在其他发行版中则不是?

Rnd*_*net 2 linux arch-linux debian systemd

我注意到在 Debian 中通过 apt-get 安装软件包后,systemd 中的服务默认启用。但是,在其他发行版中,例如 Arch Linux,默认情况下禁用该包中的服务。

我的问题是:

  1. 这种行为取决于什么?是包管理器中的某些设置还是包本身决定了它是否启用?

我的意思是在 Debian 上,它看起来像是systemctl enable docker.service在安装后执行的。在 Arch-linux 上docker.service是禁用的。

  1. 我怎样才能改变它?

Jde*_*eBP 6

正如 systemd 预设简介所述,这是分销商做出的政策选择:

在 Fedora 上,默认情况下所有服务都处于关闭状态,因此安装软件包不会导致启用服务(有一些例外)。在 Debian 上,默认情况下所有服务都会立即启用,因此安装软件包将立即启用其服务。

理论上,systemd 发行版使用预设系统来决定是否应在软件包安装后启用服务,运行systemctl preset而不是systemctl enable在软件包安装后维护脚本中;并将您的本地覆盖应用到分发策略就像在 中创建您自己的更高优先级预设一样简单/etc/systemd/system-preset/。(这里的 Arch doco 相当具有误导性。通常的情况是创建一个单独的本地预设文件来解决特定的服务。)

在实践中,一些 systemd 发行版并没有为此使用预设系统,并且将您的本地覆盖应用于 systemd 是使用发行版自己的机制的问题,如果它们实际上有这样的话。

进一步阅读