我一直试图改变 Blender 的图标,但无论我做什么,我都无法编辑任何内容/snap/blender-tpaw/3/
。
以下是我尝试过的:
nautilus
从外部编辑文件sudo
。nautilus
使用sudo
(sudo nautilus
在终端中)编辑文件。- 使用诸如
cp
或rm
不带 的终端命令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
其中 filename 是文件,.ext 是其扩展名。
这也适用于其他快照文件,而不仅仅是 Blender。
我在这里做错了什么吗?还是根本就无法更改这些文件?虽然我不认为这是不可能的,因为从 Ubuntu 到 Blender 的一切都开源,所以他们没有理由阻止我们修改这些文件。
编辑:
我使用主菜单(alacarte)来更改图标,但我仍然想知道为什么我无法修改任何快照文件。
答案1
虽然这个问题的前提在技术上是正确的(你不能更改快照文件),但仍有办法解决这个问题。
其中一种方法是将--bind
选项与 结合使用mount
,将现有文件层次结构重新挂载到其他位置。
例如,如果您希望 snap 使用系统证书而不是安装在 中的证书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
取自这里。
答案2
如果不重建 snap,就无法更改 snap 的内容。这主要是一种安全措施,以确保 snap 没有被篡改。
但是,所指的图标很可能位于blender-tpaw_blender.desktop
名为是可编辑,可在 中找到/var/lib/snapd/desktop/applications
。
您可以更改以下行来更新图标:-
Icon=/snap/blender-tpaw/3/meta/gui/icon.svg
答案3
事实上是可以使用snap try
命令解压编辑并运行 snap。以下是 Microstack 的示例:
# Remove existing installation:
sudo snap remove --purge microstack
# download and unpack tree
mkdir ~/snap-repo
cd ~/snap-repo
snap download microstack --beta
mkdir ~/snap-tree
cd ~/snap-tree
sudo unsquashfs ../snap-repo/microstack_245.snap
现在您可以自由编辑下的文件~/snap-tree/squashfs-root
。准备就绪后,您可以使用以下命令运行 snap 并进行更改:
sudo snap try ~/snap-tree/squashfs-root/
snap list microstack
Name Version Rev Tracking Publisher Notes
microstack ussuri x1 - - try
完成后你就可以snap remove PACKAGE
照常运行。