J'ai installé un package à l'aide de snap
et je dois modifier l'un des fichiers, mais lorsque j'essaie de modifier sa propriété ou ses autorisations, le message suivant s'affiche toujours:
Sudo chmod +x ./my_file.js
chmod: changing permissions of '/snap/my_app/my_file.js': Read-only file system
Comment puis-je modifier les fichiers installés via snap
?
tilisation des partitions SnapSquashFS , qui est essentiellement un format d'image disque compressé en lecture seule qui est généralement utilisé pour créer des CD/DVD live. SquashFS n'a tout simplement pas été conçu pour être en lecture-écriture. Pour modifier le contenu, même quelque chose d'aussi simple que de modifier les autorisations de fichiers, ne peut être effectué par un simple remontage.
Vos options sont:
Reconstruisez le système de fichiers SquashFS. Les ressources suivantes devraient être utiles:
Utilisez OverlayFS pour enregistrer les modifications séparément.
Si vous souhaitez devenir un développeur Snap, vous voudrez peut-être commencer par ce tutoriel pour créer votre premier snap .
Les fichiers de programme de Snap sont protégés contre les modifications. Cela se fait par le processus de montage des fichiers protégés dans leur espace spécifique en lecture seule.
Le processus comporte également un espace spécifique pour les données de configuration, qui comprend l'espace d'accueil spécifique de l'utilisateur (/home/user/snap
) pour les données et les configurations, ainsi qu'un espace pour les données mondiales (/var/snap
).
Tous les fichiers instantanés du monde entier sont lisibles et accessibles via des liens symboliques vers la zone /snap
.
Vous pouvez vérifier l'emplacement réel et la manière dont les espaces sont liés à l'aide des commandes suivantes.
ne commande pour voir des exemples de montages protégés par snap:
$ mount | egrep snap | egrep ro,
/var/lib/snapd/snaps/core_4486.snap on /snap/core/4486 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/communitheme_185.snap on /snap/communitheme/185 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/hello-world_27.snap on /snap/hello-world/27 type squashfs (ro,nodev,relatime)
/var/lib/snapd/snaps/core_4407.snap on /snap/core/4407 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/communitheme_124.snap on /snap/communitheme/124 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core_4571.snap on /snap/core/4571 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/communitheme_246.snap on /snap/communitheme/246 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/vlc_190.snap on /snap/vlc/190 type squashfs (ro,nodev,relatime,x-gdu.hide)
ne commande pour voir des exemples d'espaces de capture qui ne sont pas protégés en écriture:
$ mount | egrep snap | egrep -v ro,
tmpfs on /run/snapd/ns type tmpfs (rw,nosuid,noexec,relatime,size=3293156k,mode=755)
nsfs on /run/snapd/ns/hello-world.mnt type nsfs (rw)
nsfs on /run/snapd/ns/vlc.mnt type nsfs (rw)
Par votre message d'erreur, vous essayez d'apporter des modifications aux fichiers protégés par programme par le programmeur. Votre question suggère que vous êtes le programmeur de l'application. Il vous faudra donc utiliser les fonctionnalités de la configuration de la programmation de snap pour décider quels fichiers seront placés où.
Comme je l'ai suggéré dans les commentaires, il serait plus sûr et plus courant de concevoir votre programme dans un environnement de développement en tant qu'utilisateur normal ... normalement dans votre espace personnel, puis utilisez le système de développement de la capture pour installer la nouvelle version.
Je ne suis pas un programmeur d'instantané et je ne peux pas vous donner de détails précis sur la façon dont le processus de conception et d'exportation pour l'utilisation fonctionne avec snap. Mais j'imagine que cela pourrait ressembler à la conception de programmes Android ou Java, où le développeur utilisera un type de méthode d'exportation ou de publication pour exécuter ou tester la nouvelle version dans une configuration installée.
Vous pouvez éventuellement essayer de remonter en lecture/écriture les systèmes de fichiers protégés en lecture seule. Je ne le conseillerais pas, car il pourrait être possible de casser l'intégrité du système d'accrochage ou de fournir un comportement inattendu dans lequel votre application risque de ne pas se comporter comme prévu en raison de la modification du système d'accrochage lui-même.