2010-06-01 172 views
2

我試圖設置一個依賴於幾個Perl模塊的應用程序,但是我要安裝的服務器沒有Internet連接。我通過ppd文件閱讀了離線模塊安裝,但是我必須逐一解決所有的依賴關係。考慮到我沒有直接的互聯網連接,所有這些更乏味。我可以將Perl安裝從一臺計算機移動到另一臺計算機嗎?

我希望能找到一個解決方案,在那裏我在我的電腦上安裝的activeperl並安裝所有我想要的庫,然後複製粘貼目錄到我的服務器。如果它只是修復一些環境變量的問題,那就沒問題。只是想知道要修改的變量的權威列表。不確定是否必須在計劃運行的計算機上安裝perl庫? (一個是32位平臺,另一個是64位,但服務器已經在運行各種32位應用程序,所以我希望它不是一個主要問題)爲了獲得最佳兼容性,我打算在兩個系統上安裝ActivePerl併合並庫目錄相同。

+0

似乎複製http://stackoverflow.com/questions/2682608/why-cant-i-simply-copy-installed-perl-modules-to-other-machines的 – Space 2010-06-01 11:47:13

+0

謝謝,我盡我所能搜索現有的答案。 – Benny 2010-06-01 14:16:29

回答

1

從這個link

有時,您將無法 使用任何方法來安裝 模塊。這可能是這種情況,如果你 是特別是在特權用戶 - 也許你是一個服務器,在這裏你是不是 賦予的權利做任何事情上租用網絡 空間。

這是可能的,對於一些模塊, 安裝模塊無需編譯 任何東西,所以你能不能別再 文件的地方,它的工作。 沒有進入很多 的細節,一些Perl模塊包含用其他語言 (如C或C++)編寫的 部分,有些Perl模塊僅用Perl編寫。它是 後一種類型,這種方法將工作 爲。你怎麼知道?哦,如果有 沒有稱爲something.c和 something.h包中的文件,機會 是,它是一個包含 只有Perl代碼的模塊。

在這種情況下,你可以解壓 的文件,然後就在* .pm的 文件複製到您從中 將運行模塊的目錄。 這兩個例子應該足以說明 這是如何完成的。

IniConf.pm是一個美妙的小 模塊,使您可以讀出 的.ini風格的配置文件的 配置信息。 IniConf.pm是僅用Perl編寫的 ,並且沒有C 部分。當您打開。tar.gz的 文件,你從CPAN了,你會發現 在有多個文件,其中一個 被稱爲IniConf.pm。這是 唯一對 感興趣的文件。將該文件複製到 目錄中,在此目錄中將使用此 模塊的Perl 程序。然後,您可以使用該模塊作爲 你,如果它被安裝 ``正確「」只用線:

use IniConf; 

時間:: CTime的是另一種非常方便的 模塊,可讓您在 打印時間任何形式都會引起你的幻想。它 僅用Perl編寫,沒有C 組件。除了名爲CTime.pm, 的文件必須放在名爲Time的子目錄 之外,您將按照與IniConf相同的方式安裝它 , 。冒號以及指示模塊組織的 , 也指示文件系統上的目錄結構 。

+0

那真是個好消息!現在我計劃在PC上安裝32位Active perl並更新所有必需的模塊。然後,在服務器上安裝64位Active perl,並只傳輸庫文件夾(或者至少只選擇那些文件)。 我將在完成後更新結果。感謝您的回答。 – Benny 2010-06-01 14:20:00

+0

非常感謝!我打算使用的模塊僅僅通過複製粘貼工作,它們都只是* .pm文件。 – Benny 2010-08-03 23:56:51

2

答案是在Perl FAQ,我的壞的沒有正確地通過它。

I copied the perl binary from one machine to another, but scripts don't work. 
That's probably because you forgot libraries, or library paths differ. 
You really should build the whole distribution on the machine it will 
eventually live on, and then type "make install". Most other approaches 
are doomed to failure. 

One simple way to check that things are in the right place is to print 
out the hard-coded @INC that perl looks through for libraries: 

    % perl -le 'print for @INC' 

If this command lists any paths that don't exist on your system, then 
you may need to move the appropriate libraries to these locations, or 
create symbolic links, aliases, or shortcuts appropriately. @INC is also 
printed as part of the output of 

    % perl -V 

You might also want to check out "How do I keep my own module/library 
directory?" in perlfaq8. 
相關問題