Установка модулей Perl вручную и используя CPAN

Установка модулей для Perl требуется для работы различных утилит, применяемх в повседневной рутине администрирования. Установка Perl модулей вручную с удоволетворением всех зависимостей это довольно скучный и нудный процесс.

Установка Perl модулей с испоьльзованием CPAN намного более лучшее решение, так как все зависимости определятся и установятся автоматически. В это статье я опишу оба метода установки модулей.

Когда какой-либо нужный модуль не установлен, приложение которое его использует будет показывать следующую ошибку. В данном случае отсутствует модуль XML:Parser.

<strong>Can’t locate</strong> 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 .)

Установка Perl модулей вручную

Download Perl module

Перейдите на веб-сайт CPAN Search и найдите модуль который вам нужно скачать. В этом пример мы скачаем и установим модуль XML:Parser Perl. Я скачаю XML-Parser-2.36.tar.gz в /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

Собираем модуль

$ 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

Устанавливаем модуль

$ make install

Это простой модуль без зависимостей, поэтому он установился без проблем. Обычно, любой модуль Perl имеет несколько зависимостей. Ставить все модули поочередно описанным выше методом скучнейшая задача. Я рекомендую использовать для установки CPAN метод, описанный ниже. Вручную стоит собирать модули в случае отсутсвия подключения к интернету.

Автоматическая установка Perl модулей с использованием CPAN

Проверяем установлен ли CPAN

Для установки Perl модулей используя CPAN, убедитесь что команда cpan работает. В этом примере, модуль CPAN ещё не установлен.

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

Установка модуля CPAN с помощью yum

$ yum install perl-CPAN

Результат работы команды:

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!

Настраиваем span

При первом вызове cpan вы должны указать некоторые конфигурационные параметры как показано ниже. Я покажу только важные параметры конфигурации. Значения по умолчанию принимаются нажатием клавиши enter.

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

Установка Perl модулей с использованием CPAN

Вы можете использовать один из указанных тут методов для установки новых модулей:

$ /usr/bin/perl -MCPAN -einstall Email::Reply’
(или)
$ 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”;

В результате выполнения команды вы увидите

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

В примере выше Email::Reply зависит от нескольких других модулей. CPAN автоматически определил зависимости и установил Email::Reply и все другие необходимые модули.