Я пытался добраться content
интерфейс, работающий с тривиальным примером.
потребитель:
name: consumer # you probably want to 'snapcraft register <name>'
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: Single-line elevator pitch for your amazing snap # 79 char long summary
description: |
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots
apps:
consumer:
command: ls -lR /snap/consumer/current/
parts:
my-part:
# See 'snapcraft plugins'
plugin: nil
plugs:
shared-files:
content: shared-files
interface: content
target: shared
default-provider: provider:shared-files
поставщик:
name: provider # you probably want to 'snapcraft register <name>'
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: Single-line elevator pitch for your amazing snap # 79 char long summary
description: |
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots
parts:
my-part:
plugin: dump
source: .
slots:
shared-files:
content: shared-files
interface: content
read:
- /src
/src
имеет некоторые случайные файлы, помещенные в него. Я вижу их в /snap/provider/current
но нигде в /snap/consumer/current
дерево - который является, где я полагаю, что они должны появиться. snap interfaces
шоу, что разъем и слот подключены.
Что я делаю неправильно?
Вы так близки!
довольное интерфейс совместного использования связывает - монтирует слот к цели разъема. С этой целью target
параметр должен указывать на существующий каталог (свяжите, монтирует потребность смонтироваться сверху чего-то точно так же, как любые другие монтируются). Таким образом в Вашем consumer
, вместо того, чтобы использовать nil
плагин, использование dump
плагин и выводят пустое shared
каталог в корень снимка. Затем Вы будете видеть provider
$SNAP/src
, каталог обнаруживается в consumer
$SNAP/shared
каталог.
Примечание, что Вы не будете видеть это с системной точки зрения. Если Вы ls /snap/consumer/current/shared/
от системы, это будет пустой каталог, Вы упаковали в снимок. Однако, когда приложение разожжено, контекст, в котором оно выполняется, содержит, которые связывают, монтируются. Позвольте мне доказать его:
$ snap run --shell consumer
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
$ ls $SNAP/shared/
file1 file2
snap run --shell
выполнения оболочка в точной среде, которая использовалась бы для рассматриваемого приложения. Так выполнение snap run --shell consumer
Вы просите оболочку с тем же заключением и средой, чтобы consumer
приложение имело бы. Вот почему я мог использовать $SNAP
там. Обратите внимание, что file1
и file2
файлы, содержавшие в моем provider
src
каталог.
Одно последнее примечание: предположение, что Вы хотите consumer
приложение перечислить содержание общего каталога, Вы изменили бы его для сходства с этим (никакая потребность использовать/snap/consumer/current):
apps:
consumer:
command: ls -lR $SNAP/shared/