为什么不能以任何方式修改快照文件?

我一直在尝试更改Blender的图标,但不管我做什么,我都不允许在/snap/blender-tpaw/3/编辑任何内容。

这是我尝试过的:

  • 在没有sudo情况下编辑来自nautilus的文件。
  • 使用sudo编辑来自nautilus的文件(终端中的sudo nautilus )。
  • 使用终端命令,如cprm不带sudo
  • 使用带sudo终端命令(例如sudo cp /snap/blender-tpaw/3/sudo rm /snap/blender-tpaw/3/
  • 在根终端上执行上述所有操作(使用sudo -i

在每种情况下,我都会收到以下错误:

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

其中filename是文件,.ext是其扩展名。

这也适用于其他快照的文件,而不仅仅是Blender。

我在这里做错了吗? 或者只是不可能改变这些文件? 虽然我不认为这是不可能的,因为从Ubuntu到Blender的所有内容都是开源的,所以他们没有理由阻止我们修改这些文件。

编辑:

我使用主菜单(alacarte)来更改图标,但我仍然想知道为什么我无法修改任何快照文件。

如果不重新构建快照,则无法更改快照的内容。 这主要是一种安全措施,以确保快照没有被篡改。

但是,所引用的图标可能位于名为blender-tpaw_blender.desktop的桌面文件中,该文件可编辑的,可以在/var/lib/snapd/desktop/applications

您可以更改以下行来更新图标: –

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

虽然问题的前提在技术上是正确的(你无法更改快照的文件),但有办法解决这个问题。

其中一种方法是将--bind选项与mount结合使用,以将现有文件层次结构重新mount到其他位置。

例如,如果您希望快照使用系统证书而不是core安装的证书,则可以使用以下命令将包含系统证书的目录安装在core系统证书目录之上的主机

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

这实际上并没有改变snap文件系统。 如果卸载该文件夹,旧文件夹将取代它:

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

注意:重新启动之间不会保留挂载。 重启后有几种方法可以使挂载持续存在。 一种方法是创建一个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 

从这里开始 。