Perché i file di snap non possono essere modificati in alcun modo?


14

Ho cercato per molto tempo di cambiare l'icona di Blender, ma qualunque cosa io faccia, non mi è permesso modificare nulla /snap/blender-tpaw/3/.

Ecco cosa ho provato:

  • Modificare i file da nautilussenza sudo.
  • Modifica dei file da nautiluscon sudo( sudo nautilusnel terminale).
  • Utilizzo di comandi terminali come cpo rmsenza sudo.
  • Utilizzo dei comandi del terminale con sudo(come sudo cp <source> /snap/blender-tpaw/3/o sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • Fare tutto quanto sopra in un terminale di root (usando sudo -i)

In ogni caso ricevo il seguente errore:

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

dove nomefile è il file e .ext è la sua estensione.

Questo vale anche per i file di altri snap, non solo per Blender.

Sto facendo qualcosa di sbagliato qui? O è semplicemente impossibile cambiare quei file? Anche se non penso che sia impossibile perché tutto qui da Ubuntu a Blender è open-source, quindi non hanno motivo di impedirci di modificare quei file.

MODIFICARE:

Ho usato il menu principale (alacarte) per cambiare l'icona, ma voglio ancora sapere perché non riesco a modificare alcun file di snap.

Risposte:


12

È impossibile modificare il contenuto dello snap senza ricostruire lo snap. Questa è principalmente una misura di sicurezza, per garantire che lo snap non sia stato manomesso.

Tuttavia, l'icona a cui si fa riferimento è probabilmente in un file desktop chiamato blender-tpaw_blender.desktopche è modificabile e può essere trovato in /var/lib/snapd/desktop/applications.

È possibile modificare la seguente riga per aggiornare l'icona: -

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

Questa cosa "impossibile da cambiare" con lo snap è molto - intendo, MOLTO - fastidiosa! La ragione principale per cui vorrei usare snap è che voglio fare installazioni parallele dello stesso programma (es. Firefox) e poi fare esperimenti con l'installazione "copia" senza rovinare l'installazione principale. A proposito, la modifica del file .desktop non ha funzionato nel caso di Firefox.
Almir Campos

13

Mentre la premessa della domanda è tecnicamente corretta (non è possibile modificare i file di uno snap), ci sono modi per aggirare questo.

Uno di questi modi è usare l' --bindopzione insieme a mount, per rimontare la gerarchia di file esistente da qualche altra parte.

Ad esempio, se si desidera che i propri snap utilizzino i certificati di sistema anziché i certificati installati core, è possibile montare la directory contenente i certificati di sistema sull'host in cima alla directory dei certificati di sistema corecon il comando seguente:

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

Questo in realtà non cambia il filesystem di snap. Se smonti la cartella, la vecchia cartella prenderà il suo posto:

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

Nota: i montaggi non persistono tra i riavvii. Esistono diversi modi per rendere persistenti i montaggi dopo un riavvio. Uno di questi è creare uno systemdscript di avvio:

$ 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

Tratto da qui .


Ottima soluzione, grazie v. Molto! Solo un inconveniente: le nuove versioni di systemd (quella del 18.04 al momento della stesura di questo documento) non accettano più montaggi in cima a percorsi che contengono collegamenti soft; per fortuna la configurazione di cui sopra potrebbe essere sostituita con una riga in /etc/fstab, ad esempio: echo -e "/etc/ssl/certs\t/snap/core/current/etc/ssl/certs\tnone\tbind,nodev,ro\t0 2" | sudo tee -a /etc/fstab- fonte
sxc731
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.