我正在维护一个运行自动安装基本服务器软件的perl脚本。其中一个新要求是安装Inline :: Java模块。
我们通常使用Yum进行安装的策略似乎已经失败,因为在yum中没有可用的Inline :: Java。我无法找到它的RPM版本,因此无法安装为RPM。唯一的选择似乎是通过CPAN安装或运送tar并有一个标识SDK位置的步骤并运行'perl Makefile.PL J2SDK =;使; make install'。
本能地说,我觉得自动安装有点不稳定,过去CPAN安装失败时我遇到了问题,我真的不想在实时服务器上制作,但我想不出来一个更好的选择。
我考虑的另一个选项是发送.pm文件,将其放在用户定义的目录中并使用'use lib'将其定义为一个位置但是由于Inline :: Java工作的方式我不认为这是可能的,它需要InlineJavaServer的位置等等。
有没有人有更好的解决方案,或者对上面提到的哪一个是最好的?
答案 0 :(得分:3)
您可以build your own perl-Inline-Java
打包并将其放入私有yum存储库,或者甚至将其贡献给Fedora / EPEL。
答案 1 :(得分:2)
Inline::Java
会在与InlineJavaServer.jar
文件相同的位置查找Inline/Java.pm
及其所需的其他文件。从一台机器上的安装目录复制整个发行版并将其复制到另一台机器(具有相同的架构)并不像听起来那么疯狂。如果你只有几个不同的系统(不是所有的linux,32位vs 64位,perl 5.6 vs perl 5.10等),那么为每个系统制作一个单独的包是很容易的。
Inline::Java
中有一些安装时配置,包括指定要使用的默认Java安装。但是这个(以及其他默认配置)总是可以用PERL_INLINE_JAVA_J2SDK
等环境变量覆盖(有关完整列表,请参阅Inline::Java perldoc)。您可以使用自己的自定义模块打包Inline::Java
,例如,
MyCompany::InlineJavaConfig
,可以在每个脚本中加载Inline::Java
模块之前设置适当的环境变量。
还有一些其他安装时配置,例如是否配置JNI和其他本机支持。将支持这些功能的文件从一台机器复制到另一台机器可能有点儿干。但是,我无法想到任何理由,因为它不起作用。