2009-11-10 68 views
4

這是我以前的問題about developing Perl applications的後續行動。假設我使用Module::Install作爲CPAN模塊開發應用程序。現在我將代碼上傳到生產服務器,例如使用git push,並且我想安裝Makefile.PL中列出的應用程序依賴項。如果我只是運行cpan .,它會嘗試像普通的Perl模塊那樣安裝應用程序,即。開始將模塊和文檔複製到整個系統的標準Perl目錄。如何在不安裝CPAN模塊的情況下安裝CPAN模塊的代碼?

這是應該的方式嗎?你是否將應用程序安裝到標準的Perl目錄中?我習慣於將我的Perl應用程序放在一個獨立的目錄中lib。否則,似乎我不得不管理許多其他事情,比如在路徑上的某處安裝資源等。如果我只想安裝在Makefile.PL中聲明的代理並運行應用程序測試以確保一切正常,我應該怎麼做?

(難道這地方記錄?我的意思是,有什麼樣的最佳做法部署和更新不平凡的Perl應用程序嗎?或者是大家都這樣做,他自己的方式?)

+0

爲什麼不使用['Dist :: Zilla'] [dzil]'Module :: Install'已經很老了。 [dzil]:http://dzil.org/ –

回答

10

我可能會被誤解,但我認爲你要尋找的是

perl Makefile.PL 
make installdeps 
+0

謝謝,它看起來像我:) – zoul

+0

我試過這個,並沒有成功。這是因爲這僅適用於根據http://www.dagolden.com/index.php/1528/five-ways-to-install-modules-prereqs-by-hand/ –

4

你可以看看Module::ScanDeps產生用於安裝的依賴模塊的列表。或將Par::Packer作爲一個「應用程序」打包整個事情。

+1

謝謝(+1),但那不是我想要的。 M :: S與我想要使用的整個模塊::安裝機器非常正交。至於P :: P,恐怕會讓事情變得不必要的複雜。我的大多數應用程序都是Catalyst Web應用程序,當我想修復某些內容時,在服務器上有一個「實時」存儲庫非常方便。 – zoul

8

如果您正在使用Module::Install,你真的使用ExtUtils::MakeMaker幕後。您可以使用所有MakeMaker功能及其提供的目標。雖然文檔沒有顯示每個功能,但在生成的Makefile中有一些有價值的東西。

但是,MakeMaker是舊的新聞,大多數人都問聖誕老人它會消失。如果你想要更好的控制,包括創建你自己的目標和過程,Module::Build是更容易處理和跨平臺(即使這只是意味着不使用不同的makegmake,或在同一個操作系統上的任何東西不同的盒子)。如果您偏離了正常的消費級安裝流程,那麼在沒有MakeMaker的情況下,您的生活將變得更加輕鬆。

有些人很欣賞Module::Install構建文件的簡潔性,但是一旦構建完成,您就不會花費大量時間來處理構建文件,因此它並沒有帶來什麼真正的好處。當你得到的小利益鎖定你進入MakeMaker時,它根本不是贏。


一個2014更新:Module::Build現在已經失寵,需要一個維護者。它從未完全達到人們可以使用它來構建和分發XS模塊的程度。它在Perl v5.19中被棄用,儘管你仍然可以從CPAN中獲得它。

+1

基於'Module :: Install'的發行版我已經改爲Module :: Build,感覺好多了。 0.36版本增加了一個'installdeps'動作,完全符合我的要求。謝謝。 – zoul