最近在Ubuntu系统的服务器上编译代码的时候,突然报错了,百度了好几天都没有头绪,后面自己想到了一个方法,希望能帮到后面也遇到相关问题的人。
先看一下编译错误的打印:
Your Perl installation is not complete enough; at least the following
modules are missing:
ExtUtils::MakeMaker
Thread::Queue
make[1]: *** [core-dependencies] Error 1
make: *** [_all] Error 2
错误提示很明显,说我服务器的Perl缺少两个模块。那好,我去安装这两个模块应该就行了吧。搜索了一下,可以利用cpan命令来安装Perl缺少的模块(参考链接:https://stackoverflow.com/questions/65865/whats-the-easiest-way-to-install-a-missing-perl-module),比如:
$ cpan ExtUtils::MakeMaker
但是还是有报错:
$ cpan ExtUtils::MakeMaker
Can't locate App/Cpan.pm in @INC (you may need to install the App::Cpan module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl) at /usr/bin/cpan line 15.
BEGIN failed--compilation aborted at /usr/bin/cpan line 15.
WTF!之后又开始了寻找解决办法的漫漫长路,不过一直没有找到解决我问题的办法,而且最惨的是,我服务器的apt-get工具也出问题了,简直让人抓狂,毕竟这个服务器是几个人共用的,也不知道到底谁做了什么骚操作。既然Perl出了问题,那我重新安装一个总可以吧。
我的Perl和CPAN模块下载链接如下:
1)https://metacpan.org/release/SHAY/perl-5.20.2
2)https://metacpan.org/release/CPAN
1)先配置一下Makefile文件
$ ./Configure -des -Dprefix=/usr/local/perl-5.20.2 -Dusethreads -Uinstalluserbinperl
2)然后依次执行下面的三条命令
$ make
$ make test
$ sudo make install
3)
安装完后,就在/usr/local/perl-5.20.2/bin目录生成了perl可执行文件,这个后面编译CPAN模块要用到
1)配置一下Makefile文件
$ /usr/local/perl-5.20.2/bin/perl5.20.2 Makefile.PL
2)依次执行下面的命令编译
$ make
$ make test
$ sudo make install
Perl和CPAN都编译完后,我们先用cpan安装ExtUtils::MakeMaker和Thread::Queue两个模块
1)
$ /usr/local/perl-5.20.2/bin/cpan
执行完有下面的提示,我执行的sudo
What approach do you want? (Choose 'local::lib', 'sudo' or 'manual')
[local::lib] sudo
然后就进入了cpan的shell命令行,分别执行安装缺少的模块就行了:
cpan[1]> install ExtUtils::MakeMaker
cpan[2]> install Thread::Queue
上面的操作完后,我们看一下目前系统使用的perl命令源是哪个:
$ which is perl
/usr/bin/perl
那不是还是原来的perl命令吗,怎么才能用我自己编译安装的呢?从网上得到了启发,备份原来的,再创建一个软链接到我编
的那个perl不就行了?
$ sudo mv /usr/bin/perl /usr/bin/perl.bak
$ sudo ln -s /usr/local/perl-5.20.2/bin/perl /usr/bin/perl
按照上面的操作后,果然就能用了,如果你们的Perl缺少其它的模块,也可以使用cpan命令进行安装