Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Установка Perl-модулей. Справочное руководство. 
:(
    Опции темы
korob2001
Дата 30.7.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



 Иногда (т.е. почти всегда) возникает необходимость расширить возможности языка Perl. На помощь приходят библиотеки и модули Perl, содержащиеся в базовой поставке дистрибутива Perl. Например, модуль CGI – модуль, реализующий функции интерфейса CGI (Common Gateway Interface – общего интерфейса шлюзов), используется для анализа параметров, переданных скрипту, облегчения создания интерактивных форм, обработки их содержимого, генерации шаблонов html, что уменьшает вероятность ошибок при наборе текста и кодировании.

Код
use strict;
use CGI;

my $q = new CGI;
my %param = $q->Vars;

print $q->header(-charset => 'windows-1251'),
        $q->start_html('Использование модуля CGI'),
        $q->h1('Скрипту переданы следующие ключевые слова и параметры:');

print $q->h2("$_: $param{$_}") foreach (keys %param);

print $q->end_html();


 Но не всегда базовой комплектации модулей хватает для решения поставленной задачи. Так, например, для работы с базой данной, необходим модуль DBI – модуль доступа к базам данных, в котором определен ряд методов, переменных и соглашений, составляющих единообразный интерфейс баз данных, не зависящий от конкретной используемой базы данных, и драйвер используемой базы данных – DBD::mysql – драйвер доступа к базе данных MySQL.

 Вышеперечисленные и любые другие модули можно найти на CPAN (Comprehensive Perl Archive Network – всеобъемлющая сеть архивов Perl) по адресу http://search.cpan.orghttp://www.perl.com/CPAN или http://kobesearch.cpan.org. Все доступные модули на CPAN хранятся в виде Название_модуля-Версия.tar.gz, их можно скачать и установить вручную.

 Необходимо помнить, что модули разрабатываются под определенную версию Perl, следовательно модуль для версии Perl 5.8.x не установиться на Perl 5.6.x. Поэтому модуль необходимо выбирать в соответствии с версией Perl (версию Perl можно узнать набрав в командной строке: perl -v). Иногда в названии модуля фигурирует версия Perl, начиная с которой модуль будет работать (например, GD-2.19-PPM56.tar.gz).

1.  Скачанный модуль необходимо распаковать в любую удобную директорию и перейти в нее. Например, для пользователей *nix[/i-]подобных систем:

  % tar zxf  [i]Название_модуля-Версия.tar.gz

  % cd Название_модуля-Версия

2.  Причитайте файл README или INSTALL и проверьте файл MANIFEST на наличие всех компонентов модуля. 

3.  Если Вы являетесь администратором системы (имеете права root), можете установить модуль в системную директорию Perl-модулей (lib/), чтобы модуль был доступен всем пользователям системы и Perl мог легко его найти. 

 Для пользователей *nix-подобных систем (для пользователей Windows см. пункт 6):

  % perl Makefile.PL   (подготовка к установке модуля)
  % make                   (компиляция)  
  % make test            (проверка дистрибутива модуля)
  % make install         (установка модуля в системную директорию модулей)

 Если вы являетесь пользователем системы без root-привилегий и у вас есть ssh или telnet доступ к серверу или Вы хотите установить модуль локально (только для себя) или служба поддержки (support-команда) хостинга не захотела ставить модуль, то необходимый модуль можно поставить так:

  % perl Makefile.PL PREFIX=$HOME/mylib  
                                   (или /путь_от_корня/к/домашнему_каталогу/mylib)
  % make                      (компиляция)  
  % make test               (проверка дистрибутива модуля)
  % make install            (установка модуля в системную директорию модулей)
 
 Директорию mylib/ домашнего можно использовать для всех модулей, которые Вы будете устанавливать локально.

4.  Если выполнение команд не завершились ошибкой, значит модуль успешно установлен. Иначе если возникли ошибки, то модуль либо неисправен, либо на Вашу систему не может быть поставлен (например, версия Perl не соответствует версии необходимой для работоспособности модуля или модуль не может быть поставлен на данную операционную систему).

 Если Вы использовали PREFIX при выполнении Makefile.PL, то в Вашем домашнем каталоге должна создаться директория mylib, в которой должен находится установленный модуль (в этой директории может быть несколько директорий, сам модуль может находиться, например, mylib/lib/site_perl/5.6.0/Название_модуля.pm).

5.  Теперь установленный модуль Вы можете использовать в скриптах. Например,

Код
use strict;
use Название_Модуля;


 Если вы установили модуль в локальную директорию (например, mylib/), то необходимо в скрипте указать путь к исходному коду модуля – Название_модуля.pm, для того, чтобы Perl смог найти его. Иногда достаточно указать только локальную директорию.

Код
use strict;
use lib '/путь_от_корня/к/домашнему_каталогу/mylib/lib/site_perl/5.6.0';
use Название_Модуля;
 

 Если при вызове скрипта возникает следующая ошибка:

Can't locate <Название_Модуля>.pm in @INC.
BEGIN failed--compilation aborted.

 Значит Perl не может найти данный модуль. Следовательно, либо вы не правильно указали путь к  Название_Модуля.pm (если модуль установлен локально), либо данный модуль не установлен.

6.  Для пользователей Windows-систем следует воспользоваться утилитой nmake от Microsoft, которая входит в состав Microsoft Visual C++. Утилиту nmake можно скачать http://download.microsoft.com/download/vc1...-us/nmake15.exe  (для получения утилиты nmake, необходимо запустить скачанный файл NMAKE15.exe).
Для того, чтобы система могла найти nmake самостоятельно, рекомендуется прописать путь к утилите в переменной окружения PATH (Мой компьютер->Свойства->Дополнительно->Переменные окружения, выбрать PATH, и добавить диск:/путь/до/папки_где_лежит_nmake; ) или скопировать nmake.exe в директорию, которая уже указана в PATH (например, диск:/путь/к/perl/bin). 
Установка модуля аналогична *nix-подобным системам, только вместо make используется nmake. Необходимо запустить командную строку (Win+R и cmd.exe):

  > perl Makefile.PL
  > nmake
  > nmake test
  > nmake install


 Установку модулей со CPAN можно сделать интерактивной и автоматической, для чего следует использовать стандартный модуль CPAN (CPAN.pm). Для автоматизации установки следует написать соответствующий Perl-скрипт, а для интерактивности следует в командной строке:

  % perl -MCPAN -eshell

 Далее происходит настройка, необходимо ответить на несколько вопросов, ответы сохраняются в домашнем каталоге в определенной Вами директории (по умолчанию ~/.cpan/CPAN/MyConfig.pm). После чего Вы увидите приглашение для интерактивной установки модулей:

  cpan>

 Для получения дополнительной информации  можете набрать  команду h. Установить необходимый модуль можно так:

  cpan> install DBD::mysql

 Данный вид установки рассмотрен в статье «Установка модулей CPAN» http://dklab.ru/chicken/nablas/36.html. Если Вы написали свой модуль, то Вы можете его опубликовать на CPAN, читайте соответствующую статью http://dklab.ru/chicken/nablas/37.html.


 Существует другой способ установки модулей – с помощью утилиты ppm (Perl Package Manager – менеджер Perl-пакетов), которая входит в дистрибутив Perl. Для запуска ppm, необходимо в командной строке ввести:

  % ppm
или 
  % perl путь/к/perl/bin/ppm.pl

 После чего откроется интерактивный режим:

  PPM interactive shell (2.1.2) - type 'help' for available commands.
  PPM>

 Для того чтобы вызвать помощь необходимо ввести, следующую команду: 

 PPM> help [command]

 С помощью ppm можно произвести поиск, установить, обновить, удалить необходимый модуль. Если в имени модуля присутствует символ «::», то при поиске или установке такого модуля данный символ необходимо заменить на тире «–».

 Пример поиска и установки модуля DBD::mysql – драйвер для базы данных MySQL

  PPM> search DBD-mysql

  Packages available from http://ppm.ActiveState.com/cgibin/PPM/ppms...urn:/PPMServer:
  DBD-mysql   [2.9004] A MySQL driver for the Perl5 Database Interface (DBI)
  DBD-mysqlPP [0.03  ] Pure Perl MySQL driver for the DBI

  PPM> install DBD-mysql
Код
Install package 'DBD-mysql?' (y/N): y
Installing package 'DBD-mysql'...
Installing D:\Web\perl\site\lib\auto\DBD\mysql\mysql.dll
Installing D:\Web\perl\site\lib\auto\DBD\mysql\mysql.exp
Installing D:\Web\perl\site\lib\auto\DBD\mysql\mysql.lib
Installing D:\Web\perl\html\site\lib\Mysql.html
Installing D:\Web\perl\html\site\lib\Bundle\DBD\mysql.html
Installing D:\Web\perl\html\site\lib\DBD\mysql.html
Installing D:\Web\perl\html\site\lib\DBD\mysql\INSTALL.html
Installing D:\Web\perl\site\lib\Mysql.pm
Installing D:\Web\perl\site\lib\Bundle\DBD\mysql.pm
Installing D:\Web\perl\site\lib\DBD\mysql.pm
Installing D:\Web\perl\site\lib\DBD\mysql\GetInfo.pm
Installing D:\Web\perl\site\lib\DBD\mysql\INSTALL.pod
Installing D:\Web\perl\site\lib\Mysql\Statement.pm
Writing D:\Web\perl\site\lib\auto\DBD\mysql\.packlist


  PPM> quit
  Quit!

 Модуль сначала ищется, затем скачивается на машину и автоматически устанавливается. 

 Единственный недостаток такой установки, дистрибутивы модулей не сохраняются. Можно запомнить только пути установленных файлов или найти установочные пути модулей на ActiveState Perl repository  – http://ppm.activestate.com.

 Для того, чтобы дистрибутив модуля всегда был «под рукой», можно скачать ppd-файлы модулей (например, Название_Модуля-Версия.ppd) со следующих Web-ресурсов: ppd-файлы – это файлы xml-подобной структуры, которые содержат информацию о названии, версии, об авторе и операционной системе модуля, а также содержат название и путь к дистрибутиву модуля – Название_Модуля.tar.gz

 Для того чтобы сделать установку модуля полностью локальной следует скачать сам дистрибутив модуля (Название_Модуля.tar.gz) с того же ресурса, что и ppd-файл или  со CPAN.  Так как ppd-файлы могут содержать url-путь к дистрибутиву модуля, то его следует заменить на локальный. Иногда ppd-файлы могут содержать url-пути к различным необходимым данным (например, к установочному скрипту), тогда эти данные следует также скачать и все url-пути необходимо заменить на локальные.

 Например, необходимо установить модуль DBD::mysql. Ищем соответствующий этому модулю ppd-файл, вот –  http://theoryx5.uwinnipeg.ca/ppms/DBD-mysql.ppd, скачиваем и смотрим исходный текст.

Код
<SOFTPKG NAME="DBD-mysql" VERSION="2,9007,0,0">
    <TITLE>DBD-mysql</TITLE>
    <ABSTRACT>A MySQL driver for the Perl5 Database Interface(DBI)</ABSTRACT>
    <AUTHOR>Rudy Lippan &lt;[email protected]&gt;</AUTHOR>
    <IMPLEMENTATION>
        <DEPENDENCY NAME="DBI" VERSION="1,08,0,0" />
        <OS NAME="MSWin32" />
        <ARCHITECTURE NAME="MSWin32-x86-multi-thread" />
        <CODEBASE 
   HREF="http://theoryx5.uwinnipeg.ca/ppmpackages/x86/DBD-mysql.tar.gz" />
    </IMPLEMENTATION>
</SOFTPKG>


 В теге CODEBASE находится путь к дистрибутиву модуля, скачиваем его, сохраняем ppd и tar.gz  файлы в одной директории. Затем если необходимо, меняем путь к дистрибутиву в ppd-файле, например, так:

Код

  <CODEBASE HREF="DBD-mysql.tar.gz" />


 После чего устанавливаем модуль через ppm:

  PPM> install DBD-mysql.ppd
или 
  > ppm install DBD-mysql.ppd

 Модуль будет установлен в системную директорию модулей Perl.

 Некоторые модули могут быть зависимы от других модулей, то есть без этих модулей данный модуль работать не будет. Узнать необходимые модули можно, посмотрев исходный код модуля – Название_модуля.pm. Например, модуль DBD::mysql  зависим от следующих модулей:
Код

use DBI;
use DynaLoader;
use Carp;


 Модули DynaLoader и Carp обычно входят в стандартную комплектацию дистрибутива Perl, модуль DBI необходимо заранее установить. Если все выше перечисленные модули установлены, то модуль DBD::mysql после установки будет работать (по крайней мере, должен работать).

 Иногда о зависимости одних модулей от других можно узнать со страницы документации конкретного модуля или из содержания ppd-файла (если модуль устанавливается через ppm).

 Так, например, в ppd-файле модуля DBD-mysql явно указано, что устанавливаемый модуль зависет от модуля DBI (подразумевается, что у Вас установлен Perl со всеми стандартными модулями):

Код

  <DEPENDENCY NAME="DBI" VERSION="1,08,0,0" />


 В теге DEPENDENCY  всегда указывается название и версия модуля, от которого зависит устанавливаемый модуль. Может быть и несколько зависимых модулей (несколько соответствующих тегов в ppd-файле).


 Также существуют полноценные архивы модулей, которые можно найти на http://aspn.activestate.com/ASPN/Downloads...vePerl/PPM/Zips. В zip-архивах находятся ppd-файлы и дистрибутивы модулей для всех возможных операционных систем. Данный архив следует распаковать в любую удобную директорию, и установить через ppm.

 Необходимо помнить, что не для всех модулей есть решения в виде *.ppd  и не для всех операционных систем есть те или иные модули.


 Документацию по необходимому модулю можно получить так – в командной строке выполнить следующую команду:

    % perldoc Название_Модуля

 Для получения дополнительной информации о команде perldoc:

   % perldoc –h
И
   % perldoc perldoc

 Также документацию по модулю можно найти на CPAN. Для чего следует в форме поиска ввести Название_Модуля, поисковая система CPAN выведет название модулей, удовлетворяющих данному запросу, находим необходимый модуль и переходим на страницу документации. Такой способ поиска документации очень удобен,  если модуль у Вас еще не установлен.

 Например, найдем документацию по модулю DBD::mysql  на CPAN.  Заходим на официальный сайт CPAN – http://search.cpan.org, в форму поиска вводим название модуля, в данном случае – DBD::mysql, и запускаем поиск.  CPAN выведет большое количество различных модулей, которые удовлетворяет запросу. Нам нужен  драйвер базы данных MySQL  для DBI-интерфейса, поэтому выбираем модуль, разработанный Patrick Galbraith. Страница документации по модулю (первая строка, выделенная жирным шрифтом)  http://search.cpan.org/author/CAPTTOFU/DBD...ib/DBD/mysql.pm.  Основная страница модуля – http://search.cpan.org/~capttofu/DBD-mysql-3.0002/, на которой можно найти всю информацию о модуле и его разработчике (в том числе дистрибутив модуля).

 Документация, доступная на  CPAN  и через команду perldoc, написана на английском языке. В сети Internet можно найти переводы некоторых модулей, в том числе на русском (например, http://perldoc.narod.ru)


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1137 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.