0

在 Ubuntu 20.04 上使用 R 4.0.1 执行 'Rscript -e "install.packages('mclust')"` 后,该过程在包准备期间挂起。知道如何解决或调试此问题吗?

环境: R v4.0.1、GCC v9、Ubuntu v20.04

CMD: Rscript -e "install.packages('mclust')"

Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/mclust_5.4.6.tar.gz'
Content type 'application/x-gzip' length 2877519 bytes (2.7 MB)
==================================================
downloaded 2.7 MB

* installing *source* package ‘mclust’ ...
** package ‘mclust’ successfully unpacked and MD5 sums checked
** using staged installation
** libs
gfortran -fno-optimize-sibling-calls  -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-dEscXG/r-base-4.0.1=. -fstack-protector-strong  -c dmvnorm.f -o dmvnorm.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG      -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-dEscXG/r-base-4.0.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c init.c -o init.o
gfortran -fno-optimize-sibling-calls  -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-dEscXG/r-base-4.0.1=. -fstack-protector-strong  -c mclust.f -o mclust.o
gfortran -fno-optimize-sibling-calls  -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-dEscXG/r-base-4.0.1=. -fstack-protector-strong  -c mclustaddson.f -o mclustaddson.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o mclust.so dmvnorm.o init.o mclust.o mclustaddson.o -llapack -lblas -lgfortran -lm -lquadmath -lgfortran -lm -lquadmath -L/usr/lib/R/lib -lR
installing to /usr/local/lib/R/site-library/00LOCK-mclust/00new/mclust/libs
** R
** data
*** moving datasets to lazyload DB
** inst
** byte-compile and prepare package for lazy loading
4

1 回答 1

0

根据R-sig-debian上对类似问题的响应,我认为这个问题是由于基于 pthread 的 Blas 和 Lapack 库版本中的错误造成的。

在修复错误之前,解决方法是使用libopenblas-openmp-blaslibopenblas-openmp-lapack库。

有两种方法可以实现使用这些库。

  1. 卸载基于 pthread 的库版本并安装基于 openmp 的库版本。
  2. 通过 . 切换到基于 openmp 的库版本update-alternatives。这可以通过sudo update-alternatives --config <name>命令来完成liblapack.so.3-x86_64-linux-gnulibblas.so.3-x86_64-linux-gnu
于 2020-06-17T21:28:52.960 回答