PostgreSQL上的$ libdir问题

时间:2009-08-28 19:51:27

标签: postgresql postgis pg-dump

简而言之,我的问题是“为什么我的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

似乎是正确的。

2 个答案:

答案 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 postgis-1.5.so的文件的原因>

我所知道的是,这似乎解决了我的问题。

答案 1 :(得分:1)

编辑出原始回复是错误的

现在我已经查找了postgresql代码,我必须承认这个字符串应该从2001年开始扩展;-)。但扩张非常有限。它只会扩展$libdir,后跟目录分隔符。仍然,您的输出表明该字符串未展开,因为此处报告的字符串是实际用于加载库的字符串。

这意味着替换失败了。仔细观察我可以看到,如果目标文件确实存在,扩展只会成功。假设您的目录分隔符为/DLSUFFIX.so且文件/usr/local/pgsql/lib/liblwgeom.so实际存在,我无法知道它为什么会失败; - )

相关问题