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 中使二进制文件可执行?