不知道为什么MAC安装R包时候总是出现gfortran错误
前面其实我提到过一次:明明解决了gfortran问题但是仍然安装WGCNA失败,也是同样的报错,这次又出现了,但是我又是以另外一种方式解决了!很神奇
最近使用The Chip Analysis Methylation Pipeline,我们前面教程:450K芯片上面的甲基化探针到底需要进行哪些过滤 已经详细介绍过champ啦,这里我就只讲解我遇到的问题!
不得不说,每次安装 ChAMP 都得脱一层皮,它的依赖包实在是太多了。其中一个ChAMPdata_2.18.0.tar.gz就是680M文件。一般来说,我们切换好镜像哦,然后下载就不是问题了。
但是因为依赖包太多,所以其中个把包失败是理所当然的,比如我就再一次遇到gfortran错误!
ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0'
ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
ld: library not found for -lgfortran
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [fastICA.so] Error 1
ERROR: compilation failed for package 'fastICA’
* removing '/Library/Frameworks/R.framework/Versions/3.6/Resources/library/fastICA’
对我们有很多年R语言经验的来说,这样的报错很明显,介绍我的mac电脑的fortran问题。
不过新手可能会纠结于非零报错,没有经验就会陷入进去,以为重点是下面的报错信息;
Warning messages:
1: In install.packages(...) :
installation of package 'fastICA’ had non-zero exit status
2: In install.packages(...) :
installation of package 'isva’ had non-zero exit status
我其实很早以前就解决过,就是安装好gcc罢了。
brew reinstall gcc
也就是说,我的电脑里面其实是有gcc也就是说,并不缺gfortran,但是报错是缺:-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0
这个时候,我灵机一动,查看了我在mac使用brew安装的gfortran以及库文件的路径:
/usr/local/Cellar/gcc/9.2.0_3/lib/gcc/9/libgfortran.5.dylib
/usr/local/Cellar/gcc/9.2.0_3/lib/gcc/9/libgfortran.a
/usr/local/Cellar/gcc/9.2.0_3/lib/gcc/9/libgfortran.dylib
/usr/local/Cellar/gcc/9.2.0_3/lib/gcc/9/libgfortran.spec
所以我就无中生有创造了一个目录,就是为了配合那个报错,它说缺gfortran,意思是缺:-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0 那我就创建它,然后把库文件复制过去。
sudo mkdir -p /usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0
sudo cp /usr/local/Cellar/gcc/9.2.0_3/lib/gcc/9/* /usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0
最后就成功啦
BiocManager::install("fastICA",ask = F,update = F)
BiocManager::install("isva",ask = F,update = F)
成功加载champ后如下所示:
是不是很戏剧化,我都说不清楚这个知识点属于什么,但如果是新手碰到,可能就会搜索好几天都无法解决。然后过半个月重新回过头来看,突然间就好了。
玄学哦!后来在生信技能树VIP交流群跟大家讨论这个问题,说可能是MAC特有的fortran,不能通过brew安装gcc来解决