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

问题描述 投票:0回答:6

我发现安装本机 Debian 或 Ubuntu Perl 软件包通常比通过

cpanm
(尤其是 XS-Modules)“手动”安装 Perl 模块更可靠和方便。给定所需的 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 但是是否有一个脚本化的解决方案已经完成了这个查找?

perl debian package-managers
6个回答
7
投票

在基于 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 包名。


3
投票

简单。只需搜索关键字即可。它将列出所有相关的包。然后你可以安装你想要的那个。

例如在我的 ubuntu 12.04 上,我搜索了

LibXSLT
:

$ 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
.


1
投票

找到哪个包提供 Perl 模块的最简单方法是:

dh-make-perl locate XML::LibXSLT

需要安装dh-make-perl


1
投票

正如 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

0
投票

XML::LibXSLT
XML-LibXSLT
发行版的一部分,因此 Debian/Ubuntu/... 包被命名为
libxml-libxslt-perl
.[1]

您可以通过访问模块的 CPAN 页面(第一个链接)找到发行版名称 (

XML-LibXSLT
)。它在最上面,在作者的名字之后。

您也可以寻找提供

XML/LibXSLT.pm
的包裹。[2]

apt-file search XML/LibXSLT.pm

  1. 使用
    "lib" . lc( $distro ) . "-perl"
    获得。
  2. 使用
    ( $module =~ s{::}{/}gr ) . ".pm"
    获得。

-6
投票

如果你想要一个图形化的(更舒适的)包管理器,你可以尝试使用 synaptic

对于 Ubuntu:

sudo apt-get install synaptic
synaptic

享受

© www.soinside.com 2019 - 2024. All rights reserved.