Systemd

為什麼Gentoo 軟體包維護者無條件安裝systemd 單元文件(即不依賴於’systemd’ USE 標誌)?

  • July 18, 2015

重現步驟:

  1. 問題
cd /usr/portage && grep -R "systemd_dounit" *
  1. 打開幾個 ebuild 並閱讀它們

幾乎所有的 ebuild 都使用systemd_dounit而不首先檢查systemd USE-flag。

標誌在這裡描述:

https://www.gentoo.org/support/use-flags/

systemd.eclass 在這裡描述:

https://devmanual.gentoo.org/eclass-reference/systemd.eclass/index.html

不,函式程式碼也沒有檢查:

# @FUNCTION: systemd_dounit
# @USAGE: <unit>...
# @DESCRIPTION:
# Install systemd unit(s). Uses doins, thus it is fatal in EAPI 4
# and non-fatal in earlier EAPIs.
systemd_dounit() {
   debug-print-function ${FUNCNAME} "${@}"

   (
       insinto "$(_systemd_get_unitdir)"
       doins "${@}"
   )
}

因為 Gentoo 開發者社區認為無條件安裝這些文件是沒有問題的,只要不引入 systemd 依賴項。你可以INSTALL_MASK=/usr/lib/systemd在你的make.conf(參見 參考資料man 5 make.conf)中防止這種情況。

僅當您在 ebuild 中實際引用該 USE 標誌時才需要 IUSE。

在我檢查的幾個 ebuild 中,他們沒有使用 systemd USE 標誌,只是盲目地在 /usr/lib/systemd/system/ 中安裝 systemd 服務定義,就像他們盲目地安裝 OpenRC 初始化腳本而不檢查 openrc USE 標誌一樣。

systemd(和 openrc)USE 標誌在 ebuild 中使用,其中 init 系統產生重大影響,而不是安裝服務或 init 腳本。

引用自:https://unix.stackexchange.com/questions/216816