¿Cómo purgar y reinstalar completamente postgresql en ubuntu? [cerrado]

221

De alguna manera me las arreglé para fastidiar completamente la instalación de postgresql en Ubuntu Karmic. Quiero volver a empezar desde cero, pero cuando "purgo" el paquete con apt-get todavía deja rastros de tal manera que la configuración de reinstalación no se ejecuta correctamente.

Después de haberlo hecho:

apt-get purge postgresql
apt-get install postgresql

Decía

Setting up postgresql-8.4 (8.4.3-0ubuntu9.10.1) ...
Configuring already existing cluster (configuration: /etc/postgresql/8.4/main, data: /var/lib/postgresql/8.4/main, owner: 108:112)
Error: move_conffile: required configuration file     /var/lib/postgresql/8.4/main/postgresql.conf does not exist
Error: could not create default cluster. Please create it manually with

  pg_createcluster 8.4 main --start

or a similar command (see 'man pg_createcluster').
update-alternatives: using /usr/share/postgresql/8.4/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.

Setting up postgresql (8.4.3-0ubuntu9.10.1) ...

Tengo un "/ etc / postgresql" sin nada y "/ etc / postgresql-common /" tiene un directorio 'pg_upgradecluser.d' y archivos root.crt y user_clusters.

/ Etc / passwd tiene un usuario postgres; el script de purga no parece tocarlo. Ha habido un montón de síntomas a través de los cuales trabajo solo para exponer el siguiente.

Justo en este segundo momento, cuando ejecuto el comando "pg_createcluster ...", se queja de que '/var/lib/postgresql/8.4/main/postgresql.conf no existe', así que buscaré uno de esos pero yo ' Estoy seguro de que no será el final.

¿No hay una sola línea fácil (o dos) que la queme por completo y me permita comenzar de nuevo?

John Mee
fuente
2
Pruebe el instalador con un clic, es más simple, sus directorios no están dispersos en / etc / y / var. Todos están almacenados en un directorio
Michael Buen,
2
Esta no es una pregunta de computación general, y postgresql es un tema estándar de stackoverflow. La pregunta debe ser reabierta.
Andrew

Respuestas:

446

Opcion A

Si su instalación aún no está dañada, puede soltar servidores PostgreSQL no deseados ("clústeres") usando pg_dropcluster. Use eso con preferencia a una purga completa y reinstale si solo desea reiniciar con una nueva instancia de PostgreSQL.

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
11  main    5432 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
$ sudo systemctl stop postgresql@11-main
$ sudo pg_dropcluster --stop 11 main
$ sudo pg_createcluster --start 11 main

Opcion B

Si realmente necesita hacer una purga completa y reinstalar, primero asegúrese de que PostgreSQL no se esté ejecutando. ps -C postgresNo debería mostrar resultados.

Ahora ejecuta:

apt-get --purge remove postgresql\*

para eliminar todo PostgreSQL de su sistema. Simplemente purgar el postgrespaquete no es suficiente ya que es solo un metapaquete vacío.

Una vez que se hayan eliminado todos los paquetes de PostgreSQL, ejecute:

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

Ahora debería poder:

apt-get install postgresql

o para una instalación completa:

apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4
John Mee
fuente
19
He reelaborado la respuesta para eliminar los consejos de edición manual /etc/passwdy /etc/groupen favor de más seguro userdely groupdel. Además, en lugar de usar dselectpara la selección manual de paquetes, use un comodín apto para que coincidan de manera confiable.
Craig Ringer
11
+1 para pg_dropcluster!! (Ejemplo de Uso: pg_dropcluster --stop 9.1 main)
Anuj Gupta
55
agregué libpq5 y libpq-dev a esa lista de purgas, esa lib me dio MUCHOS problemas, hasta que la reinstalé en la versión correcta
Rogerio Chaves
También funciona en Debian 8 con PostgreSQL 9.4.
2
Yo también agregaría rm -r /var/log/postgresql.
Gregory Arenius
45

Tuve una situación similar: necesitaba purgar postgresql 9.1 en un debian wheezy (previamente había migrado desde 8.4 y recibía errores).

Lo que hice:

Primero, eliminé la configuración y la base de datos

$ sudo pg_dropcluster --stop 9.1 main

Luego eliminado postgresql

$ sudo apt-get remove --purge postgresql postgresql-9.1 

y luego reinstalado

$ sudo apt-get install postgresql postgresql-9.1

En mi caso, noté que /etc/postgresql/9.1 estaba vacío y que la ejecución service postgresql startno devolvía nada

Entonces, después de buscar más en Google, llegué a este comando:

$ sudo pg_createcluster 9.1 main

Con eso pude iniciar el servidor, pero ahora recibía errores relacionados con el registro. Después de más búsquedas, terminé cambiando los permisos al directorio / var / log / postgresql

$ sudo chown root.postgres /var/log/postgresql
$ sudo chmod g+wx /var/log/postgresql

Eso solucionó el problema, espero que esto ayude

usuario9869932
fuente
14

