저는 systemd 버전 246을 사용하고 있습니다.
$ systemctl --version
systemd 246 (246.2-1-arch)
+PAM +AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid
해당 문서는 ConditionEnvironment
systemd.unit 맨페이지에 있습니다. 그러나 다음과 같은 단위 파일에서 사용하면 ~/.config/systemd/user/i3-session-pre.target
:
[Unit]
Description=i3 session
Documentation=man:systemd.special(7)
BindsTo=graphical-session-pre.target
ConditionEnvironment=XDG_SESSION_DESKTOP=i3
내 사용자 로그에 다음 항목이 표시됩니다.
systemd[599]: /home/****/.config/systemd/user/i3-session-pre.target:5: Unknown key name 'ConditionEnvironment' in section 'Unit', ignoring.
또한 systemd-analyze condition
이 상황을 처리할 수 없습니다.
$ systemd-analyze condition ConditionEnvironment=XDG_SESSION_DESKTOP=i3
Cannot parse "ConditionEnvironment=XDG_SESSION_DESKTOP=i3".
내가 뭘 잘못했나요?
답변1
나는 당신이 잘못한 것이 없다고 생각합니다. systemd에 버그가 있는 것 같아요.
Debian 테스트(systemd 246 및 업그레이드 246.1 이후)에서 다음을 관찰했습니다.
ConditionEnvironment=
단지버전 246으로 출시됨2020년 7월 30일(이 글을 작성하기 2.5주 전) 및풀 리퀘스트5월 15일에 통합되었습니다. 그러므로 아직 성숙하지 않았다고 보는 것이 타당하다.
이것이 버그라고 생각하게 만드는 테스트는 다음과 같습니다.
$ systemd-analyze condition \
'ConditionKernelVersion=' \
'ConditionKernelVersion=' \
'ConditionACPower=' \
'ConditionArchitecture=' \
'AssertPathExists=' \
'ConditionEnvironment='
Cannot parse "ConditionEnvironment=".
각 조건을 하나씩 실행하면 을 제외한 모든 조건이 빈 표현식으로 해석됩니다 ConditionEnvironment=
.
귀하의 목표를 그대로 (i3 환경에서도) 시도한 결과 ConditionEnvironment=
목표 달성 여부에 아무런 영향을 미치지 않는 것으로 나타났습니다. 올바른 값과 잘못된 값을 모두 시도했습니다. 따라서 이 질문은 에 국한된 것이 아닙니다 systemd-analyze
.
제가 매우 흥미로웠던 것 중 하나는 댓글이었습니다.xdg-autostart-generator/xdg-autostart-condition.c:
* This binary is intended to be run as an ExecCondition= in units generated
* by the xdg-autostart-generator. It does the appropriate checks against
* XDG_CURRENT_DESKTOP that are too advanced for simple ConditionEnvironment=
* matches.
/lib/systemd/systemd-xdg-autostart-condition
나는 그 오류가 타당하다고 생각하지만, 작업 중인 정확한 환경에서 문제를 극복하기 위해 생성기를 제작(및 배포)했다는 점이 흥미롭다고 생각합니다 .
나는오류 보고서데비안과 함께. 나는 데비안 개발자들이 이를 살펴보고 시스템 개발자들에게 업스트림을 전달해주기를 바랍니다.