스냅 파일을 어떤 방식으로도 수정할 수없는 이유는 무엇입니까?


14

블렌더의 아이콘을 변경하려고 오랫동안 노력했지만, 내가 무엇을하든에에서 아무것도 편집 할 수 없습니다 /snap/blender-tpaw/3/.

내가 시도한 것은 다음과 같습니다.

  • nautilus없이 파일을 편집합니다 sudo.
  • ( 터미널에서) 을 nautilus사용 하여 파일을 편집합니다 .sudosudo nautilus
  • 같은 명령을 사용하여 단말 cp또는 rm없이를 sudo.
  • 단말기에 명령을 사용하여 sudo(예 sudo cp <source> /snap/blender-tpaw/3/또는 sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • 루트 터미널에서 위의 모든 작업 수행 ( sudo -i)

모든 경우에 다음과 같은 오류가 발생합니다.

cannot remove/copy '/snap/blender-tpaw/3/filename.ext': Read-only file system

여기서 filename은 파일이고 .ext는 확장자입니다.

이것은 Blender뿐만 아니라 다른 스냅 파일에도 적용됩니다.

내가 여기서 잘못하고 있습니까? 아니면 그 파일을 변경하는 것이 불가능합니까? 우분투에서 블렌더에 이르는 모든 것이 오픈 소스이기 때문에 불가능하다고 생각하지는 않지만 파일을 수정하지 못하게 할 이유가 없습니다.

편집하다:

주 메뉴 (알라 카르테)를 사용하여 아이콘을 변경했지만 여전히 스냅 파일을 수정할 수없는 이유를 알고 싶습니다.

답변:


12

스냅을 다시 작성하지 않고 스냅의 내용을 변경하는 것은 불가능합니다. 이는 스냅이 조작되지 않도록하기위한 보안 조치입니다.

그러나, 아이콘에라는 바탕 화면 파일에 가능성이 언급 blender-tpaw_blender.desktop하는 것입니다 편집, 그리고에서 찾을 수 있습니다 /var/lib/snapd/desktop/applications.

아이콘을 업데이트하기 위해 다음 줄을 변경할 수 있습니다.

Icon=/snap/blender-tpaw/3/meta/gui/icon.svg

이 "변경이 불가능"한 것은 매우 매우 성가신 일입니다. snap을 사용하고 싶은 주된 이유는 동일한 프로그램 (예 : Firefox)을 병렬로 설치 한 다음 주 설치를 방해하지 않고 "복사"설치를 실험하고 싶기 때문입니다. 그런데 Firefox의 경우 .desktop 파일의 변경 사항이 작동하지 않았습니다.
Almir Campos

13

질문의 전제는 기술적으로 정확하지만 (스냅 파일을 변경할 수는 없음)이 문제를 해결할 수있는 방법이 있습니다.

이러한 방법 중 하나는 --bind옵션을와 함께 사용 mount하여 기존 파일 계층을 다른 곳에 다시 마운트하는 것입니다.

예를 들어, 스냅이에 설치된 인증서 대신 시스템 인증서를 사용하도록 하려면 다음 명령 을 사용하여 시스템 인증서 디렉토리 상단의core 호스트 시스템 인증서가 포함 된 디렉토리를 마운트 할 수 있습니다 core.

sudo mount --bind -o nodev,ro /etc/ssl/certs /snap/core/current/etc/ssl/certs/

이것은 실제로 스냅 파일 시스템을 변경하지 않습니다. 폴더를 마운트 해제하면 이전 폴더가 대신 사용됩니다.

sudo umount /snap/core/current/etc/ssl/certs

참고 : 재부팅시 마운트는 유지되지 않습니다. 재부팅 후 마운트를 유지하는 몇 가지 방법이 있습니다. 그러한 방법 중 하나는 systemd시작 스크립트 를 작성하는 것입니다 .

$ cat <<-EOF | sudo tee /etc/systemd/system/snap-core-current-etc-ssl-certs.mount
[Unit]
Description=Mount unit to fix etc ssl certs in core package
After=snapd.service

[Mount]
What=/etc/ssl/certs
Where=/snap/core/current/etc/ssl/certs
Type=none
Options=bind,nodev,ro

[Install]
WantedBy=multi-user.target
EOF
$ systemctl enable snap-core-current-etc-ssl-certs.mount

여기 에서 찍은 .


훌륭한 솔루션, 고마워요! 새로운 시스템 버전 (이 글을 쓰는 시점에서 18.04의 버전)은 더 이상 소프트 링크가 포함 된 경로 위에 마운트를 허용하지 않습니다. 고맙게도 위의 구성은 다음과 같은 줄로 바꿀 수 있습니다 /etc/fstab. echo -e "/etc/ssl/certs\t/snap/core/current/etc/ssl/certs\tnone\tbind,nodev,ro\t0 2" | sudo tee -a /etc/fstab- source
sxc731
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.