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

6

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

Veja o que tentei:

  • Editando os arquivos de nautilus sem sudo .
  • Editando os arquivos de nautilus com sudo ( sudo nautilus no terminal).
  • Usando comandos do terminal, como cp ou rm sem 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

em que 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 que seja impossível, porque tudo aqui do Ubuntu para o Blender é de código aberto, então eles não têm razão para nos impedir de modificar esses arquivos.

EDITAR:

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

    
por Tooniis 26.05.2017 / 12:51

2 respostas

4

É impossível alterar o conteúdo do snap sem reconstruir o snap. Esta é principalmente uma medida de segurança, para garantir que o snap não tenha sido adulterado.

No entanto, o ícone mencionado provavelmente está em um arquivo da área de trabalho chamado blender-tpaw_blender.desktop , o qual é 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
    
por popey 26.05.2017 / 13:02
3

Embora a premissa da questão seja tecnicamente correta (você não pode alterar os arquivos de uma só vez), existem maneiras de contornar isso.

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

Por exemplo, se você quiser que seus snaps usem os certificados do sistema em vez dos certificados instalados em core , você pode montar o diretório que contém os certificados do sistema no host na parte superior do sistema diretório de certificados em core com o seguinte comando:

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

Isso não altera realmente o sistema de arquivos de snap. Se você desmontar a pasta, a pasta antiga ficará em seu lugar:

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

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

$ 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

Extraído de aqui .

    
por wheeler 15.05.2018 / 18:31