Les paquets postgres de Debian, et donc d'Ubuntu, ont une manière très claire de passer d'une version de Postgres à une autre. La procédure est documentée dans /usr/share/doc/postgresql-common/README.Debian comme suit:
Default clusters and upgrading
------------------------------
When installing a postgresql-X.Y package from scratch, a default
cluster 'main' will automatically be created. This operation is
equivalent to doing 'pg_createcluster X.Y main --start'.
Due to this default cluster, an immediate attempt to upgrade an
earlier 'main' cluster to a new version will fail and you need to
remove the newer default cluster first. E. g., if you have
postgresql-8.2 installed and want to upgrade to 8.3, you first install
postgresql-8.3:
apt-get install postgresql-8.3
Then drop the default 8.3 cluster:
pg_dropcluster 8.3 main --stop
And then upgrade the 8.2 cluster to 8.3:
pg_upgradecluster 8.2 main
Le meilleur moment pour le faire est avant ugrading à une version d'Ubuntu où la version de Postgresql en cours d'exécution a été supprimé, c'est-à-dire dans cet exemple, alors que sur une version d'Ubuntu qui a la possibilité d'installer à la fois Postgres 8.3 et Postgres 8.4. Dans mon cas, je suis passé de jovial à karmique, amélioré de 8,3 à 8,4 puis je suis passé du karmique au lucide.
Le processus de mise à niveau décrit ci-dessus est très facile. La commande * pg_upgradecluster * arrêtera l'ancienne version, migrera les données, puis lancera la nouvelle version sur le même port que l'ancienne version, en démarrant finalement l'ancienne version sur un nouveau port.
Si vous n'avez pas migré vos données postgres 8.3 avant de passer à une version d'Ubuntu qui manque de postgres 8.3, la migration est toujours simple. Commencez par ajouter le dépôt ubuntu karmique /etc/apt/sources.list:
deb http://archive.ubuntu.com/ubuntu/ karmic main restricted universe
Installer postgresql-8.3:
apt-get update && apt-get install postgresql-8.3
Déposez votre cluster 8.4. Avertissement: Cela supprimera les données de votre installation postgresql 8.4 si vous en avez. Mais si vous ne faites que cela parce que vous avez besoin de mettre à jour vos 8.3 à 8.4, vous n'aurez aucune donnée dans votre cluster 8.4.
pg_dropcluster 8.4 main --stop
Et puis mettre à niveau le cluster 08/03 au 08/04:
pg_upgradecluster 8.3 main
Enfin, retirer la postgresql-8.3 package, et retirez la jaunty-line de /etc/apt/sources.list, puis exécutez apt-get à nouveau la mise à jour.
Comme d'habitude, faire une sauvegarde de vos répertoires postgres avant de faire tout ce qui précède est toujours une bonne idée.
Cela a fonctionné comme un charme! Je l'ai compilé à partir de la source, en utilisant --enable-integer-datetimes et --without-readline. Seulement alors, j'étais capable de pg_dumpall. Merci! – SCO