¿Por qué los archivos instantáneos no se pueden modificar de ninguna manera?

14

He estado tratando durante mucho tiempo de cambiar el ícono de Blender, pero no importa lo que haga, no se me permite editar nada /snap/blender-tpaw/3/.

Esto es lo que probé:

  • Edición de los archivos desde nautilusafuera sudo.
  • Edición de los archivos desde nautiluscon sudo( sudo nautilusen la terminal).
  • Usar comandos de terminal como cpo rmsin sudo.
  • Usar comandos de terminal con sudo(como sudo cp <source> /snap/blender-tpaw/3/o sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • Hacer todo lo anterior en un terminal raíz (usando sudo -i)

En todos los casos me sale el siguiente error:

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

donde nombre de archivo es el archivo y .ext es su extensión.

Esto también se aplica a los archivos de otras instantáneas, no solo a Blender.

¿Estoy haciendo algo mal aquí? ¿O es simplemente imposible cambiar esos archivos? Aunque no creo que sea imposible porque todo aquí, desde Ubuntu hasta Blender, es de código abierto, por lo que no tienen ninguna razón para impedir que modifiquemos esos archivos.

EDITAR:

Utilicé el Menú principal (alacarte) para cambiar el ícono, pero aún quiero saber por qué no puedo modificar ningún archivo instantáneo.

Tooniis
fuente

Respuestas:

12

Es imposible cambiar el contenido del complemento sin reconstruir el complemento. Esto es principalmente una medida de seguridad, para garantizar que el complemento no haya sido alterado.

Sin embargo, el icono al que se hace referencia probablemente se encuentra en un archivo de escritorio llamado blender-tpaw_blender.desktopque es editable y se puede encontrar en él /var/lib/snapd/desktop/applications.

Puede cambiar la siguiente línea para actualizar el icono: -

Icon=/snap/blender-tpaw/3/meta/gui/icon.svg
papa
fuente
Esta cosa "imposible de cambiar" con snap es muy, quiero decir, ¡MUY molesta! La razón principal por la que me gustaría usar Snap es que quiero hacer instalaciones paralelas del mismo programa (por ejemplo, Firefox) y luego hacer experimentos con la instalación de "copia" sin estropear la instalación principal. Por cierto, el cambio en el archivo .desktop no funcionó en el caso de Firefox.
Almir Campos
13

Si bien la premisa de la pregunta es técnicamente correcta (no puede cambiar los archivos en un instante), hay formas de evitar esto.

Una de esas formas es utilizar la --bindopción junto con mount, para volver a montar la jerarquía de archivos existente en otro lugar.

Por ejemplo, si desea que sus instantáneas utilicen los certificados del sistema en lugar de los certificados instalados core, puede montar el directorio que contiene los certificados del sistema en el host en la parte superior del directorio de certificados del sistema corecon el siguiente comando:

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

En realidad, esto no cambia el sistema de archivos snap. Si desmonta la carpeta, la carpeta anterior ocupará su lugar:

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

Nota: Los montajes no persisten entre reinicios. Hay varias formas de hacer que las monturas persistan después de un reinicio. Una de esas formas es crear un systemdscript de inicio:

$ 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

Tomado de aquí .

rodador
fuente
Gran solución, muchas gracias v. Solo un inconveniente: las versiones más recientes de systemd (la de 18.04 a partir de este escrito) ya no aceptan monturas sobre rutas que contienen enlaces blandos; Afortunadamente, la configuración anterior podría reemplazarse con una línea /etc/fstab, por ejemplo: echo -e "/etc/ssl/certs\t/snap/core/current/etc/ssl/certs\tnone\tbind,nodev,ro\t0 2" | sudo tee -a /etc/fstab- fuente
sxc731