Пакеты postgres в Debian и, следовательно, в Ubuntu, имеют очень четко определенный способ обновления с одной версии Postgres на другую.Процедура описана в / usr / share / doc / postgresql-common / README.Debian следующим образом:
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
Лучшее время для этого - до обновление до версии Ubuntu, в которой версия Postgresql, которую вы сейчас используете, была удалена, т.е. в этом примере, в то время как в версии Ubuntu, которая имеет возможность установить как Postgres 8.3, так и Postgres 8.4.В моем случае я прошел путь от веселого до кармического, улучшил 8,3 до 8,4, а затем перешел от кармического к ясному.
Процесс обновления, как описано выше, очень плавный.Команда * pg_upgradecluster * остановит старую версию, перенесет данные, затем запустит новую версию на том же порту, что и старая версия, и, наконец, запустит старую версию на новом порту.
Если вы не мигрировали данные 8.3 postgres до перехода на версию Ubuntu, в которой отсутствует postgres 8.3, миграция по-прежнему проста.Начните с добавления репозитория karmic ubuntu в / etc / apt / sources.list :
deb http://archive.ubuntu.com/ubuntu/ karmic main restricted universe
Установите postgresql-8.3:
apt-get update && apt-get install postgresql-8.3
Отбросьте кластер 8.4, Предупреждение : Это удалит данные из вашей установки postgresql 8.4, если они у вас есть.Но если вы делаете это только потому, что вам нужно обновить 8.3 до 8.4, у вас не будет данных в кластере 8.4.
pg_dropcluster 8.4 main --stop
А затем обновить кластер 8.3 до 8.4:
pg_upgradecluster 8.3 main
Наконец, удалите пакет postgresql-8.3 и удалите строку jaunty из / etc / apt/sources.list, затем снова запустите apt-get update .
Как обычно, создание резервной копии ваших каталогов postgres перед выполнением любого из вышеперечисленных всегда является хорошей идеей.