在很多snap应用开发的时候,我们可以使用我们自己的一个wrapper,并在这个wrapper中指定一些变量从而能够使得我们的应用能够正常地运行。这个特性也特别适合在移植有些snap应用中需要特别设定一些路径到我们snap应用的一些可读写目录中从而避免安全的问题。那么我们怎么实现这个功能呢?
我们先来看一下我们做的一个例程:
https://github.com/liu-xiao-guo/helloworld-env
snapcraft.yaml
name: hello
version: "1.0"
summary: The 'hello' of snaps
description: |
This is a simple snap example that includes a few interesting binaries
to demonstrate snaps and their confinement.
* hello-world.env - dump the env of commands run inside app sandbox
grade: stable
confinement: strict
type: app #it can be gadget or framework
icon: icon.png
apps:
env:
command: bin/env
environment:
VAR1: $SNAP/share
VAR2: "hello, the world"
evil:
command: bin/evil
sh:
command: bin/sh
parts:
hello:
plugin: dump
source: .
在上面的例子中,在“env”命令中,我们添加了environment项。在它的里面,我们定义了两个环境变量:VAR1及VAR2。
打包我们的应用,同时执行我们的命令“hello.env”。
$ hello.env | grep VAR
VAR1=$SNAP/share
VAR2=hello, the world