如何使用自定义布局创建deb

时间:2015-02-08 05:00:34

标签: sbt sbt-native-packager

我有一个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。

1 个答案:

答案 0 :(得分:2)

如果您的布局接近已生成的布局,则可以使用defaultLinuxInstallLocationdefaultLinuxConfigLocation等设置。

或直接修改linuxPackageSymlinkslinuxPackageMappings,例如

    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中有额外的内容,则可能需要删除该目录。