javoaxian cambió a: javoaxian.me
Este blog se mantendrá como histórico del nuevo javoaxian.me. Por tal motivo, sólo serán creados post que harán referencia a los del nuevo blog. Si hay dudas y comentarios, favor de hacerlos en javoaxian.me.

jueves, 10 de abril de 2008

Instalar PostgreSQL desde código fuente en GNU/Linux

El día de hoy he decidido crear este post referente a cómo podemos instalar PostgreSQL en una de nuestras distribuciones GNU/Linux.

Una de las razones por las cuales me decidí ha realizar este artículo, es para ayudar a una amiga del trabajo, el cual espero le sea de utilidad.

Pues manos a la obra. Como primer paso ha realizar, será descargar PostgreSQL. En el momento en que realizé este post, la versión vigente de PostgreSQL es la 8.3.1. Para lo cual, descargaremos el archivo postgresql-8.3.1.tar.bz2.

Una vez descargado el archivo, procederemos a instalarlo. Para ejemplificar ésto, realizaremos la instalación en el directorio /opt/pgsql.

Nos convertiremos en usuario root y crearemos el directorio /opt/src.

javoaxian@darthmaul:~$ su -
root@darthmaul:~$ mkdir /opt/src

Una vez que ya somos root, copiaremos el archivo que descargamos al directorio /opt/src y nos moveremos a dicho directorio:

root@darthmaul:~# cp /ruta/de/descarga/archivo/postgresql-8.3.1.tar.bz2 /opt/src/
root@darthmaul:~# cd /opt/src

Descomprimiremos el archivo y entraremos al directorio creado:

root@darthmaul:~# tar -jxvf postgresql-8.3.1.tar.bz2
root@darthmaul:~# cd postgresql-8.3.1

Iniciaremos el proceso de configuración:

root@darthmaul:~# ./configure --prefix=/opt/pgsql

Si aparece un error semejante a éste:

configure: error: readline library not found
If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.

Deberán instalar el paquete libreadline5-dev, ésto es en el caso de cualquier distribución basada en Debian como Ubuntu. En otras distribuciones deberán buscar este paquete o su correspondiente.

Para instalarlo en distribuciones basadas en Debian:

root@darthmaul:~# apt-get install libreadline5-dev

Una vez instalado, volvemos a ejecutar el comando configure:

root@darthmaul:~# ./configure --prefix=/opt/pgsql

Puede que nos aparezca el siguiente mensaje de error:

configure: error: zlib library not found
If you have zlib already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-zlib to disable zlib support.

Para resolver ésto, deberemos instalar el paquete zlib1g-dev en cualquier distribución basada en Debian como Ubuntu y su equivalente en otras distribuciones.

Para instalarlo en distribuciones basadas en Debian:

root@darthmaul:~# apt-get install zlib1g-dev

Volvemos a ejecutar el comando configure:

root@darthmaul:~# ./configure --prefix=/opt/pgsql

Si pasó la configuración, ejecutaremos los siguientes comandos:

root@darthmaul:~# make
root@darthmaul:~# make install

Crearemos el usuario postgres junto con el grupo postgres, además de asignarle como HOME, el directorio donde instalamos Postgresql.

root@darthmaul:~# adduser --home /opt/pgsql postgres

El comando anterior nos dirá que ya existe el directorio para el HOME y que no pertenece al usuario que estamos creando, además nos pedirá que ingresemos la contraseña del usuario, así cómo alguna información extra de la cuenta postgres y pondremos lo que queramos.

Cambiaremos el dueño y grupo al directorio donde realizamos la instalación:

root@darthmaul:~# chown -R postgres.postgres /opt/pgsql/

Ahora en el archivo /etc/profile agregaremos lo siguiente antes de la línea umask 022.

export PGSQL=/opt/pgsql
export PGLIB=$PGSQL/lib
export MANPATH=$MANPATH:$PGSQL/man
export LD_LIBRARY_PATH=$PGLIB
export PATH=$PATH:$PGSQL/bin

umask 022

La última 3 líneas que colocamos, puede que ya las téngamos configuradas con algunas otras rutas. Por ejemplo, en este momento, la línea de la variable PATH la tengo compuesta de la siguiente manera:

