Назад | Перейти на главную страницу

Не удается обновить postgresql 9.4 -> 9.5beta2 после обновления postgis 2.1.6 -> 2.2.0

Вот моя ситуация:

  1. Я начал с Postgresql 9.4.5 и Postgis 2.1.6. Все работает без сбоев. Оба устанавливаются из исходников.
  2. Я обновил 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.
  3. Я пытаюсь обновить 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 и примените найденный патч Вот
  2. Postgis 2.1.6 теперь будет компилироваться с Postgresql 9.5beta2. Скомпилируйте и установите.
  3. pg_upgrade теперь работает, если установлена ​​старая версия Postgis.

Не думаю, что это идеальная ситуация, но, по крайней мере, сейчас она работает.