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

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

这可能吗?

谢谢。

【问题讨论】:

    标签: ubuntu-16.04 snapcraft


    【解决方案1】:

    因为 snaps 是以 root 身份安装的,所以不可能完全按照您在安装时的要求进行操作,因为 $SNAP_USER_DATA 是特定于用户的,所以它始终是 root 的。但是,您可以在安装时使用系统范围的目录执行此操作,例如 $SNAP_DATAusing 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。当然,这不是在安装时。

    【讨论】:

      猜你喜欢
      • 2021-02-01
      • 1970-01-01
      • 2013-03-18
      • 2012-12-21
      • 2016-03-21
      • 1970-01-01
      • 2021-09-11
      • 2018-03-02
      • 2013-12-16
      相关资源
      最近更新 更多