export PATH=$PATH:$PGSQL/bin:$MYSQL/bin:$ORACLE_HOME/bin:$SYBASE/bin:$JAVA_HOME/bin

Como se puede ver, tengo configuradas más rutas para mi variable PATH, ustedes también pueden ir agregando las rutas concatenando con : las rutas.

Para que surtan efecto los cambios en la variable PATH, deberemos reiniciar nuestra máquina o en la consola donde estemos trabajando ejecutar el siguiente comando (SOLO FUNCIONA EN LA CONSOLA EN QUE SE EJEUCTA EL COMANDO):

root@darthmaul:~# source /etc/profile

En otra consola nos convertiremos en el usuario postgres e inicializaremos la base de datos de Postgresql.

javoaxian@darthmaul:~$ su - postgres
postgres@darthmaul:~$ mkdir /opt/pgsql/data
postgres@darthmaul:~$ /opt/pgsql/bin/initdb -D /opt/pgsql/data/

Donde nos aparecerá algo semejante a ésto:

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 es_MX.
The default database encoding has accordingly been set to LATIN1.
The default text search configuration will be set to "spanish".

fixing permissions on existing directory /opt/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers/max_fsm_pages ... 24MB/153600
creating configuration files ... ok
creating template1 database in /opt/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:

/opt/pgsql/bin/postgres -D /opt/pgsql/data
or
/opt/pgsql/bin/pg_ctl -D /opt/pgsql/data -l logfile start

Ha quedado instalado Postgres, ahora para arrancarlo ejecutaremos lo siguiente como usuario postgres:

postgres@darthmaul:~$ /opt/pgsql/bin/postgres -D /opt/pgsql/data&

o también:

postgres@darthmaul:~$ /opt/pgsql/bin/postmaster -D /opt/pgsql/data&

Si queremos que arranque desde que iniciamos la máquina en una distribución basada en Debian, deberemos seguir las instrucciones que puse en este post.

Para probar el script postgresqld que acabamos de crear con este post, podemos ejecutar el siguiente comando como usuario root para levantar el servicio de postgres:

root@darthmaul:~# /etc/init.d/postgresqld start

Ahora ejecutaremos el siguiente comando para ver si se levantó el proceso:

root@darthmaul:~# ps -fea |grep postgres

Y nos aparecerá algo similar a ésto:

postgres 26543     1  0 17:52 pts/0    00:00:00 /opt/pgsql/bin/postmaster -i -D /opt/pgsql/data
postgres 26545 26543 0 17:52 ? 00:00:00 postgres: writer process
postgres 26546 26543 0 17:52 ? 00:00:00 postgres: wal writer process
postgres 26547 26543 0 17:52 ? 00:00:00 postgres: autovacuum launcher process
postgres 26548 26543 0 17:52 ? 00:00:00 postgres: stats collector process

Para detenerlo podemos ejecutar lo siguiente:

root@darthmaul:~# /etc/init.d/postgresqld stop

Para ingresar al manejador, podemos acceder como usuario postgres a la base de datos template1. Recuerda que deberá estar arriba el servicio de Postgres, ya sea usando el script que hicimos o ejecutando el comando postgres o postmaster como se indicó parrafos antes.

javoaxian@darthmaul:~$ psql -U postgres -d template1

Donde nos aparecerá algo similar a ésto:

Welcome to psql 8.3.1, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

template1=#


PONER CONTRASEÑA AL USUARIO POSTGRES
Como podemos ver, cuando nos conectamos a la base de datos template1 no se nos pidió contraseña, si deseamos que se nos pida una contraseña podemos realizar lo siguiente:

Dentro del prompt de postgres y como usuario postgres, le asignaremos una contraseña a este usuario:

template1=# ALTER USER postgres WITH PASSWORD 'CONTRASEÑADELUSUARIO';

Ya le creamos la contraseña al usuario postgres, pero ahora deberemos configurar el archivo pg_hba.conf, este archivo se encuentra en el directorio /opt/pgsql/data.

Abriremos el archivo /opt/pgsql/data/pg_hba.conf como usuario postgres y con el editor de nuestro agrado y buscaremos la siguientes líneas:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust

Y cambiaremos las palabras trust por md5. Lo cual nos quedará de la siguiente manera:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

