我正在尝试使用Snapcraft.io构建一个应用程序版本,我几乎已经完成了所有工作。
Snapcraft已经编译了源代码,生成了.snap文件,包含了所有的依赖项,等等。
然而,我被困在如何在第一个应用程序安装后初始化SNAP_USER_DATA文件夹中的一些配置文件。
我不想将文件放在默认只读路径SNAP中,因为默认参数应该由用户修改,我还需要生成一些额外的文件,比如服务器证书。
因此,我需要复制一些文件,并在第一次安装后运行脚本。
这个是可能的吗?
谢谢。
发布于 2017-09-07 03:34:51
因为快照是以根用户身份安装的,所以不可能在安装时完全按照您的要求执行操作,因为$SNAP_USER_DATA是特定于用户的,所以它将始终是根用户的快照。但是,您可以在安装时使用系统范围的目录(如$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。当然,这不是在安装时。
https://stackoverflow.com/questions/39931891
复制相似问题