Wie kann man postgresql auf Ubuntu gründlich löschen und neu installieren? [geschlossen]


221

Irgendwie habe ich es geschafft, die Installation von postgresql auf Ubuntu karmic komplett zu nerven. Ich möchte von vorne anfangen, aber wenn ich das Paket mit apt-get "bereinige", hinterlässt es immer noch Spuren, so dass die Neuinstallationskonfiguration nicht richtig ausgeführt wird.

Nachdem ich fertig bin:

apt-get purge postgresql
apt-get install postgresql

Es sagte

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 darin und "/ etc / postgresql-common /" hat ein 'pg_upgradecluser.d'-Verzeichnis und root.crt- und user_clusters-Dateien.

Das / etc / passwd hat einen Postgres-Benutzer; Das Bereinigungsskript scheint es nicht zu berühren. Es gab eine Reihe von Symptomen, die ich nur durcharbeite, um die nächsten aufzudecken.

Genau in dieser Sekunde, wenn ich diesen Befehl "pg_createcluster ..." ausführe, beschwert es sich, dass '/var/lib/postgresql/8.4/main/postgresql.conf nicht existiert', also werde ich einen von denen finden, aber ich ' Ich bin mir sicher, dass das nicht das Ende sein wird.

Gibt es nicht einen einfachen Einzeiler (oder zwei), der ihn vollständig verbrennt und mich von vorne anfangen lässt?


2
Versuchen Sie es mit einem Klick-Installationsprogramm. Es ist einfacher, die Verzeichnisse sind nicht in / etc / und / var verteilt. Sie sind alle in einem Verzeichnis gespeichert
Michael Buen

2
Dies ist keine allgemeine Computerfrage, und postgresql ist ein Standardthema für den Stapelüberlauf. Die Frage sollte erneut geöffnet werden.
Andrew

Antworten:


446

Option A.

Wenn Ihre Installation noch nicht beschädigt ist, können Sie unerwünschte PostgreSQL-Server ("Cluster") mit löschen pg_dropcluster. Verwenden Sie dies vor einer vollständigen Bereinigung und Neuinstallation, wenn Sie nur mit einer neuen PostgreSQL-Instanz neu starten möchten.

$ 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

Option B.

Wenn Sie wirklich eine vollständige Bereinigung und Neuinstallation durchführen müssen, stellen Sie zunächst sicher, dass PostgreSQL nicht ausgeführt wird. ps -C postgressollte keine Ergebnisse zeigen.

Führen Sie jetzt aus:

apt-get --purge remove postgresql\*

um alles PostgreSQL von Ihrem System zu entfernen. Das Löschen des postgresPakets reicht nicht aus, da es sich nur um ein leeres Metapaket handelt.

Führen Sie Folgendes aus, nachdem alle PostgreSQL-Pakete entfernt wurden:

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

Sie sollten jetzt in der Lage sein:

apt-get install postgresql

oder für eine vollständige Installation:

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

19
Ich habe die Antwort überarbeitet, um Ratschläge zu entfernen, die von Hand bearbeitet werden sollen, /etc/passwdund /etc/groupfür sicherere userdelund sicherere groupdel. dselectVerwenden Sie auch einen passenden Platzhalter, um diese zuverlässig zuzuordnen , anstatt sie von Hand auszuwählen.
Craig Ringer

11
+1 für pg_dropcluster!! (Verwendungsbeispiel: pg_dropcluster --stop 9.1 main)
Anuj Gupta

5
füge libpq5 und libpq-dev zu dieser Bereinigungsliste hinzu, diese lib gab mir eine Menge Probleme, bis ich sie auf der richtigen Version neu installierte
Rogerio Chaves

Funktioniert auch unter Debian 8 mit PostgreSQL 9.4.

2
Ich würde auch hinzufügen rm -r /var/log/postgresql.
Gregory Arenius

45

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

Was ich getan habe:

Zuerst habe ich Konfiguration und Datenbank gelöscht

$ sudo pg_dropcluster --stop 9.1 main

Dann postgresql entfernt

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

und dann neu installiert

$ sudo apt-get install postgresql postgresql-9.1

In meinem Fall bemerkte ich, dass /etc/postgresql/9.1 leer war und das Ausführen service postgresql startnichts zurückgab

