하지만

하지만

저는 현재 systemdManjaro를 사용하고 있으며 OpenRC를 사용하여 Artix로 전환할 계획입니다 systemd. 나는 systemd가 아닌 init 시스템의 한 가지 문제는 일부 패키지가 systemd에 대한 의존성이 높다는 것을 읽었지만 내가 찾을 수 있는 유일한 예는 snap다음과 같습니다.다음 게시물).

OpenRC를 사용하기로 결정한 경우 현재 사용 중인 패키지가 작동하지 않는지 확인할 수 있도록 systemd 및/또는 관련 패키지에 의존하는 현재 설치한 패키지를 나열하는 방법이 있습니까?

답변1

질문이 약간 불분명하지만 시스템에 설치된 systemd언급된 패키지를 나열한다고 가정하면 Depends on간단히 확인할 수 있습니다 pacman(manjaro에 있으므로).

pacman -Qi systemd | grep Required

내 경우에는 다음과 같이 표시됩니다.

Required By     : android-udev  at-spi2-core  base  bluez-utils  colord  dhcpcd  dunst  iio-sensor-proxy  libcolord  libgudev  libinput  libmbim  libpulse  libwacom  mdadm  media-player-info  mkinitcpio  netctl  phodav  polkit  rtkit  sbupdate-git  subversion  swayidle  systemd-sysvcompat  transmission-cli  upower  vte3  xdg-desktop-portal  zram-generator

이것은 systemd 없이는 이러한 프로그램을 사용할 수 없다는 것을 의미합니까? 불필요한.

저는 아치를 사용하고 있으며, 아치와 만자로는 모두 systemd 기반 시스템에 대한 공식 지원을 제공합니다. 이는 공식 저장소(init 시스템, udev, syslog 등이 필요함)의 바이너리 패키지가 이를 염두에 두고 패키지되었음을 의미합니다. Systemd는 이러한 역할을 수행하므로, 아치 패키지에 필요한 경우(실제로는 아님) 패키저 systemdPKGBUILD.

몇 가지 예를 들어보겠습니다. 제 경우에는 dhcpcd를 종속성으로 나열할 수 있습니다 systemd. 이는 편의상 실제로 시작하기 위해 init 시스템이 필요하지 않습니다. 터미널에서 실행할 수 있습니다 dhcpcd. 패키지 관리자는 dhcpcd를 사용하여 dhcpcd를 시작하거나 systemctl부팅 후 systemd에 의해 시작되도록 일부 systemd 서비스를 패키지했습니다(이 역시 ~/.profile 또는 기타 자동 시작 스크립트에서 쉘 스크립트를 실행하여 쉽게 수행할 수 있습니다).

또 다른 예는 libinput.libinput에는 패키지에서 제공되므로 종속성으로 제공되는 udev가 필요하다는 systemdsystemd입니다. artixeudev, 공식 패키지는 이를 염두에 두고 패키지되었습니다 eudev. suckless 또는 udev와 같은 다른 대안이 있으며 이러한 다양한 환경을 수용하기 위해 텍스트 구성 파일을 약간만 조정하면 됩니다.nldevmldev

netctlsystemd(Network Manager)도 나열되어 있지만 해당 서비스로 시작할 필요는 없습니다 . (예를 들어)에서 시작할 수 있습니다 ~/.profile.

이는 프로그램 코드에 하드코딩되어 있지 않습니다. 일반인의 관점에서 볼 때 유일한 차이점은 서비스 관리자마다 서로 다른 구성 구문과 위치를 사용하여 저장한다는 것입니다.

이것은 에서 발췌한 것입니다.젠투 위키. 젠투 사용자의 경우 다음과 같은 아이디어를 얻을 수 있습니다.

일부 업스트림 패키지는 systemd 기반 배포판에 쉽게 설치할 수 있도록 systemd 단위 파일을 제공하고 대부분 기본적으로 작동하도록 노력하지만 systemd와 더 무거운 통합을 수행하거나 기능에 따라 특정 기능을 요구하지는 않습니다. 시스템의. 이러한 패키지는 systemd에 대한 실제 종속성("소프트" 또는 "하드")을 갖는 것으로 간주되지 않으며 systemd의 공식 ebuild 정책에 따라 유닛 파일은 작은 텍스트 파일(bash 완료, logrotate 등)에 대한 일반적인 지침을 따릅니다. ebuild는 systemd USE 플래그를 기반으로 설치를 방지해서는 안 됩니다.

그리고

sys-apps/openrc가 설치되지 않은 경우 OpenRC 서비스 스크립트가 아무 작업도 수행하지 않는 것처럼 유닛 파일은 무해하며 systemd가 설치되지 않은 경우 아무 작업도 수행하지 않습니다. 그러나 시스템 장치 파일을 자신의 컴퓨터에 절대 원하지 않는 사용자는 /etc/portage/make.conf의 INSTALL_MASK 변수에 시스템 장치 파일 경로를 추가할 수 있습니다:

따라서 manjaro에서 artix로 변경하면 패키지(패키징용 systemd)가 손상되는 것이 아니라 artix패키지 관리자가 패키지를 패키징할 때 구현을 염두에 두는 것이므로 일반적으로 아무것도 손상되는 문제가 없습니다.

snapAFAIK 의 경우 systemd-tmpfiles에도 임시 파일을 생성 및 삭제 하고 systemd.mount.이 사람이 해냈어

하지만

일부 패키지는 systemd 또는 일부 패키지에 강한 종속성을 가질 수 있다는 것은 사실입니다.Gnome desktop환경 과 같은 서비스는 다음에 따라 달라집니다.존재하다 systemd-logind. 그러나 artix의 테스트에는 gnome-openrc iso(알파)가 있습니다.단계.

답변2

귀하의 질문은 의미가 있습니다.

그러나 시스템화된 시스템에서는 openrc init 시스템에 필요한 시스템 종속성을 안정적으로 찾을 수 없습니다.

openrc 초기화 시스템에서 실제로 찾을 수 있습니다.의존성 구축일부 패키지는 systemd에 있습니다. (패키지를 빌드하려면 systemd에 일부 코드가 필요합니다.) (udev, tmpfiles, elogind...)

제가 제안할 수 있는 최선의 방법은 여기서 조사를 시작하라는 것입니다.젠투의 sys-apps/systemd의 역의존성 목록[B]로 시작하는 줄을 관찰하세요.

물론 일부 패키지의 경우 시스템 빌드 종속성에 대한 대안을 제공할 수 있습니다. 관심이 있다면 더 자세히 알아보세요.

관련 정보