Perlo modulių įdiegimas
Čia pateikiu dar vieno PerlMonks straipsnio santrauką lietuvių kalba. Šį kartą apie tai kaip įdiegti Perlo modulius.
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 kompiuojant jo modulius galite kartais tikėtis ir atsakymo „įsigyk normalią operacinę sistemą“…