Home Command line utilities How To Install Perl Modules On Linux
Install Perl modules on Linux from CPAN

How To Install Perl Modules On Linux

By sk
4967 Views

This brief guide explains how to install Perl modules on Linux from CPAN (Comprehensive Perl Archive Network) repository. As of writing this guide, there are 185,128 Perl modules available in CPAN. Many programs written in Perl programming language depends on certain perl modules to perform a specific task. For example, the other day I was testing Sysadmin-util which provides a collection of useful tools for Linux/Unix sysadmins. When I test a specific tool called multi-ping, I encountered with the following error:

$ ./multi-ping google.com
The required Net::DNS module is missing. Aborting.

In such cases, you need to find and install the missing perl module in order to use that program.

Install Perl Modules On Linux

There are many tools available to install and Perl modules. We are going to try two tools namely cpan and cpanm. It is worth mentioning that Many modules on CPAN requires the recent version of Perl version 5.8 or above.

Please ensure that you have installed 'make' package on your Linux distribution. 'make' is an essential tool for building perl Modules.

If you don't install 'make', you might encountered with an error something like below:

Can't configure the distribution. You probably need to have 'make'.

'make' package is available in the default repositories most Linux distributions.

To install 'make' on Arch Linux and its variants, run:

$ sudo pacman -S make

On Debian, Ubuntu, Linux Mint:

$ sudo apt install make

On Fedora:

$ sudo dnf install make

On RHEL, CentOS:

$ sudo yum install make

On SUSE/openSUSE:

$ sudo zypper install make

Let us go ahead and install perl modules.

Install Perl modules using cpan

cpan is a command line client for CPAN repository and is distributed with all Perl editions by default.

To install a Perl module, for example Net::DNS, enter into cpan shell using command:

$ sudo cpan

And type the following command from cpan prompt to install the module:

install Net::DNS

Once the module is installed, type 'exit' to return back to your shell.

You can also directly install the module from the Terminal using command:

$ sudo cpan Net::DNS

Install Perl modules using Cpanminus

Cpanminus or cpanm is a cpan client to get, unpack, build and install modules from CPAN repository. It is a standalone, dependency-free script that requires zero-configuration. Many experienced Perl developers prefer cpanm over cpan.

cpanminus can be installed in many ways.

1. Using Perl:

To install latest cpanm version on your Linux system, just run:

$ curl -L https://cpanmin.us | perl - --sudo App::cpanminus

This command will install cpanm system-wide and install cpanm binary to your bin directory like /usr/local/bin.

2. Using distribution's package manager:

cpanm is also available in the default repositories of several Linux distributions. It is stable version, but bit old.

To install cpanminus on Arch Linux and its variants, run:

$ sudo pacman -S cpanminus

On Debian, Ubuntu, Linux Mint:

$ sudo apt install cpanminus

On CentOS:

$ sudo yum install perl-App-cpanminus

3. Manual installation:

Alternatively, you can manually download latest cpanm binary and put it in your $PATH like below.

$ curl -L https://cpanmin.us/ -o cpanm
$ chmod +x cpanm
$ sudo mv cpanm /usr/local/bin/cpanm

After installing cpanm, you can install any Perl modul, for example Net::DNS, by running the following command from your Terminal:

$ sudo cpanm Net::DNS

Sample output:

--> Working on Net::DNS
Fetching http://www.cpan.org/authors/id/N/NL/NLNETLABS/Net-DNS-1.21.tar.gz ... OK
Configuring Net-DNS-1.21 ... OK
==> Found dependencies: Digest::HMAC
--> Working on Digest::HMAC
Fetching http://www.cpan.org/authors/id/G/GA/GAAS/Digest-HMAC-1.03.tar.gz ... OK
Configuring Digest-HMAC-1.03 ... OK
Building and testing Digest-HMAC-1.03 ... OK
Successfully installed Digest-HMAC-1.03
Building and testing Net-DNS-1.21 ... OK
Successfully installed Net-DNS-1.21
2 distributions installed

Install missing Perl modules using distribution's package manager

Many Perl modules are available as packages, so you can install it using your distribution's package manager.

On Debian, Ubuntu:

$ apt-cache search 'perl$' | grep Net::DNS

Output:

libnet-dns-zonefile-fast-perl - fast BIND-style zonefile parser on top of Net::DNS

As you can see, the Net::DS module is provided by "libnet-dns-zonefile-fast-perl", so let us install it using command:

$ sudo apt install libnet-dns-zonefile-fast-perl

To find the missing module on Arch Linux, run:

$ pacman -Ss '^perl-' | grep Net::DNS

And install the missing module using 'pacman' command.

List installed Perl modules

To list the installed Perl modules, use 'perldoc' command:

$ perldoc perllocal

Sample output:

Thu Jan 30 10:45:11 2020: "Module" Digest::HMAC
    *   "installed into: /usr/local/share/perl/5.26.1"

    *   "LINKTYPE: dynamic"

    *   "VERSION: 1.03"

    *   "EXE_FILES: "

  Thu Jan 30 10:47:41 2020: "Module" Net::DNS
    *   "installed into: /usr/local/share/perl/5.26.1"

    *   "LINKTYPE: dynamic"

    *   "VERSION: 1.21"

    *   "EXE_FILES: "

  Thu Jan 30 10:48:54 2020: "Module" Digest::BubbleBabble
    *   "installed into: /usr/local/share/perl/5.26.1"

    *   "LINKTYPE: dynamic"

    *   "VERSION: 0.02"

    *   "EXE_FILES: "

Another way to list the installed Perl modules is to use 'instmodsh' command like below.

$ instmodsh

You will see the following output:

Available commands are:
l - List all installed modules
m <module> - Select a module
q - Quit the program
cmd?

In cmd prompt, type 'l' to list the modules.

Installed modules are:
App::cpanminus
Digest::BubbleBabble
Digest::HMAC
Module::Build
Net::DNS
Perl
cmd?

Please note that the above two commands will list the modules installed with cpan. There could be many modules installed either manually or pre-installed with your Linux distribution.

To find all installed Perl modules, run:

$ cpan -l

Or,

$ cpan -a

Uninstall Perl modules

The Perl modules can be easily removed using cpanm using command:

$ sudo cpanm --uninstall Net::DNS

Type y and hit ENTER to remove the module long with all configuration files.

Net::DNS contains the following files:

/usr/local/man/man3/Net::DNS.3pm
/usr/local/man/man3/Net::DNS::Domain.3pm
/usr/local/man/man3/Net::DNS::DomainName.3pm
[...]
/usr/local/share/perl/5.26.1/Net/DNS/Text.pm
/usr/local/share/perl/5.26.1/Net/DNS/Update.pm
/usr/local/share/perl/5.26.1/Net/DNS/ZoneFile.pm

Are you sure you want to uninstall Net::DNS? [y] y

Hope this helps.

Thanks for stopping by!

Help us to help you:

Have a Good day!!

You May Also Like

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More