Dlaczego plików Snap nie można w żaden sposób modyfikować?

14

Od dłuższego czasu próbuję zmienić ikonę Blendera, ale bez względu na to, co robię, nie mogę niczego edytować /snap/blender-tpaw/3/.

Oto, co próbowałem:

  • Edycja plików z nautiluszewnątrz sudo.
  • Edycja plików z nautilusprzy pomocy sudo( sudo nautilusw terminalu).
  • Korzystanie z poleceń terminalowych, takich jak cplub rmbez sudo.
  • Używanie poleceń terminala z sudo(np. sudo cp <source> /snap/blender-tpaw/3/Lub sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • Robienie wszystkiego powyżej w terminalu głównym (używanie sudo -i)

W każdym przypadku pojawia się następujący błąd:

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

gdzie nazwa pliku to plik, a .ext to jego rozszerzenie.

Dotyczy to również plików innych snapów, nie tylko Blendera.

Czy robię tu coś złego? A może zmiana tych plików jest po prostu niemożliwa? Chociaż nie uważam, że jest to niemożliwe, ponieważ wszystko tutaj, od Ubuntu po Blender, jest oprogramowaniem typu open source, więc nie mają powodu, aby blokować nam modyfikowanie tych plików.

EDYTOWAĆ:

Użyłem menu głównego (alacarte), aby zmienić ikonę, ale nadal chcę wiedzieć, dlaczego nie mogę modyfikować żadnego pliku Snap.

Tooniis
źródło

Odpowiedzi:

12

Nie można zmienić zawartości przystawki bez ponownego zbudowania przystawki. Jest to przede wszystkim środek bezpieczeństwa, aby upewnić się, że snap nie został naruszony.

Jednak ikona, o której mowa, prawdopodobnie znajduje się w pliku na pulpicie, blender-tpaw_blender.desktopktóry można edytować, i można go znaleźć w /var/lib/snapd/desktop/applications.

Możesz zmienić następujący wiersz, aby zaktualizować ikonę: -

Icon=/snap/blender-tpaw/3/meta/gui/icon.svg
Popey
źródło
Ta „niemożliwa do zmiany” rzecz z zatrzaskiem jest bardzo - mam na myśli BARDZO - denerwująca! Głównym powodem, dla którego chciałbym użyć przystawki, jest to, że chcę wykonywać równoległe instalacje tego samego programu (np. Firefox), a następnie eksperymentować z instalacją „kopiuj” bez zakłócania instalacji głównej. Nawiasem mówiąc, zmiana w pliku .desktop nie działała w przypadku Firefoksa.
Almir Campos
13

Chociaż przesłanka pytania jest technicznie poprawna (nie można zmienić plików w mgnieniu oka), istnieją sposoby na obejście tego.

Jednym z takich sposobów jest użycie --bindopcji w połączeniu z mount, aby ponownie zamontować istniejącą hierarchię plików w innym miejscu.

Na przykład, jeśli chcesz, aby snapy korzystały z certyfikatów systemowych zamiast zainstalowanych w nich certyfikatów core, możesz zamontować katalog zawierający certyfikaty systemowe na hoście w górnej części katalogu certyfikatów systemowych coreza pomocą następującej komendy:

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

To tak naprawdę nie zmienia systemu plików Snap. Jeśli odmontujesz folder, stary folder zajmie jego miejsce:

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

Uwaga: wierzchowce nie utrzymują się między restartami. Istnieje kilka sposobów na utrzymanie mountów po ponownym uruchomieniu. Jednym z takich sposobów jest utworzenie systemdskryptu uruchamiania:

$ 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

Zabrano stąd .

kołodziej
źródło
Świetne rozwiązanie, dziękuję bardzo. Tylko jeden niggle: nowsze wersje systemowe (ta z 18.04 w chwili pisania tego tekstu) nie akceptują montowań na ścieżkach zawierających miękkie linki; na szczęście powyższą konfigurację można zastąpić linią w /etc/fstab, np .: 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