Introducción El presente documento es una guía rápida de instalación de alguna herramienta particular. De seguro existen otras formas de realizar el proceso de instalación, pero esta es la que mejor le ha funcionado al autor a lo largo de los años. Para utilizar el presente documento se requieren conocimientos mínimos de linux, su estructura básica de directorios, el uso de la consola y las instrucciones básicas de shell. Además, se espera que el lector tenga suficiente sentido común para adaptarse a cualquier diferencia existente entre el procedimiento que se describe en este documento y la distribución o versión de linux utilizada. Instalación de Apache Tomcat Para compilar PostgreSQL es necesario tener instalado el gcc y las herramientas de desarrollo. También es posible que sea necesario instalar los paquetes de desarrollo de algunas librerías. No se brinda una lista exacta de las librerías que es necesario instalar porque esto puede variar dependiendo de la distribución, la versión linux y la forma de instalar el sistema operativo. PASO 1: Descargar PostgreSQL de: http://www.postgresql.org/ Ver “Downloads->Source code->Versión [a gusto: 8.4.4 al momento de escribir el presente documento]”, el archivo a descargar tiene un nombre similar a: postgresql-8.4.0.tar.gz --- Los siguientes pasos deben hacerse como super-usuario (root) --- PASO 2: Copiar o mover, usando el comando cp o mv, el archivo descargado al directorio /usr/local/src PASO 3: Ubicarse, utilizando el comando cd (Ej: cd /usr/local/src), en el directorio /usr/local/src PASO 4: Descomprimir el archivo descargado usando el comando tar: tar zxvf postgresql-8.4.0.tar.gz Esto generará un directorio postgresql-8.4.0. PASO 5: Ubicarse, utilizando el comando cd (Ej: cd /usr/local/src), en el directorio /usr/local/src/postgresql-8.4.0 PASO 6: Configurar y crear el Makefile usando el comando: ./configure Esto mostrará una serie de “checks” como por ejemplo: ... checking for strip... strip checking whether it is possible to strip libraries... yes checking for ar... ar checking for tar... /bin/tar checking whether ln -s works... yes checking for gawk... gawk ... Eventualmente alguno de los “checks” puede fallar, por ejemplo: ... checking for gawk... gawk checking for bison... bison configure: using bison (GNU Bison) 2.3 checking for flex... no configure: WARNING: *** Without Flex you will not be able to build PostgreSQL from CVS or *** change any of the scanner definition files. *** a GNU mirror site. You can obtain Flex from (If you are using the official distribution of *** PostgreSQL then you do not need to worry about this because the Flex *** output is pre-generated.) ... En este caso la falla es sólo una advertencia y el proceso de compilación puede continuar (aunque seguramente se desactivarán algunas características del PostgreSQL resultante de la compilación). En otros casos, la falla es fatal y el proceso aborta. En estos casos, es necesario leer cuidadosamente el mensaje generado e instalar los paquetes requeridos para resolver el problema. Por ejemplo, la advertencia anterior se puede resolver instalando flex, en debian o ubuntu esto se puede hacer con el siguiente comando: aptitude -R install flex Pero dependiendo del mensaje de error puede ser posible que sea necesario instalar otros paquetes y librerías. Es necesario asegurarse que al terminar su ejecución el script no generó ningún error, por ejemplo, en el caso particular del autor el script termina correctamente de la siguiente forma: ... config.status: creating GNUmakefile config.status: creating src/Makefile.global config.status: creating src/include/pg_config.h config.status: creating src/interfaces/ecpg/include/ecpg_config.h config.status: linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s config.status: linking ./src/backend/port/dynloader/linux.c to src/backend/port/dynloader.c config.status: linking ./src/backend/port/sysv_sema.c to src/backend/port/pg_sema.c config.status: linking ./src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c config.status: linking ./src/backend/port/dynloader/linux.h to src/include/dynloader.h config.status: linking ./src/include/port/linux.h to src/include/pg_config_os.h config.status: linking ./src/makefiles/Makefile.linux to src/Makefile.port PASO 8: Se compila el PostgreSQL con el siguiente comando: make El proceso de compilación puede tardar un rato. Es necesario asegurarse de que cuando termine no haya generado ningún error. Por ejemplo, en el caso particular del autor el comando make termina de la siguiente forma: make[1]: Entering directory `/usr/local/src/postgresql-8.4.0/config' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/usr/local/src/postgresql-8.4.0/config' All of PostgreSQL successfully made. Ready to install. PASO 9: Se instala el PostgreSQL con el siguiente comando: make install El proceso de instalación puede tardar un rato. Es necesario asegurarse de que cuando termine no haya generado ningún error. Por ejemplo, en el caso particular del autor el comando make install termina de la siguiente forma: /bin/sh ../config/install-sh -c -m 755 ./install-sh '/usr/local/pgsql/lib/pgxs/config/install-sh' /bin/sh ../config/install-sh -c -m 755 ./mkinstalldirs '/usr/local/pgsql/lib/pgxs/config/mkinstalldirs' make[1]: Leaving directory `/usr/local/src/postgresql-8.4.0/config' PostgreSQL installation complete. El PostgreSQL se instala por defecto en el directorio /usr/local/pgsql, de modo que si todo salió bien este directorio debe existir y contener el resultado de la instalación. --- Los siguientes pasos se tomaron en su mayoría del archivo INSTALL ubicado en la raíz de los fuentes de postgres --- PASO 10: Crear un usuario postgres: adduser postgres PASO 11: Crear el directorio donde se almacenarán las bases de datos y asignarle los permisos adecuados: mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data PASO 12: Inicializar el repositorio de datos (esto se debe hacer como el usuario postgres) su – postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data exit Es necesario asegurarse que el comando initdb ejecutó correctamente y no generó ningún error, por ejemplo en el caso particular del autor del presente documento el resultado fue: postgres@cyrano:~$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale en_US.UTF-8. The default database encoding has accordingly been set to UTF8. The default text search configuration will be set to "english". fixing permissions on existing directory /usr/local/pgsql/data ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 28MB creating configuration files ... ok creating template1 database in /usr/local/pgsql/data/base/1 ... ok initializing pg_authid ... ok initializing dependencies ... ok creating system views ... ok loading system objects' descriptions ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating information schema ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the -A option the next time you run initdb. Success. You can now start the database server using: /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data or /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start postgres@cyrano:~$ PASO 13: Es necesario instalar el script para iniciar PostgreSQL al estilo SysV para esto es necesario copiar el script de arranque al directorio /etc/init.d. El script de arranque se llama linux y está ubicado en el directorio contrib/start-scripts/ relativo al directorio raíz de los fuentes de PostgreSQL. Suponiendo que los fuentes están en /usr/local/src, se puede copiar el script con el siguiente comando: cp /usr/local/src/postgresql-8.4.0/contrib/start-scripts/linux /etc/init.d/postgresql El comando anterior (que es una sola línea) adicionalmente permite renombrar el script de “linux” a “postgresql”. Luego se le dan permisos de ejecución al archivo /etc/init.d/postgresql: chmod 755 /etc/init.d/postgresql Y ya se puede iniciar el servidor de bases de datos. PASO 14: Para iniciar el servidor de bases de datos, es necesario como super usuario (root) ejecutar el siguiente comando: /etc/init.d/postgresql start PASO 15: Luego de iniciar el servidor, y como parte del proceso de instalación, se puede crear una base de datos de pruebas: /usr/local/pgsql/bin/createdb -U postgres test Si todo funcionó correctamente, el comando se ejecutará correctamente sin generar ningún error o mensaje. PASO 16: Luego, debe ser posible conectarse a la consola del servidor de bases de datos usando el siguiente comando: /usr/local/pgsql/bin/psql -U postgres test Lo que debe generar como salida, algo como: [dmi@cyrano ~]$ /usr/local/pgsql/bin/psql -U postgres test psql (8.4.0) Type "help" for help. test=# PASO 17: Si se desea detener el servidor de bases de datos esto se puede lograr con el comando: /etc/init.d/postgresql stop PASO 18: Finalmente, si no se desea escribir /usr/local/pgsql/bin/ cada vez que se desea correr algún ejecutable de PostgreSQL, entonces es posible añadir el directorio /usr/local/pgsql/bin/ al PATH, tal como se ha hecho en el caso de Java y Eclipse: Desde un terminal: export PATH=/usr/local/pgsql/bin:$PATH O para hacerlo permanente cada vez que se abre un terminal, es necesario añadir las siguientes líneas al .bashrc o al .bash_profile dependiendo del caso: export POSTGRESQL_HOME=/usr/local/pgsql PATH=$POSTGRESQL_HOME/bin:$PATH Para mayor información ver los comentarios al respecto de los tutoriales de instalación de Java y Eclipse.