Как получить доступ к USB-хранилищу из приложения, установленного как Snap?

14

У меня установлена ​​Ubuntu 18.04 LTS.

Я вставил USB-флешку в свой ноутбук. Он был автоматически смонтирован в / media / username / DISKLABEL и открыт в Nautilus. Я могу читать и писать объекты к нему.

Как я могу получить к нему доступ из приложения, которое установлено как Snap?

Я попытался шнапс следующих приложений , таких как gedit, arduino-mhall119, organize-my-files. Все они показывают мне ошибки, если я перехожу в папку / media :

пытаюсь получить доступ / медиа

пытаюсь получить доступ / медиа

Вывод активных интерфейсов Snap ниже:

$ 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

Обновления:

  • Подключение Маунт-Наблюдения к Гедиту с snap connect gedit:mount-observeне помогает.
  • Похоже, нам нужен специальный Snap с поддержкой removable-mediaинтерфейса.
N0rbert
источник

Ответы:

12

Поэтому нам нужна специально подготовленная Snap с поддержкой removable-mediaинтерфейса / плагина.

Ниже приведен список Snap со сменным носителем, описанным в YAML-манифесте:

Можно найти другие Snaps, выпущенные SnapCrafters по следующей поисковой ссылке GitHub .


Поэтому, если приложение не имеет автоматического подключения, removable-mediaнам нужно подключить его вручную:

snap connect some-snap-name:removable-media

Но не все приложения имеют этот плагин / интерфейс в YAML-манифесте.


Трудно найти пакеты с помощью поддерживаемых плагинов - поэтому я создал проблему «Добавить возможность параметрического поиска Snap с помощью фильтров (плагинов, таких как removable-mediaи т. Д.)» На сайте snapcraft.io .

Ошибка snapкоманды с именем « snapдолжна обеспечивать функциональность для поиска пакетов с необходимым штекером или соединителем» была отправлена ​​на панель запуска как ошибка 1776938 .

N0rbert
источник
Правильная команда:snap connect some-snap-name:removable-media
Зигмунт Криницкий
@ZygmuntKrynicki конечно. Спасибо, я исправил эту глупую опечатку.
Норберт
Ошибка, которая упоминается в последних двух параграфах, действительно раздражает, но простой способ ее обойти, если пакет snap уже установлен,snap interfaces some-snap-name
karel
@ Карел, верно. Спасибо! У меня есть эта команда уже под вопросом. Основной проблемой является определение заглушек из неустановленных Snap.
Норберт
1
Ошибка, которая упоминается в последних двух параграфах, действительно раздражает, но простой способ ее обойти, если пакет оснастки уже установлен snap connections some-snap-name: это обновление моего предыдущего комментария.
Карел
4

Программа Ubuntu Software теперь будет отображать кнопку «Разрешения» на странице каждой установленной вами программы Snap.

страница Krita программы Ubuntu Software с кнопками под заголовком - Запуск, Удаление и Разрешения

Нажмите «Разрешения», и во всплывающем окне появится опция «Чтение / запись файлов на съемных устройствах хранения» с кнопкой справа, которую вы нажимаете, чтобы включить эту функцию.

введите описание изображения здесь

Таким образом, вам нужно активировать каждую программу одну за другой, но не нужно ничего запоминать, кроме того, что кнопка существует.

держатель ким
источник
Пожалуйста, добавьте скриншот "Нажмите на разрешения и всплывающее окно" к ответу.
Норберт
@ N0rbert Готово ...
владелец
3

Интерфейс, который нужно подключить, есть removable-media.

Может получить доступ к файлам со съемных носителей в / media и / run / media. Это можно использовать для предоставления приложению доступа к подключенным USB-накопителям и внешним жестким дискам на рабочем столе.

mount-observeТолько интерфейс позволяет просматривать то , что установлено, не монтирует доступ:

Может запросить информацию о монтировании системы. Это ограничено, поскольку предоставляет привилегированный доступ на чтение для аргументов монтирования и должно использоваться только с доверенными приложениями.

Ни один из этих двух интерфейсов не будет автоматически подключаться. С https://github.com/snapcore/snapd/wiki/Interfaces#removable-media

Добей
источник
Я не знаю. Кажется, что это делает obs-studio, но я нашел это только потому, что в описании приложения упоминался интерфейс доступа к внешнему хранилищу. Я не знаю, как запросить магазин для конкретных интерфейсов в оснастке. Если конкретная привязка не поддерживает интерфейс, ее, вероятно, нужно будет перестроить, чтобы поддержать.
Добей