Recompilar PHP5 con soporte para la libreria GD de PHP (GD BUNDLED) en Ubuntu
Si queremos manipular imágenes desde nuestro script php podemos usar varias librerías gráficas para ello (GD, ImageMagick, Netpbm…) aunque sin lugar a dudas la más utilizada en la primera de ellas, librería desarrollada por la gente de boutell.com y que actualmente va por la versión 2, la cual incluye muchas mejoras respecto a la 1. Pero, a pesar de esas mejoras, todavía posee algunas carencias que nos harían la vida más fácil. En este contexto, los desarrolladores de PHP deciden realizar un fork (clon) de la librería original de Boutell y comienzan a incorporarle numerosas funciones nuevas: es lo que se conoce como la librería GD Bundled (empaquetada, que va con php).
Esto no tendría nada de malo si no fuera porque algunas distribuciones de Linux (en concreto Debian y sus derivadas como Ubuntu) consideran que esta nueva librería puede ser inestable y contener errores y deciden no incluirla en los binarios disponibles en el sistema de paquetes de la distribución. De esta forma, cuando instalamos el paquete php5-gd estamos instalando la librería original de Boutell, y por tanto, no dispondremos de las nuevas funciones que incorpora la versión de la gente de php.
¿Y cuál es la solución? Pues recompilar el binario de la librería GD.
El primer paso es instalar todos los paquetes necesarios y el código fuente de php:
apt-get install build-essential debhelper fakeroot # el codigo fuente debe residir en /usr/src cd /usr/src # descargar el código fuente de php apt-get source php5 # instalar todos los paquetes necesarios para compilar php5 apt-get build-dep php5 # acceder al directorio del código (puede variar según la versión disponible) cd php5-5.2.6.dfsg.1
La forma de la cual debe compilarse un paquete se establece dentro de archivos bajo el directorio debian de un paquete. Las reglas que configuran el proceso de compilación se encuentran en debian/rules. Dentro de este archivo, en una línea, se puede leer –with-gd=shared,/usr –enable-gd-native-ttf \. Esta línea le dice al compilador que debe linkear con la librería LibGD distribuida con Ubuntu como librería compartida. Lo único que deberemos hacer es reemplazar esa linea por –with-gd=shared –enable-gd-native-ttf \. Esto hace que el proceso de compilación use la versión GD de php y cree una librería compartida con ella.
Una vez que el paquete ha sido reconfigurado, podemos proceder a su compilación y posterior instalación:
#debemos situarnos dentro del directorio del código fuente de php o la compilación no funcionará cd /usr/src/php5-5.2.6.dfsg.1 # crear los paquetes php5-* dpkg-buildpackage -rfakeroot # instalar el nuevo paquete php5-gd cd .. dpkg -i php5-gd_5.2.6.dfsg.1-3ubuntu4.1_i386.deb
La compilación durará varios minutos (alrededor de 20 con un Core2Quad). Una vez realizado esto ya sólo tenemos que reiniciar Apache y ya podemos usar las nuevas funciones de la librería GD Bundled. Existe un único problema: si actualizamos Ubuntu reinstalaremos el paquete oficial y dejaremos de tener disponible la nueva librería. Para los que lo usen en una Ubuntu normal con interfaz gráfica, cada vez que encendamos el ordenador nos avisará de que hay actualizaciones disponibles. Hay que estar pendientes y desmarcar la casilla del paquete php5-gd. Otra posible solución a este problema pasa por instalar la librería desde los repositorios de dotdeb.org.
Vía CuMu.Li
Entradas relacionadas:
Y si no tengo Apache sino Windows Server 2000?
Gallito
21 Octubre 2009 a las 11:30 pm
Si usas Windows supongo que la versión de PHP ya trae consigo las mejoras (GD_BUNDLED) y por tanto no haría falta hacer nada.
javierav
22 Octubre 2009 a las 12:23 am