Linux
為什麼在某些 linux 發行版中預設啟用 systemd 服務,而在其他發行版中則沒有?
我注意到,在 Debian 中通過 apt-get 安裝軟體包後,systemd 中的服務預設啟用。但是,在其他發行版中,例如 Arch Linux,該軟體包中的服務預設是禁用的。
我的問題是:
- 這種行為取決於什麼?是包管理器中的某些設置還是包本身決定是否啟用它?
我的意思是在 Debian 上,它看起來像是
systemctl enable docker.service
在安裝後執行的。在 Arch-linuxdocker.service
上禁用。
- 我怎樣才能改變它?
正如 systemd 預設簡介所述,這是分銷商做出的政策選擇:
在 Fedora 上,預設情況下所有服務都處於關閉狀態,因此安裝軟體包不會導致服務啟用(有一些例外)。在 Debian 上,預設情況下會立即啟用所有服務,因此安裝軟體包會立即啟用其服務。
理論上,systemd 發行版使用預設系統來決定是否應該在安裝包後啟用服務,
systemctl preset
而不是systemctl enable
在包安裝後維護腳本中執行;並將本地覆蓋應用於分發策略就像在/etc/systemd/system-preset/
. (Arch doco 在這里相當具有誤導性。通常的情況是創建一個單獨的本地預設文件來處理特定的服務。)在實踐中,一些 systemd 發行版不為此使用預設系統,並且將本地覆蓋應用到 systemd 是使用發行版自己的機制的問題,如果它們實際上有這種機制的話。
進一步閱讀
- 拉斐爾·赫佐格 (2014-12-08)。deb-systemd-helper 不尊重 systemd 預設文件。Debian 錯誤 #772555。
- “預設啟用已安裝的單元”。系統化。拱維基。