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