Guardaremos los cambios y si tenemos arriba el servicio de Postgres lo deberemos de matar ya sea usando el script que hicimos o matando el proceso ejecutando el siguiente comando como usuario postgres:

postgres@darthmaul:~$ kill -INT `head -1 /opt/pgsql/data/postmaster.pid`

Y volvemos arrancarlo con el script o con los comandos postgres o postmaster.

En este caso voy a usar postmaster:

postgres@darthmaul:~$ /opt/pgsql/bin/postmaster -D /opt/pgsql/data&

Ahora volvemos a entrar al prompt de Postgres como usuario postgres y nos deberá solicitar la contraseña que ingresamos con el comando ALTER USER:

postgres@darthmaul:~$ psql -U postgres -d template1
Password for user postgres:

Welcome to psql 8.3.1, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

template1=#

Bueno, con ésto finalizo este artículo.
Saludos!!!

31 comentarios:

Anónimo dijo...

Hola Javo, espero que estes bien, he estado probando algunas instalaciones que estan en tus posts, pero hay una en especial, que es la de "instalar postgresql desde codigo fuente", ya que me marca el siguiente error al tratar de levantar el motor de base de datos:

postgres@darkmagician:~$ /usr/pgsql/bin/postmaster -D /usr/pgsql/data&
[1] 6162
postgres@darkmagician:~$ LOG: could not bind IPv4 socket: Cannot assign requested address
HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
WARNING: could not create listen socket for "localhost"
FATAL: could not create any TCP/IP sockets


¿Alguna idea de por que es este error?

Saludos

Atte. Jose

javoaxian dijo...

Joven, que milagraso ja ja ja.
Para los que tengan el mismo problema, les comento la forma de resolverlo.

Deberán abrir su archivo /etc/hosts como usuario root y verificar si tienen una línea igual a ésta:

127.0.0.1 localhost

En caso de no tenerla deberán ponerla en la primer línea de su archivo.
Una vez modificado el archivo y guardados los cambios, pueden intentar levantar postgres y deberá de funcionar.

Aquí dejo un ejemplo de mi archivo /etc/hosts

127.0.0.1 localhost
127.0.1.1 darthmaul

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Anónimo dijo...

oye me podrias decir como desinstalo completamente postgres. Es que cuando llego a lo de crear el usuario me dice que el usuario postgres ya existe, esto deb ser porque anteriormente utilice otro manual para instalar pero no me funciono.
de antemano gracias.

javoaxian dijo...

Hola, no se que tipo de instalación hiciste anteriormente para postgres, en el caso de que haya sido por medio de sus archivos fuentes, deberás entrar al directorio donde descomprimiste los fuentes y ejecutar ésto:

$ make clean; make dist-clean

Posteriormente deberás borrar el directorio donde lo instalaste, como por ejemplo:

$ rm -rf /usr/local/pgsql

Si lo instalaste en una distribución basada en Debian, puedes desinstalarlo ejecutando lo siguiente como usuario root:

$ apt-get remove postgresql

Ahora bien, si tu problema es que existe el usuario, puedes omitir el paso para crear el usuario y editar el archivo /etc/passwd para cambiar la ruta del HOME del usuario postgres.

Si no te quieres complicar, puedes eliminar el usuario y grupo postgres de la siguiente manera:

$ deluser postgres

o

$ userdel postgres
$ groupdel postgres


Espero que con ésto puedas resolver tu problema.

Anónimo dijo...

hola javo,esta bien explicado tu post, pero tengo un problema al momento de configurar uso el comando ./configure --prefix=/opt/pgsql luego me aparece lo siguiente:

checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking which template to use... linux
checking whether to build with 64-bit integer date/time support... no
checking whether NLS is wanted... no
checking for default port number... 5432
checking for gcc... no
checking for cc... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.

DIME QUE PUEDO HACER TE LO AGRADECERIA UN MONTON.

javoaxian dijo...

Hola, lo que puedo observar, es que no tienes instalado el compilador de C, prueba instalando el paquete gcc, si usas debian o ubuntu puede hacer esto como root:

apt-get install gcc

oiram dijo...

Es usted un As !!! todo funcionó tal y como lo pones...

Leonardo dijo...

Nose que es lo que pasa pero cuando hago esto
psql -U postgres2 -d template1

Me da este error
psql: FATAL: la autentificación IDENT falló para el usuario "postgres2"

