Snapcraft 放置默认配置文件

Posted

技术标签:

【中文标题】Snapcraft 放置默认配置文件【英文标题】:Snapcraft Placing Default Config Files 【发布时间】:2017-02-17 07:37:32 【问题描述】:

我正在尝试使用Snapcraft.io 构建应用程序版本,并且几乎所有工作都已完成。Snapcraft 已经编译了源代码,生成了 .snap 文件,包含所有依赖项等等。但是,我不知道如何在第一次安装应用程序后初始化 SNAP_USER_DATA 文件夹中的一些配置文件。我不想将文件放在默认的只读路径 SNAP 中,因为默认参数应该由用户修改,我还需要生成一些额外的文件,比如服务器证书。所以我需要复制一些文件,并在第一次安装后运行一个脚本。 这可能吗?

谢谢。

【问题讨论】:

【参考方案1】:

因为 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。当然,这不是在安装时。

【讨论】:

以上是关于Snapcraft 放置默认配置文件的主要内容,如果未能解决你的问题,请参考以下文章

「Django框架」-拆分配置文件settings

配置文件的默认位置 - MacOS?

如何通过配置文件在 Jetty 中配置登录?

nginx配置文件详解

kafka--linux环境搭建

Spring CloudSpring Cloud Config 实现分布式配置中心