我正在尝试访问从opencpu在用户帐户下安装的R软件包。我可以看到当我以该用户启动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
...
任何帮助将不胜感激!
平台信息:
答案 0 :(得分:1)
您的家庭图书馆似乎不在/home/ali/
的默认位置。因此,访问您的包需要一些额外的步骤。
首先,默认安全配置文件不允许OpenCPU访问/limdata/
。要确认这确实是问题所在,请查看/var/log/kern.log
并搜索包含APPARMOR
和DENIED
的行。请阅读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
环境变量配置正确,它应该可行。如果不让我知道: - )