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


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.