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

Too*_*iis 22 permissions read-only snap

我一直在尝试更改 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>
  • 在根终端中执行上述所有操作(使用sudo -i

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

cannot remove/copy '/snap/blender-tpaw/3/filename.ext': Read-only file system
Run Code Online (Sandbox Code Playgroud)

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

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

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

编辑:

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

whe*_*ler 20

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

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

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

sudo mount --bind -o nodev,ro /etc/ssl/certs /snap/core/current/etc/ssl/certs/
Run Code Online (Sandbox Code Playgroud)

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

sudo umount /snap/core/current/etc/ssl/certs
Run Code Online (Sandbox Code Playgroud)

注意:在重新启动之间挂载不会持续。有几种方法可以在重新启动后保持挂载。一种方法是创建一个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
Run Code Online (Sandbox Code Playgroud)

取自这里

  • 很好的解决方案,非常感谢 v. !只是一个小问题:较新的 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` -- [源代码](https://github.com/coreos/bugs/issues/2407) (3认同)

pop*_*pey 16

如果不重新构建快照,就不可能更改快照的内容。这主要是一种安全措施,以确保快照未被篡改。

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

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

Icon=/snap/blender-tpaw/3/meta/gui/icon.svg
Run Code Online (Sandbox Code Playgroud)

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