最近遇到安裝R包報錯的問題,之前一直是這樣的裝,沒有出現過問題
Dockerfile:
#[ R-3.4.1 ]---------------------------------------------------------------
RUN cd /tmp_dir \
&& tar -zvxf R-3.4.1.tar.gz \
&& cd R-3.4.1 \
&& ./configure --with-cario --prefix=/software/R-3.4.1 && make && make install \
&& ln -s /software/R-3.4.1/bin/Rscript /usr/bin \
&& ln -s /software/R-3.4.1/bin/R /usr/bin \
&& rm -rf /tmp_dir
RUN Rscript /tmp_dir/R-package-install.r
----------------------------------------------------------------------------------------------
R-package-install.r 的內容為:
options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")))
install.packages("ggplot2", dependencies = TRUE)
看上去像是依賴包沒裝好的錯誤
但是再安裝日志里顯示依賴包已下載:'roxygen2', 'rversions', 'units', 'devtools', 'xml2', 'multcomp', 'rgeos', 'sf', 'vdiffr'
仔細查看依賴包的安裝日志發現如下的錯誤: Configuration failed because libudunits2.so was not found.
嘗試安裝libudunits2.so:https://serverfault.com/questions/964896/missing-package-udunits2-on-centos
>yum install -y epel-release
>yum install -y udunits2-devel
新的報錯:Configuration failed because libxml-2.0 was not found.
>yum install libxml2-devel
新的三個報錯:
ERROR: dependency 'mvtnorm' is not available for package 'multcomp'
ERROR: configuration failed for package 'rgeos'
ERROR: configuration failed for package 'sf'
>yum install -y geos-devel
>yum install -y gdal-devel
解決第二三個,第一個再嘗試:
>install.packages("mvtnorm", dependencies = TRUE)
報錯:package 'mvtnorm' is not available (for R version 3.4.1)
嘗試下載這個包的源碼來安裝,依然報錯:
需要3.5以上的R
下載一個低版本的這個包再試試:
>wget https://cran.r-project.org/src/contrib/Archive/mvtnorm/mvtnorm_1.0-0.tar.gz
>install.packages("/software/lib/R/mvtnorm_1.0-0.tar.gz", repos = NULL, type="source")
安裝成功
再安裝ggplot
簡直要吐血,難道是ggplot2最近升級了,需要一些新的包了?
下載一個舊版的ggplot安裝試一下
>wget https://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_2.2.1.tar.gz
>install.packages("/software/lib/R/ggplot2_2.2.1.tar.gz", repos = NULL, type="source")
安成功了....
============================================================================
整理一下:
1.下載指定版本的ggplot2:
2.安裝時依賴報錯,自行安裝依賴
> pkgs = c('digest', 'gtable', 'plyr', 'reshape2', 'scales', 'tibble', 'lazyeval')
> install.packages(pkgs)
> install.packages("/tmp_dir/ggplot2_2.2.1.tar.gz", repos = NULL, type="source")
這個版本的ggplot2不需要再安裝其他的系統庫
可用!
install.package不能指定版本也是無力吐槽