因为 snaps 是以 root 身份安装的,所以不可能完全按照您在安装时的要求进行操作,因为 $SNAP_USER_DATA 是特定于用户的,所以它始终是 root 的。但是,您可以在安装时使用系统范围的目录执行此操作,例如 $SNAP_DATA、using the install hook:
$ snapcraft init
Created snap/snapcraft.yaml.
Edit the file to your liking or run `snapcraft` to get started
创建钩子。在我们的例子中,我们只是在$SNAP_DATA 中创建一个新文件,但你可以做任何你想做的事情。
$ mkdir -p snap/hooks
$ echo "touch \$SNAP_DATA/foo" >> snap/hooks/install
$ chmod a+x snap/hooks/install
构建快照。
$ snapcraft
Preparing to pull my-part
Pulling my-part
Preparing to build my-part
Building my-part
Staging my-part
Priming my-part
Snapping 'my-snap-name' |
Snapped my-snap-name_0.1_amd64.snap
安装快照。这将运行install 挂钩。
$ sudo snap install my-snap-name_0.1_amd64.snap --devmode --dangerous
my-snap-name 0.1 installed
请注意在 $SNAP_DATA 中创建了一个文件。
$ ls /var/snap/my-snap-name/current
foo
为$SNAP_USER_DATA 获得类似功能的唯一方法是将您的真实命令包装在创建配置的脚本中。这个命令然后由用户运行,这意味着你得到了你想要的$SNAP_USER_DATA。当然,这不是在安装时。