13

我需要从在 Windows 计算机上运行的 ANT 脚本创建一个 RPM 包。这个包必须包含构建的结果类以及其他一些额外的资源。

我想应该有一些程序可以从命令行调用来创建这个包。

我想在 windows 下做这件事的原因是我们有一个脚本可以为几个不同的平台构建安装程序,而且一切都已经为 windows 配置好了,所以我想避免将所有东西迁移到 linux 的痛苦。

你知道如何做到这一点吗?

编辑:我使用了单独的 Linux 机器来执行此操作。我使用 scp 任务复制所有文件,然后使用 ssh 任务远程执行 rpm 命令。如果此任务返回成功代码,我会使用 scp 将生成的 rpm 复制回来。

4

6 回答 6

8

还要考虑 redline-rpm java 库和 ant 任务。https://github.com/craigwblake/redline

于 2009-11-26T11:19:05.083 回答
4

一种可能的解决方案是使用纯 java RPM Manipulation 工具,例如:

http://jrpm.sourceforge.net/rpmspec/index.html

于 2009-01-16T15:47:13.957 回答
2

查看 Ant 手册,我发现了以下可选任务:

http://ant.apache.org/manual/Tasks/rpm.html

但是,这只能在 linux 计算机上运行

于 2009-01-16T10:16:06.313 回答
2

我不知道有什么包可以做到这一点,但这可能只是我的无知。

两个建议:

设置 Linux 机器(单独的 PC 或虚拟机)并通过脚本远程安装 rpm(请参阅ssh /scp/ samba)。这让我觉得这是一种避免完全构建环境迁移的安全方法。

一种更冒险的方法是使用 Java 编写您自己的 RPM 文件。RPM 文件格式似乎是一个标头,后跟许多标准存档格式之一。需要对存档内容进行一些分析,因此这种方法在短期内可能会非常耗时(尽管它可能会导致更快的构建)。

于 2009-01-16T11:33:30.607 回答
1

疯狂的包管理可以做到这一点。您应该能够使用 JRuby 和 MRI Ruby 运行它。

fpm -s dir -t rpm mydir-- 或您提供 rpm 关键字的其他咒语。见fpm --help

于 2013-01-19T22:56:44.670 回答
0

我认为这是不可能的,为 linux 构建的运行时包将无法在 windows 上运行(我们不希望 dll 和 exes 在 linux 上运行,对吧!)。Cygwin 面临着类似的挑战,他们明确表示他们通过为 Windows 编译源文件来做到这一点。

于 2009-01-16T11:06:26.277 回答