问题
I am trying to access R packages which were installed under a user's account from opencpu. I can see that the package is installed when I start R as that user:
> installed.packages()
Package LibPath
RLIM "RLIM" "/limdata/ali/R/x86_64-pc-linux-gnu-library/3.0"
...
> system('whoami');
ali
However, when I try to access the library from opencpu, I get errors indicating the package was not found:
$ 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
...
Any help would be greatly appreciated!
Platform info:
- Host: Ubuntu 12.04
- opencpu-server 1.0.4-precise0
- opencpu-lib: 1.0.4-precise0
- R version 3.0.2 (2013-09-25) -- "Frisbee Sailing"
回答1:
It seems like your home library is not in the default location of /home/ali/
. Therefore some additional steps are needed to access your packages.
First of all, the default security profile won't allow OpenCPU to access /limdata/
. To verify that this is indeed the problem, have a look at /var/log/kern.log
and search for lines containing APPARMOR
and DENIED
. Please read the section titled Customizing the security profile in the PDF server manual.
To add your home library to the security profile, edit /etc/apparmor.d/opencpu.d/custom
and add these lines:
/limdata/ r,
/limdata/** mrix,
Afterwards, restart apparmor and opencpu:
sudo service apparmor restart
sudo service opencpu restart
That should take care of the security restrictions. I hope that will do it; honestly I haven't tested a scenario where the home directory is outside of /home
but I think if your R_LIBS_USER
environment variable is properly configured, it should work. If not let me know :-)
来源:https://stackoverflow.com/questions/19431264/unable-to-access-r-packages-under-user-account-in-opencpu