우분투에서 postgresql을 완전히 제거하고 다시 설치하는 방법은 무엇입니까? [닫은]


221

어떻게 든 우분투 karmic에 postgresql 설치를 완전히 버그 처리했습니다. 처음부터 다시 시작하고 싶지만 apt-get으로 패키지를 "퍼지"하면 다시 설치 구성이 제대로 실행되지 않는 흔적이 남습니다.

내가 한 후에 :

apt-get purge postgresql
apt-get install postgresql

그것은 말했다

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

"/ etc / postgresql"에 아무것도없고 "/ etc / postgresql-common /"에는 'pg_upgradecluser.d'디렉토리와 root.crt 및 user_clusters 파일이 있습니다.

/ etc / passwd에는 postgres 사용자가 있습니다. 제거 스크립트가이를 터치하지 않는 것 같습니다. 다음 증상을 드러내 기 위해 여러 가지 증상이 나타납니다.

바로이 두 번째 명령 인 "pg_createcluster ..."를 실행하면 '/var/lib/postgresql/8.4/main/postgresql.conf가 존재하지 않는다'고 불평하므로 그 중 하나를 찾아 보겠습니다. ' 그것이 끝나지 않을 것입니다.

그것을 완전히 태우고 다시 시작할 수있는 쉬운 한 라이너 (또는 두 개)가 있습니까?


2
한 번의 클릭으로 설치 프로그램을 사용해보십시오. 더 간단합니다. 디렉토리는 / etc / 및 / var에 흩어져 있지 않습니다. 그들은 모두 하나의 디렉토리에 저장됩니다
Michael Buen

2
이것은 일반적인 컴퓨팅 질문이 아니며 postgresql은 표준 스택 오버플로 주제입니다. 질문을 다시 열어야합니다.
Andrew

답변:


446

옵션 A

설치가 아직 손상되지 않은 경우을 사용하여 원하지 않는 PostgreSQL 서버 ( "클러스터")를 삭제할 수 있습니다 pg_dropcluster. 새로운 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

옵션 B

완전히 제거하고 다시 설치해야하는 경우 먼저 PostgreSQL이 실행되고 있지 않은지 확인하십시오. ps -C postgres결과가 표시되지 않아야합니다.

이제 다음을 실행하십시오.

apt-get --purge remove postgresql\*

시스템에서 모든 PostgreSQL을 제거합니다. 단지 postgres빈 메타 패키지이기 때문에 패키지를 제거하는 것만으로 는 충분하지 않습니다.

모든 PostgreSQL 패키지가 제거되면 다음을 실행하십시오.

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

이제 다음을 수행 할 수 있어야합니다.

apt-get install postgresql

또는 전체 설치 :

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

19
나는 손 편집에 조언을 제거 할 수있는 대답은 재 작업 한 /etc/passwd/etc/group안전에 찬성 userdelgroupdel. 또한 dselect패키지를 수동으로 선택하는 대신 적절한 와일드 카드를 사용하여 패키지를 안정적으로 일치시킵니다.
Craig Ringer

11
+1 pg_dropcluster!! (사용 예 : pg_dropcluster --stop 9.1 main)
아누 즈 굽타

5
libpq5와 libpq-dev를 해당 제거 목록에 추가하면 올바른 버전으로 다시 설치할 때까지 lib가 많은 문제를 겪었습니다.
Rogerio Chaves

PostgreSQL 9.4와 함께 Debian 8에서도 작동합니다.

2
나는 또한 추가 할 것이다 rm -r /var/log/postgresql.
그레고리 아 레니 우스

45

비슷한 상황이 발생했습니다 : debian wheezy에서 postgresql 9.1을 제거해야했습니다 (이전에 8.4에서 마이그레이션했으며 오류가 발생했습니다).

제가 한:

먼저 구성 및 데이터베이스를 삭제했습니다.

$ sudo pg_dropcluster --stop 9.1 main

그런 다음 postgresql을 제거했습니다.

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

그리고 다시 설치

$ sudo apt-get install postgresql postgresql-9.1