Nachdem ich weiter gegoogelt hatte, kam ich zu diesem Befehl:

$ sudo pg_createcluster 9.1 main

Damit konnte ich den Server starten, aber jetzt bekam ich log-bezogene Fehler. Nach weiteren Suchen habe ich die Berechtigungen für das Verzeichnis / var / log / postgresql geändert

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

Das hat das Problem behoben. Ich hoffe, das hilft


14

Schritte, die für mich gearbeitet haben Ubuntu 8.04.2, um zu entfernenpostgres 8.3

  1. Alle Postgres-bezogenen Pakete auflisten

    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 Sie die folgenden Ordner

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

Das Entfernen ALLER Postgres-bezogenen Pakete hat bei mir funktioniert. Ich hatte einige 8.4 & 9.1 Pakete durcheinander. In Kombination mit dem Entfernen von allem konnte ich 9.1 endlich neu installieren und alles damit arbeiten lassen.
Nick

1
Viel einfacher mit einer Wildcard:apt-get --purge remove postgresql\*
Craig Ringer

12

Ich weiß, dass bereits eine Antwort gegeben wurde, aber dselect hat bei mir nicht funktioniert. Folgendes hat funktioniert, um die zu entfernenden Pakete zu finden:

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

Zum Schluss bearbeiten Sie / etc / passwd und / etc / group


Diese Anweisungen funktionierten auf Debian Squeeze / Sid
Evgeny

Es ist viel einfacher, einen Platzhalter zu verwenden. siehe die aktualisierte 1. Antwort.
Craig Ringer


9

Befolgen Sie die Schritte zum Deinstallieren und Neuinstallieren. Welches hat bei mir funktioniert.

Entfernen Sie zuerst die installierten Postgres: -

sudo apt-get purge postgr *

sudo apt-get autoremove

Dann installieren Sie 'synaptic':

sudo apt-get install synaptic

sudo apt-get update

Dann installieren Sie postgres

sudo apt-get install postgresql postgresql-contrib


2

Ich bin gerade auf das gleiche Problem für Ubuntu 13.04 gestoßen. Diese Befehle haben Postgres 9.1 entfernt:

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

Mir fällt ein, dass vielleicht nur der zweite Befehl notwendig ist, aber von dort aus konnte ich Postgres 9.2 installieren (sudo apt-get install postgresql-9.2).


0

Ich habe die Antworten verfolgt. Beim Bearbeiten von / etc / group habe ich auch diese Zeile gelöscht:

ssl-cert:x:112:postgres

Beim Versuch, postgresql zu installieren, wurde dieser Fehler angezeigt

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 Zurücksetzen der Zeile "ssl-cert: x: 112: postgres" in / etc / group scheint das Problem zu beheben (also konnte ich postgresql installieren).


2
Beim Löschen der Zeile haben Sie die gesamte Gruppe "ssl-cert" entfernt, was zu Chaos mit ssl führen kann. Um Postgres aus der ssl-cert-Gruppe zu entfernen, löschen Sie stattdessen "postgres" nach dem Doppelpunkt.
John Mee

2
Die ursprünglichen Anweisungen waren sehr falsch, als sie Ihnen rieten, sie von Hand zu bearbeiten /etc/passwd. Mach das niemals . Verwenden Sie die userdelund groupdelBefehle , und Sie werden nicht das Problem in Zukunft haben.
Craig Ringer

-2

Ich hatte das gleiche Problem in meinem Ubuntu 16.04

Aber ich habe dieses Problem behoben und es ist sehr einfach. Befolgen Sie einfach diesen Schritt und Sie können Postgresql 10 auf Ihrem System installieren:

Fügen Sie dies Ihrer Quellenliste hinzu:

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

Danach fügen Sie diesen Link zu Ihrer pgdg.list-Datei hinzu. Wenn er nicht vorhanden ist, müssen Sie einen Link erstellen und hinzufügen.

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

Aktualisieren Sie dann Ihr System

sudo apt-get update

sudo apt-get upgrade

und installieren Sie diese nicht erfüllten Abhängigkeiten:

apt-get install ssl-cert

das ist es. Installieren Sie jetzt postgresql mit diesem Befehl

sudo apt-get install postgresql-10
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.