如何查找(Debian / Ubuntu / ...)包提供所需的Perl模块

时间:2014-09-18 06:50:26

标签: perl debian package-managers

我发现安装原生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但是有一个可编写脚本的解决方案已经进行了此查找吗?

5 个答案:

答案 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。它似乎也支持PerlCPAN)和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

享受