Bagaimana cara membersihkan dan menginstal ulang postgresql di Ubuntu secara menyeluruh? [Tutup]

221

Entah bagaimana saya telah berhasil sepenuhnya menginstal instalasi postgresql di Ubuntu karmic. Saya ingin memulai dari awal, tetapi ketika saya "membersihkan" paket dengan apt-get masih meninggalkan jejak di belakang sehingga konfigurasi instal ulang tidak berjalan dengan benar.

Setelah saya selesai:

apt-get purge postgresql
apt-get install postgresql

Itu berkata

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

Saya memiliki "/ etc / postgresql" dengan tidak ada di dalamnya dan "/ etc / postgresql-common /" memiliki direktori 'pg_upgradecluser.d' dan file root.crt dan user_clusters.

/ Etc / passwd memiliki pengguna postgres; skrip pembersihan tampaknya tidak menyentuhnya. Ada banyak gejala yang saya alami hanya untuk mengekspos berikutnya.

Saat ini juga, ketika saya menjalankan perintah "pg_createcluster ..." itu mengeluh bahwa '/var/lib/postgresql/8.4/main/postgresql.conf tidak ada', jadi saya akan mencari salah satu dari itu tetapi saya ' Saya yakin itu bukan akhir dari semuanya.

Apakah tidak ada satu-liner mudah (atau dua) yang akan membakarnya sepenuhnya dan biarkan saya memulai dari awal?

John Mee
sumber
2
Coba instal sekali klik, itu lebih sederhana, direktori-nya tidak tersebar di / etc / and / var. Mereka semua disimpan dalam satu direktori
Michael Buen
2
Ini bukan pertanyaan komputasi umum, dan postgresql adalah topik stackoverflow standar. Pertanyaan harus dibuka kembali.
Andrew

Jawaban:

446

Opsi A

Jika instalasi Anda belum rusak, Anda dapat menggunakan server PostgreSQL ("cluster") yang tidak diinginkan pg_dropcluster. Gunakan itu sebagai preferensi untuk pembersihan penuh dan instal ulang jika Anda hanya ingin memulai kembali dengan instance PostgreSQL baru.

$ 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

Opsi B

Jika Anda benar-benar perlu melakukan pembersihan penuh dan instal ulang, pertama-tama pastikan PostgreSQL tidak berjalan. ps -C postgresseharusnya tidak menunjukkan hasil.

Sekarang jalankan:

apt-get --purge remove postgresql\*

untuk menghapus semuanya PostgreSQL dari sistem Anda. Membersihkan postgrespaket saja tidak cukup karena hanya paket meta kosong.

Setelah semua paket PostgreSQL dihapus, jalankan:

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

Anda sekarang harus dapat:

apt-get install postgresql

atau untuk pemasangan lengkap:

apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4
John Mee
sumber
19
Saya telah mengerjakan ulang jawaban untuk menghapus saran untuk mengedit tangan /etc/passwddan /etc/groupmendukung yang lebih aman userdeldan groupdel. Selain itu, daripada menggunakan dselectuntuk pemilihan paket secara manual, gunakan wildcard yang tepat untuk mencocokkannya dengan andal.
Craig Ringer
11
+1 untuk pg_dropcluster!! (Contoh Penggunaan: pg_dropcluster --stop 9.1 main)
Anuj Gupta
5
tambahkan libpq5 dan libpq-dev ke daftar pembersihan itu, lib itu memberi saya BANYAK masalah, sampai saya menginstalnya kembali pada versi yang tepat
Rogerio Chaves
Bekerja pada Debian 8 dengan PostgreSQL 9.4 juga.
2
Saya juga akan menambahkan rm -r /var/log/postgresql.
Gregory Arenius
45

Saya memiliki situasi yang sama: Saya perlu membersihkan postgresql 9.1 dengan debian wheezy (saya sebelumnya bermigrasi dari 8.4 dan saya mendapatkan kesalahan).

Apa yang saya lakukan:

Pertama, saya menghapus konfigurasi dan basis data

$ sudo pg_dropcluster --stop 9.1 main

Kemudian dihapus postgresql

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

dan kemudian diinstal ulang

$ sudo apt-get install postgresql postgresql-9.1

Dalam kasus saya, saya perhatikan /etc/postgresql/9.1 kosong, dan berjalan service postgresql start tidak menghasilkan apa-apa

