尝试使用任何 snap 包时,我遇到以下问题:
$ gimp
cannot create user data directory: /local/home/user/snap/gimp/40: Read-only file system
(Gimp 只是一个例子)。
我有我$HOME
的/local/home/$USER/
(我无法改变这个!)并且发现人们在 snap-store 论坛上遇到了同样的问题:
https://forum.snapcraft.io/t/how-can-i-use-snap-when-i-dont-use-home-user/3352和https://bugs.launchpad.net/snapcraft/+bug/1620771
在这个线程中,人们说/home
这是硬编码的snap
,他们建议使用绑定挂载来解决这个问题。
我尝试过的:
$ sudo mount --bind $HOME /home/$USER
ls
正确列出了我的内容$HOME
$ ls /home/$USER
我还将额外的主目录添加到/etc/apparmor.d/tunables/home.d/my-homes
:
$ cat /etc/apparmor.d/tunables/home.d/my-homes
@{HOMEDIRS}+=/local/home/
并/var/lib/snapd/apparmor/snap-confine/my-homes
:
$ cat /var/lib/snapd/apparmor/snap-confine/my-homes
mount options=(rw rbind) @{HOMEDIRS}/ -> /tmp/snap.rootfs_*/home/,
再次使用 bind-mount 和 / 或更改文件运行 snap,出现与之前相同的错误。
我该如何解决这个问题?
$ snap list gimp
Name Version Rev Tracking Developer Notes
gimp 2.10.0 40 stable snapcrafters -
$ snap --version
snap 2.32.9
snapd 2.32.9
series 16
ubuntu 16.04
kernel 4.4.0-127-generic
答案1
从 2.59 版开始,Snapd 有一个主目录系统选项来处理此问题。要升级到工作版本,您可以使用命令:
snap refresh --channel=latest/edge snapd
我甚至不需要设置主目录之后,但以防万一你可以使用:
snap set system homedirs=/local/home/
答案2
snapd 开发人员在这里
很抱歉这对您来说是一个问题,因为您没有提供有关您正在使用的 snapd 版本的详细信息(提示,运行snap version
并粘贴到此处)或您的真实主目录的详细安排(遗憾的是这也很重要)。
我自己还没有亲自尝试过这个,但是你应该可以用这样的绑定安装:
sudo mount --bind /some/random/place/home/zyga /home/zyga
如果你将其添加到你的文件中,则可以使它永久生效/etc/fstab
。之后你必须还要将您的主目录更改为真实位置/home/zyga
而不是原始位置。
如果失败请snap install hello-world
添加以下命令的输出:
SNAP_CONFINE_DEBUG=yes hello-world dmesg | grep DENIED