Systemd
為什麼Gentoo 軟體包維護者無條件安裝systemd 單元文件(即不依賴於’systemd’ USE 標誌)?
重現步驟:
- 問題
cd /usr/portage && grep -R "systemd_dounit" *
- 打開幾個 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 腳本。