php izé, meg a pecl

Következő néhány percben a pecl.php.net-en található egyik php modult fogjuk lefordítani. A pecl a php birnáris kiterjesztéseinek gyüjtőhelye. Hasonló mint a pear csak kevesebb modul található meg a gyüjteményben, és van amit már nem is fejlesztenek. Viszont amit fejlesztenek az egész jól használható és mivel bináris, ezért nagyon gyors is!

Nosza lássunk is hozzá. Elsőként hozzuk létre a könyvtárakat és szedjük le a forrást:

 cd /usr/src
 mkdir pecl
 cd pecl
 mkdir enchant
 cd enchant
 wget http://pecl.php.net/get/enchant-1.0.1.tgz
 gzip -d enchant-1.0.1.tgz
 tar -xf enchant-1.0.1.tar
 cd enchant-1.0.1
 

Hogy a forrás fordítható legyen a phpize programot fogjuk használni:

 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# phpize
 bash: phpize: command not found

Ez bizony nincs még feltéve. Mivel fejből nem tudom, hogy melyik csomag rejti magában segítségül hívom az apt-file programot. Az apt-file a deb csomagok tartalmában keres fájlokra. Akinek nincs esetleg feltelepítve, az az apt-file csomagot tegye fel, majd a feltelepítés után futtasson le egy apt-file update parancsot.

 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# apt-file search phpize
 php-doc: usr/share/doc/php-doc/html/install.pecl.phpize.html
 php4-dev: usr/bin/phpize4
 php4-dev: usr/lib/php4/build/phpize.m4
 php4-dev: usr/share/man/man1/phpize4.1.gz
 php5-dev: usr/bin/phpize5
 php5-dev: usr/lib/php5/build/phpize.m4
 php5-dev: usr/share/man/man1/phpize5.1.gz
 

Ki ki válassza ki azt a php verziót ami számára szimpatikus és annak a dev csomagját tegye fel. Én most php5 alá fogom lefordítani a kiterjesztést, így az ahhoz való dev csomagot teszem fel.

 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# apt-get install php5-dev
 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# phpize
 Configuring for: PHP
 Api Version:         20041225
 Zend Module Api No:      20050922
 Zend Extension Api No:   220051025 

Ezzel létrejött egy csomó olyan fájl ami majd a forgatáshoz szükséges (Makefile, configure script stb). Ki is adhatjuk a configure parancsot:

 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# ./configure
 ... checking for gawk...
 gawk checking for ENCHANT support... yes,
 shared configure: error: Cannot find enchant 

Hibával elszállt a program futása. Egy “enchant” nevű valamit hiányol (egyébként az enchant lib-et amit használna majd a program a fordításhoz). Nézzük meg hogy mi az aminek a csomagneve tartalmazza ezt a szót, hátha okosabbak leszünk:

 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# apt-cache search enchant
 libenchant-dev - a wrapper library for various spell checker engines (development)
 libenchant1c2a - a wrapper library for various spell checker engines (library)
 python-enchant - spellchecking library for Python 

Tapasztalt programfordítók rögtön tudják hogy a libenchant-dev csomag kell. Egyébként ha programot fordítunk és valami lib hiányára panaszkodik akkor 99,9 százalék, hogy egy dev libet kér. Tegyük fel:

 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# apt-get install libenchant-dev
 

Most adjuk ki ismét configure parancsot, sikeres lefutás után jöhet a make:

 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# ./configure
 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# make
 /bin/sed: can't read /usr/lib/libgmodule-2.0.la: No such file or directory libtool: link: `/usr/lib/libgmodule-2.0.la' is not a valid libtool archive make: *** [enchant.la] Error 1 

Fordítás során még egy hibába ütköztünk aminek elhárításához ismét az apt-file-t hívjuk segítségül hiszen fejből nem tudjuk, hogy mely csomag tartalmazza ezt a lib-et:

 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# apt-file search libgmodule-2.0.la
 libglib2.0-dev: usr/lib/libgmodule-2.0.la
 root@devserver:/usr/src/pecl/enchant/enchant-1.0.1# apt-get install libglib2.0-dev
 

Miután feltettük a csomagot minden gond nélkül lefut a fordítás és a telepítés. A php.ini szerkesztése után, ha mindent körültekintően csináltunk sikeresen betöltődik a modul és használatba vehetjük!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.