3

我正在研究制作一个使用许多模块的 Perl 应用程序到 Debian 和/或 Redhat 包中。目前,我认为“最干净”的方法是在可能的情况下引用已经为给定发行版打包的模块。

另一种方法是使用 CPAN,可能会有一些重复,@INC 等问题。

但是,我可以在这里找到或查询 Debian 软件包列表:http: //pkg-perl.alioth.debian.org/cpan2deb/但我目前找不到 Redhat/Fedora 的等价物。另外,我真的不知道 cpan2deb 是否具有权威性和最新性。

如果有另一种干净的方法可以做到这一点,我也欢迎任何其他想法。

4

3 回答 3

3

Debian Perl Group 是您在 Debian 世界上的最佳选择。他们不仅截获 Debian 的所有传播模块包,而且还试图使它们保持最新。

请参阅此页面:

http://qa.debian.org/developer.php?login=pkg-perl-maintainers@lists.alioth.debian.org

于 2012-08-26T18:12:31.090 回答
1

cpanspec,但几年没碰过。我似乎记得 cpan2rpm 但我对那个没有太多经验。

于 2012-08-26T17:17:33.600 回答
1

另一种方法是使用 CPAN,可能会有一些重复,@INC 等问题。

我有一个为 debian 打包的 perl 程序,它具有大量依赖项。为方便起见,我选择了一种肮脏的混合方法,其中包含一些打包的模块作为依赖项,以及一个作弊后门 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 $@}'`; 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 模块的混合的快速方法。

于 2012-08-26T22:38:30.330 回答