Comment purger et réinstaller complètement postgresql sur Ubuntu? [fermé]

221

D'une manière ou d'une autre, j'ai réussi à bugger complètement l'installation de postgresql sur Ubuntu karmic. Je veux recommencer à zéro, mais quand je «purge» le paquet avec apt-get, il laisse toujours des traces telles que la configuration de réinstallation ne fonctionne pas correctement.

Après avoir fait:

apt-get purge postgresql
apt-get install postgresql

Ça disait

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

J'ai un "/ etc / postgresql" sans rien et "/ etc / postgresql-common /" a un répertoire 'pg_upgradecluser.d' et des fichiers root.crt et user_clusters.

/ Etc / passwd a un utilisateur postgres; le script de purge ne semble pas le toucher. Il y a eu un tas de symptômes sur lesquels je ne travaille que pour exposer le suivant.

Dès cette seconde, lorsque j'exécute cette commande "pg_createcluster ...", elle se plaint que '/var/lib/postgresql/8.4/main/postgresql.conf n'existe pas', donc je vais en trouver un mais je ' Je suis sûr que ce ne sera pas la fin.

N'y a-t-il pas un simple revêtement (ou deux) qui le brûle complètement et me laisse recommencer?

John Mee
la source
2
Essayez l'installateur en un clic, c'est plus simple, ses répertoires ne sont pas dispersés dans / etc / et / var. Ils sont tous stockés dans un répertoire
Michael Buen
2
Ce n'est pas une question informatique générale, et postgresql est un sujet de stackoverflow standard. La question devrait être rouverte.
Andrew

Réponses:

446

Option A

Si votre installation n'est pas déjà endommagée, vous pouvez supprimer les serveurs PostgreSQL ("clusters") indésirables à l'aide de pg_dropcluster. Utilisez-le de préférence à une purge complète et réinstallez si vous souhaitez simplement redémarrer avec une nouvelle instance 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

Option B

Si vous devez vraiment effectuer une purge complète et réinstaller, assurez-vous d'abord que PostgreSQL n'est pas en cours d'exécution. ps -C postgresne devrait montrer aucun résultat.

Maintenant, lancez:

apt-get --purge remove postgresql\*

pour supprimer tout PostgreSQL de votre système. Il postgresne suffit pas de purger le package car il s'agit simplement d'un méta-package vide.

Une fois tous les packages PostgreSQL supprimés, exécutez:

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

Vous devriez maintenant pouvoir:

apt-get install postgresql

ou pour une installation complète:

apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4
John Mee
la source
19
J'ai retravaillé la réponse pour supprimer les conseils de modification manuelle /etc/passwdet /etc/groupen faveur de plus sûr userdelet groupdel. De plus, plutôt que d'utiliser dselectpour la sélection manuelle des packages, utilisez un caractère générique apt pour les faire correspondre de manière fiable.
Craig Ringer
11
+1 pour pg_dropcluster!! (Exemple d' utilisation: pg_dropcluster --stop 9.1 main)
Anuj Gupta
5
ajoutez libpq5 et libpq-dev à cette liste de purge, cette lib m'a donné BEAUCOUP de problèmes, jusqu'à ce que je la réinstalle sur la bonne version
Rogerio Chaves
Fonctionne également sur Debian 8 avec PostgreSQL 9.4.
2
J'ajouterais également rm -r /var/log/postgresql.
Gregory Arenius
45

J'avais une situation similaire: j'avais besoin de purger postgresql 9.1 sur une Debian Wheezy (j'avais déjà migré depuis la version 8.4 et je recevais des erreurs).

Ce que j'ai fait:

Tout d'abord, j'ai supprimé la configuration et la base de données

$ sudo pg_dropcluster --stop 9.1 main

Postgresql supprimé

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

puis réinstallé

$ sudo apt-get install postgresql postgresql-9.1

Dans mon cas, j'ai remarqué que /etc/postgresql/9.1 était vide et que l'exécution service postgresql startne retournait rien

Donc, après plus de recherches sur Google, je suis arrivé à cette commande:

$ sudo pg_createcluster 9.1 main

Avec cela, je pouvais démarrer le serveur, mais maintenant je recevais des erreurs liées au journal. Après plus de recherches, j'ai fini par changer les autorisations dans le répertoire / var / log / postgresql

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

Cela a résolu le problème, j'espère que cela aide

user9869932
la source
14

Étapes qui ont fonctionné pour moi Ubuntu 8.04.2pour supprimerpostgres 8.3

  1. Liste de tous les packages liés à 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. Supprimer tous les éléments énumérés ci-dessus

    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. Supprimez les dossiers suivants

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/
Mithun Sreedharan
la source
La suppression de TOUS les packages liés à Postgres a fonctionné pour moi. J'avais des paquets 8.4 et 9.1 mélangés. Cela combiné à la suppression de tout m'a permis de réinstaller enfin 9.1 et de tout faire fonctionner avec.
Nick
1
Beaucoup plus facile avec un caractère générique:apt-get --purge remove postgresql\*
Craig Ringer
12

Je sais qu'une réponse a déjà été fournie, mais dselect n'a pas fonctionné pour moi. Voici ce qui a fonctionné pour trouver les packages à supprimer:

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

Enfin, éditez / etc / passwd et / etc / group

Klaas van Schelven
la source
Ces instructions ont fonctionné sur Debian Squeeze / Sid
Evgeny
Il est beaucoup plus facile d'utiliser un caractère générique; voir la 1ère réponse mise à jour.
Craig Ringer
12
apt-get purge postgresql*

est assez.

Anish Menon
la source
2
apt-get autoremove postgresql *
johndpope
9

En suivant ae les étapes que j'ai suivies pour désinstaller et réinstaller. Ce qui a fonctionné pour moi.

Retirez d'abord les postgres installés: -

sudo apt-get purge postgr *

sudo apt-get autoremove

Installez ensuite 'synaptic':

sudo apt-get install synaptic

mise à jour sudo apt-get

Ensuite, installez postgres

sudo apt-get install postgresql postgresql-contrib

Gurudath BN
la source
2

Je viens de rencontrer le même problème pour Ubuntu 13.04. Ces commandes ont supprimé Postgres 9.1:

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

Il me semble que seule la deuxième commande est peut-être nécessaire, mais à partir de là, j'ai pu installer Postgres 9.2 (sudo apt-get install postgresql-9.2).

Jeromy French
la source
0

Je suivais les réponses, lors de l'édition de / etc / group, j'ai également supprimé cette ligne:

ssl-cert:x:112:postgres

puis, en essayant d'installer postgresql, j'ai eu cette erreur

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)

Remettre la ligne "ssl-cert: x: 112: postgres" dans / etc / group semble le corriger (j'ai donc pu installer postgresql)

nivniv
la source
2
En supprimant la ligne, vous avez supprimé tout le groupe "ssl-cert", ce qui pourrait créer des ravages avec ssl. Au lieu de cela, pour supprimer les postgres du groupe ssl-cert, supprimez les "postgres" après les deux points.
John Mee
2
Les instructions originales se sont trompées en vous conseillant de les modifier manuellement /etc/passwd. ne fais jamais ça . Utilisez les userdelet groupdelcommandes et vous n'aurez pas ce problème à l' avenir.
Craig Ringer
-2

J'étais confronté au même problème dans mon ubuntu 16.04

mais j'ai résolu ce problème et c'est très simple, suivez ces étapes et vous pourrez installer postgresql 10 dans votre système:

Ajoutez ceci à votre 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

après cela, ajoutez ces liens à votre fichier pgdg.list si ce n'est pas le cas, vous devez créer && ajouter un lien && l'enregistrer.

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

puis mettez à jour votre système

sudo apt-get update

sudo apt-get upgrade

et installez ces dépendances non satisfaites:

apt-get install ssl-cert

c'est tout. maintenant installer postgresql en utilisant ces commandes

sudo apt-get install postgresql-10
John Toppo
la source