Como limpar completamente e reinstalar o postgresql no ubuntu? [fechadas]

221

De alguma forma, eu consegui corrigir completamente a instalação do postgresql no Ubuntu karmic. Eu quero começar do zero, mas quando "limpo" o pacote com o apt-get, ele ainda deixa rastros para trás, de modo que a configuração de reinstalação não funcione corretamente.

Depois que eu fiz:

apt-get purge postgresql
apt-get install postgresql

Dizia

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

Eu tenho um "/ etc / postgresql" sem nada e "/ etc / postgresql-common /" tem um diretório 'pg_upgradecluser.d' e arquivos root.crt e user_clusters.

O / etc / passwd possui um usuário do postgres; o script de eliminação não parece tocá-lo. Houve vários sintomas nos quais eu trabalho apenas para expor o próximo.

Nesse exato momento, quando executo o comando "pg_createcluster ...", ele reclama que '/var/lib/postgresql/8.4/main/postgresql.conf não existe', então vou encontrar um desses, mas eu ' Tenho certeza de que não será o fim disso.

Não há uma linha simples (ou duas) que a queime completamente e deixe-me começar de novo?

John Mee
fonte
2
Experimente o instalador com um clique, é mais simples, seus diretórios não estão espalhados em / etc / e / var. Eles são armazenados em um diretório
Michael Buen
2
Esta não é uma questão geral de computação, e o postgresql é um tópico padrão do stackoverflow. A pergunta deve ser reaberta.
Andrew

Respostas:

446

Opção A

Se a sua instalação ainda não estiver danificada, você poderá descartar servidores PostgreSQL ("clusters") indesejados usando pg_dropcluster. Use isso de preferência para uma limpeza completa e reinstale se você quiser apenas reiniciar com uma nova instância do 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

Opção B

Se você realmente precisar fazer uma limpeza completa e reinstalar, primeiro verifique se o PostgreSQL não está sendo executado. ps -C postgresnão deve mostrar resultados.

Agora execute:

apt-get --purge remove postgresql\*

para remover tudo PostgreSQL do seu sistema. Apenas limpar o postgrespacote não é suficiente, pois é apenas um meta-pacote vazio.

Depois que todos os pacotes do PostgreSQL forem removidos, execute:

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

Agora você deve ser capaz de:

apt-get install postgresql

ou para uma instalação completa:

apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4
John Mee
fonte
19
Eu reformulei a resposta para remover os conselhos para edição manual /etc/passwde a /etc/groupfavor de mais seguro userdele groupdel. Além disso, em vez de usar dselectpara seleção manual de pacotes, use um curinga apt para combiná-los de maneira confiável.
Craig Ringer
11
+1 para pg_dropcluster!! (Exemplo de Uso: pg_dropcluster --stop 9.1 main)
Anuj Gupta
5
adicionar libpq5 e libpq-dev a essa lista expurgo, que lib me deu um monte de problemas, até que eu reinstalado-lo na versão correta
Rogério Chaves
Também funciona no Debian 8 com PostgreSQL 9.4.
2
Eu também acrescentaria rm -r /var/log/postgresql.
Gregory Arenius
45

Eu tive uma situação semelhante: eu precisava limpar o postgresql 9.1 em um debian wheezy (eu já havia migrado da 8.4 e estava recebendo erros).

O que eu fiz:

Primeiro, apaguei a configuração e o banco de dados

$ sudo pg_dropcluster --stop 9.1 main

Em seguida, removeu o postgresql

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

e depois reinstalado

$ sudo apt-get install postgresql postgresql-9.1

No meu caso, notei que o /etc/postgresql/9.1 estava vazio e a execução service postgresql startnão retornou nada

Então, depois de mais pesquisas, cheguei a este comando:

$ sudo pg_createcluster 9.1 main

Com isso, eu poderia iniciar o servidor, mas agora estava recebendo erros relacionados ao log. Após mais pesquisas, acabei alterando as permissões para o diretório / var / log / postgresql

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

Isso resolveu o problema. Espero que ajude

user9869932
fonte
14

Etapas que funcionaram para Ubuntu 8.04.2removerpostgres 8.3

  1. Listar todos os pacotes relacionados ao 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. Remova todas as listadas acima

    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. Remova as seguintes pastas

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/
Mithun Sreedharan
fonte
A remoção de TODOS os pacotes relacionados ao Postgres funcionou para mim. Eu tinha alguns pacotes 8.4 e 9.1 misturados. Isso, combinado com a remoção de tudo, permitiu-me finalmente reinstalar a 9.1 e ter tudo para funcionar.
25412 Nick
1
Muito mais fácil com um curinga:apt-get --purge remove postgresql\*
Craig Ringer
12

Eu sei que uma resposta já foi fornecida, mas o dselect não funcionou para mim. Aqui está o que funcionou para encontrar os pacotes a serem removidos:

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

Por fim, editando / etc / passwd e / etc / group

Klaas van Schelven
fonte
Estas instruções funcionaram no debian squeeze / sid
Evgeny
É muito mais fácil usar um curinga; veja a 1ª resposta atualizada.
Craig Ringer
12
apt-get purge postgresql*

basta.

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

Seguindo ae as etapas que segui para desinstalar e reinstalar. O que funcionou para mim.

Primeiro remova o postgres instalado: -

sudo apt-get purge postgr *

sudo apt-get autoremove

Em seguida, instale 'synaptic':

sudo apt-get install synaptic

sudo apt-get update

Em seguida, instale o postgres

sudo apt-get install postgresql postgresql-contrib

Gurudath BN
fonte
2

Acabei de encontrar o mesmo problema no Ubuntu 13.04. Esses comandos removeram o Postgres 9.1:

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

Ocorre-me que talvez apenas o segundo comando seja necessário, mas a partir daí eu consegui instalar o Postgres 9.2 (sudo apt-get install postgresql-9.2).

Jeromy French
fonte
0

Eu estava seguindo as respostas: Ao editar o / etc / group, também excluí esta linha:

ssl-cert:x:112:postgres

então, ao tentar instalar o postgresql, recebi esse erro

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)

Colocar a linha "ssl-cert: x: 112: postgres" de volta no / etc / group parece corrigi-lo (para que eu pudesse instalar o postgresql)

nivniv
fonte
2
Ao excluir a linha, você removeu todo o grupo "ssl-cert", o que poderia causar estragos no ssl. Em vez disso, para remover o postgres do grupo ssl-cert, exclua "postgres" após os dois pontos.
John Mee
2
As instruções originais foram muito equivocadas ao aconselhá-lo a editar manualmente /etc/passwd. nunca faça isso . Use as userdele groupdelcomandos e você não terá esse problema no futuro.
Craig Ringer
-2

Eu estava enfrentando o mesmo problema no meu ubuntu 16.04

mas resolvi esse problema e é muito simples, basta seguir estas etapas e você poderá instalar o postgresql 10 no seu sistema:

Adicione isso ao seu 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

depois disso, adicione esses links ao seu arquivo pgdg.list, se não estiver lá, você deverá criar && add link && salvá-lo.

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

então atualize seu sistema

sudo apt-get update

sudo apt-get upgrade

e instale as dependências não atendidas:

apt-get install ssl-cert

é isso aí. agora instale o postgresql usando estes comandos

sudo apt-get install postgresql-10
John Toppo
fonte