2014-09-26 90 views
1

它看起來像大多數Perl模塊聲明它們對Makefile.PL中其他模塊的依賴關係,然後CPAN使用它來安裝這些依賴關係。爲CPAN安裝依賴關係的方法不適用於CPAN

但是現在我不是一個模塊,而是一個終端用戶應用程序,永遠不會在CPAN上結束,我希望它能夠輕鬆地在任何給定的機器上安裝該應用程序的依賴關係。有沒有Perl標準的方式來做到這一點?

+3

無論如何都要將它作爲一個模塊(可能稱之爲App :: ...)。然後可以使用任何您使用的構建系統(例如['Module :: Build'](https://metacpan.org/pod/Module::Build))或使用['cpanm'](https: //metacpan.org/pod/App::cpanminus)。構建系統會照顧到依賴關係,但也會使安裝,測試等變得更加容易。 – Biffen 2014-09-26 05:09:00

回答

3

無論如何都要將它設置爲模塊,並將其放入App::… namespace。代碼將存在於lib/App/**.pm庫文件中,並且該腳本將只是一個薄包裝器; perlfind就是一個很好的例子。使用CLI框架(例如MooseX::App)幫助將功能分解爲模塊,這使代碼更易於測試和重用。如您所知,基於模塊的分發直接​​使用metafile或間接使用構建系統聲明其依賴關係,然後由您使用任何構建系統(例如Module::Build)打包或由用戶使用任何構建系統安裝工具(例如cpanm)。

+0

基於和擴展自[更早的評論](http://stackoverflow.com/q/26052341#comment-40813549 ),善意提出[Biffen](http://stackoverflow.com/u/418066)。 – daxim 2014-09-26 09:33:48

+0

謝謝。後續問題:Module :: Build似乎使用CPAN shell來安裝依賴項。但有些不會安裝它,因爲並不是所有的測試都通過了。如果我自己打開shell,我可以強制安裝,但是有沒有辦法配置Module :: Build來強制安裝或不安裝依賴項? – 2014-09-27 20:57:27