【问题标题】:unable to access R packages under user account in opencpu无法在opencpu中的用户帐户下访问R包
【发布时间】:2013-10-26 05:04:14
【问题描述】:

我正在尝试从 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
...

任何帮助将不胜感激!

平台信息:

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

【问题讨论】:

    标签: r opencpu


    【解决方案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 环境变量配置正确,它应该可以工作。如果不告诉我:-)

    【讨论】:

    • 感谢您的及时回复!我在 kern.log 中没有看到任何 DENIED 条目。编辑 /etc/apparmor.d/opencpu.d/custom 并重新启动 apparmor 和 opencpu 并没有解决问题。然而,奇怪的是,当我在 /ocpu/user 资源上发出 GET 时,列出的唯一用户是其 home 在 /home 下的用户。我在 /home 下添加了一个新用户,我可以看到用户主库。我将尝试进一步深入研究 R_LIBS_USER 并发布我的发现。再次感谢您的帮助!
    • 我想我知道是什么导致了这个问题。如果有效用户是 root 或 www-data,那么 userlibpath.R 中的 userhome() 函数会返回 '/home',而这正是 apache 进程所运行的。因此,作为用户 root 或 www-data 执行的函数 userlibpath 返回“/home/ali/R/x86_64-pc-linux-gnu-library/3.0”,这在运行与用户“ali”相同的函数时是不正确的路径:“/limdata/ali/R/x86_64-pc-linux-gnu-library/3.0”
    • 是的,你是对的。如果您想建议一种更强大的检测用户主目录的方法,请发送拉取请求 :-) 也许临时解决方法是创建一个从 /home/ali/limdata/ali 的符号链接?
    • 如果您想帮助在下一个版本中解决此问题,请给我发送电子邮件。
    • @AliGuler @Jeroen 你是如何解决这个问题的?我的主目录是/home/deploy ~/R/library 所在的位置。从~/.Renviron 我指向R_LIBS_USER=~/R/library。也试过R_LIBS。没有运气。
    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 2010-10-13
    • 2016-07-28
    • 2014-01-18
    • 2020-05-13
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多