필자의 경우 /etc/postgresql/9.1이 비어 있고 실행 중 service postgresql start아무것도 반환하지 않습니다.

그래서 더 인터넷 검색을 한 후이 명령을 받았습니다.

$ sudo pg_createcluster 9.1 main

이를 통해 서버를 시작할 수 있었지만 이제 로그 관련 오류가 발생했습니다. 더 많은 검색을 한 후 / var / log / postgresql 디렉토리에 대한 권한을 변경했습니다.

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

문제가 해결되었습니다. 희망이 있습니다.


14

나를 Ubuntu 8.04.2제거하기 위해 일한 단계postgres 8.3

  1. 모든 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. 위에 나열된 모든 항목을 제거

    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. 다음 폴더를 제거하십시오

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

모든 Postgres 관련 패키지를 제거하면 효과적이었습니다. 8.4 & 9.1 패키지가 섞여있었습니다. 모든 것을 제거하는 것과 함께 마침내 9.1을 다시 설치하고 모든 것을 사용할 수있었습니다.
Nick

1
와일드 카드를 사용하면 훨씬 더 쉬워집니다.apt-get --purge remove postgresql\*
Craig Ringer

12

답변이 이미 제공되었지만 dselect가 작동하지 않는다는 것을 알고 있습니다. 제거 할 패키지를 찾는 방법은 다음과 같습니다.

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

마지막으로 / etc / passwd 및 / etc / group 편집


이 지침은 debian squeeze / sid
Evgeny

와일드 카드를 사용하는 것이 더 쉽습니다. 업데이트 된 첫 번째 답변을 참조하십시오.
Craig Ringer


9

다음 단계에 따라 제거하고 다시 설치했습니다. 어느 것이 나를 위해 일했습니다.

먼저 설치된 postgres를 제거하십시오.

sudo apt-get purge postgr *

sudo apt-get 자동 제거

그런 다음 'synaptic'을 설치하십시오.

sudo apt-get 설치 시냅틱

sudo apt-get 업데이트

그런 다음 postgres를 설치하십시오

sudo apt-get 설치 postgresql postgresql-contrib


2

우분투 13.04와 동일한 문제가 발생했습니다. 이 명령은 Postgres 9.1을 제거했습니다.

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

아마도 두 번째 명령 만 필요할 수도 있지만 Postgres 9.2 (sudo apt-get install postgresql-9.2) 를 설치할 수있었습니다 .


0

/ etc / group을 편집 할 때이 줄을 삭제했습니다.

ssl-cert:x:112:postgres

그런 다음 postgresql을 설치하려고 할 때이 오류가 발생했습니다.

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"줄을 / etc / group에 다시 넣으면 문제가 해결 된 것 같습니다 (따라서 postgresql을 설치할 수있었습니다)


2
줄을 삭제하면 전체 "ssl-cert"그룹이 제거되어 ssl로 혼란을 일으킬 수 있습니다. 대신 ssl-cert 그룹에서 postgres를 제거하려면 콜론 다음에서 "postgres"를 삭제하십시오.
John Mee

2
원본 지침은 사용자가 직접 편집하도록 조언하는 데 매우 잘못되었습니다 /etc/passwd. 절대 그렇게하지 마십시오 . userdelgroupdel명령을 사용하면 나중에 해당 문제가 발생하지 않습니다.
Craig Ringer

-2

우분투 16.04에서 동일한 문제에 직면했습니다.

그러나 나는 그 문제를 해결했고 매우 간단합니다.이 단계를 따르면 시스템에 postgresql 10을 설치할 수 있습니다 :

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

그런 다음 pgdg.list 파일에이 링크를 추가하십시오 (없는 경우 링크를 추가 및 추가 및 저장).

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

그런 다음 시스템을 업데이트하십시오

sudo apt-get update

sudo apt-get upgrade

충족되지 않은 종속성을 설치하십시오.

apt-get install ssl-cert

그게 다야. 이제 다음 명령을 사용하여 postgresql을 설치하십시오

sudo apt-get install postgresql-10
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.