【问题标题】:How do I Install R Github packages inside Docker如何在 Docker 中安装 R Github 包
【发布时间】:2020-03-20 02:02:45
【问题描述】:

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

R 脚本:

library(rga)
library(bigrquery)
bq_token()
rga.open(instance = "ga", where="~/ga.rga")

demoScheduleAPI <- function(){
  search_perf <- ga$getData(XXXX, batch = TRUE, walk = TRUE, 
                          start.date = "2020-01-15",
                          end.date = "2020-01-16",
                          metrics = "ga:searchUniques",
                          dimensions="ga:date,ga:hour,ga:searchKeyword, ga:searchCategory ,ga:dimension6,ga:dimension10")
  project <- "bidone-data"
  insert_upload_job(project, "GA_Export_Prod_DataSet", "Test_Table123", search_perf)
}

Dockerfile

FROM rocker/r-ver:3.6.1

RUN mkdir /home/bidone

RUN R -e "install.packages('bigrquery', repos='http://cran.rstudio.com/')"

RUN R -e "install.packages('devtools', repos='http://cloud.r-project.org')"

RUN R -e "devtools::install_github('skardhamar/rga')"

COPY .secrets /home/analysis/.secrets

COPY ga /home/analysis/ga

COPY DockerTest.R /home/analysis/DOckerTest.R

CMD R -e "source('/home/analysis/DockerTest.R')"

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

> devtools::install_github('skardhamar/rga')
Error in loadNamespace(name) : there is no package called ‘devtools’
Calls: :: ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart
Execution halted
The command '/bin/sh -c R -e "devtools::install_github('skardhamar/rga')"' returned a non-zero code: 1

我该如何解决这个问题?

【问题讨论】:

    标签: r docker github google-analytics devtools


    【解决方案1】:

    你最好的选择是 GitHub 搜索。这是我的一个示例,用于支持class I teach,基于another Dockerfile from our Rocker Project。该链接为您提供了完整的详细信息,但为简洁起见,我们在这里省略了一些内容

    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
    

    这几乎涵盖了我们

    • 使用 Michael Rutter 的 PPA,通过 Ubuntu 的预构建 .deb 包为 Ubuntu LTS(目前仍为 18.04)获取尽可能多的信息
    • 使用 littler 脚本 install.r 从 CRAN 安装一些软件包
    • 使用另一个 littler 脚本 installGithub.r 从 GitHub 安装另外两个 repos

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

    (如果有人想了解更多关于 this 容器的 why 的信息,我们只需添加一个 pre-print on arXiv —— 但这对于测试来说非常具体和我们使用的分级基础设施。

    【讨论】:

    • 感谢您的回复。我将尝试这样做,但我相信这将在 docker 中安装 ubuntu env。我不习惯ubuntu。我想知道您是否可以帮助我验证复制和运行命令在 ubuntu 中是否相同
    • 我试图在我的回答中说明这一点。您也可以忽略该部分。 “如果您有耐心”,您可以从源代码安装所有内容——关注 CRAN 的 install.r 和 GitHub 的 installGithub.r。其余的是插图:)
    • 您关于您尝试安装的一个软件包的相互依赖性的狭义问题恐怕只能通过检查一个软件包来回答。从本质上讲,您已经在做我正在做的事情(使用更详细的命令/更多单独的 RUN 命令,这并不理想,但当然完全有效......)。
    • 我明白你想说的话。我想我会先尝试使用 R-ver 安装所有依赖项,然后按照您指出的那样尝试安装其他软件包,看看是否有帮助。猜猜这一切都归结为安装时的耐心:)
    • 对。而且我喜欢二进制文件以使其更快。你甚至可以像我展示的那样构建(所有二进制文件)来解决你所追求的一个 GitHub 存储库,一旦你有了这个平方,也许回到 r-ver 就是你想要的。许多路线。
    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2021-03-06
    相关资源
    最近更新 更多