ОШИБКА PostGIS: не удалось загрузить библиотеку «/usr/lib/postgresql91/lib64/postgis-2.0.so»

9

ОС openSUSE 12.1, PostgreSQL - 9.1, PostGIS - 2.0. Postgre / PostGIS устанавливаются из репозитория приложения: Geo.

После недавних обновлений, когда я пытаюсь подключиться к своей базе данных, я получаю следующую ошибку:

    ERROR:  could not load library "/usr/lib/postgresql91/lib64/postgis-2.0.so":
 /usr/lib/postgresql91/lib64/postgis-2.0.so: undefined symbol: pj_get_spheroid_defn

Я искал в сети эту ошибку ( подсказка-1 , подсказка-2 ) и, похоже, что это может быть связано с ld.so.config (или командой ldconfig). Но я не могу понять, что мне делать в моем случае.

SS_Rebelious
источник
2
необходима последняя версия proj (> = 4.8). Что proj --versionи / или ldd `which proj`показать?
Майк Т
@MikeToews, моя версия Proj 4.7.1. Похоже, мне нужно обновить его.
SS_Rebelious
Я установил proj 4.8 с их официального сайта. Но все же, когда я делаю proj --verion, он показывает мне> Rel. 4.7.1, 23 September 2009Как я могу обновить его до 4.8. У меня нет идей :( Я использую Ubuntu 12.4. Спасибо, Мо.
mmrs151

Ответы:

6

Благодаря MikeToews я смог решить эту проблему. PostGIS 2.0 в openSUSE зависит libproj0и его версия должна быть> = 4.8. Каким-то образом менеджер пакетов не уведомил меня о новой версии, доступной для, libproj0поэтому я проверил более новую версию вручную через Yast на вкладке «Версии». После обновления я могу нормально работать с базой данных.

SS_Rebelious
источник
это неправда.
Эван Кэрролл
0

Я не верю, что выбранный ответ имеет какое-либо отношение к проблеме,

Что случилось

  1. Postgre / PostGIS устанавливаются из репозитория приложения: Geo.
  2. ОС openSUSE

Вы установили новую версию PostGIS, созданную на основе версии Proj, которой у вас нет. Вероятно, ваш проект предоставлен OpenSUSE. Вам необходимо установить версию proj из репозитория Application: Geo или версию PostGIS из основного репозитория OpenSUSE. Это несоответствие клиента зависимости. Вы должны сообщить об ошибке в SUSE, если проблема не устранена.

Дело не в том, что PostGIS не работает на старых версиях proj. Дело в том, что SUSE строит ТОЛЬКО PostGIS для более новых версий, поэтому вам нужна такая.

ПостГИС и старый проект

Из сообщения об ошибке, поданного два года назад ,

Так что в основном PostGIS может работать и со старыми версиями Proj4, но это нужно знать во время компиляции.

Похоже, что бинарный файл watsonta был построен на Proj 4.8, но работал на предыдущей версии. Очень вероятно ошибка в бинарном пакете или его зависимостях (proj-4.8 + является зависимостью бинарного постга, созданного упаковщиком).

Я думаю, что это проблема. Вы создали более новую версию proj, чем вы установили. Обновление установки до версии, которую вы создали agianst, является лишь одним из способов решения проблемы.

Вы можете видеть, что эта функция вызывается здесь, и она защищена if.

#if POSTGIS_PROJ_VERSION >= 48

Если это не работает, у вас есть другая проблема. Это обеспечивается системой сборки в 10-летнем макросе

Эван Кэрролл
источник
-1

mmrs151. Обновление с версии 4.7 proj до версии 4.8 в Ubuntu 13.04. По крайней мере, это помогло мне решить ту же проблему.

$ sudo apt-get upgrade libproj-dev

Амимо Беня
источник
Не могли бы вы рассказать немного о своем ответе? Как это решает проблему ОП?
Мартин
2
Этот ответ бесполезен - openSUSE не использует apt.
SS_Rebelious
Ответ был предназначен для mmrs151.
Амимо Беня