在 sbt-native-packager 的 Debian 软件包中更改名称

Posted

技术标签:

【中文标题】在 sbt-native-packager 的 Debian 软件包中更改名称【英文标题】:Change name in Debian package of sbt-native-packager 【发布时间】:2016-02-15 05:05:58 【问题描述】:

我想将 sbt-native-packager 附加到项目的根聚合,但该根项目已发布 Maven 的名称 "foobar"。我希望通过debian:packageBin 生成的工件始终使用"foo"

我该如何做到这一点?

我试过了

name           in Debian := "foo"
packageName    in Debian := "foo"
normalizedName in Debian := "foo"
executableScriptName := "foo"
artifact       in Debian := (artifact in Debian).value.copy(name = "foo")

等等。没有一个有效果。我最终得到了etc/foobarusr/share/foobar


编辑:在这些设置之后,我越来越接近:

name                      in Debian := "foo"
normalizedName            in Debian := "foo"
packageName               in Debian := "foo"
name                      in Linux  := "foo"
normalizedName            in Linux  := "foo"
packageName               in Linux  := "foo"

现在的问题是生成的 .deb 文件包含每个目录两次,例如etc/foobar vs etc/foousr/share/foobar vs usr/share/foo。所以在某个地方仍然必须引用旧的包名......这很奇怪,因为我仔细检查了 linuxPackageMappings in Debian 只包含正确的文件。

【问题讨论】:

【参考方案1】:

如编辑中所示,您必须同时覆盖范围 DebianLinux 的设置。我的错误是即使删除了.deb 文件,target 仍然会被旧文件污染。所以如果你改变这些东西,你必须在重新打包之前运行rm -r target。然后设置是:

executableScriptName     := "foo"
name           in Debian := "Foo"
packageName    in Debian := "foo"
name           in Linux  := "Foo"
packageName    in Linux  := "foo"
packageSummary in Debian := "Description of Foo"

【讨论】:

快速说明:不同的 Foo/foo 大写是故意的吗? 是的,我将我的应用程序名称保留为驼峰式,而包(也默认情况下)基于小写版本的normalizedName。为了安全起见,也可以在这里覆盖normalizedName := "foo"

以上是关于在 sbt-native-packager 的 Debian 软件包中更改名称的主要内容,如果未能解决你的问题,请参考以下文章

在 sbt-native-packager 中过滤映射

在 sbt-native-packager 中配置“动态”命令行参数

在 sbt-native-packager 的通用包中更改名称

如何在多个项目中使用 sbt-native-packager

在 SBT 中为 sbt-native-packager 的 packageMappings 构建路径

使用 sbt-native-packager 时的配置目录