CREATE EXTENSION postgis завершается неудачно с /usr/lib/libgdal.so.1: неопределенный символ: sqlite3_column_table
Проблема:
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`
Что я сделал:
- Добавлен Postgres официальный PPA -
http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main
- Установлен Postgis -
sudo apt-get install postgresql-9.5-postgis-2.3
- Я также удалил
libgdal
и это зависимости (sudo apt-get remove --purge libgdal1i
) а затем переустановилpostgis
как указано выше. Все та же ошибка. - Я установил чистую Ubuntu в VirtualBox и там он установил и работал нормально.
Версии:
- Ubuntu - Ubuntu 16.04.3 LTS
- Postgres - 9.5.9-1.pgdg16.04 + 1
- Postgis - 2.3.3 + dfsg-1.pgdg16.04 + 1
- Libgdal - 1.11.3 + dfsg-3build2 (libgdal1i)
Я все, если идеи, как отладить это дальше.
2 ответа
ОК, наконец-то решили проблему.
Первопричина
У 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.*, решите проблему