【问题标题】:Create RPM package from ANT script under Windows在 Windows 下从 ANT 脚本创建 RPM 包
【发布时间】:2009-01-16 10:15:07
【问题描述】:

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

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

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

你知道这是怎么做到的吗?

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

【问题讨论】:

    标签: java ant installation rpm


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 如果您使用的是 groovy,则有一个用于 redline here 的包装器
    【解决方案3】:

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

    两个建议:

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

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

    【讨论】:

    • 我想我会尝试版本号 1。我想做类似的事情,但我想检查是否有更好的方法
    • 我使用 ant 任务 scp 和 ssh 在单独的计算机上启动构建过程。当 rpm -bb 调用完成后,我使用 scp 再次将文件复制回来。
    【解决方案4】:

    查看Ant手册,发现如下可选任务:

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

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

    【讨论】:

      【解决方案5】:

      Freaking Package Management 可以做到这一点。您应该能够使用 JRuby 和 MRI Ruby 运行它。

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

      【讨论】:

      • 我会引用作者的话,它说服我尝试使用 fpm:“我想要一种简单的方法来创建包,而不是废话。在我自己的基础架构中,我对 Debian 策略和 RedHat 打包不感兴趣指导方针 - 我对我的团队自己的风格文化感兴趣,并且对完成工作非常感兴趣。”
      【解决方案6】:

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

      【讨论】:

      • 可以为 Windows 本地编译某些 linux 应用程序。事实上我已经安装了这个:unxutils.sourceforge.net
      • RPM 本身并不会阻止它在 Windows 中工作。它只是一种不可执行的文件格式。无论平台如何,任何理解文件格式的东西都可以使用它。 RPM 中的东西也可以是平台无关的——jar 文件、python 脚本等等。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多