SBT 本机打包程序不生成任何 sysv /etc/init.d/ 脚本

Posted

技术标签:

【中文标题】SBT 本机打包程序不生成任何 sysv /etc/init.d/ 脚本【英文标题】:the SBT native packager does not generate any sysv /etc/init.d/ script 【发布时间】:2015-04-13 03:08:17 【问题描述】:

我正在为 play 2.3.8 应用程序创建一个 debian 包。

我使用以下设置:

 val settings = Seq(
   debianPackageDependencies in Debian := "openjdk-7-jre (>= 1.7.0)" :: Nil,
   maintainer in Linux := "team <support@dns.io>",
   packageSummary in Linux := "app",
   packageDescription := "description",
   serverLoading in Debian := ServerLoader.SystemV,
   linuxPackageMappings in Debian := linuxPackageMappings.value.map  p ⇒
     val newMappings = p.mappings.filterNot  f ⇒
       f._2.endsWith("conf//messages") ||
       f._2.endsWith("conf//play.plugins")
     
     p.copy(mappings = newMappings)
   ,
   daemonUser in Linux := (normalizedName in Debian).value
)

但是没有生成 /etc/init.d/ 脚本。

如果我删除 linuxPackageMappings 的转换,则会生成一个 init.d 脚本。

【问题讨论】:

【参考方案1】:

我没有使用linuxPackageMappings in Debian := linuxPackageMappings.value...,而是使用了linuxPackageMappings := linuxPackageMappings.value

现在它正在工作。

【讨论】:

不同的作用域有不同的文件。这是 sbt-native-packager 工作的核心概念。在这个解决方案中,您正在过滤 每个 linux 发行版。在您的回答中,您使用的是通用 linux 映射来覆盖 linux+debian 映射。

以上是关于SBT 本机打包程序不生成任何 sysv /etc/init.d/ 脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PostgreSQL 卷附加到使用 SBT 本机打包程序生成的 Docker 映像?

SBT 本机打包程序不会将文件复制到 Docker 映像

Sbt 本机打包程序找不到 SystemdPlugin

SBT Native Packager SystemVLoader 不生成 SystemLoader 脚本

任何使用 sbt-native-packager 的好例子

如何使用具有多种主要方法的项目中的本机打包程序创建 RPM?