snap 包中的安装后等效项是什么?

snap 包中的安装后等效项是什么?

我需要运行一个命令来初始化应用程序的环境。安装 snap 包时,这只需要发生一次。

DEB 包提供了安装后脚本,可用于此目的以及许多其他目的,例如设置特定于应用程序的用户帐户等。

那么,DEB 的安装后脚本在 snap 包中相当于什么?

答案1

故意没有使用 post* 脚本(以确保您有事务更新)。

不过,snapd 本身很快就会发布一些钩子系统,以便您实现这一点。不过目前还不可用,但您可以使用 $SNAP_DATA 文件标志让您的守护进程等待,直到用户归档配置(例如,通过同一 snap 中的另一个命令)。

答案2

您可以在启动器脚本中配置应用程序的环境,该脚本在启动应用程序之前执行此操作。@didrocks 所说的是,您可以在文件夹中创建一个隐藏的标志文件$SNAP_DATA,以了解应用程序是否之前已启动。

例如,您可以编写一个$SNAP/bin/myapp-launcher.sh执行下列操作的 bash 脚本:

#!/bin/sh
...
if [ ! -e "$SNAP_DATA/.flag_file ]; then
  <configure the app>
  touch $SNAP_DATA/.flag_file
fi
...
exec "<command of your app>" "$@"

snapcraft.yaml配置该应用程序通过调用其启动器来启动,例如

...
apps:
  myapp:
    command: bin/myapp-launcher.sh
...

相关内容