Pourquoi les fichiers d'accrochage ne peuvent-ils être modifiés d'aucune façon?

14

J'essaie depuis longtemps de changer l'icône de Blender, mais quoi que je fasse, je ne suis pas autorisé à modifier quoi que ce soit dans /snap/blender-tpaw/3/.

Voici ce que j'ai essayé:

  • Modification des fichiers depuis l' nautilusextérieur sudo.
  • Édition des fichiers depuis nautilusavec sudo( sudo nautilusdans le terminal).
  • Utilisation de commandes de terminal telles que cpou rmsans sudo.
  • Utilisation de commandes de terminal avec sudo(comme sudo cp <source> /snap/blender-tpaw/3/ou sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • Faire tout ce qui précède dans un terminal racine (en utilisant sudo -i)

Dans tous les cas, j'obtiens l'erreur suivante:

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

où nom_fichier est le fichier et .ext est son extension.

Cela s'applique également aux fichiers d'autres snaps, pas seulement à Blender.

Est-ce que je fais quelque chose de mal ici? Ou est-il simplement impossible de modifier ces fichiers? Bien que je ne pense pas que ce soit impossible car tout ici, d'Ubuntu à Blender, est open-source, ils n'ont donc aucune raison de nous empêcher de modifier ces fichiers.

ÉDITER:

J'ai utilisé le menu principal (alacarte) pour changer l'icône, mais je veux toujours savoir pourquoi je ne peux modifier aucun fichier snap.

Tooniis
la source

Réponses:

12

Il est impossible de modifier le contenu du composant logiciel enfichable sans reconstruire le composant logiciel enfichable. Il s'agit principalement d'une mesure de sécurité, pour garantir que le composant logiciel enfichable n'a pas été falsifié.

Cependant, l'icône appelée est probablement dans un fichier de bureau appelé blender-tpaw_blender.desktopqui est modifiable et peut être trouvé dans /var/lib/snapd/desktop/applications.

Vous pouvez modifier la ligne suivante pour mettre à jour l'icône: -

Icon=/snap/blender-tpaw/3/meta/gui/icon.svg
popey
la source
Cette chose "impossible à changer" avec Snap est très - je veux dire, TRÈS - ennuyeuse! La principale raison pour laquelle j'aimerais utiliser snap est que je veux faire des installations parallèles du même programme (par exemple Firefox) et ensuite faire des expériences avec l'installation de "copie" sans gâcher l'installation principale. Soit dit en passant, la modification du fichier .desktop n'a pas fonctionné dans le cas de Firefox.
Almir Campos
13

Bien que la prémisse de la question soit techniquement correcte (vous ne pouvez pas modifier les fichiers d'un composant logiciel enfichable), il existe des moyens de contourner ce problème.

L'une de ces méthodes consiste à utiliser l' --bindoption conjointement avec mount, pour remonter la hiérarchie de fichiers existante ailleurs.

Par exemple, si vous souhaitez que vos snaps utilisent les certificats système au lieu des certificats installés dans core, vous pouvez monter le répertoire contenant les certificats système sur l'hôte au-dessus du répertoire des certificats système coreavec la commande suivante:

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

Cela ne change pas réellement le système de fichiers snap. Si vous démontez le dossier, l'ancien dossier prendra sa place:

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

Remarque: les montages ne persistent pas entre les redémarrages. Il existe plusieurs façons de faire persister les montages après un redémarrage. L'une de ces méthodes consiste à créer un systemdscript de démarrage:

$ 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

Pris d' ici .

wheeler
la source
Excellente solution, merci beaucoup. Juste un petit problème: les nouvelles versions de systemd (celle du 18.04 au moment d'écrire ces lignes) n'acceptent plus les montages sur les chemins qui contiennent des liens logiciels; heureusement, la configuration ci-dessus pourrait être remplacée par une ligne /etc/fstab, par exemple: 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