安装缺lessPerl模块的最简单方法是什么?
我得到这个错误:
Can't locate Foo.pm in @INC
安装它比下载,解包,制作等更容易吗?
在Unix上 :
通常你在shell中启动cpan :
# cpan
和types
install Chocolate::Belgian
或简称:
cpan Chocolate::Belgian
在Windows上 :
如果您在Windows上使用ActivePerl,则PPM(Perl Package Manager)与CPAN.pm具有很多相同的function。
例:
# 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构build/安装模块,并为你创build一个Gentoo包( ebuild )。
试试App :: cpanminus :
# cpanm Chocolate::Belgian
安装东西真好。 它不提供CPAN或CPANPLUS的更复杂的function,所以它很容易使用,只要你知道你想要安装哪个模块。 如果你还没有cpanminus,只需input:
# cpan App::cpanminus
安装它。
也可以在不使用cpan的情况下安装它。 基本的bootstrap程序是,
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
欲了解更多信息,请访问App :: cpanminus页面,查看安装部分。
我注意到一些人build议在sudo下运行cpan。 过去有必要将其安装到系统目录中,但现代版本的CPAN shell允许您将其configuration为仅使用sudo进行安装。 这样更安全,因为这意味着testing不能以root身份运行。
如果您有一个旧的CPAN shell,只需安装新的cpan(“install CPAN”),当您重新加载shell时,它应该提示您configuration这些新的指令。
现在,当我使用旧的CPAN系统时,我要做的第一件事情就是更新shell并设置它,这样我就可以像普通用户那样完成大部分工作。
另外,我强烈build议Windows用户调查草莓Perl 。 这是一个与预configuration的CPANshell以及编译器一起打包的Perl版本。 它还包含一些难以编译的Perl模块及其外部C库依赖项,特别是XML :: Parser。 这意味着在安装模块时,您可以像所有其他Perl用户一样执行相同的操作,而且事情往往会“更加经常”。
如果你在Ubuntu上,并且你想安装pre-packaged perl模块(例如,geo :: ipfree),请试试这个:
$ apt-cache search perl geo :: ipfree libgeo-ipfree-perl - 查找ip地址Perl模块的国家 $ sudo apt-get install libgeo-ipfree-perl
有几个人提到了cpan工具,但它不仅仅是启动一个shell。 只要给它你想要安装的模块,并让它做的工作。
$prompt> cpan Foo::Bar
如果你不给它任何参数,它会启动CPAN.pm shell。 这适用于Unix,Mac,在Windows上应该也可以(尤其是Strawberry Perl)。
还有其他一些你可以用cpan工具做的事情。 以下是当前function的摘要(可能比CPAN.pm和perl中的function更新):
-a Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.
-A module [module …]显示指定模块的主要维护者
-C模块[模块…]显示指定模块的更改文件
-D模块[module …]显示模块的详细信息。 这将为每个过期的模块打印一行(也就是说,本地安装的模块,但在CPAN上具有较新的版本)。 每行有三列:模块名称,本地版本和CPAN版本。
-L作者[作者…]由指定的作者列出模块。
-h打印帮助信息。
-O显示过时的模块。
-r使用CPAN :: Shell-> recompile重新编译dynamic加载的模块。
-v打印脚本版本和CPAN.pm版本。
另请参阅是,甚至可以使用CPAN 。 它显示了如何在不具有root或sudo权限的情况下使用CPAN。
sudo perl -MCPAN -e 'install Foo'
奥托提出了一个很好的build议 。 这也适用于Debian以及其他任何Debian衍生产品。 缺less的部分是当apt-cachesearch没有发现什么时要做什么。
$ 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。 这里最大的好处之一就是手册页和示例脚本以及模块本身将被放置在您的发行版的select位置。 如果发行版有一个新版本的Some :: Random :: Module的官方软件包,它会自动安装,当你apt-get升级。
已经回答并接受了答案 – 但无论如何:
恕我直言,最简单的方法安装CPAN模块(在unix像系统,并不知道有关wondows)是:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
以上是安装称为cpanm
的“零configurationCPAN模块安装程序”。 (可以花几分钟时间安装 – 不要打破这个过程)
之后 – 简单地说:
cpanm Foo cpanm Module::One cpanm Another::Module
很多CPAN.pm
的build议,这很好,但如果你使用的是Perl 5.10
那么你也可以访问CPANPLUS.pm
,就像CPAN.pm
一样,但是更好。
当然,对于仍然使用旧版本Perl的人来说,它在CPAN
上是可用的。 为什么不尝试:
$ cpan CPANPLUS
我知道的两种方式:
使用PPM:
与Windows (ActivePerl)我已经使用ppm
从命令行typesppm。 在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的命令列表
在Fedora上,你可以使用
# yum install foo
只要Fedora有一个现有的模块包。
很多时候,它确实发生cpan install命令失败,并显示“make test返回错误状态,不会强行安装”
在这种情况下,以下是安装模块的方法:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
即使它应该工作:
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
我更喜欢App :: cpanminus ,它会自动安装依赖关系。 做就是了
$ cpanm HTML::Parser
在Ubuntu上,大多数perl模块已经被打包了,所以安装比大多数需要编译的系统要快得多。
例如,要在命令提示符下安装Foo::Bar
,你只需要:
sudo apt-get install libfoo-bar-perl
可悲的是并不是所有的模块都遵循这个命名约定。
在Fedora Linux
或Enterprise Linux
, yum
也跟踪perl库的依赖关系。 所以,如果perl模块可用,并且一些rpm包导出了依赖关系,它将为您安装正确的包。
yum install 'perl(Chocolate::Belgian)'
(很可能是perl-Chocolate-Belgian包装,甚至是ChocolateFactory包装)
在具有Perl的ActiveState分发版的Windows上,使用ppm命令。
如果你想把新的模块放到你的cpanshell没有configuration使用的自定义位置,那么下面的方法可能会很方便。
#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
来search相关的perl模块,然后用yum install xxx
来安装。
似乎你已经得到了你的答案,但我想我会插话。这是我在一些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"; } }
这对我来说很好,也许这里有东西可以使用。
最简单的方法是这样的:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'
a)自动recursion依赖性检测/parsing/安装
b)它是一个在线程序,适用于设置脚本
在shell上执行cpan Foo::Bar
就可以达到目的。