我发现安装原生Debian或Ubuntu Perl软件包,通常比手动"更安全,更方便。通过cpanm
安装Perl模块(特别是对于XS-Modules)。在给出所需Perl模块列表的情况下,是否有一种简单的方法可以找到这些模块?最方便的方法是映射cpanfile,例如
requires 'XML::LibXSLT', '1.78';
到为不同目标平台提供模块的发行版和包列表:
XML::LibXSLT, Ubuntu 13.04, libxml-libxslt-perl, 1.78
XML::LibXSLT, Ubuntu 13.10, libxml-libxslt-perl, 1.78
XML::LibXSLT, Ubuntu 14.04, libxml-libxslt-perl, 1.84
XML::LibXSLT, Debian squeeze, libxml-libxslt-perl, 1.70
XML::LibXSLT, Debian wheezy, libxml-libxslt-perl, 1.77
XML::LibXSLT, Debian jessie, libxml-libxslt-perl, 1.92
XML::LibXSLT, Debian sid, libxml-libxslt-perl, 1.92
P.S。:我想这些信息可以以某种方式从每个发行版的包存储库中查找,例如: http://packages.ubuntu.com/和https://packages.debian.org但是有一个可编写脚本的解决方案已经进行了此查找吗?
答案 0 :(得分:6)
在基于Debian的系统上,安装dh-make-perl
包并尝试
dh-make-perl locate XML::LibXSLT
在我的LMDE盒子上,输出:
== dh-make-perl 0.80 ==
Using cached Contents from Thu Sep 18 13:23:19 2014
XML::LibXSLT is in libxml-libxslt-perl package
要将此包名称映射到其他Linux发行版,您可以使用distromatch。它似乎也支持Perl
(CPAN
)和Python
包名称。不幸的是,distromatch
似乎没有维护,现在不能开箱即用。最近我确实设法使它能够很好地将Debian翻译成openSUSE包名。
答案 1 :(得分:2)
简单。只需使用关键字进行搜索它将列出所有相关的包。然后你可以安装你想要的那个。
e.g。在我的ubuntu 12.04上,我搜索了LibXSLT
:
$ sudo aptitude search LibXSLT
p libxml-libxslt-perl - Perl interface to the GNOME libxslt library
v libxslt-dev -
p libxslt1-dbg - XSLT 1.0 processing library - debugging symbols
p libxslt1-dev - XSLT 1.0 processing library - development kit
i A libxslt1.1 - XSLT 1.0 processing library - runtime library
p libxsltc-java - XSL Transformations (XSLT) compiler from Xalan-Java
p libxslthl-java - XSLT syntax highlighting
p python-libxslt1 - Python bindings for libxslt1
p python-libxslt1-dbg - Python bindings for libxslt1 (debug extension)
v python2.7-libxslt1 -
v python2.7-libxslt1-dbg -
因此,如上所列,很明显您要安装libxml-libxslt-perl
。
答案 2 :(得分:1)
找到提供Perl模块的软件包的最简单方法是:
dh-make-perl locate XML::LibXSLT
您需要安装 dh-make-perl 包
答案 3 :(得分:0)
回答by Christian Pietsch和pau4o dh-make-perl
可以找到包含给定perl模块的Debian软件包。以下脚本从cpanfile中提取所有必需的模块,将它们传递给dh-make-perl并打印相应的Debian软件包:
#!/usr/bin/perl
# read perl modules as arguments or from ./cpanfile
use Module::CPANfile;
my @modules = @ARGV ? @ARGV : do {
my $prereqs = Module::CPANfile->load->prereq_specs;
keys %{$prereqs->{runtime}->{requires}};
};
# locate Debian packages that include these modules
exit 1 unless @modules;
my $cmd = join ' ', 'dh-make-perl', 'locate', @modules, '2>/dev/null';
open my $fh, "-|", $cmd;
foreach (<$fh>) {
# this ignore core packages
# see DhMakePerl::Command::locate for details
print "$1\t$2\n" if /(.+) is in (.+) package/;
}
我将它用作perldebs
来首先将Perl模块安装为Debian模块,并仅从CPAN获取其余模块。该解决方案尚未考虑版本号:
$ sudo apt-get install `perldebs | awk '{print$2}'`
$ sudo cpanm --installdeps . --skip-satisfied
答案 4 :(得分:-5)
如果您想要一个图形(并且更舒适)的包管理器,您可以尝试使用synaptic
对于Ubuntu:
sudo apt-get install synaptic
synaptic
享受