cpan命令给出了错误"无法在@ INC"中找到B.pm

时间:2016-09-29 14:49:10

标签: perl ubuntu cpan

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

paulzierep@naproxen:~$ cpan
Can't locate B.pm in @INC (you may need to install the B module) (@INC contains: /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_perl /usr/lib/x86_64-linux-gnu/perl-base /home/paulzierep) at /usr/share/perl/5.22/Safe.pm line 34.
BEGIN failed--compilation aborted at /usr/share/perl/5.22/Safe.pm line 34.
Compilation failed in require at /usr/share/perl/5.22/CPAN.pm line 56.
BEGIN failed--compilation aborted at /usr/share/perl/5.22/CPAN.pm line 56.
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.

我无法弄清楚如何在没有cpan的情况下安装缺少的B模块。我想这应该默认安装。

我在Ubuntu 16.04上使用Perl 5.22.1。

更新

所以我设置了PERL5LIBPERL5OPT以使其找到/usr/lib/x86_64-linux-gnu/perl/5.22.1/B.pm,并且CPAN运行,但由于以下错误我无法安装任何内容

cpan[1]> install Log::Log4perl
Reading '/home/paulzierep/.cpan/Metadata'
Database was generated on Fri, 30 Sep 2016 06:29:02 GMT
Running install for module 'Log::Log4perl'
Checksum for /home/paulzierep/.cpan/sources/authors/id/M/MS/MSCHILLI/Log-Log4perl-1.47.tar.gz ok
Scanning cache /home/paulzierep/.cpan/build for sizes
............................................................................DONE
'YAML' not installed, will not store persistent state
Configuring M/MS/MSCHILLI/Log-Log4perl-1.47.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Have /usr/lib/x86_64-linux-gnu/perl/5.22.1
Want /usr/lib/x86_64-linux-gnu/perl/5.22
Your perl and your Config.pm seem to have different ideas about the
architecture they are running on.
Perl thinks: [5.22.1]
Config says: [x86_64-linux-gnu-thread-multi]
This may or may not cause problems. Please check your installation of perl
if you have problems building this extension.
Generating a Unix-style Makefile
Writing Makefile for Log::Log4perl
Writing MYMETA.yml and MYMETA.json
MSCHILLI/Log-Log4perl-1.47.tar.gz
/usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK
Running make for M/MS/MSCHILLI/Log-Log4perl-1.47.tar.gz
make: *** No rule to make target '/usr/lib/x86_64-linux-gnu/perl/5.22/Config.pm', needed by 'Makefile'.  Stop.
MSCHILLI/Log-Log4perl-1.47.tar.gz
/usr/bin/make -- NOT OK
Failed during this command:
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_perl
/usr/lib/x86_64-linux-gnu/perl-base
.

paulzierep@naproxen:/home$ perl -MFile::Spec -E 'say for 
File::Spec->path'
/home/paulzierep/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin

3 个答案:

答案 0 :(得分:1)

因此,在查看具有非常类似设置的不同系统之后,我发现了我的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中,(http://www.perlmonks.org/bare/?node_id=375341)因此我想知道为什么某些人(@Borodin)看起来很奇怪,我的主目录就在那里(任何目录都存在,只要你从cpan开始有)。

此外,我不知道perlbrew如何在这里提供帮助,除了事实上,如果没有工作perl你就无法安装它,当你的系统perl不能正常工作时我也不知道它会有什么帮助。

答案 1 :(得分:1)

我遇到了同样的问题。由于某些未知原因,目录/usr/lib/x86_64-linux-gnu/perl为空。我的解决方案是重新安装libperl5.22包。

sudo apt-get install --reinstall libperl5.22

答案 2 :(得分:-2)

$ 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.

Perl不会在@INC中查找模块。