Por favor necesito que me ayuden

javoaxian dijo...

Hola Leonardo, el problema que creo que tienes, es porque el usuario postgres2 no tiene permisos para conectarse a la base de datos template1, verifica que en el archivo pg_hba.conf, se encuentre la línea que permita que el usuario postgres2 se puede conectar a template1. Algo así como:

local template1 postgres2 md5

Anónimo dijo...

Buenisimo loco!! es-pec-ta-cu-lar!! estube peleando como 3 horas para instalar el postgres y me salian los errores del readline y le daba el --without-readline y me salia el de la zlib, queria instalar estas dos libreria con el apt-get y no me andaban. Muchisimas gracias por tener en cuenta en dar soluciones a los errores comunes en el proceso de instalacion! yo que recien entro en el ambiente linux, a la fuerza y en modo consolaaaa!! estoy al horno con cada cosa que tengo que hacer!
muchisimas gracias!!
saludos!

Anónimo dijo...

Hola javo, buenisimo el tutorial pero sabes me ha surgido un error cuando hago postgres@KimeticLinux01:/$ pgsql

Me arroja el siguiente error y no se a que se debe y por que he seguido toda la guia

bash: pgsql: command not found

Saludos desde Venezuela

javoaxian dijo...

Hola, lo que detecto es que no existe el comando pgsql que estás tratando de usar, el comando que debes ejecutar es: psql, por eso te dice que no encuentra el comando. Prueba con el comando psql

Saludos!!!

Anónimo dijo...

hola,

he seguido todas las instrucciones, ya cargué Apache y estoy ahora con postgreSQL , sin embargo, en el momento de querer dar la instrucción para ingresar al manejador:

psql -U postgres -d template1

lo que resulta es un error:

---------
psql: could not connect to server: No existe el fichero o el directorio
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5433"?
bradbury:/home/usuario# postgres
bash: postgres: command not found
bradbury:/home/usuario# su -postgres
su: opción inválida -- o
------------

ya verifiqué el archivo pg_hba.conf y agregué la línea que indicaste a otra persona:

local template1 postgres2 md5

y aún así persiste el error.

No sé si tenga que ver que antes había instalado el postgreSQL8.1 y de igual manera el usuario de postgres,

¿podría ser éste el error?

porque además, no encontré la forma de eliminarlo, así que decidí tomar al mismo user postgres, y no logro continuar!!

Espero puedas ayudarme cuanto antes, por favor!!

por cierto, ¿el template1 de dónde sale? porque en ningún momento se indica su creación, ¿podrías explicarme?

Mil gracias...

javoaxian dijo...

Hola, lo que veo es que si tienes problemas con la otra versión que instalate, porque supongo que no lo instalaste en /var/run/postgresql. Qué distribución usas para ver como podrías desinstalar la versión anterior.

Recuerda que para levantar postgres puedes hacerlo así solo cambiando las rutas donde lo instalaste:

/opt/pgsql/bin/postmaster -D /opt/pgsql/data&

Si no te funciona el comando:

$psql ....

Prueba poniendo la ruta completa del comando, por ejemplo:

$ /opt/pgsql/bin/psql ...

Observé también ejecutaste el comando su de esta forma:

# su -postgres

y recuerda que debes separar el guión:

# su - postgres

Por último con relación a lo que me preguntabas de la base de datos template1, esa se crea al momento de instalar postgres y es la base de datos plantilla para las demás que se generarán posteriormente, ya que si creas una tabla en esta base, cuando creas otra base de datos también se creará esa tabla en la nueva base. Es como su nombre lo dice, un template para las demás bases que se crearán.

Anónimo dijo...

La nueva versión de postgres que tengo es la 8.3.5 y lo instalé como indicaste(todo lo estoy haciendo en Debian) y la versión que instalé anteriormente fue la 8.1(con ella creé al usuario posgres) y la cargué en:

$ /etc/init.d/

la instrucción para levantarlo, la di tal como indicaste:

---------------------
postgres@bradbury:~$opt/pgsql/bin/postgres -D /opt/pgsql/data&
---------------------


y el resultado fue:


----------------------
[1] 30007
postgres@bradbury:~$ LOG: database system was shut down at 2008-11-11 13:56:58 CST
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
-----------------------

¿Cómo tendría que cambiar la ruta? Porque es ahí donde lo tengo:

----------
opt/pgsql/bin/
----------

esto no lo entiendo muy bien, pero creo que la instrucción es la correcta y que el problema es con las versiones.

También me di cuenta del error

--------
# su -postgres
----------

Espero puedas ayudarme pronto, por favor.

--por cierto, con la versión 8.1 pude crear al usuario, entrar a la sesión postgres y crear una base de datos, no me generaba ningún conflicto. En cambio, con la nueva versión, entro a la sesión y no puedo crear nada ¿estoy haciendo algo mal?

Estoy empezando a manejar esto del linux, por eso es que tengo bastantes dudas, pero estoy aprendiendo.

Mil gracias por tu respuesta

javoaxian dijo...

Hola, ya me hice un poco de bolas, para poder entender.

¿Tienes instaladas las 2 versiones?

Si sí las tienes instaladas, ¿cual es la ruta de instalación de cada una de ellas?

Si tienes instalada nada más una versión pero te causa conflictos, entonces borra el directorio donde lo instalaste, como por ejemplo:

$ rm -rf /opt/pgsql

Y una vez que hayas borrado el directorio, vuelve hacer toda la instalación, omitiendo la creación del usuario, así como la asignación de variables en el archivo /etc/profile.

Recuerda que antes de hacer la reinstalación, da de baja postgres para que no tengas problemas.

Espero tus respuestas para poder apoyarte más.

Saludos!!!

Anónimo dijo...

Creo que no especifiquè claramente; la versiòn que tengo es la 8.3.5 y èsta es la única. La otra la eliminè (para poder seguir al pie de la letra tus recomendaciones) y ya hice lo que me has indicado de eliminar el directorio.

Ahora, no comprendo bien cómo hacer la reinstalación....¿tengo que empezar desde el primer paso para cargar el postgresql? Si es así, ¿tengo que eliminar directorios? o simplemente tengo que recargar y todo sucede como si fuera la primer vez que lo estoy cargando?

Espero haber contestado bien a lo que me preguntas y que me puedas ayudar.

Gracias!

Anónimo dijo...

Javooooo bien eh! tu post me ha acompañado jajajajja con instalaciòn satisfactoria. Que buen post geek.

Claudia Mejia Duarte.

javoaxian dijo...

Hola, ya me quedó más clara tu duda.

Lo primero será /opt/pgsql.
Si quieres también elimina los fuentes que pusiste en /usr/local/src. Hice una corrección ya que no me había dado cuenta que había dejado el directorio /usr/local/src cuando en realidad use el directorio /opt/src el cual se debió de crear previamente.

Después de borrar estos directorio puedes seguir el post desde el principio.
Te voy a ir mencionando a continuación los puntos que podrías ir saltando:
- La instalación de libreadline5-dev.
- La instalación de zlib1g-dev.
- La creación del usuario postgres: adduser --home /opt/pgsql postgres.
- Si ya tienes las variables que indicamos en el archivo /etc/profile omite ese paso.

Todo lo demás deberás realizarlo.

Espero que estoy te pueda ayudar.

Anónimo dijo...

hola de nuevo,

fíjate que he seguido al pie de la letra tus instrucciones, sin embargo al llegar a este punto:

------------------
postgres@bradbury:~$ /opt/pgsql/bin/postgres -D /opt/pgsql/data&
[1] 9980
-------------------

el resultado que da es el siguiente:

----------------------
postgres@bradbury:~$ LOG: database system was shut down at 2008-11-26 12:29:11 CST
LOG: autovacuum launcher started
LOG: database system is ready to accept connections

-----------------------
y ahí queda, no da ningún otro resultado.

la siguiente instrucción es:

------------------
postgres@bradbury:~$ psql -U postgres -d template1
------------------

y como resultado muestra:

---------------------
psql: could not connect to server: No existe el fichero o el directorio
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5433"?
---------------------

no sé qué es lo que sucede, pero estaba checando la guia que seguí para dar de alta a mi usuario y éstos son los pasos:

Desde q instalé el postgres con la otra versión:

1.-
-------------------
#apt-get install postgresql-8.1 postgresql-client
8.1 postgresql-client-common postgresql-
common postgresql-doc-8.1
--------------------

2.- Asignando Password al usuario postgres:
-------------
#passwd postgres
-------------
resultó:
-----------------
Enter new UNIX password:xxx666
Retype new UNIX password:xxx666
passwd: contraseña actualizada
correctamente
---------------
3.-
--------------------
#/etc/postgresql/8.1/main/postgresql.conf
– descomentar listen_addresses = '*‘
– descomentar fsync = true
– max_connections = 200
– datestyle = 'iso, dmy‘
– shared_buffers = 1000 (valor base)
-------------

el otro a modificar:

-------------
#/etc/postgresql/8.1/main/pg_hba.conf
– host all postgres 192.168.1.0 255.255.255.0 md5
----------------

4.-Entrada a postgres y creación de base:

-------------
# login postgres
Password:
---------------
Creacion
--------------
# createdb empresa –E LATIN1
--------------
Eliminacion
------------
# dropdb empresa
-------------
5.- Para levantar el servicio dimos la instrucción:

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

6.-Para entrar a la base:
---------------
# psql empresa
-----------------
Y apenas estaba checando que este servicio seguía activo:

-----------------
# /etc/init.d/postgresql-8.1
--------------------
Indiqué para pararlo:
-----------
$ /etc/init.d/postgresql-8.1 stop
-----------

Probé nuevamente el entrar a postgres como tu indicas, pero no funciona.

Además chequé los directorios y sigue apareciendo la versión anterior que te comenté que instalé antes de llegar a tu blog.

Estoy eliminando todo aquello que contenga ese nombre y traté de eliminar también al usuario postgres que configuré con esa versión, pero me lo impide, me dice lo siguiente:

--------------
postgres@bradbury:~$ drop user postgres
-su: drop: command not found
-------------

y ésto lo probé también como superusuario, fuera de postgres, pero aún así, no surte efecto

POr cierto, también sigue apareciendo error al dar la instrucción de entrada a la base template1:
------------------
postgres@bradbury:~$ psql -U postgres -d template1
----------
resultado:
--------------
psql: could not connect to server: No existe el fichero o el directorio
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5433"?
--------------------

¿me das alguna otra recomendación?
En verdad no sé qué es lo que pasa, espero que me puedas auxiliar, por favor!

¿crees que esté bien que elimine todos esos archivos?¿o cuáles sería conveniente eliminar?

Espero puedas contestar cuanto antes.

Saludos. MIl gracias!

javoaxian dijo...

Hola, ya entendí el por qué de tu problema. Yo pensaba que habías hecho una instalación anterior de la forma que yo describí en el blog, pero veo que instalaste postgres con los paquetes de la distribución. Por tal motivo, quiere decir que estás siguiendo bien la guía, pero en el momento de ejecutar el psql lo está tomando de la instalación anterior, no de la que acabas de hacer.

Para desinstalar tu versión anterior, deberás ejecutar lo siguiente como usuario root:

$ apt-get remove postgresql-8.1 postgresql-client
8.1 postgresql-client-common postgresql-
common postgresql-doc-8.1


Eso desinstalará tu versión anterior.

Recuerda que para que funcionen los comandos psql, createdb, dropdb sin especificar la ruta, deberas configurar el archivo /etc/profile como indico en el artículo.

Recuerda, que la instalación que yo hago es en el directorio /opt/pgsql y no tiene nada que ver con los archivos que te puso la instalación anterior, como son: /etc/postgresql/8.1/main/postgresql.conf, /etc/postgresql/8.1/main/pg_hba.conf, /etc/init.d/postgresql-8.1

También recuerda que el usuario postgres en la instalación anterior tiene otro directorio HOME, por tal motivo deberás cambiarle su HOME al directorio correcto, que en el caso de mi instalación es: /opt/pgsql

Espero que esto te ayude más

Anónimo dijo...

Hola!

Bueno, ya pude avanzar, he logrado entrar al Template1.
Ahora el problema es la contraseña, no la solicita cuando entro a la base.

Por otro lado, al seguir las instrucciones
postgres@bradbury:~$ mkdir /opt/pgsql/data
mkdir: no se puede crear el directorio «/opt/pgsql/data»: El fichero existe
postgres@bradbury:~$ /opt/pgsql/bin/initdb -D /opt/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 es_MX.UTF-8.
The default database encoding has accordingly been set to UTF8.
The default text search configuration will be set to "spanish".

