Ubuntu'da postgresql'i nasıl tamamen temizleyebilir ve yeniden yükleyebilirim? [kapalı]


221

Her nasılsa Ubuntu karmik üzerine postgresql kurulumunu tamamen bulandırdım. Sıfırdan başlamak istiyorum, ancak paketi apt-get ile "temizlediğimde", yeniden yükleme yapılandırmasının düzgün çalışmadığı şekilde geride izler bırakıyor.

Yaptıktan sonra:

apt-get purge postgresql
apt-get install postgresql

O dedi

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

İçinde hiçbir şey ile bir "/ etc / postgresql" var ve "/ etc / postgresql-common /" bir 'pg_upgradecluser.d' dizini ve root.crt ve user_clusters dosyaları var.

/ Etc / passwd dosyasının bir postgres kullanıcısı vardır; temizleme komut dosyası dokunmuyor gibi görünüyor. Sadece bir sonrakini ortaya çıkarmak için üzerinde çalıştığım bir sürü semptom vardı.

Tam bu saniye, "pg_createcluster ..." komutunu çalıştırdığımda, '/var/lib/postgresql/8.4/main/postgresql.conf mevcut değil' ifadesinden şikayet ediyor, bu yüzden bunlardan birini bulacağım eminim bunun sonu olmayacak.

Tamamen yanacak ve baştan başlamama izin verecek kolay bir astar (veya iki) yok mu?


2
Tek tıklamayla yükleyiciyi deneyin, daha basit, dizinleri / etc / ve / var. Hepsi bir dizinde saklanır
Michael Buen

2
Bu genel bir bilgi işlem sorusu değildir ve postgresql standart stackoverflow konusudur. Soru yeniden açılmalıdır.
Andrew

Yanıtlar:


446

Seçenek A

Yüklemeniz zaten zarar görmediyse, istenmeyen PostgreSQL sunucularını ("kümeler") kullanarak bırakabilirsiniz pg_dropcluster. Yeni bir PostgreSQL örneğiyle yeniden başlatmak istiyorsanız, tam bir temizleme ve yeniden yükleme yerine bunu kullanın.

$ 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

Seçenek B

Gerçekten tam bir temizleme ve yeniden yükleme yapmanız gerekiyorsa, önce PostgreSQL'in çalışmadığından emin olun. ps -C postgressonuç göstermemelidir.

Şimdi çalıştırın:

apt-get --purge remove postgresql\*

PostgreSQL sisteminizden her şeyi kaldırmak için. Sadece postgresboş bir meta-paket olduğu için paketi temizlemek yeterli değildir.

Tüm PostgreSQL paketleri kaldırıldıktan sonra çalıştırın:

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

Artık şunları yapabilmelisiniz:

apt-get install postgresql

veya tam kurulum için:

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

19
El düzenleme /etc/passwdve /etc/groupdaha güvenli userdelve lehine tavsiyeleri kaldırmak için cevabı yeniden çalıştım groupdel. Ayrıca, dselectpaketlerin elle seçimi için kullanmak yerine , güvenilir bir şekilde eşleştirmek için uygun bir joker karakter kullanın.
Craig Ringer

11
+1 için pg_dropcluster!! (Örnek Kullanım: pg_dropcluster --stop 9.1 main)
Anuj Gupta

5
Bu temizleme listesine libpq5 ve libpq-dev'i ekleyin, doğru sürümde yeniden yükleyene kadar lib bana bir sürü sorun verdi
Rogerio Chaves

PostgreSQL 9.4 ile Debian 8 üzerinde de çalışır.

2
Ben de eklerdim rm -r /var/log/postgresql.
Gregory Arenius

45

Ben de benzer bir durum vardı: Ben debian wheezy postgresql 9.1 temizlemek gerekiyordu (daha önce 8.4 göç vardı ve hata alıyordu).

Ben ne yaptım:

İlk olarak, config ve veritabanını sildim

$ sudo pg_dropcluster --stop 9.1 main

Sonra postgresql kaldırıldı

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

ve sonra yeniden yüklendi

$ sudo apt-get install postgresql postgresql-9.1

