【问题标题】:Can't locate local/lib.pm in @INC at /usr/share/perl/5.14/CPAN/FirstTime.pm无法在 /usr/share/perl/5.14/CPAN/FirstTime.pm 的 @INC 中找到 local/lib.pm
【发布时间】:2013-05-18 03:31:22
【问题描述】:

我正在尝试在我的 Ubuntu 12.04 系统上第一次使用 Perl。我安装了 Perl v.5.14.2。
我查了how to install Perl modules,于是开始如下:

$ perl -MCPAN -e shell

向导开始配置环境,如下所示:http://pastebin.com/5hn8vkb5
但是,它在中间停止并显示以下错误消息:

...

Checksum for /home/john/.cpan/sources/authors/id/A/AP/APEIRON/local-lib-1.008009.tar.gz ok
---- Unsatisfied dependencies detected during ----
----     APEIRON/local-lib-1.008009.tar.gz    ----
    ExtUtils::MakeMaker [build_requires]
Running make test
  Make had some problems, won't test
  Delayed until after prerequisites
Running make install
  Make had some problems, won't install
  Delayed until after prerequisites

Can't locate local/lib.pm in @INC (@INC contains:
    /home/john/perl5/lib/perl5
    /etc/perl
    /usr/local/lib/perl/5.14.2
    /usr/local/share/perl/5.14.2
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.14
    /usr/share/perl/5.14
    /usr/local/lib/site_perl
    /home/john/Desktop)
at /usr/share/perl/5.14/CPAN/FirstTime.pm line 1300.

如何在我的 Ubuntu 安装中正确设置 Perl 环境?


中断向导并重新启动后,不再有错误消息。 如何重新启动向导以便我可以在这里选择:

你想要什么方法? (选择“local::lib”、“sudo”或“手动”) [本地::lib]

【问题讨论】:

  • cpan local::lib 也许?或者检查 apt-get 存储库。您没有安装该模块,但您选择使用它作为安装模块的方法。你不想sudo
  • @TLP 我需要通过sudo apt-get install ... 安装的库的名称是什么?
  • 击败我。你必须搜索。但是你当然可以sudo cpan local::lib。还是?
  • $ apt-cache search local-lib 返回:liblocal-lib-perl - module to use a local path for Perl modules。如果您尝试,您可能不会收到此错误:$ sudo perl -MCPAN -e shell
  • @JJD 不确定,如果你还没有安装任何东西,我敢打赌你可以rm -rf ~/.cpan。我建议尝试cpanminus 而不是旧的CPAN shell。注意:rm -rf 风险自负!不积极,不会搞砸;)

标签: perl ubuntu-12.04 perl-module cpan


【解决方案1】:

您缺少local::lib,这是您告诉CPAN shell 要做的事情。

你可以这样安装:

sudo apt-get install liblocal-lib-perl

您可以通过rm -rf-ing 您的~/.cpan 目录重新开始。风险自负

但是,我建议尝试使用cpanminus 而不是旧的CPAN shell

sudo apt-get install cpanminus

【讨论】:

  • 遗憾的是,liblocal-lib-perlcpanminus 都没有打包在 Ubuntu 12.04 中。
  • @CharlesDuffy - 来自 Ubuntu 12.04.3 LTS 的输出:$ apt-cache search liblocal-lib-perl liblocal-lib-perl - module to use a local path for Perl modules$ apt-cache search cpanminus cpanminus - script to get, unpack, build and install modules from CPAN
  • ...相比之下,在官方ubuntu:12.04 docker 镜像上并没有那么多。
  • 啊——说docker镜像只包含main。我猜这些在其他地方(宇宙之类的)?
  • liblocal-lib-perl 绝对是为 Ubuntu LTS 12.04.3 打包的。我刚刚安装了它。
【解决方案2】:

local 命名空间用于您自己的个人模块,在 CPAN 中找不到。这是相对较新的东西。在许多站点,您可能需要当前版本的 Perl 中没有的 CPAN 模块,或者您需要特定模块的更新版本。但是,您没有对安装 CPAN 模块的标准位置的写入权限。

这样做是将这些模块安装在您可以访问它们的$HOME/perl5/lib/local 目录下。您还需要设置一个 PERL5LIB 环境变量(通常在您的启动脚本中),因此 Perl 将在定位这些模块时检查此目录。

如果您拥有sudo 权限,请使用它来安装 CPAN 模块,而不是尝试这样做。以下将为您将Foo::Bar 模块安装到标准模块目录中(并根据需要进行任何配置):

$ sudo cpan install Foo::Bar

如果需要配置 CPAN,它会先配置。

MetaCPAN 上为模块安装 local::lib 有完整的说明。他们很清楚。

【讨论】:

  • 感谢您的详细解释。我注意到模块安装在本地,但在 Perl 的 PATH 中无法访问。因此,我尝试了--sudo。也谢谢你的链接。
【解决方案3】:

几个新操作系统的强制(如 Redhat 7)强制检查 perl 版本中 local::lib 的存在,实际上这是一件好事,这使用户能够使用 CPAN 并添加、实验和享受新的模块来使用perl 无需等待站点范围的安装(如 root 用户)。默认情况下 local::lib 查找用户本地或下载模块所在的 $HOME/perl5 目录。如果您看到此问题,则必须执行以下操作

  1. sudo su -whatever_user_owns_perl
  2. whatever_perl_install_path/cpan install local::lib

【讨论】:

  • " perl_install_path/cpan install local::lib " 这对我有用
猜你喜欢
  • 2012-09-07
  • 2013-04-25
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 2021-07-05
  • 2015-12-23
  • 2013-05-19
  • 1970-01-01
相关资源
最近更新 更多