initdb: directory "/opt/pgsql/data" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/opt/pgsql/data" or run initdb
with an argument other than "/opt/pgsql/data".
postgres@bradbury:~$ /opt/pgsql/bin/postgres -D /opt/pgsql/data&
[1] 20038
postgres@bradbury:~$ FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 9980) running in data directory "/opt/pgsql/data"?

[1]+ Exit 1 /opt/pgsql/bin/postgres -D /opt/pgsql/data


no me da la solicitud de contraseña,

¿me puedes aconsejar q hacer?
gracias

Anónimo dijo...

Hola, pocas veces comento en algun blog o en algun espacio en internet, pero en esta ocacisión lo amerita, realmente haces un muy buen trabajo, yo llevo tiempo trabajando con linux ubuntu, aun asi es algunas veces es complicado instalar algo y mas aun explicarlo con el detalle que lo haces, de ante mano muchas gracias, sigue así , te ganaste un marcador browser

William Mendez Forero dijo...

hola javo, queria comentarte que instale un debian etch y dentro de la instalacion marque que me instalara postgres 8.3, y estoy tratando de entrar a psql y me presenta error, he leido todos estos comentario y me parecen buenos estoy corroborando informacion, pero tengo una pregunta como hago para saber cual es la ruta donde esta instalado mi postgres 8.3.5.

javoaxian dijo...

Hola!!! respondiendo a la pregunta de Anónimo que me escribió el 28 de noviembre de 2008.
El error que te aparece, es ocasionado porque como habías dicho en otros comentarios, ya lo habías tratado de instalar. Si quieres ir paso por paso, deberás borrar el directorio /opt/pgsql.

Ahora, el problema que tienes con relación a que no te pide tu contraseña, es porque deberás configurar tu archivo pg_hba.conf, que en tu caso estaría en: /opt/pgsql/data/pg_hba.conf.

Configuralo como menciono en este mismo post.

Mil disculpas por la demora, pero aquí andamos de nueva cuenta.

javoaxian dijo...

Hola William Mendez Forero:

Prueba ejecutando cualquiera de los dos siguiente comandos:

$ whereis psql

o también

$ which psql

Espero que esto te pueda ayudar.

Anónimo dijo...

Hola Javo,

De verdad que muy buena explicacion, hoy has salvado mi vida, creo q esta muy bien hecho el desarrollo de los pasos, yo apenas voy entrando a esto de las bases de datos y salio a la primera!! Me agrado mucho lo bien que explicas.
FELICIDADES

PD. no sabras de una liga donde venga como iniciar una base de datos, ya con esta plataforma montada?
MUCHAS GRACIAS

Luna83

javoaxian dijo...

Hola Luna83, perdón no entendí tu pregunta, ¿a qué te refieres con iniciar una base de datos con esta plataforma? ¿te refieres a postgres o a GNU/Linux o a quép?

ingenierods dijo...

Muy bueno tu blog, te pregunto lo siguiente descargue la version 8.0.1 y las librerias zlib y readline, pero todo esto lo descargue en una carpeta,si borro todo lo que descargue en la carpeta incluyendo las librerias, me quedaria! perfecto para instalarlo como indicas, osea desde crear un directorio... Mil gracias

JuanS. dijo...

Hola!!! en verdad muchas felicidades por los todos los aportes en tu blog, espero me pudieras ayudar tengo un problema en la intalacion de postgres en solaris.
este es el error que me da con
./configure prefix=/opt/pgsql

# ./configure prefix=/opt/pgsql
checking build system type... sparc-sun-solaris2.10
checking host system type... sparc-sun-solaris2.10
checking which template to use... solaris
checking whether to build with 64-bit integer date/time support... no
checking whether NLS is wanted... no
checking for default port number... 5432
checking for gcc... no
checking for cc... cc
checking for C compiler default output file name... configure: error: C compiler
cannot create executables
See `config.log' for more details.
#

javoaxian dijo...

Apenas estoy retomando muchos comentarios y dudas ya muy atrasadas, lo siento, pero con respecto a la duda de salem el problema es que no encuentra el compilador cc se tendría que agregar a las variables de ambiente PATH la ruta donde está el compilador para que lo encuentre.

Saludos!!!