2010-05-01 36 views
195

Bằng cách nào đó, tôi đã quản lý hoàn toàn việc cài đặt postgresql trên hệ điều hành Ubuntu. Tôi muốn bắt đầu lại từ đầu, nhưng khi tôi "tẩy" gói với apt-get nó vẫn để lại dấu vết phía sau sao cho cấu hình cài đặt lại không chạy đúng cách.Làm thế nào để triệt để thanh lọc và cài đặt lại postgresql trên ubuntu?

Sau khi tôi đã thực hiện:

apt-get purge postgresql 
apt-get install postgresql 

Nó nói

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

Tôi có một "/ etc/postgresql" không có gì trong đó và "/ etc/postgresql-common /" có tệp 'pg_upgradecluser.d' và tệp root.crt và user_clusters.

/etc/passwd có người dùng postgres; kịch bản thanh lọc dường như không chạm vào nó. Có một loạt các triệu chứng mà tôi làm việc chỉ để lộ tiếp theo.

Ngay giây phút này, khi tôi chạy lệnh "pg_createcluster ...", nó phàn nàn rằng '/var/lib/postgresql/8.4/main/postgresql.conf không tồn tại', vì vậy tôi sẽ tìm một trong nhưng tôi chắc chắn rằng đó sẽ không phải là kết thúc của nó.

Không có một số lớp lót dễ dàng (hoặc hai) sẽ ghi nó hoàn toàn và để tôi bắt đầu lại?

+2

Thử trình cài đặt một cú nhấp chuột, đơn giản hơn, thư mục của nó không nằm trong/etc/và/var. Tất cả chúng đều được lưu trữ trong một thư mục –

Trả lời

379

Đầu tiên: Nếu bản cài đặt của bạn chưa bị hỏng, bạn có thể thả các máy chủ PostgreSQL không mong muốn ("cụm") trong Ubuntu bằng cách sử dụng pg_dropcluster. Sử dụng tùy chọn đó để ưu tiên toàn bộ quá trình lọc và cài đặt lại nếu bạn chỉ muốn bắt đầu với phiên bản PostgreSQL mới của initdb 'd.

Nếu bạn thực sự cần phải làm sạch hoàn toàn và cài đặt lại, trước tiên hãy đảm bảo PostgreSQL không chạy. ps -C postgres sẽ không hiển thị kết quả nào.

Bây giờ chạy:

apt-get --purge remove postgresql\* 

để loại bỏ tất cả mọi thứ PostgreSQL từ hệ thống của bạn. Chỉ cần dọn dẹp gói postgres là không đủ vì nó chỉ là một gói meta rỗng.

Khi tất cả các gói PostgreSQL đã được loại bỏ, hãy chạy:

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

Bây giờ bạn sẽ có thể:

apt-get install postgresql 

hoặc cho một cài đặt hoàn tất:

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

Tôi đã làm lại câu trả lời để xóa lời khuyên để chỉnh sửa bằng tay '/ etc/passwd' và'/etc/group' có lợi cho 'userdel' và' groupdel' an toàn hơn. Ngoài ra, thay vì sử dụng 'dselect' để chọn thủ công các gói, hãy sử dụng ký tự đại diện apt để khớp chúng một cách đáng tin cậy. –

+11

+1 cho 'pg_dropcluster' !! (Ví dụ sử dụng: 'pg_dropcluster --stop 9.1 main') –

+5

thêm libpq5 và libpq-dev vào danh sách thanh lọc đó, lib đó đã cho tôi rất nhiều vấn đề, cho đến khi tôi cài đặt lại nó trên phiên bản bên phải –

11

tôi biết một câu trả lời đã được cung cấp, nhưng dselect đã không làm việc cho tôi.Đây là những gì làm việc để tìm ra gói để loại bỏ:

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

Cuối cùng, chỉnh sửa/etc/passwd và/etc/group

+0

Các hướng dẫn này hoạt động trên debian squeeze/sid – Evgeny

+0

Cách dễ dàng hơn để sử dụng ký tự đại diện; xem câu trả lời đầu tiên được cập nhật. –

0

tôi sau khi trả lời, Khi chỉnh sửa/etc/group Tôi cũng bị xóa dòng này:

ssl-cert:x:112:postgres 

sau đó, khi cố gắng cài đặt postgresql, tôi đã nhận lỗi này

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) 

Đưa "ssl-CERT: x: 112: postgres" dòng trở lại trong/etc/group dường như để sửa chữa nó (vì vậy tôi đã có thể cài đặt postgresql)

