安装丢失的Perl模块最简单的方法是什么?

dre*_*ves 178 perl install cpan

我收到此错误:

Can't locate Foo.pm in @INC

有没有比下载,解决,制作等更容易安装它的方法?

Ben*_*gel 214

在Unix上:

通常你在shell中启动cpan:

# 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 FAQ中

许多发行版都将很多perl模块作为包发布.

  • Gentoo:类别dev-perl
  • Debian的: apt-cache search 'perl$'

您应该始终更喜欢它们,因为您可以从自动(安全)更新和易于删除中受益.使用cpan工具本身可能非常棘手.

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

  • 简短形式只是命令行中的"cpan Chocolate :: Belgian":) (13认同)
  • 只需"ppm"即可打开GUI,但后面会有命令停留在命令行.所以,"ppm帮助","ppm安装......"等. (6认同)
  • IIRC最新的ActivePerl不再具有命令行ppm,它现在打开了一个奇特的GUI. (3认同)
  • @MatthewLock:`ppm`使用连字符`-`,因为你指定了你要安装的*distribution*,这更加诚实.例如,如果您使用`cpan`来安装`LWP`,`LWP :: Simple`或`LWP :: UserAgent`,它将为您安装发行版`libwww-perl`.大多数发行版包含一个具有等效名称的模块,但有几个例外 (3认同)

Phi*_*ter 62

试试App :: cpanminus:

# cpanm Chocolate::Belgian
Run Code Online (Sandbox Code Playgroud)

安装东西真是太棒了.它不提供CPAN或CPANPLUS的更复杂功能,因此只要您知道要安装哪个模块,它就很容易使用.如果你还没有cpanminus,只需输入:

# cpan App::cpanminus
Run Code Online (Sandbox Code Playgroud)

安装它.

也可以在不使用cpan的情况下安装它.基本的引导程序是,

curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请转到App :: cpanminus页面并查看有关安装的部分.

  • 使用`cpan`来安装`App :: cpanminus`有点奇怪.正常安装说明涉及从http://cpanmin.us下载其中一部分并使用它来安装其余部分的引导程序.这避免了`cpan`的配置和(之后)无用的`.cpan`目录的创建. (7认同)

Dav*_*sky 29

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

如果你有一个旧的CPAN shell,只需安装新的cpan("安装CPAN"),当你重新加载shell时,它应该提示你配置这些新的指令.

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

另外,我强烈建议Windows用户调查草莓Perl.这是Perl的一个版本,它与预配置的CPAN shell和编译器一起打包.它还包括一些难以编译的Perl模块及其外部C库依赖项,特别是XML :: Parser.这意味着在安装模块时,您可以像其他每个Perl用户一样执行相同的操作,并且事情往往更加"正常工作".


Ott*_*tto 25

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


bri*_*foy 16

有几个人提到了cpan实用程序,但它不仅仅是启动shell.只需给它你想要安装的模块,让它做它的工作.

$prompt> cpan Foo::Bar
Run Code Online (Sandbox Code Playgroud)

如果你没有给它任何参数,它会启动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.
Run Code Online (Sandbox Code Playgroud)


dre*_*ves 11

sudo perl -MCPAN -e 'install Foo'


Cor*_*ion 10

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


mik*_*grb 8

奥托提出了一个很好的建议.这也适用于Debian,以及任何其他Debian衍生产品.缺少的部分是当apt-cache搜索找不到东西时要做的事情.

$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
Run Code Online (Sandbox Code Playgroud)

然后,只要您想要安装随机模块:

$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个deb软件包,您可以安装它来获取Some :: Random :: Module.这里的一大好处是手册页和示例脚本以及模块本身将放置在您的发行版所选位置.如果发行版有一个更新版本的Some :: Random :: Module的官方软件包,它会在你升级时自动安装.


jm6*_*666 7

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

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

curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Run Code Online (Sandbox Code Playgroud)

以上是安装"零配置CPAN模块安装程序"调用cpanm.(可能需要几分钟才能安装 - 不要破坏过程)

之后 - 简单地说:

cpanm Foo
cpanm Module::One
cpanm Another::Module
Run Code Online (Sandbox Code Playgroud)


Dav*_*oss 6

很多建议CPAN.pm,这很好,但如果你正在使用Perl 5.10那么你也可以访问CPANPLUS.pm哪个CPAN.pm更好.

当然,它CPAN仍适用于仍在使用旧版本Perl的用户.为什么不尝试:

$ cpan CPANPLUS
Run Code Online (Sandbox Code Playgroud)


小智 5

很多时候,cpan install命令失败的情况确实发生了,例如 "make test has bad state,不会没有强制安装"

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

perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
Run Code Online (Sandbox Code Playgroud)


Cha*_*hak 5

使用 cpan 命令作为 cpan Modulename

$ cpan HTML::Parser
Run Code Online (Sandbox Code Playgroud)

要自动安装依赖项,请按照以下步骤操作

$ perl -MCPAN -e shell
cpan[1]>  o conf prerequisites_policy follow
cpan[2]>  o conf commit
exit
Run Code Online (Sandbox Code Playgroud)

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

$ cpanm HTML::Parser
Run Code Online (Sandbox Code Playgroud)