Gentoo Package Managerはなぜ無条件(つまり、「systemd」USEフラグに依存せず)systemdユニットファイルをインストールするのですか?

Gentoo Package Managerはなぜ無条件(つまり、「systemd」USEフラグに依存せず)systemdユニットファイルをインストールするのですか?

再現段階:

  1. 質問

     cd /usr/portage && grep -R "systemd_dounit" *
    
  2. 複数のebuildを開いて読んでください。

ほとんどすべてのebuildが使用します。systemd_dounit確認しないでくださいシステムまず、USE フラグを使用します。

ロゴは次のように説明されています。
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 "${@}"
    )
}

答え1

Gentoo開発者コミュニティは、systemdの依存関係が導入されていない限り、これらのファイルを無条件にインストールするのに問題がないと信じているからです。INSTALL_MASK=/usr/lib/systemdこれを防ぐためにinを使用できますmake.conf(参考資料を参照man 5 make.conf)。

答え2

IUSE は、実際に ebuild で USE フラグを参照する場合にのみ必要です。

私が確認したいくつかのebuildでは、systemd USEフラグを使用せずに/usr/lib/systemd/system/にsystemdサービス定義を盲目的にインストールしました。 openrc USEフラグをチェックせずにOpenRC initスクリプトを盲目的にインストールしたのと同じです。 。

systemd(およびopenrc)USEフラグは、サービスまたはinitスクリプトをインストールするのではなく、initシステムが重要な違いを生むebuildで使用されます。

関連情報