SBT 原生打包程序:在 %install 中解压缩工件
Posted
技术标签:
【中文标题】SBT 原生打包程序:在 %install 中解压缩工件【英文标题】:SBT native packager: Unzip artifact in %install 【发布时间】:2015-07-23 11:14:30 【问题描述】:我正在使用带有 SBT 0.13.5 的 sbt-native-packager (0.8.0)。我有一个 zip 文件,应该作为 RPM 安装的一部分解压缩。在 RPM 规范中,它将位于 %install
部分下,我将在哪里使用 sbt-native-packager 定义它?我可以解压缩工件并将解压缩的文件夹添加为linuxPackageMapping
,但我想检查是否有办法将 zip 包含在 RPM 中并在安装过程中解压缩。
【问题讨论】:
一个关于 rpm 工作原理的小说明。规范文件的%install
部分不会在安装计算机上安装软件包时发生。它发生在包构建过程中,并且是 in 打包的 rpm 文件被放入 buildroot 目录的位置。只有%pre
/%post
/等。规范文件中的脚本在安装计算机上运行。 (通常你不想把新文件放在那里,因为这样 rpm 不会知道你的包拥有它们,除非你在 %files
部分将它们列为 %ghost
文件。)
@EtanReisner 感谢您澄清%install
的工作。
【参考方案1】:
除了 Etan 的评论,它说您不应该在安装过程中创建新文件(如果没有必要)。这就是您在 rpm 中放置额外 rpm 脚本的方式。另见documentation
rpmPost :=
val prev = rpmPost.value.getOrElse("")
Some(s"""|$prev
| unzip magic-file.zip
|""".stripMargin)
更新
也可以看看JavaServerAppPackaging Customize Docs
干杯, 渚
【讨论】:
以上是关于SBT 原生打包程序:在 %install 中解压缩工件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SBT 原生打包器部署 Scala Play 框架 API