2010-02-11 81 views
4

我在維護一個運行我們的基本服務器軟件的自動安裝的perl腳本。新的要求之一是安裝Inline :: Java模塊。在Linux上自動化Inline :: Java安裝(Centos/Redhat)

我們通常的安裝使用Yum的策略似乎失敗了,因爲yum中沒有Inline :: Java。我無法找到它的RPM版本,因此無法作爲RPM進行安裝。唯一的選擇似乎是通過CPAN安裝或運送tar,並且有一個步驟可以識別SDK位置並運行'perl Makefile.PL J2SDK =;使;安裝'。

本能地說,我認爲這對於自動化安裝有點不穩定,我曾經遇到過CPAN安裝失敗的問題,而且我不想在現場服務器上進行安裝,但我無法想象更好的選擇。

我考慮的另一個選擇是運送.pm文件,將它放在用戶定義的目錄中並使用'use lib'將該文件定義爲位置,但是由於Inline :: Java的工作方式,我不認爲這是可能的,它需要InlineJavaServer的位置等等。

有沒有人有更好的解決方案或意見上哪個是最好的?

回答

2

Inline::Java將查找InlineJavaServer.jar和它需要的其他文件與Inline/Java.pm文件位於同一位置。從一臺機器上的安裝目錄複製整個發行版並將其複製到另一臺機器(具有相同的體系結構)並不像聽起來那麼瘋狂。如果你只有幾個不同的系統(不是所有的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和其他本地支持。將支持這些功能的文件從一臺機器複製到另一臺機器可能有點複雜。但我想不出任何理由,它不會奏效。

+0

謝謝,我有人錯過了這個環境變量。這個解決方案對我來說很有效,而且破壞很小。 – NeilInglis 2010-02-12 11:48:54

3

你可以將build your ownperl-Inline-Java打包並放在一個專用的yum倉庫中,甚至可以將它提供給Fedora/EPEL。

+0

這可能是更好的答案,但我遇到了一些創建RPM的問題,並且由於時間緊迫,我採取了簡單的選擇並使用了複製目錄策略。 我試着用cpan2rpm來創建RPM。我碰到的問題是Inline :: Java包裝的動態性質,它似乎依賴於Inline :: Java-> find_default_j2sdk(它發現在構建時生成的文件),我無法重寫。 這很可能是我的失敗,我遠離RPM專家。當我有空閒時,我可能會再試一次。 – NeilInglis 2010-02-12 11:48:21