我有一个Play服务器应用程序。
目前,我有20行bash脚本创建了这个deb:
/srv
/foo
/conf
<unmanaged resources>
/staged
<jars>
我想使用sbt native packager来生成它。
目前,sbt debian:package-bin
给了我
etc/
default/
foo
foo
init/
foo.conf
usr/
bin/
foo
share/
foo/
bin/
foo
conf/
<unmanaged resources>
lib/
<jars>
share/
doc/
api/
<docs>
logs
README
var/
log/
foo/
如何获得所需的布局?我是否需要实施archetype?
我使用SBT 0.13.7和SBT原生包装1.0.0-M1。
答案 0 :(得分:2)
如果您的布局接近已生成的布局,则可以使用defaultLinuxInstallLocation
和defaultLinuxConfigLocation
等设置。
或直接修改linuxPackageSymlinks
和linuxPackageMappings
,例如
linuxPackageSymlinks := Seq(),
linuxPackageMappings := {
val libPath = "/srv/foo/staged"
val libs = scriptClasspathOrdering.value.map { case (file, classpath) =>
file -> classpath.replaceFirst("^lib", Matcher.quoteReplacement(libPath))
}
Seq(LinuxPackageMapping(libs))
// plus configuration
},
如果要存档大量二进制文件(即您有很多依赖项),debian:packageBin
非常慢。要进行调试,请考虑使用debianExplodedPackage
。
另外,要知道目录debianExplodedPackage
中的任何内容都将包含在归档中,因此如果最后在.deb中有额外的内容,则可能需要删除该目录。