我正在使用Module :: Build(儘管我在構建環境中很靈活)打包了一些perl軟件,工作。它包括一些腳本和一些輔助模塊。我的計劃是讓它可以在構建過程中指定任何你想要的東西的前綴(即,在perl的默認@INC
之外的東西),並且構建的腳本應該仍然能夠毫無問題地找到它們的幫助器模塊。打包perl應用程序,以便它將在perl的默認前綴之外工作
我想這樣做,因爲我想用「ENCAP」,這是一個打包工具,默認情況下可以不在/ usr /本地外安裝任何內部分發本軟件,並且是在RedHat,我們的Perl默認情況下不搜索/ usr/local/lib模塊。
這給我留下了一個機會,告訴用戶每次他們想要運行應用程序時手動將PERL5LIB
設置爲/ usr/local/lib,或者使用構建系統對其進行智能化處理,指定了--prefix
之後的腳本的use lib
行。
現在我只是設置use lib
直接指向/ usr/local/lib在我的每個腳本中手動,但我真的不喜歡作爲解決方案。主要是因爲測試過程:我想在測試過程中覆蓋@INC
,以便它首先使用我的工作目錄用於perl模塊,但在構建之後,應該從@INC
中刪除工作目錄,並用用戶指定的前綴替換。但也因爲我希望這個軟件可以安裝到任意位置(比如它自己的小島在NFS上有自己的bin /和lib/dirs),並且仍然可以正常工作。
問題:
CAN模塊::打造讓我在構建步驟與我的劇本use lib
線擺弄?我注意到MakeMaker有一個pm_filter選項,可以讓你指定一個搜索和替換,它可以隨意修改你的.pm文件,但它只適用於.pm文件,而不是腳本。模塊::構建應該是更靈活,但我淹沒在文件試圖找出你指定的地方。
非常好!我在發佈這篇文章後正在研究Module :: Build的子類,並且在我離開工作之前差不多有那麼一段時間。我試圖弄清楚如何從process_bin_files子文件中獲取剛創建的文件的名稱,但我猜想它可以像任何事情一樣好用。謝謝! – 2011-03-11 01:57:01