Làm thế nào để thanh lọc triệt để và cài đặt lại postgresql trên ubfox? [đóng cửa]


221

Bằng cách nào đó, tôi đã xoay sở để hoàn toàn cài đặt postgresql trên Ubuntu karmic. Tôi muốn bắt đầu lại từ đầu, nhưng khi tôi "thanh lọc" 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.

Sau khi tôi đã hoàn thành:

apt-get purge postgresql
apt-get install postgresql

Nó nói rằng

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ó thư mục 'pg_upgradecluser.d' và các tập tin root.crt và user_cl cluster.

/ Etc / passwd có người dùng postgres; kịch bản thanh trừng không xuất hiện để chạm vào nó. Có một loạt các triệu chứng mà tôi làm việc chỉ để phơi bày 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ẽ đi tìm một trong số đó nhưng tôi 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ố dễ dàng (hoặc hai) sẽ đốt cháy nó hoàn toàn và để tôi bắt đầu lại?


2
Hãy thử trình cài đặt bằng một lần nhấp, đơn giản hơn, các thư mục của nó không nằm rải rác trong / etc / và / var. Tất cả đều được lưu trữ trong một thư mục
Michael Buen

2
Đây không phải là một câu hỏi tính toán chung và postgresql là chủ đề stackoverflow tiêu chuẩn. Câu hỏi nên được mở lại.
Andrew

Câu trả lời:


446

Lựa chọn A

Nếu cài đặt của bạn chưa bị hỏng, bạn có thể loại bỏ các máy chủ PostgreSQL không mong muốn ("cụm") bằng cách sử dụng pg_dropcluster. Sử dụng tùy chọn đó để thanh lọc đầy đủ và cài đặt lại nếu bạn chỉ muốn khởi động lại với một phiên bản PostgreQuery mới.

$ 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

Lựa chọn B

Nếu bạn thực sự cần phải thực hiện một cuộc thanh lọc đầy đủ và cài đặt lại, trước tiên hãy đảm bảo PostgreSQL không chạy. ps -C postgresnên hiển thị không có kết quả.

Bây giờ chạy:

apt-get --purge remove postgresql\*

để xóa mọi thứ PostgreSQL khỏi hệ thống của bạn. Chỉ cần thanh trừngpostgres gói là không đủ vì nó chỉ là một gói meta trống.

Khi tất cả các gói PostgreSQL đã bị xóa, 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 có thể:

apt-get install postgresql

hoặc để cài đặt hoàn chỉnh:

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/etc/groupủng hộ an toàn hơn userdelgroupdel. Ngoài ra, thay vì sử dụng dselectđể lựa chọn các gói, hãy sử dụng thẻ đại diện apt để khớp chúng một cách đáng tin cậy.
Craig Ringer

11
+1 cho pg_dropcluster!! (Cách sử dụng ví dụ pg_dropcluster --stop 9.1 main:)
Anuj Gupta

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 phù hợp
Rogerio Chaves

Hoạt động trên Debian 8 với PostgreQuery 9.4.

2
Tôi cũng sẽ thêm rm -r /var/log/postgresql.
Gregory Arenius

45

Tôi đã có một tình huống tương tự: Tôi cần phải thanh lọc postgresql 9.1 trên một cơn khò khè debian (trước đây tôi đã di chuyển từ 8.4 và tôi đã gặp lỗi).

Tôi đã làm gì:

Đầ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 trống và chạy service postgresql startkhông trả về

Vì vậy, sau khi googling nhiều hơn, tôi đã nhận được lệnh này:

$ sudo pg_createcluster 9.1 main

Với điều đó tôi có thể khởi động máy chủ, nhưng bây giờ tôi đã nhận được các lỗi liên quan đến nhật ký. Sau khi tìm kiếm nhiều hơn, cuối cùng tôi đã thay đổi quyền cho thư mục / var / log / postgresql

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

Điều đó đã khắc phục vấn đề, Hy vọng điều này sẽ giúp


14

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

  1. Liệt kê tất cả các gói liên quan đến 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. Xóa tất cả các danh sách trên

    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. Xóa các thư mục sau

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

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

1
Dễ dàng hơn nhiều với ký tự đại diện:apt-get --purge remove postgresql\*
Craig Ringer

12

Tôi biết một câu trả lời đã được cung cấp, nhưng DSelect không hoạt động với tôi. Đây là những gì đã làm việc để tìm các 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


Các hướng dẫn này hoạt động trên bóp / sidian
Evgeny

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.
Craig Ringer


9

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

Đầu tiên xóa các postgres đã cài đặt: -

sudo apt-get thanh trừng postgr *

sudo apt-get autoremove

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

sudo apt-get cài đặt synap

sudo apt-get cập nhật

Sau đó cài đặt postgres

sudo apt-get cài đặt postgresql postgresql-contrib


2

Tôi vừa gặp vấn đề tương tự cho Ubuntu 13.04. Các lệnh này đã xóa 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ỉ cần lệnh thứ hai là cần thiết, nhưng từ đó tôi đã có thể cài đặt Postgres 9.2 (sudo apt-get install postgresql-9.2).


0

Tôi đã theo dõi các câu trả lời, Khi chỉnh sửa / etc / nhóm tôi cũng đã xóa dòng này:

ssl-cert:x:112:postgres

Sau đó, khi cố gắng cài đặt postgresql, tôi đã gặp 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)

Đặt dòng "ssl-cert: x: 112: postgres" vào / etc / group dường như để sử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", 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 dấu hai chấm.
John Mee

2
Các hướng dẫn ban đầu đã rất sai lầm khi khuyên bạn chỉnh sửa bằng tay /etc/passwd. không bao giờ làm điều đó . Sử dụng userdelgroupdelcác lệnh và bạn sẽ không phải vấn đề đó trong tương lai.
Craig Ringer

-2

Tôi đã phải đối mặt với vấn đề tương tự trong Ubuntu 16.04 của tôi

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

Thêm phần này vào nguồn của bạn.

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 đó thêm các liên kết này vào tệp pgdg.list của bạn nếu 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 các 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ác lệnh này

sudo apt-get install postgresql-10
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.