另一种方法是使用 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 模块的混合的快速方法。