Guix를 설치한 후 번들 SELinux 정책을 실행하려면 어떻게 설치해야 합니까 guix-daemon.service
?
Fedora 34 워크스테이션에 Guix 1.3.0을 설치하려면 다음을 사용했습니다.쉘 설치 프로그램 스크립트:
$ cd /tmp
$ wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
$ chmod +x guix-install.sh
$ sudo ./guix-install.sh
스크립트가 성공적으로 완료되었습니다. 프롬프트를 숨기고 설치했습니다.이름 서비스 캐시 데몬:
$ sudo dnf install nscd
$ sudo systemctl enable nscd
$ sudo systemctl start nscd
불행히도 나는 할 수 없습니다설치 계속glibc-locales
guix-daemon.service
실행되고 있지 않기 때문에 :
$ guix install glibc-locales
hint: Consider installing the `glibc-utf8-locales' or `glibc-locales' package and defining `GUIX_LOCPATH', along these lines:
guix install glibc-utf8-locales
export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
See the "Application Setup" section in the manual, for more info.
guix install: error: failed to connect to `/var/guix/daemon-socket/socket': No such file or directory
$ systemctl status guix-daemon
× guix-daemon.service - Build daemon for GNU Guix
Loaded: loaded (/etc/systemd/system/guix-daemon.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2021-08-19 21:12:26 EEST; 2h 29min ago
Main PID: 793 (code=exited, status=203/EXEC)
CPU: 1ms
сер 19 21:12:26 fedora systemd[1]: Started Build daemon for GNU Guix.
сер 19 21:12:26 fedora systemd[793]: guix-daemon.service: Failed to locate executable /var/guix/profiles/per-user/root/current-guix/bin/guix-daemon: Permission denied
сер 19 21:12:26 fedora systemd[793]: guix-daemon.service: Failed at step EXEC spawning /var/guix/profiles/per-user/root/current-guix/bin/guix-daemon: Permission denied
сер 19 21:12:26 fedora systemd[1]: guix-daemon.service: Main process exited, code=exited, status=203/EXEC
сер 19 21:12:26 fedora systemd[1]: guix-daemon.service: Failed with result 'exit-code'.
сер 19 23:35:07 fedora systemd[1]: /etc/systemd/system/guix-daemon.service:12: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
сер 19 23:35:07 fedora systemd[1]: /etc/systemd/system/guix-daemon.service:13: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
~에 따르면수동:
etc/guix-daemon.cil
Guix 에는 SELinux 지원 시스템에 설치하여 Guix 파일을 표시하고 데몬의 예상 동작을 지정할 수 있는 SELinux 정책 파일이 포함되어 있습니다 .
Libera Chat 채널의 사람들은 #guix
위의 지침이 git에서 수동으로 컴파일된 Guix에 작동한다는 것을 알아내는 데 도움을 주었습니다. 쉘 설치 프로그램 스크립트를 사용하여 설치된 Guix의 경우 다음에서 파일을 찾아야 합니다 /gnu/store
.
$ find /gnu -name guix-daemon.cil
/gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/share/selinux/guix-daemon.cil
$ cd /gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/share/selinux/
$ sudo semodule -i guix-daemon.cil
지금,설명서에 따르면:
restorecon
그런 다음 시스템에서 제공하는 다른 메커니즘을 사용하여 파일 시스템의 레이블을 다시 지정합니다.
나는 시도했다:
$ sudo restorecon -vR /gnu
이것은 많은 것을 반환할 것이다
restorecon: Could not set context for /gnu/…: Read-only file system
예를 들어:
$ find /gnu -name guix-daemon.service
/gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/lib/systemd/system/guix-daemon.service
$ sudo restorecon -v /gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/lib/systemd/system/guix-daemon.service
restorecon: Could not set context for /gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/lib/systemd/system/guix-daemon.service: Read-only file system
그리고 데몬은 여전히 시작되지 않습니다.
내 생각에는 문제가 SELinux 구성이나 Fedora가 이를 처리하는 방법과 관련되어 있는 것 같지만 직접 조사하는 방법을 이해할 수 없습니다. Guix 이슈 트래커 검색"읽기 전용 파일 시스템" "SELinux"관련 없는 질문 2개만 반환되었습니다.
답변1
게시한 guix 설치 스크립트를 살펴본 결과 /gnu를 설치하기 위해 systemd를 통해 마운트 지점을 생성하는 것 같습니다. 이를 수행하는 설치 스크립트의 일부는 다음과 같습니다.
{ # systemd .mount 유닛의 이름은 대상 디렉터리의 이름을 따라 지정되어야 합니다. # 여기서는 하드코딩된 이름이 /gnu/store라고 가정합니다. # XXX 솔루션https://issues.guix.gnu.org/41356다음 버전까지. if [ -f "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" ] then cp "~root/.config/guix/current/lib/systemd/system/gnu- store.mount"
/etc/systemd/system/; chmod 664 /etc/systemd/system/gnu-store.mount; systemctl daemon-reload && systemctl 활성화 gnu-store.mount;
따라서 이는 다음과 같은 파일이 있어야 함을 의미합니다.gnu-store.mount체계적으로. 자세히 살펴보니 다음과 같은 내용이 있었습니다.
[Unit]
Description=Read-only @storedir@ for GNU Guix
DefaultDependencies=no
ConditionPathExists=@storedir@
Before=guix-daemon.service
[Install]
WantedBy=guix-daemon.service
[Mount]
What=@storedir@
Where=@storedir@
Type=none
Options=bind,ro
Options=bind,ro를 보면 확실히 읽기 전용이므로 rw로 변경하고 다시 마운트한 다음 Restoreconn을 사용하여 레이블을 다시 지정해야 합니다. 설명으로 판단하면 이대로는 안 될 것 같지만 시도해 보겠습니다. 이게 도움이 되길 바란다