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


14

我已经尝试了很长时间来更改Blender的图标,但是无论我做什么,都不允许在中编辑任何内容/snap/blender-tpaw/3/

这是我尝试过的:

  • 从编辑的文件nautilus没有sudo
  • nautilus使用sudosudo nautilus在终端中)编辑文件。
  • 使用终端命令,例如cprm不使用sudo
  • 结合使用终端命令sudo(例如sudo cp <source> /snap/blender-tpaw/3/sudo rm /snap/blender-tpaw/3/<filename.ext>
  • 在root终端中执行上述所有操作(使用sudo -i

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

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

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

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

我在这里做错什么了吗?还是不可能更改这些文件?尽管我认为这是不可能的,因为从Ubuntu到Blender的所有内容都是开源的,所以他们没有理由阻止我们修改这些文件。

编辑:

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

Answers:


12

如果不重新构建快照,就无法更改快照的内容。这主要是一种安全措施,以确保不会损坏快照。

但是,图标所指的可能是在被称为桌面文件blender-tpaw_blender.desktop可编辑的,并且可以发现/var/lib/snapd/desktop/applications

您可以更改以下行以更新图标:-

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

这种“不可能更改”的事情非常-我的意思是,非常-烦人!我想使用snap的主要原因是我想对同一程序(例如Firefox)进行并行安装,然后对“复制”安装进行实验,而又不会弄乱主安装。顺便说一句,.desktop文件上的更改在Firefox中不起作用。
Almir Campos

13

尽管该问题的前提在技术上是正确的(您不能更改快照文件),但是有一些方法可以解决此问题。

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

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

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

这实际上并不会更改快照文件系统。如果卸载该文件夹,则旧文件夹将取代它:

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

取自这里


很好的解决方案,非常感谢!只是一个小问题:较新的systemd版本(在撰写本文时,此版本为18.04)不再接受在包含软链接的路径上安装;值得庆幸的是在上述的配置可以用在一条线上取代/etc/fstab:例如echo -e "/etc/ssl/certs\t/snap/core/current/etc/ssl/certs\tnone\tbind,nodev,ro\t0 2" | sudo tee -a /etc/fstab-
sxc731
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.