解決ggplot2升級導致鏡像構建失敗的問題


最近遇到安裝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.sohttps://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不能指定版本也是無力吐槽


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM