2010-05-01 11 views
195

Irgendwie habe ich es geschafft, die Installation von Postgresql auf Ubuntu karmic komplett zu verpatzen. Ich möchte von vorne anfangen, aber wenn ich das Paket mit apt-get "säubere", hinterlässt es immer noch Spuren, so dass die Neuinstallationskonfiguration nicht richtig läuft.Wie gründlich säubern und neu installieren PostgreSQL auf Ubuntu?

Nachdem ich getan habe:

apt-get purge postgresql 
apt-get install postgresql 

sagte es

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

Ich habe ein "/ etc/postgresql" mit nichts drin und "/ etc/postgresql-common /" hat a 'pg_upgradecluser.d' Verzeichnis und root.crt und user_clusters Dateien.

Die/etc/passwd hat einen Postgres-Benutzer; Das Löschskript scheint es nicht zu berühren. Es gab eine Reihe von Symptomen, die ich durcharbeite, nur um das nächste zu entlarven.

Richtig diese Sekunde, wenn ich diesen Befehl "pg_createcluster ..." es beklagt, dass '/var/lib/postgresql/8.4/main/postgresql.conf nicht existiert', so werde ich eine von finden aber ich bin mir sicher, dass das nicht das Ende sein wird.

Gibt es nicht einen einfachen Einliner (oder zwei), der ihn komplett verbrennt und mich von vorne beginnen lässt?

+2

Probieren Sie das Ein-Klick-Installationsprogramm, es ist einfacher, seine Verzeichnisse sind nicht verstreut in/etc/und/var. Sie sind alle in einem Verzeichnis gespeichert. –

Antwort

379

Erstens: Wenn Ihre Installation nicht bereits beschädigt ist, können Sie unerwünschte PostgreSQL-Server ("Cluster") in Ubuntu mit pg_dropcluster löschen. Verwenden Sie diese anstelle einer vollständigen Bereinigung und Neuinstallation, wenn Sie nur mit einer initdb 'd PostgreSQL-Instanz starten möchten.

Wenn Sie wirklich eine vollständige Bereinigung durchführen und neu installieren müssen, stellen Sie zuerst sicher, dass PostgreSQL nicht ausgeführt wird. ps -C postgres sollte keine Ergebnisse anzeigen.

Jetzt laufen:

apt-get --purge remove postgresql\* 

alles PostgreSQL von Ihrem System zu entfernen. Das postgres-Paket zu bereinigen ist nicht genug, da es nur ein leeres Meta-Paket ist.

Sobald alle PostgreSQL-Pakete entfernt wurden, laufen:

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

Sie nun in der Lage sein sollte:

apt-get install postgresql 

oder für eine vollständige Installation von:

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

Ich habe die Antwort überarbeitet, um den Hinweis zu entfernen, '/ etc/passwd' und'/etc/group' zu bearbeiten, zugunsten von safer 'userdel' und' groupdel'. Anstatt "dselect" für die manuelle Auswahl von Paketen zu verwenden, verwenden Sie auch ein apt-Wildcard, um sie zuverlässig zu vergleichen. –

+11

+1 für 'pg_dropcluster' !! (Beispiel Verwendung: 'pg_dropcluster --stop 9.1 main') –

+5

add libpq5 und libpq-dev zu dieser Löschliste, die lib gab mir eine Menge Probleme, bis ich es wieder auf der richtigen Version –

11

Ich weiß, Eine Antwort wurde bereits gegeben, aber dselect hat nicht für mich funktioniert.Hier ist, was die Pakete zu finden gearbeitet zu entfernen:

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

Schließlich Datei/etc/passwd und/etc/group

+0

Diese Anweisungen funktionierten auf debian squeeze/sid – Evgeny

+0

Es ist viel einfacher, einen Platzhalter zu verwenden; Siehe die aktualisierte erste Antwort. –

0

Ich wurde nach den Antworten, Bei der Bearbeitung von/etc/group ich auch gelöscht diese Zeile:

ssl-cert:x:112:postgres 

dann, wenn postgresql zu installieren versucht, habe ich diesen Fehler

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) 