Jadi, setelah lebih banyak googling saya mendapatkan perintah ini:

$ sudo pg_createcluster 9.1 main

Dengan itu saya bisa memulai server, tetapi sekarang saya mendapatkan kesalahan terkait log. Setelah pencarian lebih lanjut, saya akhirnya mengubah izin ke direktori / var / log / postgresql

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

Itu memperbaiki masalah, Semoga ini bisa membantu

pengguna9869932
sumber
14

Langkah-langkah yang berhasil saya Ubuntu 8.04.2hapuspostgres 8.3

  1. Daftar Semua paket terkait 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. Hapus semua yang tercantum di atas

    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. Hapus folder berikut

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/
Mithun Sreedharan
sumber
Menghapus SEMUA paket terkait Postgres bekerja untuk saya. Saya memiliki beberapa paket 8,4 & 9,1 campur. Itu dikombinasikan dengan menghapus semuanya memungkinkan saya untuk menginstal ulang 9.1 dan semuanya bekerja dengan itu.
Nick
1
Jauh lebih mudah dengan wildcard:apt-get --purge remove postgresql\*
Craig Ringer
12

Saya tahu jawaban telah diberikan, tetapi dselect tidak bekerja untuk saya. Inilah yang berfungsi untuk menemukan paket yang akan dihapus:

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

Akhirnya, mengedit / etc / passwd dan / etc / group

Klaas van Schelven
sumber
Instruksi ini bekerja pada debian squeeze / sid
Evgeny
Cara lebih mudah menggunakan wildcard; lihat jawaban 1 yang diperbarui.
Craig Ringer
12
apt-get purge postgresql*

cukup.

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

Mengikuti langkah-langkah yang saya ikuti untuk menghapus dan menginstal ulang. Yang berhasil buat saya.

Pertama-tama hapus postgres yang terinstal: -

sudo apt-get purge postgr *

sudo apt-get autoremove

Kemudian instal 'sinaptik':

sudo apt-get install synaptic

sudo apt-get pembaruan

Kemudian instal postgres

sudo apt-get install postgresql postgresql-contrib

Gurudath BN
sumber
2

Saya baru saja mengalami masalah yang sama untuk Ubuntu 13.04. Perintah-perintah ini menghapus Postgres 9.1:

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

Terjadi pada saya bahwa mungkin hanya perintah kedua yang diperlukan, tetapi dari sana saya dapat menginstal Postgres 9.2 (sudo apt-get install postgresql-9.2).

Jeromy French
sumber
0

Saya mengikuti balasan, Saat mengedit / etc / group saya juga menghapus baris ini:

ssl-cert:x:112:postgres

kemudian, ketika mencoba menginstal postgresql, saya mendapatkan kesalahan ini

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)

Menempatkan kembali baris "ssl-cert: x: 112: postgres" di / etc / group tampaknya memperbaikinya (jadi saya dapat menginstal postgresql)

nivniv
sumber
2
Dalam menghapus baris, Anda menghapus seluruh grup "ssl-cert", yang dapat membuat kekacauan dengan ssl. Sebagai gantinya, untuk menghapus postgres dari grup ssl-cert, hapus "postgres" dari setelah titik dua.
John Mee
2
Instruksi asli sangat keliru dalam menyarankan Anda untuk mengedit tangan /etc/passwd. tidak pernah melakukan itu . Gunakan userdeldan groupdelperintah dan Anda tidak akan memiliki masalah yang di masa depan.
Craig Ringer
-2

Saya menghadapi masalah yang sama di ubuntu 16.04 saya

tetapi saya memperbaiki masalah itu dan sangat sederhana ikuti saja langkah ini dan Anda akan dapat menginstal postgresql 10 di sistem Anda:

Tambahkan ini ke sources.list Anda:

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

setelah itu tambahkan tautan ini ke file pgdg.list Anda jika tidak ada di sana Anda harus membuat && menambahkan tautan && menyimpannya.

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

kemudian perbarui sistem Anda

sudo apt-get update

sudo apt-get upgrade

dan instal dependensi yang tidak terpenuhi itu:

apt-get install ssl-cert

itu dia. sekarang Instal postgresql menggunakan perintah ini

sudo apt-get install postgresql-10
John Toppo
sumber