Pasos que me funcionaron Ubuntu 8.04.2para eliminarpostgres 8.3

  1. Listar todos los paquetes relacionados con Postgres

    dpkg -l | grep postgres
    
    ii  postgresql                            8.3.17-0ubuntu0.8.04.1           object-relational SQL database (latest versi
    ii  postgresql-8.3                        8.3.9-0ubuntu8.04                object-relational SQL database, version 8.3
    ii  postgresql-client                     8.3.9-0ubuntu8.04                front-end programs for PostgreSQL (latest ve
    ii  postgresql-client-8.3                 8.3.9-0ubuntu8.04                front-end programs for PostgreSQL 8.3
    ii  postgresql-client-common              87ubuntu2                        manager for multiple PostgreSQL client versi
    ii  postgresql-common                     87ubuntu2                        PostgreSQL database-cluster manager
    ii  postgresql-contrib                    8.3.9-0ubuntu8.04                additional facilities for PostgreSQL (latest
    ii  postgresql-contrib-8.3                8.3.9-0ubuntu8.04                additional facilities for PostgreSQL
  2. Eliminar todo lo mencionado anteriormente

    sudo apt-get --purge remove postgresql postgresql-8.3  postgresql-client  postgresql-client-8.3 postgresql-client-common postgresql-common  postgresql-contrib postgresql-contrib-8.3
  3. Eliminar las siguientes carpetas

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/
Mithun Sreedharan
fuente
Eliminar TODOS los paquetes relacionados con Postgres funcionó para mí. Tenía algunos paquetes 8.4 y 9.1 mezclados. Eso, combinado con la eliminación de todo, me permitió finalmente reinstalar 9.1 y tener todo funcionando con él.
Nick
1
Mucho más fácil con un comodín:apt-get --purge remove postgresql\*
Craig Ringer
12

Sé que ya se ha proporcionado una respuesta, pero dselect no funcionó para mí. Esto es lo que funcionó para encontrar los paquetes para eliminar:

# search postgr  | grep ^i
i   postgresql                      - object-relational SQL database (supported 
i A postgresql-8.4                  - object-relational SQL database, version 8.
i A postgresql-client-8.4           - front-end programs for PostgreSQL 8.4     
i A postgresql-client-common        - manager for multiple PostgreSQL client ver
i A postgresql-common               - PostgreSQL database-cluster manager       

# aptitude purge postgresql-8.4 postgresql-client-8.4 postgresql-client-common postgresql-common postgresql

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/

Finalmente, editando / etc / passwd y / etc / group

Klaas van Schelven
fuente
Estas instrucciones funcionaron en debian squeeze / sid
Evgeny
Es mucho más fácil usar un comodín; ver la 1ra respuesta actualizada.
Craig Ringer el
12
apt-get purge postgresql*

es suficiente.

Anish Menon
fuente
2
apt-get autoremove postgresql *
johndpope
9

Siguiendo todos los pasos que seguí para desinstalar y reinstalar. Lo que funcionó para mí.

Primero elimine los postgres instalados: -

sudo apt-get purge postgr *

sudo apt-get autoremove

Luego instale 'synaptic':

sudo apt-get install synaptic

sudo apt-get update

Luego instale postgres

sudo apt-get install postgresql postgresql-contrib

Gurudath BN
fuente
2

Me encontré con el mismo problema para Ubuntu 13.04. Estos comandos eliminaron Postgres 9.1:

sudo apt-get purge postgresql
sudo apt-get autoremove postgresql

Se me ocurre que quizás solo sea necesario el segundo comando, pero desde allí pude instalar Postgres 9.2 (sudo apt-get install postgresql-9.2).

Jeromy francés
fuente
0

Estaba siguiendo las respuestas, al editar / etc / group también borré esta línea:

ssl-cert:x:112:postgres

entonces, cuando trato de instalar postgresql, recibí este error

Preconfiguring packages ...
dpkg: unrecoverable fatal error, aborting:
 syntax error: unknown group 'ssl-cert' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)

Volver a poner la línea "ssl-cert: x: 112: postgres" en / etc / group parece solucionarlo (así que pude instalar postgresql)

nivniv
fuente
2
Al eliminar la línea, eliminó todo el grupo "ssl-cert", lo que podría crear estragos con ssl. En cambio, para eliminar postgres del grupo ssl-cert, elimine "postgres" después de los dos puntos.
John Mee el
2
Las instrucciones originales estaban muy equivocadas al aconsejarle que editara manualmente /etc/passwd. nunca hagas eso . Utilice las userdely groupdellos comandos y usted no tendrá ese problema en el futuro.
Craig Ringer el
-2

Estaba enfrentando el mismo problema en mi ubuntu 16.04

pero solucioné ese problema y es muy simple, solo siga estos pasos y podrá instalar postgresql 10 en su sistema:

Agregue esto a su sources.list:

sudo vim /etc/apt/sources.list

deb http://ftp.de.debian.org/debian/ wheezy main non-free contrib

deb-src http://ftp.de.debian.org/debian/ wheezy main non-free contrib

después de eso, agregue estos enlaces a su archivo pgdg.list si no está allí, tiene que crear && agregar enlace && guardarlo.

sudo vim /etc/apt/sources.list.d/pgdg.list

deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

luego actualice su sistema

sudo apt-get update

sudo apt-get upgrade

e instalar esas dependencias insatisfechas:

apt-get install ssl-cert

Eso es. ahora instale postgresql usando estos comandos

sudo apt-get install postgresql-10
John Toppo
fuente