das Einlochen "ssl-cert: x: 112: Postgres" Linie zurück in/etc/group, es zu beheben scheint (so konnte ich postgresql installieren)

+2

Beim Löschen der Zeile haben Sie die gesamte Gruppe "ssl-cert" entfernt, was zu Verwüstungen bei ssl führen könnte. Um postgres aus der ssl-cert-Gruppe zu entfernen, löschen Sie stattdessen "postgres" hinter dem Doppelpunkt. –

+1

Die ursprüngliche Anleitung war sehr falsch, Ihnen zu empfehlen, '/ etc/passwd' von Hand zu bearbeiten. *TU das niemals*. Verwenden Sie die Befehle 'userdel' und' groupdel' und Sie werden dieses Problem in Zukunft nicht mehr haben. –

11

Schritte, die auf Ubuntu 8.04.2 für mich gearbeitet zu entfernen postgres 8.3

  1. Liste Alle Postgres verwandte Pakete

    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. Entfernen Sie alle oben aufgeführten

    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. entfernen die folgenden Ordner

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

Entfernen aller Postgres bezogenen Pakete funktionierte für mich. Ich hatte einige 8.4 & 9.1 Pakete durcheinander gebracht. Das, zusammen mit dem Entfernen von allem, erlaubte mir, 9.1 endlich neu zu installieren und alles damit zu arbeiten. – Nick

+1

Viel einfacher mit einem Platzhalter: 'apt-get --purge entfernen postgresql \ *' –

10
apt-get purge postgresql* 

ist genug.

+2

apt-get autoremove postgresql * – johndpope

2

Ich lief gerade in das gleiche Problem für Ubuntu 13.04. Diese Befehle entfernt Postgres 9.1:

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

Es kommt zu mir, dass vielleicht nur der zweite Befehl ist notwendig, aber von dort konnte ich install Postgres 9.2 (sudo apt-get install postgresql-9.2).

35

Ich hatte eine ähnliche Situation: Ich musste postgresql 9.1 auf einem debian Wheezy löschen (ich hatte zuvor von 8.4 migriert und ich bekam Fehler).

Was ich tat:

Zuerst löschte ich config und Datenbank

$ sudo pg_dropcluster --stop 9.1 main 

Dann entfernt postgresql

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

und wieder installiert dann

$ sudo apt-get install postgresql postgresql-9.1 

In meinem Fall habe ich bemerkt/etc/postgresql/9.1 war leer, und läuft service postgresql start zurück nichts

Also, nach mehr googeln ich auf diesen Befehl bekam:

$ sudo pg_createcluster 9.1 main 

Damit konnte ich den Server starten, aber jetzt war ich log-Fehlern zu bekommen. Nach mehr Suchens, landete ich Berechtigungen in das Verzeichnis/var Ändern/log/postgresql Verzeichnis

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

, dass das Problem behoben, Hoffnung, das hilft

5

ae Sie die Schritte i deinstallieren folgen und neu zu installieren. Was für mich funktioniert hat.

die installierten Postgres Entfernen Sie zuerst: -

sudo apt-get purge Postgrad *

sudo apt-get autoremove

installieren Then 'synaptic':

sudo apt-get

aktualisieren

Dann installieren Postgres

sudo apt-get install postgresql postgresql-contrib

-1

Ich war synaptischen

sudo apt-get install mit dem gleichen Problem in meinem ubuntu 16.04

aber ich festgelegt, dieses Problem und es ist sehr einfach, nur diesem Schritt folgen und Sie werden in der Lage sein, postgresql 10 in dem System zu installieren:

diese in Ihrem 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 

nach diesem Add diese Link zu Ihrer pgdg.list Datei, wenn es nicht dort ist, müssen Sie erstellen & & Link hinzufügen & & speichern Sie es.

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 

dann aktualisieren Ihr System

sudo apt-get update 

sudo apt-get upgrade 

und installiert, die unerfüllten Abhängigkeiten:

apt-get install ssl-cert 

, die es ist. Installieren Sie jetzt postgresql mit diesen Befehlen

Happy Codierung!