为 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+。
中详细介绍了其他几种方法
我想向 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+。
中详细介绍了其他几种方法