简而言之,我的问题是“为什么我的PSQL安装不能使用$ libdir。”
CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d
AS '$libdir/liblwgeom', 'BOX2DFLOAT4_in'
LANGUAGE c IMMUTABLE STRICT;
产生错误
could not access file "$libdir/liblwgeom": No such file or directory
,而
CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d
AS '/usr/local/pgsql/lib/liblwgeom', 'BOX2DFLOAT4_in'
LANGUAGE c IMMUTABLE STRICT;
正常工作。
的输出
% pg_config --pkglibdir
/usr/local/pgsql/lib
似乎是正确的。
答案 0 :(得分:6)
我也在努力解决这个错误。我通过手动将PostGIS lib链接到liblwgeom文件来解决它,如下所示:
ln -s /usr/lib/postgis/1.5.1/postgres/8.4/lib/postgis-1.5.so
/usr/lib/postgresql/8.4/lib/liblwgeom
我不知道为什么PostGIS会将自己安装在'错误'的目录中,或者为什么PostgreSQL在看起来与PostGIS调用liblwgeom
我所知道的是,这似乎解决了我的问题。
答案 1 :(得分:1)
编辑出原始回复是错误的
现在我已经查找了postgresql代码,我必须承认这个字符串应该从2001年开始扩展;-)。但扩张非常有限。它只会扩展$libdir
,后跟目录分隔符。仍然,您的输出表明该字符串未展开,因为此处报告的字符串是实际用于加载库的字符串。
这意味着替换失败了。仔细观察我可以看到,如果目标文件确实存在,扩展只会成功。假设您的目录分隔符为/
且DLSUFFIX
为.so
且文件/usr/local/pgsql/lib/liblwgeom.so
实际存在,我无法知道它为什么会失败; - )