Perl cpan命令给出了错误“quot;Can';t在@INC";

Perl cpan命令给出了错误“quot;Can';t在@INC";,perl,ubuntu,cpan,Perl,Ubuntu,Cpan,我想使用CPAN安装一些Perl软件包,但在尝试启动CPANshell时出现以下错误: paulzierep@naproxen:$cpan 在@INC中找不到B.pm(您可能需要安装B模块)(@INC包含:/etc/perl/usr/local/lib/x86_64-linux-gnu/perl/5.22.1/usr/local/share/perl/5.22.1/usr/lib/x86_64-linux-gnu/perl/share/perl5/usr/lib/x86_64-linux-gnu

我想使用CPAN安装一些Perl软件包,但在尝试启动CPANshell时出现以下错误:

paulzierep@naproxen:$cpan
在@INC中找不到B.pm(您可能需要安装B模块)(@INC包含:/etc/perl/usr/local/lib/x86_64-linux-gnu/perl/5.22.1/usr/local/share/perl/5.22.1/usr/lib/x86_64-linux-gnu/perl/share/perl5/usr/lib/x86_64-linux-gnu/perl/5.22/usr/usr/share/perl/5.22/usr/local/lib/lib/site_perl/usr/usr/lib/usr/lib/x86_-64-linux-linux-linux-linux-gnu/rep/rep/home/home/home/home/paulr.34.pm/paul/paul/usr/34.34.34.22/。
BEGIN失败——编译在/usr/share/perl/5.22/Safe.pm第34行中止。
在/usr/share/perl/5.22/CPAN.pm第56行的require中编译失败。
BEGIN失败--编译在/usr/share/perl/5.22/CPAN.pm第56行中止。
在/usr/share/perl/5.22/App/Cpan.pm第273行的require中编译失败。
BEGIN失败--编译在/usr/share/perl/5.22/App/Cpan.pm第273行中止。
在/usr/bin/cpan第9行的require中编译失败。
BEGIN失败--编译在/usr/bin/cpan第9行中止。
我不知道如何在没有cpan的情况下安装缺少的B模块。我想这应该是默认安装的

我在Ubuntu 16.04上使用Perl 5.22.1

更新 因此,我设置了
PERL5LIB
PERL5OPT
,使其查找
/usr/lib/x86\u 64-linux-gnu/perl/5.22.1/B.pm
,然后CPAN运行,但由于以下错误,我无法安装任何东西

cpan[1]>安装日志::Log4perl
正在阅读“/home/paulzierep/.cpan/Metadata”
数据库于2016年9月30日星期五06:29:02 GMT生成
正在运行模块“Log::Log4perl”的安装
/home/paulzierep/.cpan/sources/authors/id/M/MS/MSCHILLI/Log-Log4perl-1.47.tar.gz的校验和正常
扫描cache/home/paulzierep/.cpan/build中的大小
完成
“YAML”未安装,不会存储持久状态
使用Makefile.PL配置M/MS/MSCHILLI/Log-Log4perl-1.47.tar.gz
正在检查您的工具包是否完整。。。
看起来不错
Have/usr/lib/x86_64-linux-gnu/perl/5.22.1
Want/usr/lib/x86_64-linux-gnu/perl/5.22
您的perl和Config.pm似乎对
他们正在运行的架构。
Perl认为:[5.22.1]
配置说明:[x86_64-linux-gnu-thread-multi]
这可能会也可能不会导致问题。请检查perl的安装
如果您在构建此扩展时遇到问题。
生成Unix样式的生成文件
为Log::Log4perl编写Makefile
编写MYMETA.yml和MYMETA.json
MSCHILLI/Log-Log4perl-1.47.tar.gz
/usr/bin/perl Makefile.PL INSTALLDIRS=site——确定
运行make for M/MS/MSCHILLI/Log-Log4perl-1.47.tar.gz
make:**没有规则将目标“/usr/lib/x86_64-linux-gnu/perl/5.22/Config.pm”设置为“Makefile”所需。停止。
MSCHILLI/Log-Log4perl-1.47.tar.gz
/usr/bin/make——不正常
执行此命令时失败:
MSCHILLI/Log-Log4perl-1.47.tar.gz:make NO
所以它解决了它,给我留下了另一个问题。这方面有什么帮助吗

这就是我得到的:

paulzierep@naproxen:~$perl-E'say for@INC'
/etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.22.1
/usr/local/share/perl/5.22.1
/usr/lib/x86_64-linux-gnu/perl5/5.22
/usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl/5.22
/usr/share/perl/5.22
/usr/local/lib/site\u perl
/usr/lib/x86_64-linux-gnu/perl base
.
paulzierep@naproxen:/home$perl-MFile::Spec-E'say for
文件::Spec->path'
/home/paulzierep/bin
/usr/本地/sbin
/usr/本地/bin
/usr/sbin
/usr/bin
/斯宾
/垃圾箱
/usr/游戏
/usr/本地/游戏
/卡/箱

因此,在查看了具有非常相似设置的不同系统后,我发现了perl安装的问题所在。它总是让我感到不安,5.22文件夹是空的,但似乎仍然是perl正在查找的文件夹

paulzierep@naproxen:/usr/lib/x86_64-linux-gnu/perl$ ls
5.22  5.22.1 cross-config-5.22.1  debian-config-data-5.22.1
在一个具有类似设置的系统中,我发现5.22链接到了5.22.1,设置这个链接解决了问题,perl再次运行起来很有魅力

我还想指出,在我的研究中,我发现工作目录“.”在默认情况下似乎在@INC中,()因此我想知道为什么有些人(@Borodin)会觉得奇怪,我的主目录在那里(只要你从那里启动cpan,任何目录都在那里)

此外,我看不出perlbrew在这里会有什么帮助,此外,如果您的系统perl不能正常工作,您无法在不使用perl的情况下安装它,我看不出它会有什么帮助

$ cpan
    Can't locate File/Spec.pm:   /usr/local/lib/x86_64-linux-gnu/perl/5.22.1/File/Spec.pm: Permission denied at /usr/share/perl/5.22/CPAN.pm line 10.
    BEGIN failed--compilation aborted at /usr/share/perl/5.22/CPAN.pm line 10.
    Compilation failed in require at /usr/share/perl/5.22/App/Cpan.pm line 273.
    BEGIN failed--compilation aborted at /usr/share/perl/5.22/App/Cpan.pm line 273.
    Compilation failed in require at /usr/bin/cpan line 9.
    BEGIN failed--compilation aborted at /usr/bin/cpan line 9.

@INC.

中的Perl不查找模块我也遇到了同样的问题。不知什么原因,目录
/usr/lib/x86\u 64-linux-gnu/Perl
是空的。我的解决方案是重新安装
libperl5.22

sudo apt-get install --reinstall libperl5.22

您应该显示您的命令行…不,我已经删除并再次安装了perl,并且使用apt get install perl没有错误。我没有在包中看到B.pm,这似乎是Ubuntu放置核心模块的地方。也许他们把包弄坏了。好的,很高兴知道,我会尝试一个旧版本。最好是离开系统perl单独使用或在主目录中安装您自己的版本。使用系统perl可能会导致其他问题。您不需要perl来安装plenv。此外,
@INC
通常包含
,而不是当前工作目录的绝对路径。例如,
perl-E'say“@INC”“
打印
/usr/local/lib64/perl5/usr/local/share/perl5/usr/lib64/perl5/vendor\u perl/usr/share/perl5/vendor\u perl/usr/lib64/perl5/usr/share/perl5.
在我的系统上。我看不出你要去哪里@ThisSuitesBlacknoti在回答你的两件事:1)“我看不出perlbrew在这里会有什么帮助,除此之外,如果你不使用perl就无法安装它,当你的系统perl不能正常工作时,我看不出它会有什么帮助。”如果系统perl完全崩溃,甚至连perlbrew安装脚本都无法运行(你试过了吗?),你仍然可以安装plenv。perlbr的要点是什么