为 Play scala 项目的 RPM 包添加自定义脚本

Add custom scripts for RPM package for a Play scala project

我想向 Play scala 项目的 RPM 包(使用 sbt-native-packager 构建)添加一些命令。例如:

mkdir -p /opt/myapp
chmod +w /opt/myapp

以便在通过 yum 安装 RPM 包时执行。

我在一个标准的 sbt 项目中看到,看起来我们可以使用自定义模板:

src/templates/start

但在 Play 项目中,我们有以下文件夹:

app
conf
project
dist

我们根本没有 src 文件夹。

我想知道如何在为 Play 项目安装 RPM 之前或之后添加自定义命令 运行。

我没有使用过 sbt-native-packager 的这个功能,但我知道 RPM 规范文件支持定义在特定事件中 运行 的脚本(例如 %pre - 运行就在安装之前)。

看起来 sbt-native-package 通过覆盖 maintainerScripts:

来支持这个
// overriding
import RpmConstants._
maintainerScripts in Rpm := Map(
  Pre -> Seq("""echo "pre-install""""),
  Post -> Seq("""echo "post-install""""),
  Pretrans -> Seq("""echo "pretrans""""),
  Posttrans -> Seq("""echo "posttrans""""),
  Preun -> Seq("""echo "pre-uninstall""""),
  Postun -> Seq("""echo "post-uninstall"""")
)

请注意,这仅适用于 sbt-native-package 的 1.1.0+。

documentation

中详细介绍了其他几种方法