从Ubuntu CLI远程安装多个R软件包(有,但没有依赖)

ede*_*esz 2 linux ubuntu r command-line-interface

我必须在Ubuntu 16.10系统上执行远程R安装.作为其中的一部分,我必须在该主机上安装特定的软件包.我想安装这些软件包Rcmdr,list,ggplot2,afex,lsmeans.由于我远程这样做,我无法使用

sudo -i R
Run Code Online (Sandbox Code Playgroud)

首先进入R CLI,然后安装install.packages().相反,我必须以某种方式从Ubuntu CLI安装软件包.

我找到了这些链接:

  1. 使用install.packages()安装多个R包
  2. R CMD INSTALL -l使用语法在6.3节中安装多个包
  3. 在install.packages()中使用repos参数

但是,一些包具有依赖性:

  • list软件包依赖utilssandwich.
  • Rcmdr软件包依赖grDevices,utils,splines,RcmdrMisc,car.
  • ggplot2包还具有依赖性.

我想只安装的软件包Rcmdr,list,ggplot2他们所有的依赖关系.通常,我会这样做:

install.packages(c('Rcmdr','list','ggplot2'), dependencies=TRUE)
Run Code Online (Sandbox Code Playgroud)

质询

  1. 如何R CMD仅为一个包指定依赖项选项?这是安装它们的方法吗?

    R CMD INSTALL -l Rcmdr dependencies=TRUE, list dependencies=TRUE, \
    ggplot2 dependencies=TRUE, afex, lsmeans
    
    Run Code Online (Sandbox Code Playgroud)

    或者这不正确?

  2. 另外,如何在repos里面指定参数R CMD INSTALL -l

编辑

根据下面的第一条评论,上面sudo不需要.sudo -i R可以替换为.ie R.

Dir*_*tel 6

关于你的问题:

问题1

这可能不是最好的方法.相反Rscript -e 'install.packages(...)',请考虑哪个是R CMD INSTALL ...调用.您可以在此处更好地控制选项.继续阅读......

问题2

在工作和家庭的所有Ubuntu机器上,我/etc/R/Rprofile.site通过类似的方式做到这一点

## Example of Rprofile.site
local({
    r <- getOption("repos")
    r["CRAN"] <- "https://cloud.r-project.org"
    r["ghrr"] <- "https://ghrr.github.io/drat"
    options(repos = r)
})
Run Code Online (Sandbox Code Playgroud)

我们通常添加第三个和网络本地回购.你可能只想在这里使用CRAN - 它使用RStudio为R Project和R Consortium管理的'永远关闭你'CDN.ghrr drat是我设置的帮手回购.

问题3

sudo对于我添加到R的官方Debian/Ubuntu软件包中的某些内容不需要 - 但您需要成为拥有该组的成员/usr/local/lib/R/site-library.

现在,如果可以的话,还有两个建议:

利特勒

r可执行文件是通过提供给您sudo apt-get install r-cran-littler.我在命令行上使用它; 你可能想要查看基本install.r脚本和扩展脚本install2.r.我倾向于/usr/local/bin为这些和其他(例如update.r)创建一个从软件包目录到软件包的软链接.多年来我一直在运行许多(Ubuntu和Debian)机器.

Michael Rutter回购和Docker

我们实际上有大约3000个CRAN包作为Ubuntu的二进制文件,所以你可以这样做,sudo apt-get install ...并且所有 dependendies都会得到解决.看看我的这个脚本(在Travis上使用它们)或我维护的一些Docker文件,例如这个.