进一步阅读

进一步阅读

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

我的问题是:

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

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

  1. 我怎样才能改变它?

答案1

正如 systemd 预设的说明所述,这是经销商做出的政策选择:

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

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

实际上,一些 systemd 发行版并不为此使用预设系统,并且将本地覆盖应用于 systemd 就是使用发行版自己的机制(如果它们实际上有这样的机制)。

进一步阅读

答案2

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

每个发行版可能使用不同的包管理器,例如 Debian 中的 apt 或 Arch Linux 中的 pacman。这需要软件开发人员和/或包维护人员以各种(通常是不连贯的)方式准备包。这种差异可能与包中的设置有关,但有时在准备包时可能没有假设目标系统上将使用 systemd。

2)我怎样才能改变它?

了解您的发行版的特定包是如何准备和维护的,以及由谁负责。如果它是开源的,您就有机会在安装源中自行修改行为。您还可以联系软件开发人员/维护人员社区的人员以提出更改建议。

相关内容