2012-08-26 18 views
3

我正在研究如何將使用多個模塊的Perl應用程序導入Debian和/或Redhat軟件包。目前,我認爲「最乾淨」的方式是在可能的情況下引用已經包裝的模塊。查找已經爲Debian和Redhat打包的Perl模塊

另一種方法是使用CPAN,可能有一些重複,問題@INC等

不過,我可以找到或詢問這裏Debian軟件包列表:http://pkg-perl.alioth.debian.org/cpan2deb/,但我不能夠找到目前的相當於Redhat/Fedora。我也不知道cpan2deb是否具有權威性並且是最新的。

如果還有另一種乾淨的方式來做到這一點,我也歡迎任何其他想法。

回答

1

cpanspec但它在幾年內沒有被觸及。我似乎記得cpan2rpm,但我沒有太多的經驗。

+0

謝謝,請看看... –

3

Debian Perl Group是您在Debian世界中最好的選擇。他們不僅攔截了Debian的所有擴展模塊包,而且還試圖讓它們保持最新狀態。

看到這個頁面:

http://qa.debian.org/[email protected]

+0

非常感謝! –

1

另一種方法是使用CPAN,可能有一些重複,問題@INC等

我我有一個perl程序打包了debian,並有大量的依賴關係。爲了方便起見,我選擇了一些骯髒的混合方法,將一些打包的模塊作爲依賴關係,另外還有一個作弊後門CPAN安裝,它從我的安裝後腳本運行。我將應用程序的META.yml拷貝到一個副本中,然後重新檢查我的依賴關係。

1. debian/rules文件使得META.yml的副本:

override_dh_auto_install: 
dh_auto_install; \ 
cp META.yml etc/;\ 

2. debian/libmyapp-perl.install然後安裝META.yml:

etc/META.yml /usr/share/myapp/etc/ 

3. debian/libmyapp-perl.postinstall然後交叉檢查依賴關係:

echo "Cross checking with cpan"; 
for m in `perl -Mstrict -MYAML::Syck -e'my $r = YAML::Syck::LoadFile("/usr/share/myapp/etc/META.yml")->{requires}; for (grep {$_ ne "perl"} (sort keys %$r)) {eval "use $_ $r->{$_}"; print "$_\n" if [email protected]}'`; do 
    # would prefer App::cpanminus, but that's not packaged for debian either? 
    PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install $m"; 
done 

不完全乾淨,但快速入門高度混合的依賴debian軟件包和幾個CPAN模塊。

+0

嗨,非常感謝這個,不幸的是,鑑於'世界'的狀態,我們可能會得到一個類似的想法...... –

+0

嗨,休。我發現總有一部分模塊沒有打包,或者你需要更新的版本。構建和維護您自己的本地軟件包可能是一個真正的拖延,而且您還需要維護您自己的debian存儲庫才能正確執行。 – dwarring