snap - Cannot get basic Content interface example working with Snapcraft - Ask Ubuntu
i have been trying content interface working trivial example.
consumer:
name: consumer # want 'snapcraft register <name>' version: '0.1' # humans, typically '1.2+git' or '1.3.2' summary: single-line elevator pitch amazing snap # 79 char long summary description: | grade: devel # must 'stable' release candidate/stable channels confinement: devmode # use 'strict' once have right plugs , 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 provider:
name: provider # want 'snapcraft register <name>' version: '0.1' # humans, typically '1.2+git' or '1.3.2' summary: single-line elevator pitch amazing snap # 79 char long summary description: | grade: devel # must 'stable' release candidate/stable channels confinement: devmode # use 'strict' once have right plugs , slots parts: my-part: plugin: dump source: . slots: shared-files: content: shared-files interface: content read: - /src /src has random files placed in it. can see these in /snap/provider/current in /snap/consumer/current tree - believe should appear. snap interfaces shows plug , slot connected.
what doing wrong?
you're close!
the content sharing interface bind-mounts slot plug's target. end, target parameter must pointing existing directory (bind mounts need mount on top of other mount). in consumer, instead of using nil plugin, use dump plugin , dump empty shared directory root of snap. you'll see provider's $snap/src directory show in consumer's $snap/shared directory.
note won't see system perspective. if ls /snap/consumer/current/shared/ system, it'll empty directory packaged snap. however, when application fired up, context in run contains bind mount. let me prove it:
$ snap run --shell consumer run command administrator (user "root"), use "sudo <command>". see "man sudo_root" details. $ ls $snap/shared/ file1 file2 snap run --shell runs shell within exact environment used application in question. running snap run --shell consumer you're asking shell same confinement , environment consumer app have. that's why use $snap there. note file1 , file2 files contained within provider's src directory.
one last note: assuming want consumer app list contents of shared directory, change (no need use /snap/consumer/current):
apps: consumer: command: ls -lr $snap/shared/
Comments
Post a Comment