Не удалось загрузить postgis-2.4.so "неопределенный символ: Float8GetDatum"

1943
denaje

Только что обновил до PostgreSQL 10.1 на Arch Linux. Создана новая база данных, и я пытаюсь установить postgis, но она дает мне следующую ошибку:

local=# create extension postgis; ERROR: could not load library "/usr/lib/postgresql/postgis-2.4.so": /usr/lib/postgresql/postgis-2.4.so: undefined symbol: Float8GetDatum 

ldd выход:

$ ldd /usr/lib/postgresql/postgis-2.4.so  linux-vdso.so.1 (0x00007ffec6f4d000) libgeos_c.so.1 => /usr/lib/libgeos_c.so.1 (0x00007f6e00788000) libproj.so.12 => /usr/lib/libproj.so.12 (0x00007f6e0051e000) libjson-c.so.2 => /usr/lib/libjson-c.so.2 (0x00007f6e00313000) libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007f6dfffad000) libm.so.6 => /usr/lib/libm.so.6 (0x00007f6dffc61000) libc.so.6 => /usr/lib/libc.so.6 (0x00007f6dff8a9000) libgeos-3.6.2.so => /usr/lib/libgeos-3.6.2.so (0x00007f6dff4fc000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f6dff175000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f6dfef5e000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f6dfed40000) libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f6dfeb3c000) libicuuc.so.59 => /usr/lib/libicuuc.so.59 (0x00007f6dfe78c000) libz.so.1 => /usr/lib/libz.so.1 (0x00007f6dfe575000) liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f6dfe34f000) /usr/lib64/ld-linux-x86-64.so.2 (0x00007f6e00c6b000) libicudata.so.59 => /usr/lib/libicudata.so.59 (0x00007f6dfc83c000) 

Насколько я понимаю, «неопределенный символ» означает, что между библиотеками есть некоторая несовместимость, однако я не игнорирую пакеты pacman.conf, поэтому не уверен, откуда взялась несовместимость.

Редактировать: ld -vвывод:

$ ld -v /usr/lib/postgresql/postgis-2.4.so GNU ld (GNU Binutils) 2.29.1 ld: warning: cannot find entry symbol _start; not setting start address /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_palloc' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetPartitionLocalMemory' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall3Coll' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `numeric_int4' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `DatumGetFloat8' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `examine_variable' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_do_encoding_conversion' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `GetCurrentTransactionId' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `per_MultiFuncCall' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `Float8GetDatum' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `errhint' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `errfinish' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `datumCopy' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_modifytuple' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_typlenbyvalalign' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `deconstruct_array' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_attnum' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetFuncArgInPartition' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_fnumber' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `makeMdArrayResult' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall1Coll' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_atoi' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_guc_variables' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `heap_freetuple' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `init_MultiFuncCall' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_call_result_type' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `palloc' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `MemoryContextDelete' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `errmsg' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetFuncArgCurrent' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_detoast_datum_slice' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `accumArrayResult' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `MemoryContextCreate' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `hash_search' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `TupleDescGetAttInMetadata' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `ProcessInterrupts' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_qsort' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_finish' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `list_nth' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `textout' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `ReleaseSysCache' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_exec' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetCurrentPosition' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall2Coll' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall4Coll' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_gettype' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_connect' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `errstart' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_getbinval' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `end_MultiFuncCall' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `regclassin' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `repalloc' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `WinGetPartitionRowCount' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `BlessTupleDesc' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `CurrentMemoryContext' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `AggCheckCallContext' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_tuptable' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `DirectFunctionCall5Coll' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_fn_expr_argtype' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_attstatsslot' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `array_iterate' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_detoast_datum' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pg_detoast_datum_copy' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `default_statistics_target' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `hash_create' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `array_create_iterator' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_getvalue' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `HeapTupleHeaderGetDatum' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `GetDatabaseEncoding' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `GetNumConfigOptions' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `my_exec_path' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `heap_form_tuple' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `construct_array' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `ArrayGetNItems' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pfree' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SearchSysCache' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `elog_start' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_share_path' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `hash_any' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_typbyval' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `errcode' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `MemoryContextAlloc' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `palloc0' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_typlen' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `array_free_iterator' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `get_rel_name' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `BuildTupleFromCStrings' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `RelationNameGetTupleDesc' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `SPI_processed' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `errmsg_internal' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `vacuum_delay_point' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pqsignal' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `free_attstatsslot' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `DefineCustomStringVariable' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `elog_finish' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `pstrdup' /usr/lib/postgresql/postgis-2.4.so: undefined reference to `InterruptPending' 
4
Та же самая проблема здесь, я просто понижаюсь до 9.6 в настоящее время swehren 6 лет назад 0
вставьте результат `ld -v` и отметьте этот вопрос для перехода на [dba.se] Evan Carroll 6 лет назад 0
@EvanCarroll, вывод `ld -v` отредактирован под вопрос. denaje 6 лет назад 0
Так что да, PostGIS - это всевозможные ошибки, напишите ошибку на Arch. Evan Carroll 6 лет назад 1
или скачайте исходный код и попробуйте собрать себя, но пост PostGIS - это весело, сделав это. Evan Carroll 6 лет назад 0
Все верно. Я создал отчет об ошибке: https://bugs.archlinux.org/task/56296 denaje 6 лет назад 0

2 ответа на вопрос

1
pawel

На самом деле я только что построил расширение postgis под arch linux. Нет проблем.

  1. Загрузите источник с http://postgis.net/source/

  2. Распаковать куда нибудь

  3. запустить ./autogen.shзатем ./configureзатемmake

это заняло у меня 10 минут на не очень быстрой машине

Затем перейдите в папку установки postgrest /usr/lib/postgresqlи скопируйте туда 2 файла: /postgis-2.4.1/postgis/postgis-2.4.soи postgis-2.4.1/raster/rt_pg/rtpostgis-2.4.so. Это все.

Теперь вы можете работать create extension postgis;без ошибок

0
denaje

В соответствии с зарегистрированной здесь ошибкой, https://bugs.archlinux.org/task/56296?opened=19601&status%5B0%5D=, выпущен postgis 2.4.1-2, который обеспечивает совместимость с PostgreSQL 10.1.

Я обновил все свои пакеты, и теперь все работает отлично.

Похожие вопросы