无法访问opencpu中用户帐户下的R包

Ali*_*ler 6 r opencpu

我正在尝试从opencpu访问安装在用户帐户下的R软件包.当我以该用户身份启动R时,我可以看到该软件包已安装:

> installed.packages() 
           Package      LibPath                                         
RLIM       "RLIM"       "/limdata/ali/R/x86_64-pc-linux-gnu-library/3.0"
...
> system('whoami');
ali
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从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
...
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

平台信息:

  • 主持人:Ubuntu 12.04
  • opencpu-server 1.0.4-precise0
  • opencpu-lib:1.0.4-precise0
  • R版本3.0.2(2013-09-25) - "飞盘航行"

Jer*_*oen 1

您的家庭图书馆似乎不在 的默认位置/home/ali/。因此,需要一些额外的步骤来访问您的包。

首先,默认的安全配置文件不允许 OpenCPU 访问/limdata/. 要验证这确实是问题所在,请查看/var/log/kern.log并搜索包含APPARMOR和 的行DENIED请阅读PDF 服务器手册中标题为“自定义安全配置文件”的部分。

要将您的家庭图书馆添加到安全配置文件,请编辑/etc/apparmor.d/opencpu.d/custom并添加以下行:

/limdata/ r,
/limdata/** mrix,
Run Code Online (Sandbox Code Playgroud)

之后,重新启动apparmor和opencpu:

 sudo service apparmor restart
 sudo service opencpu restart
Run Code Online (Sandbox Code Playgroud)

这应该考虑到安全限制。我希望能做到这一点;老实说,我还没有测试过主目录位于外部的场景/home,但我认为如果您的R_LIBS_USER环境变量配置正确,它应该可以工作。如果没有请告诉我:-)