如何在 Docker 中安装 R Github 包

Ana*_*eam 3 google-analytics r github devtools docker

我正在尝试为 R 脚本创建 Docker 映像,以在 Google Cloud 上安排 R 作业。我目前正在使用一个小型 R 脚本对其进行测试。命令docker build在我安装的步骤失败rga。下面是我的 R 脚本和 DockerFile:

\n\n

R脚本:

\n\n
library(rga)\nlibrary(bigrquery)\nbq_token()\nrga.open(instance = "ga", where="~/ga.rga")\n\ndemoScheduleAPI <- function(){\n  search_perf <- ga$getData(XXXX, batch = TRUE, walk = TRUE, \n                          start.date = "2020-01-15",\n                          end.date = "2020-01-16",\n                          metrics = "ga:searchUniques",\n                          dimensions="ga:date,ga:hour,ga:searchKeyword, ga:searchCategory ,ga:dimension6,ga:dimension10")\n  project <- "bidone-data"\n  insert_upload_job(project, "GA_Export_Prod_DataSet", "Test_Table123", search_perf)\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

Dockerfile

\n\n
FROM rocker/r-ver:3.6.1\n\nRUN mkdir /home/bidone\n\nRUN R -e "install.packages(\'bigrquery\', repos=\'http://cran.rstudio.com/\')"\n\nRUN R -e "install.packages(\'devtools\', repos=\'http://cloud.r-project.org\')"\n\nRUN R -e "devtools::install_github(\'skardhamar/rga\')"\n\nCOPY .secrets /home/analysis/.secrets\n\nCOPY ga /home/analysis/ga\n\nCOPY DockerTest.R /home/analysis/DOckerTest.R\n\nCMD R -e "source(\'/home/analysis/DockerTest.R\')"\n
Run Code Online (Sandbox Code Playgroud)\n\n

它确实安装了 devtools 软件包,但是当它尝试安装rga从 github 安装该软件包时,会出现以下错误。

\n\n
> devtools::install_github(\'skardhamar/rga\')\nError in loadNamespace(name) : there is no package called \xe2\x80\x98devtools\xe2\x80\x99\nCalls: :: ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart\nExecution halted\nThe command \'/bin/sh -c R -e "devtools::install_github(\'skardhamar/rga\')"\' returned a non-zero code: 1\n
Run Code Online (Sandbox Code Playgroud)\n\n

我该如何解决这个问题?

\n

Dir*_*tel 6

2023 年 9 月编辑:现在人们真的很想使用r2u作为容器的基础。我现在已经在 StackOverflow 上添加了一些其他答案,描述了r2u的使用,以便人们可以搜索这些答案。


对于这些东西,最好的选择是 GitHub 搜索。这是我的一个容器示例,用于支持我教授的课程,它构建在我们的 Rocker 项目的另一个 Dockerfile之上。该链接为您提供了完整的详细信息,但为了简洁起见,我们省略了一些内容

FROM rocker/r-ubuntu:18.04   

# Install required libraries -- using prebuild binaries where available
RUN apt-get update && apt-get install -y \
    git \
    r-cran-data.table \
    r-cran-devtools \
    r-cran-doparallel \
    r-cran-dygraphs \
    r-cran-foreach \
    r-cran-fs \
    r-cran-future.apply \
    r-cran-gh \
    r-cran-git2r \
    r-cran-igraph \
    r-cran-memoise \
    r-cran-microbenchmark \
    r-cran-png \
    r-cran-rcpparmadillo \
    r-cran-rex \
    r-cran-rsqlite \
    r-cran-runit \
    r-cran-shiny \
    r-cran-stringdist \
    r-cran-testthat \
    r-cran-tidyverse \
    r-cran-tinytest \
    r-cran-xts \
    sqlite3 \
    sudo

# Install additional R packages from CRAN (on top of the ones 
# pre-built as r-cran-*)
RUN install.r bench diffobj flexdashboard lintr ttdo unix

# Install plr -- for now (?) from GH; also install visualTest
RUN installGithub.r stat430dspm/plr MangoTheCat/visualTest
Run Code Online (Sandbox Code Playgroud)

这几乎涵盖了我们

  • 使用 Michael Rutter 的 PPA 通过 Ubuntu 的预构建 .deb 包来尽可能多地获取 Ubuntu LTS(目前仍然是 18.04)
  • 使用较小的脚本install.r从 CRAN 安装一些软件包
  • 使用另一个较小的脚本installGithub.r从 GitHub 安装另外两个存储库

这只是显示了我首选的排名顺序:二进制文件优先于 CRAN,优先于 GitHub。您问题的关键点是这些较小的脚本也在 Rocker 的 R-ver 堆栈上。但对于 r-ver,你必须非常小心地混合,因为发布日期是由 MRAN设计固定的。

(如果有人想了解更多关于这个容器的原因,我们只是在 arXiv 上发布了预印本- 但这是针对我们使用的测试和分级基础设施的。