256 votes

Comment purger complètement et réinstaller postgresql sur ubuntu ?

J'ai réussi à complètement bousiller l'installation de postgresql sur Ubuntu karmic. Je veux repartir de zéro, mais lorsque je "purge" le paquet avec apt-get, il laisse encore des traces derrière lui, de sorte que la configuration de réinstallation ne fonctionne pas correctement.

Après que j'ai fait :

apt-get purge postgresql
apt-get install postgresql

Elle dit

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 dedans et "/etc/postgresql-common/" contient un répertoire 'pg_upgradecluser.d' et les fichiers Root.crt et user_clusters.

Le /etc/passwd a un utilisateur postgres ; la purge script ne semble pas y toucher. Il y a eu un tas de symptômes que j'ai résolus pour découvrir le suivant.

À l'instant même, lorsque j'exécute la commande "pg_createcluster...", elle se plaint que "/var/lib/postgresql/8.4/main/postgresql.conf n'existe pas", je vais donc en trouver un, mais je suis sûr que ce ne sera pas la fin.

N'y a-t-il pas une phrase facile (ou deux) qui la brûlerait complètement et me permettrait de tout recommencer ?

2 votes

Essayez l'installateur en un clic, il est plus simple, ses répertoires ne sont pas éparpillés dans /etc/ et /var. Ils sont tous stockés dans un seul répertoire

3 votes

Ce n'est pas une question d'informatique générale, et postgresql est un sujet standard de stackoverflow. La question devrait être réouverte.

521voto

John Mee Points 12004

Option A

Si votre installation n'est pas déjà endommagée, vous pouvez abandonner les serveurs PostgreSQL non désirés ("clusters") en utilisant pg_dropcluster . Utilisez cette méthode plutôt qu'une purge et une réinstallation complètes 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 et une réinstallation complètes, assurez-vous d'abord que PostgreSQL n'est pas en cours d'exécution. ps -C postgres ne devrait donner aucun résultat.

Maintenant, cours :

apt-get --purge remove postgresql\*

pour supprimer tout PostgreSQL de votre système. Il suffit de purger le postgres n'est pas suffisant puisqu'il ne s'agit que d'un méta-paquet vide.

Une fois que tous les paquets PostgreSQL ont été 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 être en mesure de le faire :

apt-get install postgresql

ou pour une installation complète :

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

21 votes

J'ai retravaillé la réponse pour enlever le conseil d'éditer à la main. /etc/passwd y /etc/group en faveur d'une plus grande sécurité userdel y groupdel . En outre, plutôt que d'utiliser dselect pour une sélection manuelle des paquets, utilisez un joker apt pour les faire correspondre de manière fiable.

12 votes

+1 pour pg_dropcluster ! ! (Exemple d'utilisation : pg_dropcluster --stop 9.1 main )

5 votes

Ajoutez libpq5 et libpq-dev à cette liste de purge, cette librairie m'a posé BEAUCOUP de problèmes, jusqu'à ce que je la réinstalle sur la bonne version

47voto

julianromera Points 401

J'ai eu une situation similaire : J'avais besoin de purger postgresql 9.1 sur une debian wheezy ( j'avais précédemment migré depuis 8.4 et j'obtenais des erreurs ).

Ce que j'ai fait :

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

$ sudo pg_dropcluster --stop 9.1 main

Puis j'ai supprimé postgresql

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

et ensuite réinstallé

$ sudo apt-get install postgresql postgresql-9.1

Dans mon cas, j'ai remarqué que /etc/postgresql/9.1 était vide, et en exécutant service postgresql start n'a rien donné

Donc, après avoir cherché sur Internet, j'ai trouvé cette commande :

$ sudo pg_createcluster 9.1 main

Avec cela, j'ai pu démarrer le serveur, mais maintenant je recevais des erreurs liées au journal. Après d'autres recherches, j'ai fini par modifier les permissions du répertoire /var/log/postgresql

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

Cela a réglé le problème. J'espère que cela vous aidera.

18voto

Mithun Points 9971

Les étapes qui ont fonctionné pour moi sur Ubuntu 8.04.2 de supprimer postgres 8.3

  1. Liste de tous les paquets 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. Retirer 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/

0 votes

La suppression de TOUS les paquets relatifs à Postgres a fonctionné pour moi. J'avais mélangé quelques paquets 8.4 et 9.1. Cela, combiné à la suppression de tous les paquets, m'a permis de réinstaller la version 9.1 et de tout faire fonctionner avec elle.

1 votes

Beaucoup plus facile avec un joker : apt-get --purge remove postgresql\*

15voto

Anish Menon Points 59
apt-get purge postgresql*

est suffisant.

2 votes

Apt-get autoremove postgresql* (en anglais)

12voto

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 paquets à 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, éditer /etc/passwd et /etc/group

0 votes

Ces instructions ont fonctionné sur debian squeeze/sid

0 votes

Il est beaucoup plus facile d'utiliser un caractère générique ; voir la 1ère réponse mise à jour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X