Не может получить основной пример интерфейса Content, работающий с Snapcraft

Я пытался добраться 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 шоу, что разъем и слот подключены.

Что я делаю неправильно?

2
задан 24 October 2016 в 01:58

1 ответ

Вы так близки!

довольное интерфейс совместного использования связывает - монтирует слот к цели разъема. С этой целью 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/
4
ответ дан 2 December 2019 в 02:16

Другие вопросы по тегам:

Похожие вопросы: