Hace unos días tuve que crear un servidor en el que se me precisaba que cumpliera un requisito que desconocía. El requisito en cuestión era: Unicode Support on CentOS 5.2 with PHP and PCRE. Se ve que es necesario para poder usar expresiones regulares en dicho servidor. Así que me puse a buscar por Internet y topé con varias páginas donde se explicaba este proceso, aunque siguiendo esos pasos me encontré con mas problemas, así que después conseguir finalmente mi objetivo, adjunto un manual completo de todos los pasos que realicé implementar el soporte de Unicode.
0. Acedemos al servidor donde queremos implementarlo (evidentemente el OS debe ser Centos) como usuario root
1. Vemos si esta instalado el paquete rpm-build:
rpm -qa |grep rpm-build.
Si no aparece nada, es que no esta instalado.
2. Si no lo tenemos instalado, lo instalamos con alguno de los siguientes modos:
2.1. MODO YUM:
yum -y install rpm-build
2.2. MODO RPM’S (32bits):
mkdir /root/software
cd /root/software
wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/i386/CentOS/patch-2.5.4-29.2.3.el5.i386.rpm
wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/i386/CentOS/elfutils-libs-0.137-3.el5.i386.rpm
wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/i386/CentOS/diffutils-2.8.1-15.2.3.el5.i386.rpm
wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/i386/CentOS/elfutils-0.137-3.el5.i386.rpm
wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/i386/CentOS/rpm-build-4.4.2.3-18.el5.i386.rpm
rpm -Uvh patch-2.5.4-29.2.3.el5.i386.rpm
rpm -ivh elfutils-libs-0.137-3.el5.i386.rpm
rpm -ivh diffutils-2.8.1-15.2.3.el5.i386.rpm
rpm -ivh elfutils-0.137-3.el5.i386.rpm
rpm -ivh rpm-build-4.4.2.3-18.el5.i386.rpm
2.3. MODO RPM’S (64bits):
mkdir /root/software
cd /root/software
ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/x86_64/CentOS/patch-2.5.4-29.2.3.el5.x86_64.rpm
ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/x86_64/CentOS/elfutils-libs-0.137-3.el5.x86_64.rpm
ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/x86_64/CentOS/diffutils-2.8.1-15.2.3.el5.x86_64.rpm
ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/x86_64/CentOS/elfutils-0.137-3.el5.x86_64.rpm
ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/x86_64/CentOS/rpm-build-4.4.2.3-18.el5.x86_64.rpm
rpm -ivh patch-2.5.4-29.2.3.el5.x86_64.rpm
rpm -ivh elfutils-libs-0.137-3.el5.x86_64.rpm
rpm -ivh diffutils-2.8.1-15.2.3.el5.x86_64.rpm
rpm -ivh elfutils-0.137-3.el5.x86_64.rpm
rpm -ivh rpm-build-4.4.2.3-18.el5.x86_64.rpm
3. Comprobación de si tenemos soporte Unicode con PHP y PCRE:
pcretest -C
Veremos lo siguiente:
PCRE version 6.6 06-Feb-2006
Compiled with
UTF-8 support
No Unicode properties support
Newline character is LF
Internal link size = 2
POSIX malloc threshold = 10
Default match limit = 10000000
Default recursion depth limit = 10000000
Match recursion uses stack
Si aparece “No Unicode properties support” es que no tenemos dicho soporte
4. Ahora accedemos de nuevo a la maquina, pero con un usuario que no sea root.
5. Creamos la siguiente carpeta:
mkdir -p ~/src/rpm
6. Accedemos a ella:
cd ~/src/rpm
7. Creamos las siguientes carpetas:
mkdir BUILD RPMS SOURCES SPECS SRPMS
8. Averiguamos la infraestructura de nuestra maquina:
uname -i
9. Nos devolvera esto o algo parecido:
x86_64
10. Creamos la siguiente carpeta, con el nombre de la quitectura de nuestra maquina:
mkdir RPMS/x86_64
11. Creamos el archivo .rpmmacros en la siguiente ruta:
touch ~/.rpmmacros
12. Editamos su contenido, con vi (o el editor que queramos):
vim ~/.rpmmacros
13. Introducimos la siguiente información dentro del fichero:
# Path to top of build area
%_topdir /home/xxxxxxxxx/src/rpm
IMPORTANTE: Substituir xxxxxxxxx por el nombre del usuario que estamos usando (el que no es root)
14. Vamos la la carpeta de nuestro usuario:
cd ~
15. Descargamos el siguiente fichero segun nuestra arquitectura:
15.2. Si es versión 32bits:
wget http://mirror.centos.org/centos/5/os/i386/CentOS/pcre-6.6-2.el5_1.7.i386.rpm
15.2. Si es versión 64bits:
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/pcre-6.6-2.el5_1.7.x86_64.rpm
16. Lo instalamos:
rpm -ivh pcre-6.6-2.el5_1.7.src.rpm
Si ha ido bien veremos lo siguiente:
1:pcre warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
########################################### [100%]
warning: user mockbuild does not exist – using root
warning: group mockbuild does not exist – using root
Esto hara que se creen unos archivos en las carpetas anteriormente creadas.
17. Editamos el siguiente fichero:
vim ~/src/rpm/SPECS/pcre.spec
18. Buscamos la linea donde esta escrito lo siguiente:
%configure –enable-utf8
19. Añadimos lo siguiente, dejando la linea de este modo:
%configure –enable-utf8 –-enable-unicode-properties
20. Ejecutamos lo siguiente:
rpmbuild -ba ~/src/rpm/SPECS/pcre.spec
21. Una vez finalizado el proceso, accedemos a la maquina como usuario root.
22. Ejecutamos lo siguiente:
rpm -Uvh /home/xxxxxxxxx/src/rpm/RPMS/i386/pcre-6.6-2.7.i386.rpm
IMPORTANTE: Substituir xxxxxxxxx por el nombre del usuario que hemos usado anteriormente (el que no es root)
23. Reiniciamos apache:
/etc/init.d/httpd restart
24. Ejecutamos lo siguiente:
pcretest -C
Si todo ha ido bien veremos lo siguiente:
PCRE version 6.6 06-Feb-2006
Compiled with
UTF-8 support
Unicode properties support
Newline character is LF
Internal link size = 2
POSIX malloc threshold = 10
Default match limit = 10000000
Default recursion depth limit = 10000000
Match recursion uses stack
Es decir, aparecerá la frase “Unicode properties support”





Posted in
Tags: 




