Come eliminare completamente e reinstallare Postgresql su Ubuntu? [chiuso]


221

In qualche modo sono riuscito a infastidire completamente l'installazione di postgresql su Ubuntu karmic. Voglio ricominciare da zero, ma quando "elimino" il pacchetto con apt-get lascia ancora tracce tali che la configurazione di reinstallazione non funziona correttamente.

Dopo aver finito:

apt-get purge postgresql
apt-get install postgresql

Ha detto

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) ...

Ho una "/ etc / postgresql" senza nulla e "/ etc / postgresql-common /" ha una directory 'pg_upgradecluser.d' e i file root.crt e user_clusters.

Il file / etc / passwd ha un utente postgres; lo script di eliminazione non sembra toccarlo. Ci sono stati un sacco di sintomi che lavoro solo per esporre il prossimo.

Proprio in questo secondo, quando eseguo il comando "pg_createcluster ...", mi lamento che '/var/lib/postgresql/8.4/main/postgresql.conf non esiste', quindi andrò a trovare uno di quelli ma ' Sono sicuro che non sarà la fine.

Non c'è qualche semplice rivestimento (o due) che lo bruci completamente e mi lasci ricominciare?


2
Prova il programma di installazione con un clic, è più semplice, le sue directory non sono sparse in / etc / e / var. Sono tutti memorizzati in una directory
Michael Buen,

2
Questa non è una domanda di calcolo generale e postgresql è un argomento stackoverflow standard. La domanda dovrebbe essere riaperta.
Andrew,

Risposte:


446

Opzione A

Se l'installazione non è già danneggiata, è possibile eliminare i server PostgreSQL ("cluster") indesiderati utilizzando pg_dropcluster. Utilizzalo preferibilmente per una completa eliminazione e reinstalla se vuoi semplicemente riavviare con una nuova istanza 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

Opzione B

Se hai davvero bisogno di eliminare e reinstallare completamente, assicurati innanzitutto che PostgreSQL non sia in esecuzione. ps -C postgresnon dovrebbe mostrare risultati.

Ora esegui:

apt-get --purge remove postgresql\*

per rimuovere tutto PostgreSQL dal tuo sistema. Basta eliminare il postgrespacchetto non è sufficiente poiché è solo un meta-pacchetto vuoto.

Una volta rimossi tutti i pacchetti PostgreSQL, eseguire:

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

Ora dovresti essere in grado di:

apt-get install postgresql

o per un'installazione completa:

apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4

19
Ho rielaborato la risposta per rimuovere i consigli per la modifica manuale /etc/passwde /etc/groupin favore di sicuro userdele groupdel. Inoltre, anziché utilizzare dselectper la selezione manuale dei pacchetti, utilizzare un jolly apt per abbinarli in modo affidabile.
Craig Ringer

11
+1 per pg_dropcluster!! (Esempio di utilizzo: pg_dropcluster --stop 9.1 main)
Anuj Gupta

5
aggiungi libpq5 e libpq-dev all'elenco di eliminazione, che lib mi ha dato MOLTI problemi, fino a quando non l'ho reinstallato nella versione giusta
Rogerio Chaves,

Funziona anche su Debian 8 con PostgreSQL 9.4.

2
Vorrei anche aggiungere rm -r /var/log/postgresql.
Gregory Arenius,

45

Avevo una situazione simile: avevo bisogno di eliminare Postgresql 9.1 su un debian wheezy (in precedenza ero migrato da 8.4 e stavo ottenendo errori).

Cosa ho fatto:

Innanzitutto, ho eliminato config e database

$ sudo pg_dropcluster --stop 9.1 main

Quindi rimosso postgresql

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

e quindi reinstallato

$ sudo apt-get install postgresql postgresql-9.1

Nel mio caso ho notato /etc/postgresql/9.1 era vuoto e la corsa service postgresql startnon ha restituito nulla

Quindi, dopo aver cercato su google, sono arrivato a questo comando:

$ sudo pg_createcluster 9.1 main

Con ciò ho potuto avviare il server, ma ora stavo ottenendo errori relativi al registro. Dopo ulteriori ricerche, ho finito per cambiare i permessi nella directory / var / log / postgresql

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

Ciò ha risolto il problema, spero che questo aiuti


14

I passaggi che hanno funzionato per me Ubuntu 8.04.2per rimuoverepostgres 8.3

  1. Elenca tutti i pacchetti relativi a 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. Rimuovi tutto sopra elencato

    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. Rimuovi le seguenti cartelle

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/

Rimozione di TUTTI i pacchetti relativi a Postgres ha funzionato per me. Ho avuto alcuni pacchetti 8.4 e 9.1 confusi. Ciò combinato con la rimozione di tutto mi ha permesso di reinstallare finalmente 9.1 e avere tutto funzionante con esso.
Nick,

1
Molto più facile con un jolly:apt-get --purge remove postgresql\*
Craig Ringer

12

So che è già stata fornita una risposta, ma dselect non ha funzionato per me. Ecco cosa ha funzionato per trovare i pacchetti da rimuovere:

# 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/

Infine, modifica / etc / passwd e / etc / group


Queste istruzioni hanno funzionato su debian squeeze / sid
Evgeny,

È molto più semplice usare un carattere jolly; vedere la prima risposta aggiornata.
Craig Ringer


9

Seguendo i passaggi che ho seguito per disinstallare e reinstallare. Che ha funzionato per me.

Per prima cosa rimuovi i postgres installati: -

sudo apt-get purge postgr *

sudo apt-get autoremove

Quindi installare 'synaptic':

sudo apt-get install synaptic

sudo apt-get update

Quindi installare Postgres

sudo apt-get install postgresql postgresql-contrib


2

Ho appena incontrato lo stesso problema per Ubuntu 13.04. Questi comandi hanno rimosso Postgres 9.1:

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

Mi viene in mente che forse è necessario solo il secondo comando, ma da lì sono stato in grado di installare Postgres 9.2 (sudo apt-get install postgresql-9.2).


0

Stavo seguendo le risposte, durante la modifica di / etc / group ho eliminato anche questa riga:

ssl-cert:x:112:postgres

quindi, quando ho provato a installare postgresql, ho riscontrato questo errore

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)

Mettere la riga "ssl-cert: x: 112: postgres" in / etc / group sembra risolverlo (quindi sono stato in grado di installare postgresql)


2
Nel cancellare la riga hai rimosso l'intero gruppo "ssl-cert", che potrebbe creare scompiglio con ssl. Invece, per rimuovere postgres dal gruppo ssl-cert, elimina "postgres" da dopo i due punti.
John Mee,

2
Le istruzioni originali erano molto sbagliate nel consigliarti di modificarle a mano /etc/passwd. mai farlo . Utilizzare i userdele groupdelcomandi e non avrete il problema in futuro.
Craig Ringer

-2

Stavo affrontando lo stesso problema nel mio Ubuntu 16.04

ma ho risolto il problema ed è molto semplice, segui questi passaggi e sarai in grado di installare postgresql 10 nel tuo sistema:

Aggiungi questo al tuo elenco di fonti:

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

dopodiché aggiungi questi link al tuo file pgdg.list se non è lì devi creare && aggiungere link && salvarlo.

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

quindi aggiorna il tuo sistema

sudo apt-get update

sudo apt-get upgrade

e installa dipendenze non soddisfatte:

apt-get install ssl-cert

questo è tutto. ora installa postgresql usando questi comandi

sudo apt-get install postgresql-10
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.