我一直在尝试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
显示插头和插槽已连接。
我究竟做错了什么?
答案1
你太接近了!
内容共享接口将插槽绑定安装到插件的目标。为此,参数target
必须指向现有目录(绑定安装需要像任何其他安装一样安装在某个目录之上)。因此,在您的 中,不要使用插件,consumer
而是使用插件并将一个空目录转储到 snap 的根目录中。然后您将看到的目录显示在的目录中。nil
dump
shared
provider
$SNAP/src
consumer
$SNAP/shared
请注意,从系统角度看,您看不到这一点。如果您ls /snap/consumer/current/shared/
从系统角度看,它将是您打包到 snap 中的空目录。但是,当启动应用程序时,运行它的上下文包含该绑定挂载。让我来证明这一点:
$ 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
在与所讨论应用程序所使用的环境完全相同的环境中运行 shell。因此,运行snap run --shell consumer
您正在请求具有与consumer
应用程序相同的限制和环境的 shell。这就是我可以$SNAP
在那里使用的原因。请注意,file1
和是我的目录file2
中包含的文件。provider
src
最后一点:假设您希望应用consumer
程序列出共享目录的内容,您可以将其更改为如下所示(无需使用 /snap/consumer/current):
apps:
consumer:
command: ls -lR $SNAP/shared/