0

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

如何获得我想要的布局?我需要实现原型吗?

我正在使用 SBT 0.13.7 和 SBT 本机打包程序 1.0.0-M1。

4

1 回答 1

2

如果您的布局接近已经生成的布局,您可以使用 和 之类的defaultLinuxInstallLocation设置defaultLinuxConfigLocation

或者直接修改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 中有额外的内容,您可能需要删除该目录。

于 2015-02-09T00:32:40.380 回答