Не удается обновить postgresql 9.4 -> 9.5beta2 после обновления postgis 2.1.6 -> 2.2.0
Вот моя ситуация:
- Я начал с Postgresql 9.4.5 и Postgis 2.1.6. Все идет гладко. Оба установлены из источника.
- Я обновил Postgis до 2.2.0 (загрузите исходный код, настройте, сделайте, сделайте установку, затем
ALTER EXTENSION postgis UPGRADE TO '2.2.0';
). Кажется, это сработало (select postgis_full_version()
шоуPOSTGIS="2.2.0 r14208" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.1, released 2015/09/15" LIBXML="2.9.3" LIBJSON="0.11" RASTER
в обеих базах, где был установлен Postgis), хотя старыйpostgis-2.1.so
был оставлен в директории lib. - Я пытаюсь обновить Postgresql с 9.4.5 до 9.5beta2. Я загружаю исходники, настраиваю, делаю, делаю установку, устанавливаю Postgis 2.2.0, initdb и готовлюсь к запуску
pg_upgrade
,pg_upgrade
не удается с:
Ваша установка ссылается на загружаемые библиотеки, которые отсутствуют в новой установке. Вы можете добавить эти библиотеки в новую установку или удалить функции, используя их из старой установки. Список проблемных библиотек находится в файле: loadable_libraries.txt
loadable_libraries.txt содержит:
Не удалось загрузить библиотеку "$libdir/rtpostgis-2.1" ОШИБКА: не удалось получить доступ к файлу "$libdir/rtpostgis-2.1": такого файла или каталога нет
Не удалось загрузить библиотеку "$libdir/postgis-2.1" ОШИБКА: не удалось получить доступ к файлу "$libdir/postgis-2.1": такого файла или каталога нет
Я не уверен, почему новая версия Postgresql нуждается в старой версии Postgis... разве она не должна была быть удалена? Я переехал старый postgis-2.1.so
а также rtpostgis-2.1.so
файлы из каталога lib 9.4, но ошибка сохраняется.
Я также пытался скомпилировать Postgis 2.1.6 для Postgresql 9.5beta2, но компиляция завершилась следующей ошибкой:
lwgeom_accum.c: In function ‘pgis_geometry_accum_transfn’:
lwgeom_accum.c:109:46: error: ‘AggState {aka struct AggState}’ has no member named ‘aggcontext’
aggcontext = ((AggState *) fcinfo->context)->aggcontext;
Я также попытался скопировать библиотеки 2.1 из каталога 9.4 в каталог 9.5, но это не удалось, поскольку версия Postgresql не совпадала.
Сброс и перезагрузка всех баз данных возможна, но только в крайнем случае, потому что базы данных огромны. Если ответ "потому что 9.5 все еще находится в бета-версии", я мог бы принять это, хотя их бета-версии в прошлом были довольно стабильными.
1 ответ
Мне удалось решить мою проблему, выполнив следующие действия:
- Скачайте исходный код для 2.1.6 и примените патч, найденный здесь
- Postgis 2.1.6 теперь будет компилироваться с Postgresql 9.5beta2. Скомпилируйте и установите.
- Теперь pg_upgrade работает, если установлена старая версия Postgis.
Я не думаю, что это идеальная ситуация, но, по крайней мере, сейчас.