2013-10-17 3 views
5

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"

答えて

1

あなたの家の図書館は、デフォルトの場所/home/ali/にはないようです。したがって、パッケージにアクセスするには、いくつかの追加ステップが必要です。

まず、デフォルトのセキュリティプロファイルではOpenCPUは/limdata/にアクセスできません。これが本当に問題であることを確認するには、/var/log/kern.logを見て、APPARMORDENIEDを含む行を検索してください。 セキュリティプロファイルのカスタマイズのセクションをPDF server manualにお読みください。

は、セキュリティプロファイルにご自宅のライブラリを追加/etc/apparmor.d/opencpu.d/customを編集し、これらの行を追加するには:

/limdata/ r, 
/limdata/** mrix, 

その後、再起動AppArmorのとopencpuを:セキュリティ制限の世話をする必要があります

sudo service apparmor restart 
sudo service opencpu restart 

。それが実現することを願っています。正直言って私はホームディレクトリが/homeの外にあるシナリオをテストしていませんが、あなたのR_LIBS_USER環境変数が正しく設定されていればうまくいくと思います。私に知らせたくない場合:-)

+0

ご連絡ありがとうございました! kern.logにDENIEDエントリが見つかりませんでした。 /etc/apparmor.d/opencpu.d/customを編集し、apparmorとopencpuを再起動しても問題は解決されませんでした。しかし、私は/ ocpu/userリソースにGETを発行したときに、リストされている唯一のユーザーはhomeが/ homeの下にあるユーザーだということが特有でした。私は/ homeの下に新しいユーザーを追加し、ユーザーのホームライブラリを見ることができます。私はさらにR_LIBS_USERを掘り下げ、私の発見を投稿しようとします。助けてくれてありがとう! –

+0

私は問題の原因を知っていると思います。有効なユーザーが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" –

+0

はい、あなたは正しいです。ユーザのホームディレクトリを検出するより堅牢な方法を提案したい場合は、プルリクエストを送信してください:-)一時的な回避策は '/ home/ali'から'/limdata/ali'へのシンボリックリンクを作ることでしょうか? – Jeroen

関連する問題