Por que os arquivos snap não podem ser modificados de forma alguma?


14

Estou tentando há muito tempo alterar o ícone do Blender, mas não importa o que eu faça, não tenho permissão para editar nada /snap/blender-tpaw/3/.

Aqui está o que eu tentei:

  • Editando os arquivos de nautilusfora sudo.
  • Editando os arquivos de nautiluscom sudo( sudo nautilusno terminal).
  • Usando comandos do terminal, como cpou rmsem sudo.
  • Usando comandos do terminal com sudo(como sudo cp <source> /snap/blender-tpaw/3/ou sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • Fazendo tudo acima em um terminal raiz (usando sudo -i)

Em todos os casos, recebo o seguinte erro:

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

onde filename é o arquivo e .ext é sua extensão.

Isso também se aplica aos arquivos de outros snaps, não apenas ao Blender.

Estou fazendo algo errado aqui? Ou é simplesmente impossível alterar esses arquivos? Embora eu não ache impossível, porque tudo aqui do Ubuntu ao Blender é de código aberto, então eles não têm motivos para nos impedir de modificar esses arquivos.

EDITAR:

Usei o Menu Principal (alacarte) para alterar o ícone, mas ainda quero saber por que não consigo modificar nenhum arquivo snap.

Respostas:


12

É impossível alterar o conteúdo do snap sem reconstruí-lo. Essa é principalmente uma medida de segurança, para garantir que o snap não tenha sido violado.

No entanto, o ícone mencionado provavelmente está em um arquivo da área de trabalho chamado blender-tpaw_blender.desktopque é editável e pode ser encontrado em /var/lib/snapd/desktop/applications.

Você pode alterar a seguinte linha para atualizar o ícone: -

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

Essa coisa "impossível de mudar" com o snap é muito - quero dizer, MUITO - irritante! A principal razão pela qual eu gostaria de usar o snap é que eu quero fazer instalações paralelas do mesmo programa (por exemplo, Firefox) e depois fazer experimentos com a instalação "copy" sem atrapalhar a instalação principal. A propósito, a alteração no arquivo .desktop não funcionou no caso do Firefox.
Almir Campos

13

Embora a premissa da pergunta esteja tecnicamente correta (você não pode alterar os arquivos rapidamente), existem maneiras de contornar isso.

Uma dessas maneiras é usar a --bindopção em conjunto com mount, para remontar a hierarquia de arquivos existente para outro lugar.

Por exemplo, se você desejar que seus snapshots usem os certificados do sistema em vez dos certificados instalados core, poderá montar o diretório que contém os certificados do sistema no host na parte superior do diretório de certificados do sistema corecom o seguinte comando:

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

Na verdade, isso não altera o sistema de arquivos snap. Se você desmontar a pasta, a pasta antiga substituirá:

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

Nota: As montagens não persistem entre as reinicializações. Existem várias maneiras de fazer com que as montagens persistam após uma reinicialização. Uma dessas maneiras é criar um systemdscript de inicialização:

$ 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

Retirado daqui .


Ótima solução, muito obrigado! Apenas uma pequena coisinha: as versões mais recentes do systemd (a versão 18.04 deste artigo) não aceitam mais montagens no topo de caminhos que contêm links flexíveis; felizmente a configuração acima pode ser substituída por uma linha /etc/fstab, por exemplo: 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 23/02/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.