我已经安装了 Ubuntu 18.04 LTS。
我把 USB 闪存插入笔记本电脑。它自动安装到/media/用户名/DISKLABEL并在 Nautilus 中打开。我可以读取和写入对象。
如何从作为 Snap 安装的应用程序访问它?
我尝试了以下应用程序的快照,例如gedit
,,arduino-mhall119
。organize-my-files
如果我导航到/媒体文件夹:
无法读取媒体内容
打开“/media”目录时出错:权限被拒绝
主动捕捉输出接口在下面:
$ snap interfaces | grep -v ".*-$"
Slot Plug
:browser-support organize-my-files
:core-support core:core-support-plug
:cups-control gedit
:desktop gedit,organize-my-files
:desktop-legacy gedit,organize-my-files
:gsettings gedit,organize-my-files
:home arduino-mhall119,gedit,organize-my-files
:network arduino-mhall119,gedit,organize-my-files,pulsemixer
:opengl organize-my-files
:pulseaudio organize-my-files,pulsemixer
:unity7 arduino-mhall119,gedit,organize-my-files
:wayland gedit
:x11 arduino-mhall119,organize-my-files,pulsemixer
gnome-3-26-1604:gnome-3-26-1604 gedit
gtk-common-themes:gtk3-themes gedit
gtk-common-themes:icon-themes gedit
gtk-common-themes:sound-themes gedit
- arduino-mhall119:serial-port
- gedit:avahi-observe
- gedit:mount-observe
更新:
- 連接安装-观察对 Gedit 来说
snap connect gedit:mount-observe
没有帮助。 - 看来我们需要特殊的 Snap 来支持
removable-media
界面。
答案1
因此我们需要专门准备支持removable-media
连接器/接口/插件的 Snap。
以下是 Snap 的列表可移动媒体YAML-manifest 中描述的插件:
- 甚高频-甚高频液晶
- 火狐-火狐
- 瘸子-GIMP
- 平均密度-Markdown lint 工具
- 离线地图-离线IMAP
- 魔法虫洞-魔法虫洞
- mattermost 桌面-最重要的事
- storjshare-gui-斯托尔吉
- 开放卡通-开放卡通
- opentoonz-morevna-开放卡通- Morevna 版
- obs-studio-OBS工作室
- steamforwindows-使用 Wine 运行 Windows 版 Steam
- 铬
- zotero-snap-佐特罗
- 自由办公室-libreoffice-snap
- Joplin 桌面-joplin 桌面
SnapCrafters 发布的其他 Snap 如下:GitHub 搜索链接。
因此,如果应用程序没有自动连接,removable-media
我们需要使用以下方法手动连接:
snap connect some-snap-name:removable-media
但并非所有应用程序在 YAML-manifest 中都有此插件/接口。
很难找到受支持的插件包 - 所以我创建了关于 snapcraft.io 网站的问题“添加使用过滤器(插件等removable-media
)进行参数化 Snap 搜索的功能”。
snap
关于命令named的bug“snap
应提供查找具有所需插头或连接器的软件包的功能”已作为错误 1776938 提交到启动板。
答案2
答案3
要快速访问 USB 存储,需要联系到removable-media
。一些 snap 会自动连接到它。如果没有,你可以使用以下命令手动连接它:
snap connect snap-name:removable-media
有时,此命令会失败并显示以下消息:
error: snap "snap-name" has no plug named "removable-media"
这意味着软件包的发布者没有表明该应用程序能使用可移动媒体。在这种情况下,您应该联系出版商并要求他们添加removable-media
界面到 Snap 的插头。
大多数 Snap 都会显示如何联系发布者;运行snap info snap-name
并查看contact
字段中的电子邮件地址或 URL。
自动连接removable-media
发布者可以要求其 Snap 自动连接到界面removable-media
。以下类别的应用程序允许此功能。
- 主流浏览器例如 Brave、Firefox 和 Chromium。
- 媒体编辑例如像 gimp 的照片编辑器、像 OpenToonz 的视频编辑器或像 Audacity 的音频编辑器。
- 媒体播放器/查看器例如 VLC 媒体播放器等视频播放器或图像查看程序。
- 媒体记录器例如屏幕录制程序、网络摄像头程序、OBS Studio 或播客录制应用程序。
如果某个应用程序属于上述任一类别,且未removable-media
自动连接到该应用程序,请联系发布者并要求他们请求自动连接到removable-media
。
答案4
Snap 应用程序需要启用removable-media
插头才能访问 USB 存储和其他驱动器。您可以通过以下方式执行此操作第1部分以下。
如果您不幸需要一个不受支持的快照removable-media
,那么您可以尝试按照以下说明添加它。
我必须这样做自由平面(思维导图应用程序)snap 和类似的过程也适用于其他 snap。我将使用自由平面在以下说明中 - 请将其替换为您的 snap 应用程序的等效内容。
第 1 部分:检查可移动媒体支持
- 使用 搜索确切安装的 snap 应用程序名称
snap list | grep freeplane
。显示 snap 名称的freeplane-mindmapping
版本号为 [1.9.7]。 - 尝试使用 连接到可移动媒体
sudo snap connect freeplane-mindmapping:removable-media
。如果您没有收到任何错误消息,则表示可移动媒体已启用,并且到此停止:你的工作已完成! - 如果您收到错误消息
error: snap "freeplane-mindmapping" has no plug named "removable-media"
,则表示该 snap 应用程序中未启用 emovable-media 插件。 - 检查使用启用了哪些连接
snap connections freeplane-mindmapping
,结果应类似于:
请注意,上面的输出不显示接口,但它显示了以 开头和以 结尾的removable-media
其他接口列表。我们将在该 snap 应用程序的 .yaml 配置文件中添加以下内容。cups-control
x11
removable-media
x11
第 2 部分:解压 snap 文件
根据 Bernard Wei 的回答,snap 文件以只读方式安装,因此要修改它们,您需要取消压缩它,修改文件,然后重新制作 squashfs 文件。
- 键入
mount |grep freeplane
以查找快照文件路径 (/var/lib/snapd/snaps/freeplane-mindmapping_29.snap
) 和挂载点 (/snap/freeplane-mindmapping/29
)。记下文件路径和挂载点,因为稍后会需要它们。 - 使用 卸载此 snap 包
sudo umount /snap/freeplane-mindmapping/29
。输入后snap list | grep freeplane
snap 包会显示为“损坏”。 - 通过键入 来取消压缩 snap 文件
sudo unsquashfs /var/lib/snapd/snaps/freeplane-mindmapping_29.snap
。snap 文件将被提取到~/squashfs-root/
。 - 使用 Nautilus 转到
~/squashfs-root/meta
(例如使用 Ctrl-L)。 - 右键单击
Edit as Administrator
文件snap.yaml
。 - 向下滚动到调用的部分
plugs
并输入:removable-media
x11
- 保存并关闭 gedit/编辑器
第 3 部分:重新插入修改后的 snap 文件
- 使用 重新制作 snap 文件
sudo mksquashfs squashfs-root freeplane-mindmapping_29.snap
。修改后的 snap 文件将创建在 Home 文件夹中。 - 使用 用修改后的 snap 覆盖原始的 snap 文件
sudo cp freeplane-mindmapping_29.snap /var/lib/snapd/snaps/freeplane-mindmapping_29.snap
。 - 使用 将修改后的快照安装到原始安装位置
sudo mount -t squashfs -o ro,nodev,relatime,x-gdu.hide /var/lib/snapd/snaps/freeplane-mindmapping_29.snap /snap/freeplane-mindmapping/29
。 - 如果它有效,
snap list | grep freeplane
将不再显示为“损坏”。 - 如果
snap connections freeplane-mindmapping
没有显示removable-media
,则重新启动。 - 现在
snap connections freeplane-mindmapping
应该显示removable-media
。 - 使用 启用可移动媒体
snap connect freeplane-mindmapping:removable-media
。 您现在可以访问可移动媒体了! - [可选]
squashfs-root
使用 删除文件夹sudo rm -r ~/squashfs-root
。 - [可选] 为了方便访问,您可以使用 创建到可移动媒体的符号链接
ln -s /path/to/folder ~/snap/freeplane-mindmapping/29/
。
祝你好运!