Installing Perl modules required by various open source software is a routine tasks for sysadmins. Installing Perl modules manually by resolving all the dependencies is tedious and annoying process.
Installing Perl modules using CPAN is a better solution, as it resolves all the dependencies automatically. In this article, let us review how to install Perl modules on Linux using both manual and CPAN method.
When a Perl module is not installed, application will display the following error message. In this example, XML::Parser Perl module is missing.
Can't locate XML/parser.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/local/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/site_perl/5.10.0 .)
Install Perl Modules Manually
Download Perl module
Go to CPAN Search website and search for the module that you wish to download. In this example, let us search, download and install XML::Parser Perl module. I have downloaded the XML-Parser-2.36.tar.gz to /home/download
# cd /home/download # gzip -d XML-Parser-2.36.tar.gz # tar xvf XML-Parser-2.36.tar # cd XML-Parser-2.36
Build the perl module
# perl Makefile.PL Checking if your kit is complete... Looks good Writing Makefile for XML::Parser::Expat Writing Makefile for XML::Parser # make # make test
Install the perl module
# make install
This is very simple for one module with no dependencies. Typically, Perl modules will be dependent on several other modules. Chasing all these dependencies one-by-one can be very painful and annoying task. I recommend the CPAN method of installation as shown below. Use the manual method only if the server is not connected to the Internet.
Install Perl Modules using CPAN automatically
Verify whether CPAN is already installed
To install Perl modules using CPAN, make sure the cpan command is working. You should have the CPAN perl module installed before you can install any other Perl modules using CPAN. In this example, CPAN module is not installed.
# cpan -bash: cpan: command not found # perl -MCPAN -e shell Can't locate CPAN.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/local/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/site_perl/5.10.0 .). BEGIN failed--compilation aborted.
Install the CPAN module using yum
# yum install perl-CPAN
Output of yum install perl-CPAN command:
Loaded plugins: refresh-packagekit updates-newkey | 2.3 kB 00:00 primary.sqlite.bz2 | 2.4 MB 00:00 Setting up Install Process Parsing package install arguments Resolving Dependencies Transaction Summary ============================================================================= Install 5 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 1.0 M Is this ok [y/N]: y Downloading Packages: (1/5): perl-ExtUtils-ParseXS-2.18-31.fc9.i386.rpm | 30 kB 00:00 (2/5): perl-Test-Harness-2.64-31.fc9.i386.rpm | 70 kB 00:00 (3/5): perl-CPAN-1.9205-31.fc9.i386.rpm | 217 kB 00:00 (4/5): perl-ExtUtils-MakeMaker-6.36-31.fc9.i386.rpm | 284 kB 00:00 (5/5): perl-devel-5.10.0-31.fc9.i386.rpm | 408 kB 00:00 Installing : perl-ExtUtils-ParseXS [1/5] Installing : perl-devel [2/5] Installing : perl-Test-Harness [3/5] Installing : perl-ExtUtils-MakeMaker [4/5] Installing : perl-CPAN [5/5] Installed: perl-CPAN.i386 0:1.9205-31.fc9 Dependency Installed: perl-ExtUtils-MakeMaker.i386 0:6.36-31.fc9 perl-ExtUtils-ParseXS.i386 1:2.18-31.fc9 perl-Test-Harness.i386 0:2.64-31.fc9 perl-devel.i386 4:5.10.0-31.fc9 Complete!
Configure cpan the first time
The first time when you execute cpan, you should set some configuration parameters as shown below. I have shown only the important configuration parameters below. Accept all the default values by pressing enter.
Note: Make sure to execute “o conf commit” in the cpan prompt after the configuration to save the settings.
# cpan Sorry, we have to rerun the configuration dialog for CPAN.pm due to some missing parameters... CPAN build and cache directory? [/root/.cpan] Download target directory? [/root/.cpan/sources] Directory where the build process takes place? [/root/.cpan/build] Always commit changes to config variables to disk? [no] Cache size for build directory (in MB)? [100] Let the index expire after how many days? [1] Perform cache scanning (atstart or never)? [atstart] Cache metadata (yes/no)? [yes] Policy on building prerequisites (follow, ask or ignore)? [ask] Parameters for the 'perl Makefile.PL' command? [] Parameters for the 'perl Build.PL' command? [] Your ftp_proxy? [] Your http_proxy? [] Your no_proxy? [] Is it OK to try to connect to the Internet? [yes] First, pick a nearby continent and country by typing in the number(s) (1) Africa (2) Asia (3) Central America (4) Europe (5) North America (6) Oceania (7) South America Select your continent (or several nearby continents) [] 5 (1) Bahamas (2) Canada (3) Mexico (4) United States Select your country (or several nearby countries) [] 4 (2) ftp://carroll.cac.psu.edu/pub/CPAN/ (3) ftp://cpan-du.viaverio.com/pub/CPAN/ (4) ftp://cpan-sj.viaverio.com/pub/CPAN/ (5) ftp://cpan.calvin.edu/pub/CPAN (6) ftp://cpan.cs.utah.edu/pub/CPAN/ e.g. '1 4 5' or '7 1-4 8' [] 2-16 cpan[1]> o conf commit commit: wrote '/usr/lib/perl5/5.10.0/CPAN/Config.pm' cpan[2]> quit No history written (no histfile specified). Lockfile removed.
Install Perl Modules using CPAN
You can use one of the following method to install a Perl module using cpan.
# /usr/bin/perl -MCPAN -e 'install Email::Reply' (or) # cpan cpan shell -- CPAN exploration and modules installation (v1.9205) ReadLine support available (maybe install Bundle::CPAN or Bundle::CPANxxl?) cpan[1]> install "Email::Reply";
Output of above perl install command:
CPAN: Storable loaded ok (v2.18) Going to read /root/.cpan/Metadata Database was generated on Mon, 15 Sep 2008 11:02:52 GMT Running install for module 'Email::Reply' Running make for R/RJ/RJBS/Email-Reply-1.202.tar.gz CPAN: LWP::UserAgent loaded ok (v2.036) CPAN: Time::HiRes loaded ok (v1.9711) Fetching with LWP: ftp://carroll.cac.psu.edu/pub/CPAN/authors/id/R/RJ/RJBS/Email-Reply-1.202.tar.gz CPAN: checksum security checks disabled because Digest::SHA not installed. Please consider installing the Digest::SHA module. CPAN: Compress::Zlib loaded ok (v2.008) Email-Reply-1.202/ Email-Reply-1.202/Changes CPAN: File::Temp loaded ok (v0.18) Warning: prerequisite Email::Abstract 2.01 not found. Warning: prerequisite Email::MIME::Creator 1.41 not found. Writing Makefile for Email::Reply ---- Unsatisfied dependencies detected during ---- ---- RJBS/Email-Reply-1.202.tar.gz ---- Email::Abstract [requires] Email::MIME::Creator [requires] Shall I follow them and prepend them to the queue of modules we are processing right now? [yes] [Note: CPAN automatically detects that Email::Abstract and Email::MIME::Creator is required] Fetching with LWP: ftp://server/pub/CPAN/authors/id/R/RJ/RJBS/Email-Abstract-2.134.tar.gz make -- OK make install -- OK Fetching with LWP: ftp://server/pub/CPAN/authors/id/R/RJ/RJBS/Email-MIME-Creator-1.454.tar.gz make -- OK make install -- OK Warning: prerequisite Email::Simple::Creator 1.4 not found. Writing Makefile for Email::MIME::Creator Email::Simple::Creator [requires] Shall I follow them and prepend them to the queue of modules we are processing right now? [yes] [Note: CPAN automatically detects that Simple::Creator is required] Fetching with LWP: ftp://carroll.cac.psu.edu/pub/CPAN/authors/id/R/RJ/RJBS/Simple-Creator.tar.gz make -- OK make install -- OK Fetching with LWP: CPAN.pm: Going to build R/RJ/RJBS/Email-Reply-1.202.tar.gz make -- OK make install -- OK
In the example above, Email::Reply is dependent on the several other modules. CPAN automatically resolves the dependencies and installs Email::Reply and all the dependent Perl modules.
If you liked this article, please bookmark it on del.icio.us and Stumble it.
Comments on this entry are closed.
Use perlmod to manage perl modules. It will help us to Install perl modules and all dependent modules,Uninstall perl modules,List all perl modules in system,Search for a perl module in cpan.org and system,List all files of a perl module and Details of a perl module.
Download from the link
http://sourceforge.net/projects/perlmod/
hi, thanks for a fast reference….
perlmod is exactly what you should not use. It will only work on Unix-like systems, and requires modules to be installed (HTML::Entities) before you can even install it. And it isn’t able to install Module::Build-based distributions.
Also the code is quite bad, in old Perl 4 style (subs called with ‘&’). Perl 5 exists since 1995 and the author seems to ignore the Modern Perl trend.
Instead, use http://cpanmin.us/
I see this misinformation pasted in a lot of places… it is perfectly acceptable to call subroutines in perl with &.
It helps make clear what functions are local to your script, as opposed to built in or buried in a module. It is one of the few places where I have a big disagreement with Damien Conway in his Perl Best Practices book.
is there a painless way for installing perl modules on windows?
Hi,
I have a situation where the server is not connected to internet. How to package all modules and it’s cascading dependensies, so that I can install all modules and its dependencies without a need to connect to internet.
Thanks
Richard
if for any reason you want to put the module into a different location than your perl installation is configured to,
make INSTALLARCHLIB= would do.
This will be helpful if the cpan shell doesn’t put the libraries into a location that @INC contains.
Hi
I tried to run cpan[1]> install “Email::Reply”; I get the below error:
Warning: Cannot install Email::Reply;, don’t know what it is.
Try the command
i /Email::Reply;/
What does that mean?
When I am trying to install cgi-4.15, it says
Warning:cannot install CGI-4.15, don’t know what it is. Try the command
i/CGI-4.15/
However when I do that , I do get info of the author who has written it, not sure if i am missing something here.
Regards,
Amitesh
There should be no semicolon on the “install” command.
install “Email::Reply”
The semicolon will result in cpan showing the error Bonginkosi had above.
“`
CPAN: checksum security checks disabled because Digest::SHA not installed.
Please consider installing the Digest::SHA module.
“`
Hi, I want to know how to solve the above problem? Thanks!
Thanks.