10

第一次尝试在我的系统 Ubuntu 12.04 上使用 Perl。我安装了 Perl v.5.14.2。
我查找了如何安装 Perl 模块,所以我开始如下:

$ 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”或“manual”)[local::lib]

4

3 回答 3

19

你错过了local::lib,这是你告诉CPANshell 做的。

你可以像这样安装它:

sudo apt-get install liblocal-lib-perl

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

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

sudo apt-get install cpanminus
于 2013-05-22T23:24:04.950 回答
2

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

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

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

$ sudo cpan install Foo::Bar

如果需要配置 CPAN,它将首先进行。

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

于 2013-05-22T23:22:34.517 回答
2

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

  1. sudo su -whatever_user_owns_perl
  2. 不管是perl_install_path/cpan install local::lib
于 2015-03-06T17:51:23.813 回答