Проблема:
postgres=# CREATE EXTENSION postgis;
LOG: statement: CREATE EXTENSION postgis;
ERROR: could not load library "/usr/lib/postgresql/9.5/lib/rtpostgis-2.3.so": /usr/lib/libgdal.so.1: undefined symbol: sqlite3_column_table_name`
Что я наделал:
http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main
sudo apt-get install postgresql-9.5-postgis-2.3
libgdal
и его зависимости (sudo apt-get remove --purge libgdal1i
), а затем переустановил postgis
как указано выше. Все еще та же ошибка.Версии:
У меня нет идей, как отладить это дальше.
ОК, наконец решил проблему.
Основная причина
У Postgres не было доступа к libsqlite3.so
.
Отладка
Ошибка относится к libgdal.so.1
имеет проблемы и связан с sqlite3
, поэтому проверил зависимости:
~ ldd /usr/lib/libgdal.so.1 | grep "sql"
libmysqlclient.so.20 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 (0x00007fc80cd65000)
libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x00007fc80825e000)
Интересно то, что все зависимости от /usr/lib/...
, но libsqlite3.so.0
из /usr/local/lib
. Это заставляет задуматься, а может быть, у Postgres нет доступа к /usr/local/lib
и вызывает проблемы?
Как кажется, официально libsqlite
не следует устанавливать в /usr/local/lib
, но /usr/lib
где он фактически уже существовал. Удалено /usr/local/lib
версия и переустановил весь пакет postgis, и все заработало.
Удалите файл /usr/local/lib/libsqlite3.so.0.*, решите проблему