質問

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"
役に立ちましたか?

解決

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 :-)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top