我使用SBT本机包装器1.2.0-M3来打包Play Framework 2.5.3应用程序作为RPM(针对RHEL 7与systemd)。我想改变生成的RPM的行为,这样它不会在安装后自动启动,而是被启用(systemctl enable <name>.service
)。
我一直在遵循http://www.scala-sbt.org/sbt-native-packager/archetypes/java_server/customize.html概述的说明。具体来说,我创建了一个包含单行systemctl enable <name>.service
的文件src/rpm/scriptlets/post-rpm
。就我对文档的理解,这就是所需要的。但是,在安装RPM时,服务仍然会自动启动。是否需要任何额外的配置?
这是当前的默认行为。这里有一个历史的解释。
你真正需要做的是maintainerScripts in Rpm
。有一个helper特性可以简化构建定义。就像
import RpmConstants._
maintainerScripts in Rpm := {
(maintainerScripts in Rpm).value += (
Post -> "systemctl enable <name>.service"
)
}
并且有一个特性请求直接在本机包装器中实现。