Jak dokładnie wyczyścić i ponownie zainstalować Postgresql na Ubuntu? [Zamknięte]

221

Jakimś cudem udało mi się całkowicie zakłócać instalację postgresql na Ubuntu karmic. Chcę zacząć od nowa od zera, ale kiedy „wyczyszczę” pakiet za pomocą apt-get, nadal pozostawia ślady, tak że konfiguracja ponownej instalacji nie działa poprawnie.

Po zakończeniu:

apt-get purge postgresql
apt-get install postgresql

Powiedziało

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

Mam plik „/ etc / postgresql”, w którym nic nie ma, a „/ etc / postgresql-common /” ma katalog „pg_upgradecluser.d” oraz pliki root.crt i user_clusters.

Plik / etc / passwd ma użytkownika postgres; skrypt czyszczenia nie wydaje się go dotykać. Było kilka symptomów, przez które pracuję tylko po to, aby ujawnić następny.

W tej chwili, kiedy uruchomię polecenie „pg_createcluster ...”, narzeka, że ​​„/var/lib/postgresql/8.4/main/postgresql.conf nie istnieje”, więc znajdę jedno z nich, ale ja ” jestem pewien, że to nie koniec.

Czy nie ma łatwego jednego linijki (lub dwóch), który całkowicie go wypali i pozwoli mi zacząć od nowa?

John Mee
źródło
2
Wypróbuj instalator jednym kliknięciem, jest to prostsze, jego katalogi nie są rozproszone w / etc / i / var. Wszystkie są przechowywane w jednym katalogu
Michael Buen
2
To nie jest ogólne pytanie komputerowe, a postgresql jest standardowym tematem przepływu stosu. Pytanie należy ponownie otworzyć.
Andrew

Odpowiedzi:

446

Opcja A

Jeśli Twoja instalacja nie jest już uszkodzona, możesz upuścić niechciane serwery PostgreSQL („klastry”) za pomocą pg_dropcluster. Użyj tego zamiast pełnego czyszczenia i zainstaluj ponownie, jeśli chcesz ponownie uruchomić z nową instancją 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

Opcja B

Jeśli naprawdę musisz wykonać pełne czyszczenie i ponowną instalację, najpierw upewnij się, że PostgreSQL nie działa. ps -C postgresnie powinien pokazywać żadnych wyników.

Teraz uruchom:

apt-get --purge remove postgresql\*

aby usunąć wszystko PostgreSQL z twojego systemu. Samo oczyszczenie postgrespakietu nie wystarczy, ponieważ jest to tylko pusty meta-pakiet.

Po usunięciu wszystkich pakietów PostgreSQL uruchom:

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

Powinieneś teraz być w stanie:

apt-get install postgresql

lub dla pełnej instalacji:

apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4
John Mee
źródło
19
Przerobiłem odpowiedź, aby usunąć porady dotyczące ręcznej edycji /etc/passwdi /etc/groupna korzyść bezpieczniejszych userdeli groupdel. Ponadto, zamiast używać dselectdo ręcznego wyboru pakietów, użyj apt wildcard, aby niezawodnie je dopasować.
Craig Ringer
11
+1 za pg_dropcluster!! (Przykład Zastosowanie: pg_dropcluster --stop 9.1 main)
Anuj Gupta
5
dodaj libpq5 i libpq-dev do tej listy czyszczenia, ta biblioteka dała mi wiele problemów, dopóki nie zainstalowałem jej ponownie w odpowiedniej wersji
Rogerio Chaves
Działa również na Debianie 8 z PostgreSQL 9.4.
2
Dodałbym również rm -r /var/log/postgresql.
Gregory Arenius
45

Miałem podobną sytuację: musiałem wyczyścić postgresql 9.1 na wheezy Debiana (wcześniej migrowałem z wersji 8.4 i otrzymywałem błędy).

Co ja zrobiłem:

Najpierw usunąłem config i bazę danych

$ sudo pg_dropcluster --stop 9.1 main

Następnie usunięto postgresql

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

a następnie ponownie zainstalowany

$ sudo apt-get install postgresql postgresql-9.1

W moim przypadku zauważyłem, że /etc/postgresql/9.1 jest pusty, a uruchamianie service postgresql startnic nie zwróciło

