为什么不能以任何方式修改快照文件?
我一直在尝试更改Blender的图标,但不管我做什么,我都不允许在/snap/blender-tpaw/3/
编辑任何内容。
这是我尝试过的:
- 在没有
sudo
情况下编辑来自nautilus
的文件。 - 使用
sudo
编辑来自nautilus
的文件(终端中的sudo nautilus
)。 - 使用终端命令,如
cp
或rm
不带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
从这里开始 。