En distribuciones GNU/Linux estables, las versiones de paquete para ciertas aplicaciones y servicios suelen estar algo desactualizadas (no mucho), con lo cual a veces es deseable instalar la última versión disponible de un paquete a partir de su código fuente. Por ejemplo las versiones de paquete del servidor de bases de datos PostgreSQL en Debian 7 y Debian 8 son 9.1 y 9.4 respectivamente, siendo que la última versión estable de PostgreSQL es la 9.6. Si se desea entonces disponer de la esta última versión estable, será necesario compilarla e instalarla desde los fuentes (postgresql.org/ftp/source/).



Cambiar a un directorio donde guardar fuentes (típicamente /usr/local/src) y descargar el código fuente de PostgreSQL:

# cd /usr/local/src
# wget https://www.postgresql.org/ftp/source/v9.6.0/postgresql-9.6.0.tar.gz

Extraer y setear permisos:

# tar xzf postgresql*.tar.gz
# cd postgres*
# chown -R root:root .

Luego, configurar el paquete para que se instale en el directorio /usr/local/pgsql (o cualquier otro directorio deseado):

# ./configure --prefix=/usr/local/pgsql --with-openssl

Es importante agregar la opción de configuración --with-openssl, para que se compile con soporte para SSL/TLS.

A continuación, compilar e instalar Postgres:

# make -j4 && make install && make clean

Si se requieren plugins de Postgres adicionales (por ejemplo pgcrypto y dblink), compilarlos e instalarlos desde el subdirectorio contrib/:

# cd contrib/pgcrypto/
# make
# cp pgcrypto.so /usr/local/pgsql/lib
# cp pgcrypto--*.sql pgcrypto.control /usr/local/pgsql/share/extension
# cd ../..
# cd contrib/dblink/
# make
# cp dblink.so /usr/local/pgsql/lib
# cp dblink--*.sql dblink.control /usr/local/pgsql/share/extension
# cd ../..

Una vez instalado, es necesario crear el usuario para PostgreSQL:

# useradd -s /bin/bash postgres
# mkdir /home/postgres
# chown postgres:postgres /home/postgres/

Luego es necesario crear e inicializar una instancia de Postgres, por ejemplo "pg_linuxito":

# mkdir /var/pgsql
# cd /var/pgsql
# chown postgres:postgres .
# su - postgres
$ cd /var/pgsql
$ initdb ./pg_linuxito
$ mkdir pg_linuxito/pg_log

Por último, crear script de inicio de servicio:

$ nano pg_linuxito/postgres-pg_linuxito

El script debe tener el siguiente contenido:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          postgresql-pg_linuxito
# Required-Start:    $local_fs $network $syslog $named
# Required-Stop:     $local_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: PostgreSQL
# Description:       PostgreSQL
### END INIT INFO

. /etc/profile

if [ $# -eq 0 ] ; then
   echo "Available commands: start|stop|stopnow|restart|reload|status"
   exit 1
fi

PGDATA=/var/pgsql/pg_linuxito
LOG="${PGDATA}/pg_log/$(date +%Y%m%d%H%M%S).log"

CMD=$1
if [ "${CMD}" == "stopnow" ] ; then
   PARAMS="--mode=fast"
   CMD="stop"
else
   PARAMS=""
fi

su - postgres -c "/usr/local/pgsql/bin/pg_ctl ${CMD} ${PARAMS} -D ${PGDATA} -l ${LOG}"

Cerrar la sesión del usuario "postgres" e instalar el servicio:

$ exit
# ln -s /var/pgsql/pg_linuxito/postgresql-pg_linuxito /etc/init.d/
# chmod +x /var/pgsql/pg_linuxito/postgresql-pg_linuxito
# update-rc.d postgresql-pg_linuxito defaults

Iniciar el servidor Postgres:

# /etc/init.d/postgresql-pg_linuxito start


Tal vez pueda interesarte


Compartí este artículo