_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Straipsniai/Modulių įdiegimas
Paprasti dalykai

Daugumą modulių galima rasti CPAN. Jie būna pateikiami taip vadinamuose tarballuose – tar bylose,
suarchyvuotose gzip programa. Modulio kodas būna atskiroje direktorijoje, tad tar šią direktoriją
sutraukia į vieną bylą, o gzip šią bylą suarchyvuoja. tar sukurtos bylos turi plėtinį .tar,
o gzip – .gz, tad dažniausiai modulio bylos pavadinimas atrodys kažkaip taip:

Kazkoks-Modulis-0.01.tar.gz

Pirmoji bylos vardo dalis yra modulio pavadinimas, po to eina modulio versijos numeris
ir plėtinys .tar.gz. Išarchyvuoti šį modulį galima konsolės komanda:

tar -zxvf Kazkoks-Modulis-0.01.tar.gz

Visos *nix sistemos turi programą tar. Windows'uose galite naudoti CYGWIN (unix aplinka Windowsams),
tačiau standartinės archyvavimo programos kaip WinZip irgi turėtų susitvarkyti su šia užduotimi.

Jei jau išarchyvavote Perlo modulį jums reikės jį paruošti ir įdiegti. Nueikite į direktoriją,
į kurią išarchyvavote modulį ir ieškokite bylos Makefile.PL. Ją suradę suveskite konsolėje
šias komandas:

perl Makefile.PL
make
make test
make install

Viskas turėtų praeiti gražiai ir be klaidų, jeigu ne, tai skaitykite žemiau. Windows sistemoje jums
reikės programėlės pavadinimu nmake. Ją galima parsisiųsti iš Microsoft per FTP arba per HTTP.
Parsisiuntus ją reikia irgi įdiegti. Įsitikinkite kad nmake yra programų kelyje ir yra pasiekiamas.

Kai jau įdiegėte nmake, įdiekite ir perlo modulį DOS lange rašydami:

perl Makefile.PL
nmake
nmake test
nmake install

Jeigu viskas gerai, tai sveikinu. Jei ne, tai skaitykite toliau.

Dažniausios problemos

Gaunu klaidos pranešimą Warning: prerequisite Foo::Bar failed to load: Can't locate foo/bar.pm in @INC

Kai kuriems moduliams reikia kitų modulių. Jie yra priklauomi nuo kitų modulių funkcionalumo.
Šios priklausomybės yra aprašomos Makefile.PL eilutėje:

'PREREQ_PM' => { Foo::Bar => 1.5 }

Tai nurodo kad šiam moduliui reikia ne senesnės kaip 1.5 modulio Foo::Bar versijos. Prieš įdiegdami
modulį, įdiekite modulius kurių reikės naujajam moduliui.

Gaunu klaidą Can't find make

Gali būti kad make nėra jūsų sistemoje. Įdiekite make (arba Windowsuose – nmake).

make/nmake neranda kai kurių bylų

Kai paleidžiate make/nmake, jis ieško bylos pavadinimu MANIFEST, kurioje surašytos visos bylos
kurios turėtų būti modulyje. Jei kurios nors iš jų nėra, gausite panašią klaidą:

$ make
Checking if your kit is complete...
Warning: the following files are missing in your kit:
Foo.bar
Please inform the author.

Turbūt dėl to reiktų kaltint modulio autorius.

make test gražina klaidas

Perlo moduliai turėtų veikti vienodai visose operacinėse sistemose, bet kartais taip neatsitinka.
Modulių autoriai dažnai prideda visokių testų, kad įsitikinti jog modulis veiks tiap kaip turėtų.
Kai kurios klaidos kurias grąžina make test yra nežymios, tačiau jos gali rodyti kad su šiuo
moduliu gali būti daug problemų. Jei gaunate tikrai daug klaidų, tai turbūt nereiktų
įdiegti šio modulio.

Sako, kad neturiu pakankamai teisių įdiegti šį modulį

Jeigu neturite root teisių, tai jums nepavyks įdiegti modulių standartinėse įdiegimo vietose.
Dažniausiai gausite tokias klaidas:

$ make install
Warning: You do not have permissions to install into 
/usr/local/lib/perl5/site_perl/5.005/i386-freebsd at 
/usr/libdata/perl/5.00503/ExtUtils/Install.pm line 62.
mkdir /usr/local/lib/perl5/site_perl/5.005/CGI/Simple: 
Permission denied at /usr/libdata/perl/5.00503/ExtUtils/Install.pm line 120
*** Error code 2

Nesunku išspręsti šią problemą. Įdiekite modulius į savo vietinę namų direktoriją. Tam tikslui
pasidarykite direktoriją ~/lib

# pirma nueikite į savo namų direktoriją
$ cd ~
# dabar sukurkite katalogą lib
$ mkdir lib

Dabar paleisdami perl Makefile.PL nurodykite kur įdiegti modulį:

perl Makefile.PL LIB=~/lib

tam kad galėtumėte naudotis taip įdiegtu moduliu jums teks savo programose pridėti ~/lib prie @INC.
Štai paprasčiausias vartojimo būdas:

#!/usr/bin/perl -w
use strict;
# pridedam ~/lib direktoriją prie @INC
use lib '/usr/home/jusu_namu_direktorija/lib/';
# toliau kaip įprasta
use Kazkoks::Modulis;

Įrankiai palengvinantys Perlo modulių įdiegimą

Yra keletas įrankių, palengvinančių Perlo modulių įdiegimo procesą. Tiesa, gali būti sudėtinga
priversti juos veikti, jei naudojatės proksiais ar ugniasienėmis.

CPAN.pm

Tai Perlo modulis, skirtas įdiegti kitiems Perlo moduliams. Lengviausia jį naudoti štai taip:

perl -MCPAN -e "shell"

tai paleidžia interaktyvų apvalkalą. Sekite instrukcijas.

PPM

PPM yra ActieState programa, kuri įdiegia specialias CPAN modulių versijas aprašytas XML
formalu PPD bylose. Tiesiog parašykite DOSo lange ppm jei turite įdiegtą ActivePerl. Toliau
parašykite help ir skaitykite instrukcijas.

Perlo modulių su C kodu įdiegimas

Sudėtingiausia yra įdiegti modulius, kurie yra rašyti C kalba. Tam reikia turėti
kompiliatorių – geriausia gcc. Dažniausiai UNIX sistemose šis kompiliatorius jau būna pagal
nutylėjimą, o Windowsams jį geriausia parsisiųsti tiesiai iš http://www.gnu.org/software/gcc/gcc.html.
Kompiliuoti modulius Windowsuose yra sudėtinga. Dažnai tik cygwin ir gcc tam neužtenka. Lengviausia
yra rasti jau sukompiliuotus modulius (per PPM arba pas modulio autorių). Tiesa, jei naudojatės
Windows ir klausiate autoriaus patarimo kompiliuojant jo modulius galite kartais tikėtis ir atsakymo
„įsigyk normalią operacinę sistemą“...
algirdas@perl.lt 2005.04.11 - $dabar