opencpuからユーザーのアカウントでインストールされたRパッケージにアクセスしようとしています。私はそのユーザとしてRを起動したとき、私はパッケージがインストールされていることがわかります。opencpuのユーザーアカウントでRパッケージにアクセスできない
> installed.packages()
Package LibPath
RLIM "RLIM" "/limdata/ali/R/x86_64-pc-linux-gnu-library/3.0"
...
> system('whoami');
ali
をしかし、私はopencpuからライブラリにアクセスしようとしたとき、私はパッケージを示すエラーが見つかりませんでした取得:
$ curl -L http://<my.server>/ocpu/user/ali/library/RLIM
there is no package called 'RLIM'
In call:
find.package(pkgname, lib.loc = lib.loc)
# from same server, to confirm opencpu is running...
$ curl -L http://<my.server>/ocpu/library
base
bitops
boot
brew
...
ご協力いただければ幸いです!
プラットフォーム情報:
- ホスト:Ubuntuの12.04
- opencpuサーバ1.0.4-precise0
- opencpu-LIB:1.0.4-precise0
- Rバージョン3.0.2(2013 -09-25) - "Frisbee Sailing"
ご連絡ありがとうございました! kern.logにDENIEDエントリが見つかりませんでした。 /etc/apparmor.d/opencpu.d/customを編集し、apparmorとopencpuを再起動しても問題は解決されませんでした。しかし、私は/ ocpu/userリソースにGETを発行したときに、リストされている唯一のユーザーはhomeが/ homeの下にあるユーザーだということが特有でした。私は/ homeの下に新しいユーザーを追加し、ユーザーのホームライブラリを見ることができます。私はさらにR_LIBS_USERを掘り下げ、私の発見を投稿しようとします。助けてくれてありがとう! –
私は問題の原因を知っていると思います。有効なユーザーがrootまたはwww-dataの場合、userlibpath.Rのuserhome()関数は '/ home'を返します。これはApacheプロセスが実行されているものです。したがって、ユーザrootまたはwww-dataとして実行される関数userlibpathは、ユーザ 'ali'と同じ関数を実行している間に正しくない「/home/ali/R/x86_64-pc-linux-gnu-library/3.0」を返しますパス: "/limdata/ali/R/x86_64-pc-linux-gnu-library/3.0" –
はい、あなたは正しいです。ユーザのホームディレクトリを検出するより堅牢な方法を提案したい場合は、プルリクエストを送信してください:-)一時的な回避策は '/ home/ali'から'/limdata/ali'へのシンボリックリンクを作ることでしょうか? – Jeroen