当前位置: 首页 > 工具软件 > CPAN > 使用案例 >

Ubuntu系统上编译和安装perl和cpan模块

南宫海超
2023-12-01

前言

最近在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、Perl编译

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模块要用到

2、CPAN编译

1)配置一下Makefile文件

$ /usr/local/perl-5.20.2/bin/perl5.20.2 Makefile.PL

2)依次执行下面的命令编译

$ make

$ make test

$ sudo make install

3、模块安装

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

4、创建软链接

上面的操作完后,我们看一下目前系统使用的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命令进行安装

 

 类似资料: