安装缺少的Perl模块的最简单方法是什么?
我收到此错误:
无法在@INC中找到Foo.pm
是否有比下载,解压缩,制作等更简单的安装方法?
解决方案
回答
sudo perl -MCPAN -e'安装Foo'
回答
在Unix上:
通常,我们在外壳中启动cpan:
cpan
和类型
安装Chocolate :: Belgian
或者简称:
cpan Chocolate :: Belgian`
在Windows上:
If you're using ActivePerl on Windows, the PPM (Perl Package Manager) has much of the same functionality as CPAN.pm.
例子:
ppm
ppm>搜索net-smtp
" ppm>安装Net-SMTP-Multipart"
请参阅如何安装Perl模块?在CPAN常见问题解答中
许多发行版都将许多perl模块作为软件包提供。
- Gentoo:类别dev-perl
- Debian:
apt-cache search'perl $'
我们应该始终喜欢它们,因为我们会从自动(安全)更新中受益,并且易于删除。使用cpan工具本身可能会非常棘手。
对于Gentoo,有一个名为g-cpan的好工具,它可以从CPAN生成/安装模块,并为我们创建一个Gentoo软件包(ebuild)。
回答
如果我们使用的是Ubuntu,并且要安装预打包的perl模块(例如geo :: ipfree),请尝试以下操作:
$ apt-cache search perl geo::ipfree libgeo-ipfree-perl - A look up country of ip address Perl module $ sudo apt-get install libgeo-ipfree-perl
回答
在具有Perl ActiveState发行版的Windows上,使用ppm命令。
回答
我知道的2种方式:
使用PPM:
在Windows(ActivePerl)中,我使用了ppm
从命令行键入ppm。在ppm提示下...
ppm> install foo
或者
ppm> search foo
获取可用的foo模块列表。输入所有命令的帮助
使用CPAN:
我们也可以像这样使用CPAN(* nix系统):
perl -MCPAN -e 'shell'
提示我们
cpan>
在提示符下...
cpan> install foo (again to install the foo module)
键入h以获取cpan的命令列表
回答
我注意到有些人建议在sudo下运行cpan。这曾经是安装到系统目录中所必需的,但是现代版本的CPAN Shell允许我们将其配置为仅使用sudo进行安装。这更安全,因为这意味着测试不会以root身份运行。
如果我们使用的是旧的CPAN外壳,只需安装新的cpan("安装CPAN"),然后在重新加载外壳时,它会提示我们配置这些新指令。
如今,当我在具有旧CPAN的系统上时,我要做的第一件事是更新shell并将其设置为执行此操作,这样我就可以以普通用户的身份完成大部分cpan的工作。
另外,我强烈建议Windows用户调查Strawberry Perl。这是Perl的版本,它随附有预配置的CPAN Shell和编译器。它还包括一些难以编译的Perl模块,这些模块具有外部C库依赖性,尤其是XML :: Parser。这意味着,在安装模块时,我们可以和其他Perl用户一样执行相同的操作,而且事情往往"更容易执行"。
回答
几个人提到了cpan实用程序,但它不仅仅是启动shell。只需为其提供要安装的模块,然后使其工作即可。
$prompt> cpan Foo::Bar
如果不提供任何参数,它将启动CPAN.pm shell。这可以在Unix,Mac上使用,并且在Windows(尤其是Strawberry Perl)上也可以。
我们还可以使用cpan工具执行其他几项操作。以下是当前功能的摘要(可能比CPAN.pm和perl随附的功能更新):
-a Creates the CPAN.pm autobundle with CPAN::Shell->autobundle. -A module [ module ... ] Shows the primary maintainers for the specified modules -C module [ module ... ] Show the Changes files for the specified modules -D module [ module ... ] Show the module details. This prints one line for each out-of-date module (meaning, modules locally installed but have newer versions on CPAN). Each line has three columns: module name, local version, and CPAN version. -L author [ author ... ] List the modules by the specified authors. -h Prints a help message. -O Show the out-of-date modules. -r Recompiles dynamically loaded modules with CPAN::Shell->recompile. -v Print the script version and CPAN.pm version.
回答
另请参阅是,即使我们可以使用CPAN。它显示了如何在没有root或者sudo权限的情况下使用CPAN。
回答
对于CPAN.pm的建议很多,这很好,但是如果我们使用的是Perl 5.10,那么我们也可以访问CPANPLUS.pm,就像CPAN.pm一样,但是更好。
当然,对于仍在使用旧版本Perl的用户,它可以在" CPAN"上使用。为什么不尝试:
$ cpan CPANPLUS
回答
奥托提出了一个很好的建议。这也适用于Debian以及任何其他Debian派生产品。缺少的部分是当apt-cache搜索找不到任何东西时该怎么办。
$ sudo apt-get install dh-make-perl build-essential apt-file $ sudo apt-file update
然后,每当我们有随机模块时,都希望安装:
$ cd ~/some/path $ dh-make-perl --build --cpan Some::Random::Module $ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb
这将为我们提供一个deb软件包,我们可以安装它来获取Some :: Random :: Module。这里的一大好处是手册页和示例脚本以及模块本身将被放置在我们发行版的选择位置。如果发行版随附某个官方版本的Some :: Random :: Module的较新版本的官方软件包,则在我们进行apt-get升级时,它将自动安装。
回答
在Fedora上,我们可以使用
# yum install foo
只要Fedora具有该模块的现有软件包即可。
回答
试试App :: cpanminus:
# cpanm Chocolate::Belgian
仅安装东西非常好。它不提供CPAN或者CPANPLUS的更复杂的功能,因此只要我们知道要安装哪个模块,它就易于使用。如果我们还没有cpanminus,只需键入:
# cpan App::cpanminus
安装它。
也可以完全不使用cpan进行安装。基本的引导程序是,
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
有关更多信息,请转到App :: cpanminus页面,然后查看有关安装的部分。