RomânăEnglish
 
exteon.ro - Compilare php-sqlite, php-sqlite3 si php-mcrypt pe CentOS si RHEL
Acasă < Articole < PHP < Compilare php-sqlite, php-sqlite3 si php-mcrypt pe CentOS si RHEL

Cu ceva timp in urmă, redhat a decis să excludă din distribuție unele extensii PHP, din care câteva sunt necesare într-o varietate de situații. Cu recentul RHEL 6, problema pare să rămână deschisă.

Articolul vă arată cum să vă construiți corect propriile RPM-uri php-* care functionează ca și cum ar fi existat în distribuția inițială. Soluția funcționează pentru toate distribuțiile bazate pe Redhat Enterprise Linux (RHEL): CentOS, SE Linux, etc. Acest ghid este realizat pe combinația CentOS 5.6 - PHP 5.3, însă cu minime ajustări, procesul este similar tuturor distribuțiilor.

 

Pentru cei care folosesc aceleași versiuni, vă punem la dispoziție pachetele compilate de noi, pentru CentOS 5.6 cu php53:

Aceste pachete sunt destinate doar acestei configurații, pentru alte distribuții sau versiuni php vă sfătuim să urmați pașii de mai jos.

 


Timp de realizare: ~30 minute

Complexitate: medie

Cunoștințe necesare: operare Linux: editare fișiere, instalare pachete (yum, rpm), înțelegere elementară a modului de funcționare pachete sistem și extensii PHP

 

Pasul 1: Instalare surse PHP

Va trebui să descărcați și instalați sursele pentru versiunea PHP pentru care doriți să compilați pachetele, din distribuția sistemului dvs.

wget "ftp://ftp.lug.ro/centos/5.6/updates/SRPMS/php53-5.3.3-1.el5_6.1.src.rpm"
mkdir /usr/src/redhat
rpm -i php53-5.3.3-1.el5_6.1.src.rpm

Notă: RPM-ul sursă pe care va trebui să il downloadați (în prima comandă) diferă în funcție de distribuția pe care o aveți și trebuie să corespundă cu php-ul deja instalat.

 

Pasul 2: Modificare fișier spec

Se presupune că /root/Work/phpbuild e directorul în care veți lucra.

cp /usr/src/redhat/SPECS/php53.spec .

Editați php53.spec cu editorul preferat, făcând următoarele modificări:

 

1) Veți observa o listă de specificații de pachete; o specificație este formata dintr-o pereche de taguri %package si %description. La sfârșitul acestei liste trebuie să adăugăm specificațiile pachetelor pe care dorim să le creăm:

%package sqlite
Summary: sqlite
Group: Development/Languages
Requires: %{name}-common = %{version}-%{release}
Provides: php-sqlite

%description sqlite
The php-sqlite package. Added by www.exteon.ro

%package sqlite3
Summary: sqlite3
Group: Development/Languages
Requires: %{name}-common = %{version}-%{release}
Provides: php-sqlite3

%description sqlite3
The php-sqlite3 package. Added by www.exteon.ro

%package mcrypt
Summary: mcrypt
Group: Development/Languages
Requires: %{name}-common = %{version}-%{release}
Provides: php-mcrypt

%description mcrypt
The php-mcrypt package. Added by www.exteon.ro

 

2) Căutați tagul %configure; acesta specifică o listă de --opțiuni. Va trebui să eliminați liniile --without-sqlite \ și --without-sqlite3 \.

 

3) Căutați comanda build, care va avea o listă similară de opțiuni. Adăugați:

--with-sqlite=shared \
--with-sqlite3=shared \
--with-mcrypt=shared \

 

4) Căutați definiția without-shared; adăugați la lista de definiții:

--without-sqlite \
--without-sqlite3 \
--without-mcrypt \

 

5) Căutați linia for mod in pgsql mysql [...]; Adăugați în lista de extensii sqlite sqlite3 mcrypt

6) Înainte de tagul %changelog veți găsi o listă de taguri %file. În mod similar cu tagurile deja existente, adăugați:

%files sqlite -f files.sqlite
%files sqlite3 -f files.sqlite3
%files mcrypt -f files.mcrypt

 

Notă 1: În fișierul spec, un caracter \ la sfârșitul unei linii indică continuarea acesteia pe linia următoare. Când faceți modificările de mai sus va trebui să țineți cont de acest lucru (toate liniile care formează o comandă/definiție trebuie să se termine in \ mai puțin ultima).

 

Notă 2: Pentru o mai mare claritate a modificărilor, aveți .

 

Pasul 3: Construire pachete

yum install rpm-build # Daca nu e deja instalat
rpmbuild -bb --define 'dist .el5_6' php53.spec

În urma ultimei comenzi veți obține o listă de dependențe:

error: Failed build dependencies:
        bzip2-devel is needed by php53-5.3.3-1.el5_6.1.i386
        curl-devel >= 7.9 is needed by php53-5.3.3-1.el5_6.1.i386
        db4-devel is needed by php53-5.3.3-1.el5_6.1.i386
	...	

Va trebui să instalați toate aceste dependențe folosind yum:

yum install bzip2-devel
yum install curl-devel
yum install db4-devel
...

Apoi rulăm din nou comanda:

rpmbuild -bb --define 'dist .el5_6' php53.spec

Notă: definiția dist pentru comanda rpmbuild depinde de distribuția pentru care doriți să compilați, în cazul de față RHEL 5.6; este simplu de dedus din denumirea pachetului de bază: php53-5.3.3-1.el5_6.1.i386.

 

Pasul 4: Instalare pachete

În urma executării cu succes a operațiilor de mai sus, RPM-urile pentru extensiile dorite vor fi generate în directorul /usr/src/redhat/RPMS/<architecture>; în exemplul nostru, <architecture> înseamnă i386; pentru instalare se va folosi comanda rpm:

rpm -i /usr/src/redhat/RPMS/i386/php53-sqlite-5.3.3-1.el5_6.1.i386.rpm
rpm -i usr/src/redhat/RPMS/i386/php53-sqlite3-5.3.3-1.el5_6.1.i386.rpm
rpm -i /usr/src/redhat/RPMS/i386/php53-mcrypt-5.3.3-1.el5_6.1.i386.rpm

 

Gata! Evident, procesul se poate extinde la oricare dintre extensiile php neincluse în distribuțiile redhat.

Lăsați-ne un comentariu!

Dacă ați găsit acest conținut util sau dacă aveți întrebări sau probleme în folosirea lui, vă rugăm să lăsați un comentariu! Feedback-ul este valoros pentru proiectele noastre, deci vă garantăm că efortul dvs. va fi apreciat! Multumim!

(c) SC EXTEON SRL 2006-2009, Toate drepturile rezervate
Powered by   Web3 CMS