在 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/foobar
和usr/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/foo
,usr/share/foobar
vs usr/share/foo
。所以在某个地方仍然必须引用旧的包名......这很奇怪,因为我仔细检查了 linuxPackageMappings in Debian
只包含正确的文件。
【问题讨论】:
【参考方案1】:如编辑中所示,您必须同时覆盖范围 Debian
和 Linux
的设置。我的错误是即使删除了.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