3

我想知道为什么即使安装了依赖项,我也会收到“安装依赖项失败:未安装模块'Module::Name'”。我正在使用perlbrewcpanm。以下是我尝试安装的许多模块发生的情况的示例:

  1. 我尝试安装例如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
  1. 它告诉我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
  1. 我回到我最初想要的,这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

谁能告诉我为什么会发生这种情况以及我能做些什么来阻止它?如果您需要更多我错过的信息,请告诉我。

谢谢

4

2 回答 2

4

感谢https://stackoverflow.com/users/2019415/g-cito

hamid@里海:~$ PERL_MM_OPT=""; PERL_MB_OPT="";

完成了工作:)

local::lib把事情搞砸了。URI.pm已安装但不在 perlbrew 目录下。

于 2015-03-10T15:03:20.730 回答
2

使用perlbrew,您可以安装特定的 perlbrewcpanm,这有助于安装到perls/使用 perlbrew 工具安装/管理的各种。我发现这非常有效。

但是,如果您混入自己的 环境变量并设置相关的环境变量,如,perlbrew 可能会感到困惑(例如,请参阅@cjm 在 perlbrew和 local::lib 中同时发布的帖子?)。其中一些环境变量可以与 perlbrew 自己的环境交互和干扰,因此通常最好避免混合它们,或者只是让 perlbrew 使用自己的这些变量版本来管理环境。local::libPERL5LIBPERL_MM_OPTPERL_MB_OPT

当然可以使用local::lib带有 lib 命令的“内部”perlbrew 环境)并使用不同的 perl 版本进行非常复杂的测试,交付具有要求的应用程序(cf Carton)。在我自己的环境中,我能够管理系统 perl;local::lib使用系统 perl安装的用户;和大量的 perlbrew perls,所有这些都明智地使用了环境变量(幸好在版本之间迁移时临时设置)。

这种设置会很快变得复杂,并且难以复制。perlbrew 的最大优势之一是您可以轻松地在多台机器上设置匹配的 perl 环境;或同一台机器上的不同 perl 环境。

于 2015-03-10T17:17:29.050 回答