通常我会避免使用基于 snap 的应用程序,但有时我需要它们。
例如 - Markdown Lint Tool 仅以 Snap 命名 mdl
。
当文件在主文件夹中时它工作得很好 -
$ echo "# header" > ~/test.md
$ /snap/bin/mdl ~/test.md ; echo $?
0
但是当文件位于/tmp
目录中时它会失败:
$ echo "# header" > /tmp/test.md
$ cat /tmp/test.md
# header
$ /snap/bin/mdl /tmp/test.md
/snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl/doc.rb:57:in `read': No such file or directory @ rb_sysopen - /tmp/test.md (Errno::ENOENT)
from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl/doc.rb:57:in `new_from_file'
from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl.rb:75:in `block in run'
from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl.rb:73:in `each'
from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl.rb:73:in `run'
from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/bin/mdl:10:in `<top (required)>'
from /snap/mdl/140/bin/mdl:23:in `load'
from /snap/mdl/140/bin/mdl:23:in `<main>'
对于此特定应用程序,没有以下选项snap connect
:
$ snap connections | grep mdl
home mdl:home :home -
我也不能将它安装为经典:
$ snap install mdl --classic
Warning: flag --classic ignored for strictly confined snap mdl
mdl 0.9.0 from Snapcrafters installed
我应该怎么做才能让 Snap 应用程序完全访问该/tmp
文件夹?
它是由 Snap 设计发生的吗?
看来您可能正在寻找“正确”的方法来解决快照引起的问题......
但是,如果您正在寻找一种解决方法以便可以使用 tmp 目录,您可以:
mdl 将可以通过 /home/you/tmp 挂载点完全访问 /tmp 目录:
要使其永久化,您可以将此行添加到
/etc/fstab
:并用 重建 initrd
sudo update-initramfs -u -k all
。我通常非常支持改变和 Ubuntu,但是如果像我一样,你觉得这真的很烦人,我想出的解决办法是在我的家中添加一个目录:
并添加一个 crontab 以在重新启动时对其进行核对:
然后加:
不得不这样做真的很愚蠢。
我完全支持沙盒和安全性。我完全赞成改变,但这删除了一个重要的用例“在此处保存此文件,然后稍后删除它而无需我考虑它。”
从用户的角度来看,它也确实有问题。您可以将 Firefox 中的某些内容保存到 /tmp 中,没有错误。但是当你试图在文件浏览器中找到那个东西时,它并不存在。哇。
算我很恼火。