我收到此错误:

Can't locate Foo.pm in @INC

有没有比下载、解压、制作等更简单的安装方法?

有帮助吗?

解决方案

在Unix上:

通常你开始 在你的外壳中:

# cpan

并输入

install Chocolate::Belgian

或简称:

cpan Chocolate::Belgian

在 Windows 上:

如果您在 Windows 上使用 ActivePerl, PPM(Perl 包管理器) 与 CPAN.pm 具有许多相同的功能。

例子:

# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart

如何安装 Perl 模块? 在 CPAN 常见问题解答中

许多发行版将许多 Perl 模块作为包提供。

  • Debian/Ubuntu: apt-cache search 'perl$'
  • 拱门Linux: pacman -Ss '^perl-'
  • 根图:类别 dev-perl

你应该 总是 更喜欢它们,因为您受益于自动(安全) 更新 和轻松 移动. 。这可能非常棘手 工具本身。

对于 Gentoo 有一个很好的工具,叫做 g-cpan 它从 CPAN 构建/安装模块并创建 Gentoo 包(电子构建) 为你。

其他提示

尝试 应用程序::cpanminus:

# cpanm Chocolate::Belgian

这对于安装东西来说非常有用。它不提供 CPAN 或 CPANPLUS 更复杂的功能,因此只要您知道要安装哪个模块,它就很容易使用。如果您还没有 cpanminus,只需输入:

# cpan App::cpanminus

安装它。

也可以完全不使用 cpan 来安装它。基本的引导程序是,

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

有关更多信息,请访问 App::cpanminus 页面并查看安装部分。

我注意到有些人建议在 sudo 下运行 cpan。过去需要安装到系统目录中,但现代版本的 CPAN shell 允许您将其配置为使用 sudo 只是 用于安装。这更安全,因为这意味着测试不会以 root 身份运行。

如果您有旧的 CPAN shell,只需安装新的 cpan(“安装 CPAN”),当您重新加载 shell 时,它应该提示您配置这些新指令。

如今,当我使用旧 CPAN 的系统时,我做的第一件事就是更新 shell 并将其设置为执行此操作,这样我就可以作为普通用户完成大部分 cpan 工作。

另外,我强烈建议 Windows 用户调查一下 草莓 Perl. 。这是 Perl 的一个版本,附带预配置的 CPAN shell 和编译器。它还包括一些难以编译的 Perl 模块及其外部 C 库依赖项,特别是 XML::Parser。这意味着在安装模块时,您可以像其他 Perl 用户一样做同样的事情,而且事情往往会更频繁地“正常工作”。

如果您使用的是 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

有几个人提到了 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.

sudo perl -MCPAN -e 'install Foo'

另请参阅 是的,甚至您也可以使用 CPAN. 。它展示了如何在没有 root 或 sudo 访问权限的情况下使用 CPAN。

奥托做了一个 好建议. 。这也适用于 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 升级时,它将自动安装。

已经回答并接受了答案 - 但无论如何:

恕我直言,安装 CPAN 模块的最简单方法(在类 UNIX 系统上,并且不知道 Windows)是:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

以上是安装“零配置CPAN模块安装程序”,名为 cpanm. 。(安装可能需要几分钟 - 不要中断该过程)

之后 - 简单地说:

cpanm Foo
cpanm Module::One
cpanm Another::Module

很多推荐 CPAN.pm, ,这很棒,但是如果您使用 Perl 5.10 那么您还可以访问 CPANPLUS.pm 这就像 CPAN.pm 但更好。

当然,它可以在 CPAN 对于仍在使用旧版本 Perl 的人们。为什么不尝试:

$ cpan CPANPLUS

很多时候,cpan install 命令确实会失败,并显示类似消息“进行测试返回了错误状态,如果不强制安装则不会安装”

在这种情况下,安装模块的方法如下:

perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"

在 ubuntu 上,大多数 perl 模块已经打包,因此安装速度比大多数其他必须编译的系统要快得多。

安装 Foo::Bar 例如,在命令提示符下,通常您只需执行以下操作:

sudo apt-get install libfoo-bar-perl

遗憾的是,并非所有模块都遵循该命名约定。

即使它应该有效:

cpan -i module_name

使用 cpan 命令作为 cpan Modulename

$ cpan HTML::Parser

要自动安装依赖项,请执行以下操作

$ perl -MCPAN -e shell
cpan[1]>  o conf prerequisites_policy follow
cpan[2]>  o conf commit
exit

我更喜欢 应用程序::cpanminus, ,它会自动安装依赖项。做就是了

$ cpanm HTML::Parser

据我所知有2种方法:

使用 PPM :

视窗 (ActivePerl)我用过 ppm

从命令行输入 ppm。在 ppm 提示下...

ppm> install foo

或者

ppm> search foo

获取可用的 foo 模块列表。类型 帮助 对于所有命令

使用 CPAN :

你也可以像这样使用CPAN(*尼克斯系统) :

perl -MCPAN -e 'shell'

给你一个提示

cpan>

在提示...

cpan> install foo  (again to install the foo module)

输入 h 获取 cpan 命令列表

在 Fedora 上你可以使用

# yum install foo

只要 Fedora 有该模块的现有包即可。

Fedora Linux 或者 Enterprise Linux, yum 还跟踪 Perl 库依赖项。因此,如果 perl 模块可用,并且某些 rpm 软件包导出该依赖项,它将为您安装正确的软件包。

yum install 'perl(Chocolate::Belgian)'

(很可能是 perl-Chocolate-Belgian 包,甚至 ChocolateFactory 包)

对我来说最简单的方法是:

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'

a) 自动递归依赖检测/解析/安装

b) 这是一个 shell onliner,适合安装脚本

如果您想将新模块放入 cpan shell 未配置使用的自定义位置,那么也许以下内容会很方便。

 #wget <URL to the module.tgz>
 ##unpack
 perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install

有时您可以使用 yum search foo 搜索相关的 perl 模块,然后使用 yum install xxx 安装。

在具有 Perl ActiveState 发行版的 Windows 上,使用 百万分之一 命令。

简单地执行 cpan Foo::Bar 在 shell 上就可以达到目的。

看来你已经有了答案,但我想我应该插话一下。这就是我在 Ubuntu(或 debian 服务器)上的一些脚本中所做的事情

#!/usr/bin/perl

use warnings;
use strict;

#I've gotten into the habit of setting this on all my scripts, prevents weird path issues if the script is not being run by root
$ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';

#Fill this with the perl modules required for your project
my @perl = qw(LWP::Simple XML::LibXML MIME::Lite DBI DateTime Config::Tiny Proc::ProcessTable);

chomp(my $curl = `which curl`);

if(!$curl){ system('apt-get install curl -y > /dev/null'); }

chomp(my $cpanm = system('/bin/bash', '-c', 'which cpanm &>/dev/null'));

#installs cpanm if missing
if($cpanm){ system('curl -s -L http://cpanmin.us | perl - --sudo App::cpanminus'); }

#loops through required modules and installs them if missing
foreach my $x (@perl){
    eval "use $x";
    if($@){
        system("cpanm $x");
        eval "use $x";
    }
}

这对我来说效果很好,也许这里有一些你可以使用的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top