Benim durumumda /etc/postgresql/9.1 'in boş olduğunu ve koşmanın service postgresql starthiçbir şey döndürmediğini fark ettim

Daha fazla googling yaptıktan sonra bu komuta geldim:

$ sudo pg_createcluster 9.1 main

Bununla sunucuyu başlatabilirdim, ama şimdi log ile ilgili hatalar alıyordum. Daha fazla aramanın ardından, / var / log / postgresql dizinine izinleri değiştirdim

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

Bu sorunu çözdü, umarım bu yardımcı olur


14

Ubuntu 8.04.2Kaldırmak için benim için çalışan adımlarpostgres 8.3

  1. Postgres ile ilgili tüm paketleri listele

    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. Yukarıda listelenenlerin tümünü kaldır

    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. Aşağıdaki klasörleri kaldırın

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

TÜM Postgres ile ilgili paketleri kaldırmak benim için çalıştı. Bazı 8.4 & 9.1 paketleri karışık vardı. Bu, her şeyi kaldırmakla birleştiğinde sonunda 9.1'i yeniden yüklememe ve her şeyin onunla çalışmasına izin verdi.
Nick

1
Bir joker karakterle çok daha kolay:apt-get --purge remove postgresql\*
Craig Ringer

12

Bir cevabın verilmiş olduğunu biliyorum, ama dselect benim için çalışmadı. Kaldırılacak paketleri bulmak için çalışanlar şunlardır:

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

Son olarak, / etc / passwd ve / etc / group öğelerini düzenleme


Bu talimatlar debian squeeze / sid üzerinde çalıştı
Evgeny

Joker karakter kullanmak çok daha kolay; güncellenmiş 1. cevaba bakınız.
Craig Ringer


9

Ae adımlarını kaldırmak ve yeniden yüklemek için takip edilen adımlar. Hangi benim için çalıştı.

Önce kurulu postgresleri kaldırın: -

sudo apt-get temizleme postgr *

sudo apt-get otomatik çalıştırma

Sonra 'sinaptik' kurun:

sudo apt-get yükleme sinaptik

sudo uygun-güncelleme

Sonra postgres yükleyin

sudo uygun-get install postgresql postgresql-katkıda


2

Ubuntu 13.04 için de aynı sorunla karşılaştım. Bu komutlar Postgres 9.1'i kaldırdı:

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

Bana sadece ikinci komutun gerekli olduğu, ancak oradan Postgres 9.2'yi (sudo apt-get install postgresql-9.2) yükleyebildim.


0

Cevapları takip ediyordum, / etc / group'u düzenlerken bu satırı da sildim:

ssl-cert:x:112:postgres

sonra, postgresql yüklemeye çalışırken, bu hatayı aldım

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)

"/ Ssl-cert: x: 112: postgres" satırını / etc / group içine koymak düzeltmek gibi görünüyor (bu yüzden postgresql yükleyebildim)


2
Satırı silerken, ssl ile hasara yol açabilecek tüm "ssl-cert" grubunu kaldırdınız. Bunun yerine, ssl-cert grubundan postgres kaldırmak için iki nokta üst üste sonra "postgres" silin.
John Mee

2
Orijinal talimatlar, el ile düzenlemenizi tavsiye etmede çok yanlıştı /etc/passwd. bunu asla yapma . userdelVe groupdelkomutlarını kullanın ve gelecekte bu sorunla karşılaşmayacaksınız.
Craig Ringer

-2

Benim ubuntu 16.04 aynı sorunla karşı karşıya idi

ama ben bu sorunu düzeltti ve çok basit sadece bu adımı izleyin ve sisteminize postgresql 10 yükleyebilirsiniz:

Bunu sources.list'e ekleyin:

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

Bundan sonra bu bağlantıyı pgdg.list dosyanıza ekleyin, yoksa & & link ekle && kaydetmeniz gerekir.

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

sonra sisteminizi güncelleyin

sudo apt-get update

sudo apt-get upgrade

ve karşılanmayan bağımlılıkları yükleyin:

apt-get install ssl-cert

bu kadar. Şimdi bu komutu kullanarak postgresql yükleyin

sudo apt-get install postgresql-10
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.