Sbt-Native-Packager 控制文件与 .deb 创建的名称不一致

Posted

技术标签:

【中文标题】Sbt-Native-Packager 控制文件与 .deb 创建的名称不一致【英文标题】:Sbt-Native-Packager Control file inconsistent name to .deb created 【发布时间】:2016-05-28 01:03:58 【问题描述】:

我对 Scala 或 sbt-native-packager 不是很熟悉,但我有一个 scala 项目,我们在其中创建了一个 debian。我注意到创建的 .deb 的名称是正确的,但控制文件不正确 - 有没有办法改变它?

版本:

Play: 2.2.3 (also tried with 2.2.6)

Sbt-Native-Packager: 0.7.6

在 plugins.sbt 中

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.6")

这是我得到的(减去敏感信息):

构建.scala:

val main = play.Project(appName, appVersion, appDependencies)
.settings(scalaVersion := "2.10.4")
.settings(DebPackageSettings.packageSettings(appName, appVersion, baseDirectory): _*)

在 DebPackageSettings 中:

def packageSettings(appName: String , appVersion: String, baseDirectory: SettingKey[java.io.File]): Seq[sbt.Setting[_]] = 

  val baseName = "prefix-project-name"
  val appPackageArchitecture = "all"

  Seq(
      name in Debian := "%s".format(baseName),
      version in Debian := "%s".format(appVersion),
      packageDescription in Linux := "something",
      packageSummary in Linux := "something",
      target in Debian <<= (Keys.target) apply ((t) => t / (baseName + "_" + appVersion + "_" + appPackageArchitecture))
  )
 ...

创建的控制文件(在 DEBIAN/control 中):

Source: project-name
Package: project-name
Priority: optional
Architecture: all
...

创建的 .deb:prefix-project-name_version_all.deb

我错过了什么吗?我查看了 sbt-native-packager 文档并搜索了一些答案,但没有运气:(

【问题讨论】:

【参考方案1】:

似乎name in Debian 只影响.deb 文件名,而不影响控制文件中的包名。为此,您应该使用packageName。该插件在名称空间和继承方面相当混乱。

经过一番测试,我发现以下内容应该可以正常工作:

name        in Linux := baseName,
packageName in Linux := baseName,

如果你使用in Debian,你会得到一个混合产品,其中一半的名称来自主范围名称,另一半来自 debian 范围。

【讨论】:

感谢您的快速回复!实际上想出了一种使用 normalizedName 并更改导入的不同方法。 (格式已关闭,因此将其添加为答案) 是的,事物的来源范围并不总是直观的。我们在这方面努力工作,但 SBT 有时有点棘手。此外,您使用的插件版本非常旧。【参考方案2】:

我发现这是可行的 - 但首选/正确的方法是什么?

进口:

 import sbt._
 import sbt.Keys._
 import com.typesafe.sbt.SbtNativePackager._
 import NativePackagerKeys._

添加的行:

  normalizedName in Debian := "%s".format(baseName),

不知道什么是可取的!

【讨论】:

以上是关于Sbt-Native-Packager 控制文件与 .deb 创建的名称不一致的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sbt-native-packager 更改通用 zip 文件名

为使用 sbt-native-packager 创建的可执行文件设置 JVM 选项的推荐方法是啥?

scala-library-2.10.3.jar 与 sbt-native-packager 0.7+ 的重复映射

如何使用 sbt-native-packager 在 Docker 中使二进制文件可执行?

使用 sbt-native-packager 发布到 bintray 一个 zip 文件

如何在运行时为使用 sbt-native-packager 捆绑的应用程序加载配置文件