2009-08-28 22 views
11

简而言之,我的问题是“为什么$ libdir不能用于我的PSQL安装。”

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

这应该工作。也许你在混合不同的装置? – 2009-09-14 10:42:27

回答

1

编辑了原来的答复为它是错误

现在,我已经抬头PostgreSQL的代码,我不得不承认,这个字符串应该是自2001年以来;-)进行扩展。虽然扩张非常有限。它只扩展$libdir,后跟目录分隔符。不过,您的输出表明该字符串未扩展,因为此处报告的字符串是实际用于加载库的字符串。

这意味着替换失败。仔细观察它,我可以看到,如果目标文件实际存在,扩展才会成功。假设你的目录分隔符是/DLSUFFIX.so和文件/usr/local/pgsql/lib/liblwgeom.so确实存在,我没有线索微弱凭啥;-)

+0

你为什么这么说?这似乎是完全标准的用法。 – 2009-09-15 11:01:56

+0

乔,你的问题让我吃惊,我改变了答案;-) – 2009-09-15 11:54:35

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的查找文件名为liblwgeom时它似乎是PostGIS调用的相同文件postgis-1.5.so

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

+0

很好地完成了,我做了'ln -s /Library/PostgreSQL/9.1/lib/postgis-1.5.so /Library/PostgreSQL/9.1/ lib/postgresql/postgis-1.5'用于我的安装 – 2012-10-20 03:56:04