0

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

ただし、 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が、ルート アクセス権がなく、このファイルを変更できません。

これに対する回避策はありますか?

前もって感謝します

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渡すか、または渡します。およびを参照してください。-rpathLDFLAGS-Wl,-rpathCFLAGS-rpathman ld-Wlman gcc

于 2012-09-19T12:29:23.633 に答える