在postgres 9.2上安装后,PL / R找不到共享库

时间:2012-09-19 11:32:43

标签: postgresql installation plr

我试图在没有root访问权限的linux服务器上运行PL/R。使用以下命令安装本身可以正常工作:

LD_INCLUDE_PATH="$HOME/pgsql/include" LD_LIBRARY_PATH="$HOME/pgsql/lib:$HOME/lib/R/lib" PGDATA="$HOME/usr/pgsql/data" PG_LIB_DIR="$HOME/pgsql/lib" R_HOME="$HOME/lib/R" USE_PGXS=1 make

当我尝试使用CREATE EXTENSION plr;将plr扩展名添加到数据库时,我收到以下错误:

ERROR: could not load library "~/lib/postgresql/plr.so": libR.so: cannot open shared object file: No such file or directory

我在install documentation page的底部读到我应该将库路径添加到LD配置文件/etc/ld.so.conf,但是我没有root访问权限,我无法更改此文件。

有解决方法吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

您需要在PostgreSQL服务器环境中的运行时设置LD_LIBRARY_PATH="$HOME/pgsql/lib:$HOME/lib/R/lib"。由于您似乎在您自己的用户ID下运行PostgreSQL,这应该像在导出pg_ctl之前导出环境变量一样简单,例如:

LD_LIBRARY_PATH="$HOME/pgsql/lib:$HOME/lib/R/lib" pg_ctl -D the_datadir start

或者,您可以看到是否可以在启用了rpath链接的情况下重新编译PL / R,因此plr.so在编译时由链接器嵌入了libR.so的路径。通过-rpath中的LDFLAGS选项或-Wl,-rpath中的CFLAGS。请参阅-rpath中的man ld-Wl中的man gcc