我正在构建一个 snap 包,我的应用程序需要一个配置文件,该文件通常放在 /etc 下,并且只能由 root 用户编辑。
我发现我可以通过例如 $SNAP/myconfig 来轻松引用 snap 限制内的配置文件。但是,这会使 myconfig 变为只读。
那么,如何将配置文件放入 $SNAP_DATA 或其等效文件?我猜想这样的文件必须暴露给系统(用 snappy 的说法)并且可由系统用户(root)写入。
答案1
我通常的做法是让软件读取多个文件:
- 用户配置
- 全局配置
- 默认配置
堆栈上部的每个键(例如 yaml 或 json,或者只是键值对)都会覆盖下面的键。
这样,您就可以发送您的默认配置$SNAP
,如果用户设置了全局配置,他可以$SNAP_DATA
使用相同的文件名进行调整(或复制)。并且在用户级别与$SNAP_USER_DATA相同。
请注意,您可以将配置应用程序作为 snap 的一部分来发布,以构建您的配置文件。
答案2
有一个可写的目录供您的 snap 使用,snap 可以在其中读取和写入文件。我建议您为该配置文件创建一个 etc/ 子目录。可能需要提供一个包装器来调用编辑器并使其能够访问该文件。