问题:
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 。 还是一样的错误。 版本:
如果想法如何进一步debugging,我全力以赴。
好的,终于解决了这个问题。
根本原因
Postgres没有权限访问libsqlite3.so 。
debugging
错误是指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软件包,它工作。