Mac安装单细胞测序相关R包报错问题及全部解决

本人临床专业研究生,自学生信单细胞测序部分内容,在构建单细胞相关包中遇到许多问题,部分按照网上分享大致解决,但仍有不少问题困惑我,希望能够与大家交流并共同搞定这些棘手问题!

!2022.4.19 更新! 

经过一些其他视频和同学的指点,我发现一个被我严重忽略的注意事项。大家如果进行生物信息分析,需要利用biocmanager从bioconductor 上安装R包,mac一定要下载并安装XQuartz这个软件,直接百度、bing搜索就行,因为这个软件可以提供编译环境(我理解的),可以避免很大一部分我下面遇到的问题。当然,如果还遇到下面的问题,可以继续在用我再下面列出的解决方法!

本人电脑为Mac Monterey12.3,R版本为4.1.3,R studio版本为2022.02.0,为安装单细胞测序相关代码包,进行如下代码:

1.首先进行BiocManager以及devtools安装

if(!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
if(!requireNamespace("devtools", quietly = TRUE))
  install.packages("devtools")

2.其次设定需要安装的R包

bioPackages <-c(
  "dplyr", "patchwork",
  "limma",  # 差异分析
  "celldex", # 细胞类型参考数据集
  "scuttle", # 对SummarizedExperiment对象进行计算
  "pheatmap",
  "BiocGenerics",   'DelayedArray', 'DelayedMatrixStats',
  'limma', 'S4Vectors', 'SingleCellExperiment',
  'SummarizedExperiment', 'batchelor', 'Matrix.utils',
  "Seurat", "SingleR",
  "tximport", # 读取Alevin结果到Seurat
  "R.utils", "rliger", "fishpond",
  "scater", "scran", "TSCAN", "slingshot",
  "scRNAseq",
  "AnnotationHub", "ensembldb",
  "clusterProfiler", "org.Hs.eg.db",
  "cowplot", "enrichplot"
)

3.批量安装

lapply( bioPackages, 
        function( bioPackage ){
          if( ! bioPackage %in% rownames(installed.packages()) ){
            CRANpackages <- available.packages()
            if( bioPackage %in% rownames( CRANpackages) ){
              install.packages( bioPackage, quiet = TRUE )
            }else{
              BiocManager::install( bioPackage, suppressUpdates = FALSE, update = FALSE, ask = FALSE)
            }
          }
        }
)

 写在最开始,如果出现不好解决的错误,大家可以先把R跟Rstudio都重装到最新版吧(狗头),我最开始碰到下面这么多错误的时候,就是这么干的哈哈哈哈哈哈哈。

问题一:批量安装时出现source form问题

Packages which are only available in source form, and may need compilation of
  C/C++/Fortran:
Do you want to attempt to install these from sources? (Yes/no/cancel) 

该情况为提示所安装的包仅有source form(氵原代码)格式,具体哪几包出现这个情况我记不清了,limma包是出现这种情况。选择no与cancel都不可安装,选择yes后会出现下载并安装,但是又出现ERROR并报错为缺少/xurn什么类的东西,具体忘记了。好像是缺少编译环境的意思。不知道是因为我的电脑原因还是因为其他原因,我同学的m1电脑就可以直接安装limma包,而且不出现上述报错提示,不知道是不是我的电脑曾经装过anaconda与python3的原因。

问题一解决:安装Xcode

此种情况可以借助安装Xcode软件解决,具体为我在App Store中安装的该软件,只要等到他安装完成就可以,友情提示该软件12G时间较长,要有耐心。安装后,这种情况还会出现,但是选择yes后可以安装成功。通过Rstudio中Packages库查看,相应包已在库中。用library加载后可能还会报错,此时关闭Rstudio重新打开,再次加载就可以。

问题二:安装相应软件后提示缺少文件

ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/arm/6.1.0'
ld: warning: directory not found for option '-L/usr/local/gfortran/lib'
ld: library not found for -lgfortran

该情况报错为从网上找的,我的电脑主要报错情况与这个一致,具体的可能为相关的路径不同,最主要的特点就是这三行,大概情况就是gcc与gfortran的directory not found问题。出现这种情况的包以scuttle为代表。此时也会将下载好的包继续删除,并报错。具体原因目前推测为编译环境的设置以及需要更新编译程序?我最后也不太懂。

问题二解决:安装gcc并创建文件(此处参考三篇文章)

https://cloud.tencent.com/developer/article/1587416

​​​​​https://stackoverflow.com/questions/35999874/mac-os-x-r-error-ld-warning-directory-not-found-for-option​​​​​​https://blog.csdn.net/liurugongzi123/article/details/120478899

该情况由于我先看到的第一篇文章,我先按照第一篇文章中描述进行。首先安装homebrew,一个在mac电脑上安装并管理相关软件的一个集合软件(自我理解)。该软件安装参考此篇文章https://www.jianshu.com/p/e0471aa6672d?utm_campaign=hugo

在终端直接运行下面一行代码

/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"

我在安装时未出现文章中相关问题,但中途有提示更新或是其他什么情况,按照指示继续操作即可,中途可能有输入计算机密码过程。

安装完成后,可运行下面代码安装gcc

brew install gcc

安装完成后,可用下面代码查看安装位置

brew list gcc

像我的安装完成后为下图所示

此时我按照第一篇文章操作,将该目录下的一部分文件复制到报错信息提示的缺少的文件夹中去,在终端运行的代码如下

sudo mkdir -p /usr/local/gfortran/lib/gcc/arm/6.1.0
sudo cp -R /usr/local/Cellar/gcc/11.2.0_3/lib/gcc/ /usr/local/gfortran/lib/gcc/x86_64-apple-darwin15/6.1.0 

注意需要根据自己的报错信息设定需要复制过去的文件地址,同时也要根据自己的gcc安装的链接进行编写代码,具体情况具体分析。mac终端相关代码可参考此篇文章https://www.cnblogs.com/hopelee/p/7049551.html

完成此步复制文件后,重新运行安装R包代码,但报错信息仍有,只不过还是问题二的样子少了前两行,仅返回最后那个-lgfortran行。此时根据第二、三篇文章,在终端中运行代码,先创建.R文件夹

mkdir ~/.R

之后跳转到.R文件夹中,终端运行代码

cd ~/.R

此时已在目标文件夹下,创建Makevars文件,具体代码如下

vim Makevars

该代码执行后会进入Makevars文件中,在此文件中相关操作具体可看此文章https://www.jianshu.com/p/f29a91aa3127 

基本稳按i进入插入模式,并复制下面代码

VER=-11.2.0 
CC=gcc$(VER)
CXX=g++$(VER)
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
FLIBS=-L/usr/local/Cellar/gcc/11.2.0/lib/gcc/11

其中注意更改版本信息,本人为11.2.0版本,VER以及FLIBS中的两处需要注意替换,文件路径应该没有问题,我没有改过。复制完成后按esc并:wq储存并退出vim,文件创建成功。 

!2022.3.30更新 !

经过摸索,发现我原来的问题四报错原因为此Makevars文件编辑错误导致,因此大家一定要注意⚠️。大家可以看我在问题二参考文章的第二个链接内,有的回答将Makevars文件中的VER=-8,同时结合问题四的报错为gcc-11.2.0 command not found,外加brew list gcc显示的gcc安装列表中gcc, g++, c++均为-11,如下图所示

因此,最终的Makevars文件内应为VER=-11!!!

同时此前还有个致命错误,Makevars文件中的CFLAGS与CXXFLAGS这两行中,不是02而是O2...不是阿拉伯数字0而是大写的英文字母O。。。。。真的心态有点崩了要🤦‍♂️给大家把错误的和正确的贴出来,供大家观察,没想到最后居然是个这么样的错误哈哈哈哈哈哈哈 

错误版Makevars文件

正确版Makevars文件 

真的是奇奇怪怪的错误哈哈哈哈哈。此后Makevars文件算是大功告成,之后需要继续并依次进行问题四尝试方法1-3,就可以正常安装R包了。我下面也会再添加一点,帮大家捋一捋。 

再次运行R包安装代码,安装成功。 

问题三: 安装后报错缺少lzma.h文件

cram/cram_io.c:61:10: fatal error: 'lzma.h' file not found
#include <lzma.h>
^~~~~~~~
  1 error generated.
make[1]: *** [cram/cram_io.o] Error 1
make: *** [htslib] Error 2

本次报错主要提示的缺少lzma.h文件,在网上进行相关搜索后,发现这个好像是个什么头文件啥的,具体的我也不太清楚。

问题三解决:安装相关文件与软件。

此处参考文章https://www.jianshu.com/p/146fd5133b71   

首先在终端运行下面代码安装xz

brew install xz

终端运行下列代码查看lzma.h文件位置

sudo find /usr -name lzma.h

再将lzma.h文件复制到相应路径下,此处应该在lzma.h文件所在的路径下运行下面代码(具体当时的操作我好像忘记了,大家可以根据参考文章进行尝试)

cp lzma.h /usr/local/include

复制完成后,即可安装相应R包。

问题四:报错提示/bin/sh:gcc找不到文件

/bin/sh: gcc-11.2.0: command not found
make: *** [R_process_hairpin_reads.o] Error 127

此类错误出现在安装scRNAseq包时,提示我/bin/sh这里没有gcc-11.2.0这个文件。在终端cd到/bin目录下发现有/sh但确实没有gcc-11.2.0,此外/sh应该是个文件不是文件夹,cd /sh则会提示no such directory。因此我觉得应该是缺少文件的原因,并找寻解决方法。

问题四尝试方法1:添加环境变量。

在很多文章中强调了可能是因为环境变量的缺乏导致无法将gcc启动,大概这个意思。于是我首先在终端运行cd ~/打开个人这个目录,此时打开.bash_profile这个存储环境变量的文件

vim ./.bash_profile

并在其中添加相应环境变量语句,此处参考文章https://www.jianshu.com/p/463244ec27e3 

添加如下代码,不同的路径书写不一样,需要注意(此处代码有变化,看下面2022.3.30更新)

export GCC_HOME=/opt/homebrew/Cellar/gcc/
export PATH=$PATH:$GCC_HOME

并保存退出,最后该文件如下

此时环境变量已添加完成,并运行下列代码使其生效

source ./.bash_profile

此时运行代码,依旧报错。

问题四尝试方法2:替换系统默认gcc为自己安装的gcc

此处参考此篇文章https://www.jianshu.com/p/4f3d4a8b2a9b

当我在终端运行gcc -v命令时,系统会返回gcc的版本,但是是Apple自带的gcc版本及clang的编译方式(自我模糊的理解)。于是我想是不是应该将更改一下,让系统直接识别为自己下载的gcc 11.2.0这个版本。于是还是vim ./.bash_profile这个文件,然后添加如下代码

alias gcc='gcc-11'
alias cc='gcc-11'
alias g++='g++-11'
alias c++='c++-11'

同样运行source ./.bash_profile使文件生效,此时在用gcc -v查看显示为自己安装的gcc版本,但是运行代码依旧报错。 

问题四尝试方法3:创建替身或软连接

此处参考此https://developers.weixin.qq.com/community/develop/doc/000c8284bd43786f4c28cd34c5bc00 

首先在终端执行命令which gcc查看gcc的位置,(不知道此处返回的位置是不是电脑自带的gcc或者自己安装的gcc,所以对结果可能导致没有影响)。我查看的是which gcc-11,因为我brew安装的为gcc 11.2.0,而且报错缺的也是gcc-11.2.0,而后创建替身,在终端运行下列代码

sudo ln -s /opt/homebrew/bin/gcc-11 /usr/local/bin

而后重新运行安装R包代码,依旧报错。

问题四尝试方法4:在/bin目录下添加gcc-11链接(最好别)

此处参考Linux相关文章https://blog.csdn.net/yx_l128125/article/details/7418882 

由于是Linux系统的解决方法,没有敢进行实践。同时此方法对该报错信息的描述为,/bin目录下缺少gcc-11的问题,而/bin目录好像是算根目录(我猜的),因为在/bin目录下用mkdir命令会提示,Read-only什么的错误,好像就代表着只读,无法添加。如果要强行添加需关闭SIP,如何关闭mac的SIP大家可以自行搜索,再次不过多赘述。但有一点,不知道是不是我的电脑问题,我在mac的恢复模式输入关闭SIP的命令后,会提示一行代码,选择y/n,选择y后会关闭SIP。但重启后,Rstudio打开则会报错,无法打开,但是直接打开CRAN的程序就可以。重新在恢复模式关闭SIP后,Rstudio可以正常打开,非常奇怪。大家注意就好。

!2022.3.30更新! 

接上面的更新,再更改完Makevars文件后,先按照问题四尝试方法1进行配置环境变量,但环境变量内的语句发生变化。因为发现gcc-11, g++-11, c++-11好像还在更往下的目录中,大家可以根据查看自己brew安装gcc的路径,代码上面有就是brew list那个。因此最终文件为下图,别忘用source那段代码使其生效。

而后按照问题四尝试方法2中将mac默认的编译环境改为gcc。注意!此方法只能临时更改,当关闭终端再打开后默认的编译环境则变回系统内的,而不是我们自己安装的gcc,但bash_profile内的那四行语句则一直存在。因此,如果要安装R包的时候,需要我们用source那行命令,是bash_profile文件生效。如下所示

最后按问题四尝试3中创建软链接。经过前两步后,程序仍可能报bin/sh:XXX command not found,此时提示的是bin目录下缺少我们的的XXX程序,例如我的就报了/bin/sh:c++-11 command not found;或者可能出现make:路径/XXX No such file or directory,例如我的就报了make: opt/R/arm64/bin/gfortran No such file or directory。我的理解是这两种报错均为目录下少相应的软件文件。如果仍有这类错误,大家可以根据报错缺少的文件的原本路径(用which XXX查看),以及报错的路径进行创建软链接。

/bin/sh类错误:以我的为例,查看c++-11的原始路径后,创建软链接,软链接代码在上面的问题四尝试当法3:创建软链接或替身中。此类/bin的报错,只能在/usr/local/bin下更改,mac不允许在根目录下进行更改,因此原本问题四的尝试方法4:关闭SIP我觉得大家就还是不要尝试了为好哈哈哈哈哈。

make类错误:以我为例,同样查看gfortran的路径,并创建软链接。 

 

至此全部问题就解决完了,开头所展示的R包全部安装完成,当然如果有的朋友安装过程中没有碰到这些问题,开头的两部分代码是完全可以安装的哈。感谢大家的耐心,看完我冗长的流水帐,谢谢!

总结 

最后我除了scRNAseq, scran, ensemlab包因为问题四无法安装,文章开头的一大堆打包包中其余全部装上。(2022.3.30)最后的最后都成功了,但还是不知道自己当时哪根筋搭错要尝试生信,导师让看了看单细胞测序,结果按包就遇到了这么多问题。。。本人现在还是一个不太会生信的小白,希望这些踩雷能对大家有帮助,万分感谢大家,祝大家在自己的路上披荆斩棘!谢谢😄!

  

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值