Więc po kolejnym googlowaniu doszedłem do tego polecenia:

$ sudo pg_createcluster 9.1 main

Dzięki temu mogłem uruchomić serwer, ale teraz otrzymywałem błędy związane z logami. Po dalszych poszukiwaniach skończyłem na zmianie uprawnień do katalogu / var / log / postgresql

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

To rozwiązało problem. Mam nadzieję, że to pomaga

użytkownik9869932
źródło
14

Kroki, które działały dla mnie na Ubuntu 8.04.2usunięciepostgres 8.3

  1. Wyświetl wszystkie pakiety związane z 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. Usuń wszystkie wyżej wymienione

    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. Usuń następujące foldery

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/
    
Mithun Sreedharan
źródło
Usuwanie WSZYSTKICH pakietów związanych z Postgres działało dla mnie. Miałem pomieszane pakiety 8.4 i 9.1. To w połączeniu z usunięciem wszystkiego pozwoliło mi w końcu ponownie zainstalować 9.1 i mieć wszystko z tym.
Nick
1
Znacznie łatwiej dzięki symbolowi wieloznacznemu:apt-get --purge remove postgresql\*
Craig Ringer,
12

Wiem, że odpowiedź została już udzielona, ​​ale dselect nie działało dla mnie. Oto, co działało, aby znaleźć pakiety do usunięcia:

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

Na koniec edycja / etc / passwd i / etc / group

Klaas van Schelven
źródło
Instrukcje te działały na debian squeeze / sid
Evgeny
O wiele łatwiej jest używać symboli wieloznacznych; zobacz zaktualizowaną pierwszą odpowiedź.
Craig Ringer
12
apt-get purge postgresql*

wystarczy.

Anish Menon
źródło
2
apt-get autorove postgresql *
johndpope
9

Postępując zgodnie z instrukcjami, które wykonałem, aby odinstalować i zainstalować ponownie. Która działała dla mnie.

Najpierw usuń zainstalowane postgres: -

sudo apt-get purge postgr *

sudo apt-get autorove

Następnie zainstaluj „synaptic”:

sudo apt-get install synaptic

sudo apt-get update

Następnie zainstaluj postgres

sudo apt-get install postgresql postgresql-contrib

Gurudath BN
źródło
2

Właśnie natrafiłem na ten sam problem z Ubuntu 13.04. Te polecenia usunęły Postgres 9.1:

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

Przyszło mi do głowy, że być może potrzebna jest tylko druga komenda, ale stamtąd mogłem zainstalować Postgres 9.2 (sudo apt-get install postgresql-9.2).

Jeromy French
źródło
0

Śledziłem odpowiedzi, podczas edycji / etc / group usunąłem również ten wiersz:

ssl-cert:x:112:postgres

wtedy, gdy próbuję zainstalować postgresql, dostałem ten błąd

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)

Wydaje się, że ponowne umieszczenie wiersza „ssl-cert: x: 112: postgres” w pliku / etc / group (więc mogłem zainstalować postgresql)

nivniv
źródło
2
Usuwając wiersz, usunąłeś całą grupę „ssl-cert”, która może spowodować spustoszenie w ssl. Zamiast tego, aby usunąć postgres z grupy ssl-cert, usuń „postgres” po dwukropku.
John Mee,
2
Oryginalne instrukcje były bardzo błędne w zalecaniu ręcznej edycji /etc/passwd. nigdy tego nie rób . Użyj userdeli groupdelpoleceń i nie będzie miał tego problemu w przyszłości.
Craig Ringer
-2

Ten sam problem miałem w moim Ubuntu 16.04

ale naprawiłem ten problem i jest to bardzo proste, wykonaj następujące czynności, a będziesz mógł zainstalować postgresql 10 w swoim systemie:

Dodaj to do swojej 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

następnie dodaj te linki do pliku pgdg.list, jeśli go tam nie ma, musisz utworzyć && dodać link i& go zapisać.

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

następnie zaktualizuj system

sudo apt-get update

sudo apt-get upgrade

i zainstaluj te niespełnione zależności:

apt-get install ssl-cert

Otóż ​​to. teraz zainstaluj postgresql za pomocą tego polecenia

sudo apt-get install postgresql-10
John Toppo
źródło