sábado, febrero 24, 2007

PHP5 MSSQL

En este articulo voy a explicar como compilar PHP5 con soporte para MSSQL y como empaquetarlo para debian, para meterlo luego en un repositorio debian :)

Todo esto es para la debian stable (sarge).

Primero de todo creamos un directorio de trabajo:

# mkdir /usr/src/devel

Luego entramos en el:

# cd /usr/src/devel

Descargamos las fuentes de PHP5 para debian:

# apt-get source php5

La versión que me ha descargado es la php5-5.2.0. Esta ultima orden a parte de bajar las fuentes, aplica los parches y lo deja listo para ser empquetado.

Ahora vamos a instalar las dependencias de compilación:

# apt-get build-dep php5


Instalamos el paquete de desarrollo de freetds (si no se ha instalado):

# apt-get install freetds-dev

Vamos a hacer unas pequeñas modificaciones en algunos ficheros del directorio debian para que tenga soporte para MSSQL.
En el fichero control añadir lo siguiente:

Package: php5-mssql
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${Source-Version})
Description: MSSQL module for php5
This package provides a module for MSSQL using FreeTDS.
.
PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed
from C, Java and Perl with a couple of unique PHP-specific features thrown
in. The goal of the language is to allow web developers to write
dynamically generated pages quickly.


En el fichero modulelist añadir:

mssql MSSQL

Por ultimo en el fichero rules, en la función configure-apache2-stamp donde pone --with-mysql=shared,/usr \ añadir:

--with-mssql=shared,/usr \

en la misma función cambiar --without-pdo-dblib \ por:

--with-pdo-dblib=shared,/usr \

Finalmente volvemos al directorio padre y lo empaquetamos:

php5_5.2.0# dpkg-buildpackage

Con esto tendremos el PHP5 empaquetado en varios modulos entre los que veremos:

php5-mssql_5.2.0-8~bpo.2_i386.deb

Ahora vamos a construir el repositorio de paquetes debian. Primero de todo creamos un directorio llamado debian en el www.

# mkdir /var/www/debian

Luego creais el siguiente script para crear el repositorio:
#!/bin/bash

REPO="$1"
if [ ! -d "$REPO" ]; then
echo "Usage: $0 repo"
exit 1
fi
(
cd "$REPO"
dpkg-scanpackages . /dev/null | tee Packages | tee >(gzip -9c > Packages.gz) | bzip2 -9c > Packages.bz2
apt-ftparchive release . > Release
gpg --output Release.gpg -ba Release
)
-----------------------------------------------------------
Lo copiais en /usr/local/bin y de le dais permisos de ejecución.

Nos situamos en el directorio donde estan los paquetes deb y ...

cp *deb /var/www/debian
update-debian-repos /var/www/debian

Finalmente añadimos una linea similar a la siguiente en el archivo /etc/apt/sources.list:

deb http://nuestroservidor/debian/ ./

Actualizamos la Base de datos de paquetes:

# apt-get update

Ahora buscamos el paquete:

# apt-cache search mssql

y veremos algo como:

php5-mssql - MSSQL module for php5

Para instalar-lo basta con:

#apt-get install php5-mssql

y eso es todo viejo amigo :D

PD:Si por alguna razón se quisiera empaquetar como otra version se puede poner al principio del fichero changelog del directorio debian algo como:

php5 (5.2.0-8~bpo.3) sarge-backports; urgency=low

* Added support for mssql
php5-mssql

-- Jose Gonzalez Fri, 23 Feb 2007 12:00:10 +0200

7 comentarios:

Anónimo dijo...

Although I do not speak Spanish, i used Babelfish translator to follow your instructions. Thank you. I am still running the installation.

In PHP 5.2.1 there is problem with default configuration in debian/rules: it says "--with-recode", which should be changed to "--without-recode", because it conflicts with imap and mysql.

Unknown dijo...

Thank you wanted anonymous for contribute in this howto. See you... read you?

Unknown dijo...

Esta muy bueno, pero el script al que le haces un vinculo no funciona, si lo puedieras solucionar seria bueno.

Gracias

Unknown dijo...

Gracias ignacio por avisar, he modificado la entrada poniendo el script en la misma pagina, espero que te sirva de ayuda.

Saludos

Anónimo dijo...

Hola pepelinux
Soy algo nueva en linux, y bueno estoy siguiendo los pasos de tu post, pero me quede en esta parte:
"Vamos a hacer unas pequeñas modificaciones en algunos ficheros del directorio debian para que tenga soporte para MSSQL.
En el fichero control añadir lo siguiente:"
No se a cual directorio te refieres? gracias espero tu ayuda

Saludos,Aridni :)

Unknown dijo...

Aridni, el directorio debian esta dentro del directorio del código fuente.

Anónimo dijo...

Pepelinux, no se si me podrias agregar a tus conctactos, mi correo es aridnix33@hotmail.com.
Te lo agradesco.