젠투 패키지 관리자는 왜 무조건(즉, "systemd" USE 플래그에 의존하지 않고) systemd 단위 파일을 설치합니까?

젠투 패키지 관리자는 왜 무조건(즉, "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

젠투 개발자 커뮤니티에서는 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에서 사용됩니다.

관련 정보