+2

Khi xóa dòng bạn đã xóa toàn bộ nhóm "ssl-cert", điều này có thể tạo ra sự tàn phá với ssl. Thay vào đó, để xóa postgres khỏi nhóm ssl-cert, hãy xóa "postgres" khỏi sau dấu hai chấm. –

+1

Các hướng dẫn ban đầu đã rất sai lầm trong việc tư vấn cho bạn để chỉnh sửa tay '/ etc/passwd'. *không bao giờ làm điều đó*. Sử dụng các lệnh 'userdel' và' groupdel' và bạn sẽ không gặp phải vấn đề đó trong tương lai. –

11

bước mà làm việc cho tôi trên Ubuntu 8.04.2 để loại bỏ postgres 8.3

  1. Danh sách Tất cả Postgres gói liên quan

    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. Hủy bỏ tất cả ở trên liệt kê

    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. Di chuyển các thư mục sau

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

Xóa tất cả các gói có liên quan đến Postgres làm việc cho tôi. Tôi đã có một số gói 8.4 và 9.1 trộn lẫn. Điều đó kết hợp với việc loại bỏ tất cả mọi thứ cho phép tôi cuối cùng cài đặt lại 9.1 và có tất cả mọi thứ làm việc với nó. – Nick

+1

Dễ dàng hơn nhiều với ký tự đại diện: 'apt-get --purge xóa postgresql \ *' –

10
apt-get purge postgresql* 

là đủ.

+2

apt-get autoremove postgresql * – johndpope

2

Tôi vừa gặp sự cố tương tự với Ubuntu 13.04. Những lệnh loại bỏ Postgres 9.1:

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

Nó xảy ra với tôi rằng có lẽ chỉ lệnh thứ hai là cần thiết, nhưng từ đó tôi đã có thể install Postgres 9.2 (sudo apt-get install postgresql-9.2).

35

Tôi đã có một tình huống tương tự: Tôi cần xóa sạch postgresql 9.1 trên debian wheezy (trước đây tôi đã di chuyển từ 8.4 và tôi đã nhận được lỗi).

Những gì tôi đã làm:

Đầu tiên, tôi đã xóa cấu hình và cơ sở dữ liệu

$ sudo pg_dropcluster --stop 9.1 main 

Sau đó, loại bỏ postgresql

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

và sau đó cài đặt lại

$ sudo apt-get install postgresql postgresql-9.1 

Trong trường hợp của tôi, tôi nhận thấy/etc/postgresql/9.1 hoàn toàn trống rỗng, và chạy service postgresql start trở gì

Vì vậy, sau hơn googling tôi đã lệnh này:

$ sudo pg_createcluster 9.1 main 

Với rằng tôi có thể bắt đầu các máy chủ, nhưng bây giờ tôi đã nhận được lỗi đăng nhập liên quan. Sau khi tìm kiếm hơn, tôi đã kết thúc việc thay đổi quyền truy cập vào thư mục/var/log/postgresql thư mục

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

Đó khắc phục vấn đề Hope this helps

5

Tiếp theo ae các bước tôi theo sau để gỡ bỏ cài đặt và cài đặt lại. Mà làm việc cho tôi.

Đầu tiên loại bỏ các postgres cài đặt: -

sudo apt-get purge postgr *

sudo apt-get autoremove

Sau đó, cài đặt 'synaptic':

sudo apt-get install synaptic

sudo apt-get update

Sau đó cài đặt postgres

sudo apt-get install postgresql postgresql-contrib

-1

tôi đối mặt với cùng một vấn đề trong ubuntu của tôi 16.04

nhưng tôi cố định vấn đề đó và nó rất đơn giản chỉ cần làm theo các bước và bạn sẽ có thể cài đặt postgresql 10 trong hệ thống của bạn:

Thêm phần này vào 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 

sau khi add rằng các liên kết này tới tệp pgdg.list của bạn nếu nó không có ở đó bạn phải tạo & & thêm liên kết & & lưu nó.

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 

sau đó cập nhật hệ thống của bạn

sudo apt-get update 

sudo apt-get upgrade 

và cài đặt mà phụ thuộc chưa được đáp ứng:

apt-get install ssl-cert 

đó là nó. bây giờ Cài đặt postgresql bằng cách sử dụng các lệnh này

sudo apt-get install postgresql-10 

Chúc mừng mã hóa!

Các vấn đề liên quan