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



我有一个Play服务器应用程序。

目前,我有20行bash脚本来创建这个deb:

/srv
  /foo
    /conf
      <unmanaged resources>
    /staged
      <jars>

我想使用sbt本机打包程序来生成这个。

目前,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。

如果您的布局接近已生成的布局,则可以使用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中有多余的内容,您可能需要删除该目录。

最新更新