dbus를 재정의하는 것이 가능하다는 것을 알고 있습니다.회의서비스~/.local/share/dbus-1/services
그러나 이것은 확실히 작동하지 않을 것입니다체계제공하다.
openrc에서, 그래서 systemd의 systemctl 명령을 얻지 못합니다.
빠르고 더러운(다음 업데이트 시 서비스가 복원되므로) 접근 방식은 관련 서비스 파일의 이름을 바꾸는 것입니다. /usr/share/dbus-1/system-services
이것이 계속할 수 있는 유일한 방법입니까?
답변1
방금 같은 문제가 발생했고 dbus 코드를 조사한 후 해결책이 있다고 생각합니다.
/usr/local/share/dbus-1/system-services
에 있는 파일을 에 있는 파일을 덮어씁니다 /usr/share/dbus-1/system-services
. 따라서 서비스가 자동으로 시작되지 않도록 빈 파일을 만들 수 있습니다. 예를 들어, dbus가 login1을 자동으로 시작하지 않도록 하려면 다음을 수행하십시오.
mkdir -p /usr/local/share/dbus-1/system-services
touch /usr/local/share/dbus-1/system-services/org.freedesktop.login1.service
또한 이를 통해 사용자 서비스를 전역적으로 비활성화할 수 있습니다 /usr/local/share/dbus-1/services
.
자체적으로 서비스를 시작하는 것을 방지하는 또 다른 효과적인 방법은 를 사용하는 것입니다 -Dtraditional_activation=false
.
답변2
D-Bus 서비스 SystemdService=
에 Systemd 장치 파일을 가리키는 줄이 있습니까 SystemdService=systemd_unit_name.service
?
/etc/systemd/system/systemd_unit_name.service
그렇다면 에서 까지의 심볼릭 링크를 추가할 수 있습니다 /dev/null
. 이것이 systemctl mask systemd_unit_name.service
작동하는 방식입니다.
그러면 연결된 Systemd 서비스가 차단되므로 D-Bus 서비스를 활성화하려는 모든 시도가 실패합니다. 그러나 서비스가 차단되었으므로 로그에 활성화 실패에 대한 성가신 로그가 표시될 수 있습니다.
줄이 없으면 from to (테스트되지 않음)에 SystemdService=
심볼릭 링크를 추가해 볼 수 있습니다. Systemd 유닛 파일 이름이라는 D-Bus 유닛 파일에 별칭 매핑이 없으면 D-Bus 활성화는 D-Bus 유닛 파일과 동일한 이름을 가진 Systemd 유닛 파일만 찾습니다./etc/systemd/system/dbus_unit_name.service
/dev/null
dbus_unit_name.service
systemd_unit_name.service
dbus_unit_name.service
나는 D-Bus 시스템 서비스를 무시할 수도 있다고 믿습니다 /etc/dbus-1/system-services/
(다시 말하지만, 테스트되지 않았습니다).