0

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

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

但是,当我尝试将 plr 扩展名添加到数据库CREATE EXTENSION plr;时,出现以下错误:

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

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

有解决方法吗?

提前致谢

4

1 回答 1

1

您需要LD_LIBRARY_PATH="$HOME/pgsql/lib:$HOME/lib/R/lib"在运行时在 PostgreSQL 服务器的环境中设置。由于您似乎是在您自己的用户 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,-rpathCFLAGS见和。-rpath_ _man ld-Wlman gcc

于 2012-09-19T12:29:23.633 回答