我想知道为什么我得到“安装依赖项失败:模块'模块::名称'未安装”,即使已安装依赖项。我正在使用perlbrew
和cpanm
。以下是我尝试安装的许多模块会发生什么情况的示例:
URI::ws
,如下所示hamid@caspian:~$ /home/hamid/perl5/perlbrew/bin/cpanm --installdeps URI::ws --> Working on URI::ws Fetching http://www.cpan.org/authors/id/P/PL/PLICEASE/URI-ws-0.03.tar.gz ... OK Configuring URI-ws-0.03 ... OK ==> Found dependencies: URI --> Working on URI Fetching http://www.cpan.org/authors/id/E/ET/ETHER/URI-1.67.tar.gz ... OK Configuring URI-1.67 ... OK Building and testing URI-1.67 ... OK Successfully installed URI-1.67 ! Installing the dependencies failed: Module 'URI' is not installed ! Bailing out the installation for URI-ws-0.03. 1 distribution installed
URI
未安装。所以我安装URI
如下:hamid@caspian:~$ /home/hamid/perl5/perlbrew/bin/cpanm URI --> Working on URI Fetching http://www.cpan.org/authors/id/E/ET/ETHER/URI-1.67.tar.gz ... OK Configuring URI-1.67 ... OK Building and testing URI-1.67 ... OK Successfully installed URI-1.67 1 distribution installed
URI::ws
,这就是我得到的:hamid@caspian:~$ /home/hamid/perl5/perlbrew/bin/cpanm URI::ws --> Working on URI::ws Fetching http://www.cpan.org/authors/id/P/PL/PLICEASE/URI-ws-0.03.tar.gz ... OK Configuring URI-ws-0.03 ... OK ==> Found dependencies: URI --> Working on URI Fetching http://www.cpan.org/authors/id/E/ET/ETHER/URI-1.67.tar.gz ... OK Configuring URI-1.67 ... OK Building and testing URI-1.67 ... OK Successfully installed URI-1.67 ! Installing the dependencies failed: Module 'URI' is not installed ! Bailing out the installation for URI-ws-0.03. 1 distribution installed
任何人都可以告诉我为什么会这样,我能做些什么来阻止它?如果您有任何我需要的信息,请告诉我。
谢谢
答案 0 :(得分:4)
感谢https://stackoverflow.com/users/2019415/g-cito
hamid @ caspian:〜$ PERL_MM_OPT =“”; PERL_MB_OPT = “”;
完成了这项工作:)
local::lib
搞砸了。 URI.pm
已安装但未安装在perlbrew目录下。
答案 1 :(得分:2)
使用perlbrew,您可以安装perlbrew specific cpanm
,这有助于安装使用perlbrew工具安装/管理的各种perls/
。我发现这很有效。
但是,如果您混合使用自己的local::lib
并设置相关的环境变量,例如perlbrew
,PERL5LIB
,{{{},那么PERL_MM_OPT
就会混淆1}} 等。(例如参见perlbrew and local::lib at the same time?中@cjm的帖子)。这些环境变量中的一些可以与perlbrew自己的环境进行交互和干扰,因此通常最好避免混合它们或者仅仅让perlbrew使用它们自己的那些变量版本来管理环境。
当然可以使用PERL_MB_OPT
环境"内部"使用lib命令perlbrew)并使用不同的perl版本进行非常复杂的测试,运送带有需求的应用程序( c.f。 Carton
)。在我自己的环境中,我能够管理系统perl;用户安装了使用系统perl的local::lib
;所有人都明智地使用了环境变量(感谢在版本之间进行迁移时的临时设置)以及一大堆perlbrew perls。
这种设置很快就会变得复杂,很难复制。 perlbrew的最大优势之一是您可以在多台机器上轻松设置匹配的perl环境;或同一台机器上的不同perl环境。