如何在Linux上安装Perl模块

时间:2020-03-21 11:44:40  来源:igfitidea点击:

本简要介绍介绍了如何从CPAN(综合Perl归档网络)存储库上的Linux上安装Perl模块。

首先编写本教程,CPAN中有185,128个Perl模块可用。
以Perl编程语言编写的许多程序取决于某些Perl模块以执行特定任务。
例如,另一天我正在测试Sysadmin-Util,它为Linux/Unix Sysadmins提供了一系列有用的工具。

当我测试一个名为Multi-ping的特定工具时,我遇到了以下错误:

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

在这种情况下,我们需要查找并安装缺少的Perl模块以便使用该程序。

在Linux上安装Perl模块

有许多工具可安装和Perl模块。
我们将尝试两款工具即CPAN和CPANM。
值得一提的是,CPAN上的许多模块都需要最近版本的Perl版本5.8或者更高版本。

请确保我们在Linux发行版上安装了"make"包。
'make'是构建Perl模块的重要工具。

如果我们未安装"make",则可能遇到错误的错误:

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

"Make"软件包可在大多数Linux发行版的默认存储库中提供。

要在Arch Linux上安装'Make'及其变体,请运行:

$sudo pacman -S make

在Debian,Ubuntu,Linux Mint:

$sudo apt install make

关于Fedora:

$sudo dnf install make

在Rhel,Centos:

$sudo yum install make

在SUSE/OpenSUSE上:

$sudo zypper install make

让我们继续安装Perl模块。

使用CPAN安装Perl模块

CPAN是CPAN存储库的命令行客户端,默认情况下与所有Perl Edition一起分发。

要安装Perl模块,例如Net :: DNS,请使用命令输入CPAN shell:

$sudo cpan

并键入CPAN提示符以安装模块的以下命令:

install Net::DNS

安装模块后,请键入"退出"以返回到Shell。

我们还可以使用命令直接从终端安装模块:

$sudo cpan Net::DNS

使用CPANMINUS安装PERL模块

CPANMINUS或者CPANM是从CPAN存储库获取,解压缩,构建和安装模块的CPAN客户端。
它是一个独立的依赖脚本,需要零配置。
许多经验丰富的Perl开发人员喜欢CPAN的CPANM。

CPANMINUS可以以多种方式安装。

1.使用Perl:

要在Linux系统上安装最新的CPANM版本,请运行:

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

此命令将安装CPANM系统范围,并将CPANM二进制文件安装到BIN目录(如/USR/Local/Bin)。

2.使用分发包装管理器:

CPANM也可用于多个Linux发行版的默认存储库中。
它是稳定的版本,但旧。

要在Arch Linux上安装CPANMINUS及其变体,请运行:

$sudo pacman -S cpanminus

在Debian,Ubuntu,Linux Mint:

$sudo apt install cpanminus

在CentOS上:

$sudo yum install perl-App-cpanminus

3.手动安装:

或者,我们可以手动下载最新的CPANM二进制文件,并将其放在下面的$LACK中。

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

安装CPANM后,我们可以通过从终端运行以下命令来安装任何PERL MODUL,例如NET :: DNS,例如:

$sudo cpanm Net::DNS

示例输出:

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

使用分发包管理器安装缺少的Perl模块

许多Perl模块都可以作为包提供,因此我们可以使用分发的包管理器安装它。

在Debian,Ubuntu:

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

输出:

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

正如我们所看到的,NET :: DS模块由"Libnet-DNS-Zonefile-Fast-Perl"提供,因此让我们使用命令安装它:

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

要查找Arch Linux上的缺失模块,请运行:

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

并使用'pacman'命令安装丢失的模块。

列表安装了Perl模块

要列出已安装的Perl模块,请使用'perldoc'命令:

$perldoc perllocal

示例输出:

Thu Jan 30 10:45:11 2017: "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 2017: "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 2017: "Module" Digest::BubbleBabble
    *   "installed into: /usr/local/share/perl/5.26.1"
    *   "LINKTYPE: dynamic"
    *   "VERSION: 0.02"
    *   "EXE_FILES: "

列出已安装的Perl模块的另一种方法是使用"instmodsh"命令如下面。

$instmodsh

我们将看到以下输出:

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

在CMD提示符中,键入"L"以列出模块。

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

请注意,上述两个命令将列出使用CPAN安装的模块。
可以使用Linux发行版手动安装许多模块或者预先安装。

要查找所有已安装的Perl模块,请运行:

$cpan -l

或者,

$cpan -a

卸载Perl模块

使用Comman使用命令可以轻松地删除Perl模块:

$sudo cpanm --uninstall Net::DNS

y键入y并按Enter键删除包含所有配置文件的模块。

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