【问题标题】:Automating Inline::Java Installation on Linux (Centos/Redhat)在 Linux (Centos/Redhat) 上自动化 Inline::Java 安装
【发布时间】:2010-02-11 16:58:41
【问题描述】:

我正在维护一个 perl 脚本,该脚本运行我们的基础服务器软件的自动安装。新要求之一是安装 Inline::Java 模块。

我们通常使用 Yum 安装的策略似乎失败了,因为 yum 中没有可用的 Inline::Java。我找不到它的 RPM 版本,因此无法安装为 RPM。唯一的选择似乎是通过 CPAN 安装或运送 tar 并有一个步骤来识别 SDK 位置并运行 'perl Makefile.PL J2SDK=;制作;进行安装”。

我本能地认为自动安装有点不稳定,我过去曾遇到过 CPAN 安装失败的问题,我真的不想在实时服务器上进行,但我想不出更好的选择。

我考虑的另一个选项只是发送 .pm 文件,将其放置在用户定义的目录中并使用“使用 lib”将其定义为位置,但由于 Inline::Java 的工作方式,我不认为这是可能的,它也需要 InlineJavaServer 的位置等。

有没有人有更好的解决方案或对上面提出的哪个最好有意见?

【问题讨论】:

    标签: java linux perl installation inline


    【解决方案1】:

    你可以 build your own perl-Inline-Java 打包并将其放在私有 yum 存储库中,甚至可以将其贡献给 Fedora/EPEL。

    【讨论】:

    • 这可能是更好的答案,但我在创建 RPM 时遇到了一些问题,由于时间紧迫,我选择了简单的选项并采用了复制目录策略。我尝试使用 cpan2rpm 创建 RPM。我遇到的问题与 Inline::Java 打包的动态特性有关,它似乎依赖于我无法覆盖的 Inline::Java->find_default_j2sdk (它会找到在构建时生成的文件) .不过,这可能是我的失败,我远非 RPM 专家。有空我可能会再试一次。
    【解决方案2】:

    Inline::Java 将在与Inline/Java.pm 文件相同的位置查找InlineJavaServer.jar 和它需要的其他文件。从一台机器上的安装目录复制整个发行版并将其复制到另一台机器(具有相同架构)并不像听起来那么疯狂。如果你只有几个不同的系统(不是所有的 linux、32 位和 64 位、perl 5.6 和 perl 5.10 等),为每个系统制作一个单独的包是容易处理的。

    Inline::Java 中有一些安装时配置,包括指定要使用的默认 Java 安装。但是这个(和其他默认配置)总是可以被环境变量覆盖,比如PERL_INLINE_JAVA_J2SDK(完整列表参见Inline::Java perldoc)。你可以用你自己的自定义模块打包Inline::Java,比如说, MyCompany::InlineJavaConfig,可以在每个脚本中加载Inline::Java 模块之前设置适当的环境变量。

    还有一些其他的安装时配置,比如是否配置 JNI 和其他原生支持。将支持这些功能的文件从一台机器复制到另一台机器可能有点冒险。但我想不出任何理由让它不起作用。

    【讨论】:

    • 谢谢,我有人错过了那个环境变量。这个解决方案对我很有效,而且干扰最小。
    猜你喜欢
    • 2018-10-28
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多