簡體   English   中英

無法在Docker Image中安裝R軟件包

[英]Cannot Install R Packages in Docker Image

似乎由於法律原因,Java無法在docker鏡像中單獨安裝,而是我們必須使用java鏡像。

我正在使用一個java映像,根據需要安裝了R,但是當我安裝R包時出現錯誤

這是我的Dockerfile如下:

FROM buildpack-deps:jessie-scm

# A few problems with compiling Java from source:
#  1. Oracle.  Licensing prevents us from redistributing the official JDK.
#  2. Compiling OpenJDK also requires the JDK to be installed, and it gets
#       really hairy.

RUN apt-get update && apt-get install -y --no-install-recommends \
        bzip2 \
        unzip \
        xz-utils \
    && rm -rf /var/lib/apt/lists/*

# Default to UTF-8 file.encoding
ENV LANG C.UTF-8

# add a simple script that can auto-detect the appropriate JAVA_HOME value
# based on whether the JDK or only the JRE is installed
RUN { \
        echo '#!/bin/sh'; \
        echo 'set -e'; \
        echo; \
        echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \
    } > /usr/local/bin/docker-java-home \
    && chmod +x /usr/local/bin/docker-java-home

ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64

ENV JAVA_VERSION 7u111
ENV JAVA_DEBIAN_VERSION 7u111-2.6.7-2~deb8u1

RUN set -x \
    && apt-get update \
    && apt-get install -y \
        openjdk-7-jdk="$JAVA_DEBIAN_VERSION" \
    && rm -rf /var/lib/apt/lists/* \
    && [ "$JAVA_HOME" = "$(docker-java-home)" ]

# If you're reading this and have any feedback on how this image could be
#   improved, please open an issue or a pull request so we can discuss it!

# system libraries of general use
RUN apt-get update && apt-get install -y \
    sudo \
    pandoc \
    pandoc-citeproc \
    libcurl4-gnutls-dev \
    libcairo2-dev \
    libxt-dev \
    libssl-dev \
    libssh2-1-dev \
    libssl1.0.0

# system library dependency for the euler app
RUN apt-get update && apt-get install -y \
    libmpfr-dev

RUN sudo apt-get install -y \
    r-base r-base-dev

# basic shiny functionality
RUN R -e "install.packages(c('shiny', 'rmarkdown'), repos='https://cloud.r-project.org/')"

# install dependencies
RUN R -e "install.packages('Rmpfr', repos='https://cloud.r-project.org/')"

# Special Package
RUN R -e "install.packages('shiny')"
RUN R -e "install.packages('shinydashboard')"
RUN R -e "install.packages('plyr')"
RUN R -e "install.packages('dplyr')"
RUN R -e "install.packages('ggplot2')"
RUN R -e "install.packages('tm')"
RUN R -e "install.packages('SnowballC')"
RUN R -e "install.packages('wordcloud')"
RUN R -e "install.packages('RWeka')"
RUN R -e "install.packages('reshape2')"
RUN R -e "install.packages('igraph')"



# copy the app to the image
RUN mkdir /root/testapp1
COPY testapp1 /root/testapp1

COPY Rprofile.site /usr/lib/R/etc/

EXPOSE 3838

CMD ["R", "-e shiny::runApp('/root/testapp1')"]

當我嘗試安裝任何R包時,我得到以下錯誤:

> install.packages('shiny')
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Error in contrib.url(repos, type) : 
  trying to use CRAN without setting a mirror
Calls: install.packages -> grep -> contrib.url
Execution halted
The command '/bin/sh -c R -e "install.packages('shiny')"' returned a non-zero code: 1

我怎樣才能解決這個問題的頭痛問題。

謝謝。

當在R環境中執行install.packages('shiny') ,它會掛起,要求您從要下載的鏡像中進行選擇。

> install.packages('shiny')

Installing package into ‘/Users/user/Library/R/3.3/library’
(as ‘lib’ is unspecified)

--- Please select a CRAN mirror for use in this session ---
HTTPS CRAN mirror

 1: 0-Cloud [https]                 
 2: Algeria [https]
 ... 
 55: (HTTP mirrors)

Selection: 

根據你的錯誤輸出似乎命令RUN R -e "install.packages(c('shiny', 'rmarkdown'), repos='https://cloud.r-project.org/')"

然后執行下一個,然后在嘗試執行時失敗(錯誤退出1):

RUN R -e "install.packages('shiny')"

相反, install.packages('shiny', repos='https://cloud.r-project.org/')可能會進行靜默安裝,而不會提出任何問題。

看起來你得到的錯誤來自install.pacakges方法,這些方法沒有指定repos參數。

一旦我使用你的dockerfile在我的本地機器上使用repos='http://cran.us.r-project.org/'更新了install.packages ,圖像就成功構建了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM