Compilando OpenLDAP en UNIX/Linux a partir de código fuente

por | marzo 17, 2015

En la mayoría de ocasiones tendremos OpenLDAP en los repositorios de nuestra distribución. Pero como me gusta ser una persona positiva, me pondré en el caso de que no podamos acceder a dichos repositorios y nos quede la única y más clásica opción de todas: compilar desde código fuente, lo que nos dará algo más de diversión.

Instalación de Base de Datos Berkeley DB

OpenLDAP utiliza una Base de Datos Berkeley para guardar toda la información, por lo que tendremos que descargarla e instalarla. Para ello necesitaremos estar previamente registrados con una cuenta en Oracle y posteriormente podremos descargar el software necesario.

Procedemos a su instalación:

unzip db-6.0.20.zip
cd db-6.0.20
cd build_unix/
../dist/configure --prefix=/usr/local/db-6.0.20/
make
make install

Instalación de OpenLDAP

El código fuente lo podemos encontrar en la propia web del proyecto.

Definimos las siguientes variables de entorno con las que nos evitaremos bastantes problemas durante la compilación. En LD_LIBRARY_PATH incluiremos la dirección de las librerías de la Base de Datos Berkeley (en nuestro caso como definimos previamente /usr/local/db-6.0.20/lib)

export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib:/usr/local/db-6.0.20/lib:/usr/local/ssl/lib" 
export LDFLAGS="-L/usr/local/lib -L/usr/local/db-6.0.20/lib -L/usr/local/ssl/lib"
export CPPFLAGS="-I/usr/local/include -I/usr/local/db-6.0.20/include -I/usr/local/ssl/include"
export CFLAGS="-D_AVL_H"

Y procedemos a desempaquetar y entrar en el directorio:

tar -zxvf openldap-2.4.35.tgz
cd openldap-2.4.35

Configuramos la compilación:

./configure --enable-bdb --enable-crypt --with-tls

Construimos las dependencias y ejecutamos make:

make depend && make

MUY recomendable, comprobar que la aplicación funcionará correctamente pasándole un test. Y ármate de paciencia, porque llevará un buen rato:

make test

Finalmente, instalamos:

make install

Y una vez completado, podemos iniciar el servicio con:

/usr/local/libexec/slapd

Comprobamos que está ejecutándose como proceso que utiliza el puerto 389 (TCP):

ps -ef | grep slap

root     17707     1  0 21:30 ?        00:00:00 /usr/local/libexec/slapd

Comprobando comunicaciones de red también podemos verlo:

netstat -netaup | grep 389

tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      0          180114     17707/slapd         
tcp        0      0 :::389                      :::*                        LISTEN      0          180115     17707/slapd