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 映像?