PostgreSQL es un sistema avanzado de administración de bases de datos objeto-relacionales (ORDBMS) derivado del sistema de administración de bases de datos Postgres de Berkeley
Descarga (FTP): ftp://ftp8.us.postgresql.org/pub/pgsql/source/v7.3.4/postgresql-7.3.4.tar.gz
Tamaño del paquete: 11 MB
Estimación del espacio necesario en disco: 86 MB
Tiempo estimado de construcción: 1.74 SBU
Instala PostgreSQL ejecutando los siguientes comandos:
./configure --prefix=/usr && make && make install |
Inicializa un grupo de bases de datos con los siguientes comandos:
mkdir -p /var/pgsql/data && useradd -d /var/pgsql/data postgres && chown postgres /var/pgsql/data && su - postgres -c '/usr/bin/initdb -D /var/pgsql/data' |
Arranca el servidor de bases de datos con el siguiente comando:
su - postgres -c '/usr/bin/postmaster -D /var/pgsql/data > \ /var/pgsql/data/logfile 2>&1 &' |
Ahora podemos crear una base de datos y verificar la instalación:
su - postgres -c '/usr/bin/createdb test' echo "create table t1 ( name varchar(20), state_province varchar(20) );" \ | (su - postgres -c '/usr/bin/psql test ') echo "insert into t1 values ('Billy', 'NewYork');" \ | (su - postgres -c '/usr/bin/psql test ') echo "insert into t1 values ('Evanidus', 'Quebec');" \ | (su - postgres -c '/usr/bin/psql test ') echo "insert into t1 values ('Jesse', 'Ontario');" \ | (su - postgres -c '/usr/bin/psql test ') echo "select * from t1;" | (su - postgres -c '/usr/bin/psql test') |
useradd -d /var/pgsql/data postgres : Crea un usuario sin privilegios para lanzar el servidor de bases de datos. Ejecutar el servidor como root es peligroso, y por otro lado, simplemente no funcionará.
su - postgres -c '/usr/bin/initdb -D /var/pgsql/data' : Inicializa el espacio de tablas de las bases de datos. Este comando no debe ejecutarse como root.
su - postgres -c '/usr/bin/postmaster -D /var/pgsql/data > /var/pgsql/data/logfile 2>&1 &' : Inicia el servidor de bases de datos. Este comando debe ejecutarse también por el usuario postgres.
createdb test, create table t1 , insert into t1 values..., select * from t1 : Crea una base de datos, le añade una tabla, inserta varias filas en la tabla y las selecciona para comprobar que la instalación funciona correctamente.
$PGDATA/pg_ident.con, $PGDATA/pg_hba.conf, $PGDATA/postgresql.conf
La variable de entorno PGDATA se usa para distinguir un grupo de bases de datos de otro al establecer su valor al directorio que contiene el grupo deseado. Los tres ficheros de configuración se encuentran en cada directorio PGDATA/. Los detalles sobre el formato de los ficheros y las opciones que pueden usarse se encuentran en file:///usr/share/doc/postgresql/html/index.html.
Crea el guión de arranque con lo siguiente:
cat > /etc/rc.d/init.d/postgresql << "EOF" #!/bin/bash # Inicio de $rc_base/init.d/postgresql # Basado en el guión sysklogd de LFS-3.1 y anteriores. # Reescrito por Gerard Beekmans - gerard@linuxfromscratch.org source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Iniciando el demonio PostgreSQL..." su - postgres -c '/usr/bin/pg_ctl start -W -D /var/pgsql/data \ -l /var/pgsql/data/logfile -o "-i" ' evaluate_retval ;; stop) echo "Parando el demonio PostgreSQL..." /usr/bin/pg_ctl stop -m smart -D /var/pgsql/data evaluate_retval ;; restart) $0 stop sleep 1 $0 start ;; status) /usr/bin/pg_ctl status -D /var/pgsql/data ;; *) echo "Uso: $0 {start|stop|restart|status}" exit 1 ;; esac # Fin de $rc_base/init.d/ EOF chmod 755 /etc/rc.d/init.d/postgresql |
Crea los enlaces simbólicos a este fichero en los directorios pertinentes de rc.d con los siguientes comandos:
cd /etc/rc.d/init.d && ln -sf ../init.d/postgresql ../rc0.d/K26postgresql && ln -sf ../init.d/postgresql ../rc1.d/K26postgresql && ln -sf ../init.d/postgresql ../rc2.d/K26postgresql && ln -sf ../init.d/postgresql ../rc3.d/S34postgresql && ln -sf ../init.d/postgresql ../rc4.d/S34postgresql && ln -sf ../init.d/postgresql ../rc5.d/S34postgresql && ln -sf ../init.d/postgresql ../rc6.d/K26postgresql |
El paquete PostgreSQL contiene clusterdb, createdb, createlang, createuser, dropdb, droplang, dropuser, ecpg, initdb, initlocation, ipcclean, pg_config, pg_controldata, pg_ctl, pg_dump, pg_dumpall, pg_encoding, pg_id, pg_resetxlog, pg_restore, postgres, postmaster, psql, vacuumdb, libecpg, libpq y varios módulos de conjuntos de caracteres (charsets).
clusterdb es una utilidad para reordenar las tablas de una base de datos PostgreSQL.
createdb crea una nueva base de datos PostgreSQL.
createlang define un nuevo lenguaje de procedimientos PostgreSQL.
createuser crea una nueva cuenta de usuario PostgreSQL.
dropdb elimina una base de datos PostgreSQL.
droplang elimina un lenguaje de procedimientos PostgreSQL.
dropuser elimina una cuenta de usuario PostgreSQL.
ecpg es el preprocesador SQL incorporado.
initdb crea un nuevo grupo de bases de datos.
initlocation crea un área secundaria de almacenamiento de bases de datos.
ipcclean elimina la memoria compartida y los semáforos dejados por un servidor de bases de datos abortado.
pg_config recupera información de la versión de PostgreSQL.
pg_controldata devuelve información inicializada por initdb, como la versión del catálogo y el locale del servidor.
pg_ctl controla la parada e inicio del servidor de bases de datos.
pg_dump vuelca los datos y metadatos de una base de datos en guiones que son usados para regenerar la base de datos.
pg_dumpall invoca a pg_dump reiteradamente para cada base de datos de un grupo.
pg_resetxlog borra el fichero de registro y opcionalmente pone a cero algunos campos del fichero pg_control.
pg_restore crea bases de datos a partir de los ficheros de volcado creados por pg_dump.
postgres es un servidor de bases de datos monousuario, utilizado normalmente para depuración.
postmaster es el demonio de bases de datos multiusuario.
psql es un intérprete de comandos de consola para las bases de datos.
vacuumdb compacta bases de datos y genera estadísticas para el analizador de consultas.