在最近的 c't(可悲的是付费墙)中有一篇关于 Snap 和 Flatpak 的文章。
这听起来与 Docker 非常相似,很多概念是相同的。现在我的问题是 Snap 和 Docker 之间有什么区别?这些是不同的用例吗?
我刚刚升级到 Ubuntu 19.10,令我震惊的是,我发现默认浏览器 Chromium 无法再访问除 /home 之外的其他分区。
这意味着我的包含音乐和视频(/多媒体)的分区无法再访问,例如上传到 Google Drive。这包括 USB 分区。
我在这里找到了对这种现象的另一种描述:https : //fosspost.org/reviews/distributions/ubuntu-19-10-review它说
“此外,虽然我们承认大多数用户只需要访问他们的主文件夹,但值得一提的是,您不再可以从 Chromium 内部访问系统文件和文件夹(除了您的主文件夹之外,您无法访问任何内容)。这意味着例如,如果您要使用上传网站将文件或图像上传到 Internet,则此文件/图像必须位于您的主文件夹中,因为您无法访问 /usr、/etc 等目录或位于的其他目录在您的根分区中。事实上,您根本无法再访问任何其他分区,这包括 U 盘和其他启动分区:”
我想知道为什么要引入这种行为?它违反了多个磁盘、分区和符号链接的整体思想。顺便说一句,这仍然适用于 Firefox。
我的问题是
这不是snap 的经典模式是什么的副本,为什么有些 snap 没有它就不能安装(例如 MS Visual Studio)?因为那是关于我没有得到的安装过程中的特定错误。我的问题是关于 Ubuntu 19.10 中铬的访问权限。
无论如何,我使用来自 Google 的原始 debian 包通过以下命令解决了该问题:
sudo apt-get install google-chrome-stable
Run Code Online (Sandbox Code Playgroud)
之后,我现在可以再次访问我的其他分区。我知道这在某种意义上是 hacky,因为该软件包不是 Ubuntu 原生的,所以我真的很想获得一些关于如何将多个磁盘和分区与 Chromium 的这种新受限行为合并的建议。
非常感谢
我在 Ubuntu 22.04 上有 gimp 2.10.30。每当我尝试打开主文件夹之外的图像时,它都会显示Error opening directory '<directory>': permission denied.
当我右键单击图像并选择使用 gimp 打开时,它显示:Opening <image path> failed: Could not open <image path> for reading: No such file or directory。我该如何解决这个问题?
通常我会避免使用基于快照的应用程序,但有时我需要它们。
例如 - Markdown Lint Tool 仅以 Snap 命名 mdl。
当文件在主文件夹中时效果很好 -
$ echo "# header" > ~/test.md
$ /snap/bin/mdl ~/test.md ; echo $?
0
Run Code Online (Sandbox Code Playgroud)
但是当文件位于/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>'
Run Code Online (Sandbox Code Playgroud)
对于此特定应用程序,没有以下选项 …
我的计算机上有一个双启动设置,Windows + Ubuntu。此外,我的计算机中有一个辅助硬盘驱动器,格式化为 NTFS。两种操作系统都可以访问该驱动器。这非常方便,因为我可以将我所有的音乐、个人文件和项目放在那里,并从 Windows 和 Ubuntu 访问它们。在 Ubuntu 上,此驱动器安装在~/shared.
但是 Ubuntu 上的 Snap 应用程序不允许访问此驱动器。这包括 Gimp、VLC、SubtitleEdit 之类的东西,它们可以访问我保存在那里的媒体文件。
这些应用程序使用访问可移动驱动器的选项注册自己。我根据这篇文章授予他们此权限,他们确实能够访问 /media 中的内容,例如 U 盘。但不是这个 NTFS 分区安装在我的主目录中。
我有两种解决方法:
我最近从 18.04 版本升级到 Ubuntu 20.04。从那时起, 20.04 附带的snap基于 的chromium浏览器无法访问/opt我单独安装在系统上的分区中的任何项目。
如果我不厌其烦地安装非snap基于版本的chromium,则在 20.04 下就不会出现此问题。
我不确定,但我认为访问运行 snap 程序的文件系统之外的文件系统的问题可能存在于所有snap基于 的软件中,而不仅仅是chromium.
我怎样才能让chromium所有其他snap基于的程序看到我已经安装的所有文件系统?
非常感谢。
PS:在我的系统上,/opt通过以下行安装/etc/fstab...
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /opt ext4 defaults,auto 0 0
Run Code Online (Sandbox Code Playgroud)
...其中 x 代替实际的、有效的 UUID。
PPS:snap我的系统上的所有非基于软件在访问该分区上的任何内容时都没有任何问题/opt。
PPPS:参考文章中建议的解决方案并不能解决我的问题,因为我必须改变我的系统(更改安装、路径、脚本等),只是为了让这个残缺的snap基于 -的chromium系统像以前一样工作之前工作。我的目标是根本不改变我长期存在的系统设置,而是简单地安装一个chromium可以以与我多年来运行它相同的方式运行的版本。我现在发布的答案显示了我学习如何做到这一点的方式。在发现消除snap基于 -chromium并将其替换为传统版本的方法后,我花了不超过 10 分钟的时间进行替换chromium,以便一切都像以前一样能够运行。
snap ×4
permissions ×3
filesystem ×2
20.04 ×1
22.04 ×1
chromium ×1
container ×1
docker ×1
gimp ×1
mount ×1
tmp ×1
tmpfs ×1
ubuntu-core ×1