2021-04-14小白安装单细胞软件iTALK安不上,报错v8
背景介绍
我们课题组是租用的公司的共享服务器,当然也就没有管理员权限(他们说的root权限,所以用conda建小环境,conda安软件很重要,后面会提到)。
第一步 安装报错,排除网络问题(下载不下来软件)
我直接在R上安装iTALK,2种方式都尝试了:
方法1,直接从github上去下载安装,代码是devtools::install_github("Coolgenome/iTALK", build_vignettes = TRUE),这种安装不成功,很多时候是因为网速下载不下来,出现类似http、denied等字眼多是网速不行,另外我也发现一般早上的时候github能上,然后从中午开始到晚上就不行了。
方法2也安不上,报错,至少说明不是网络问题,报错如下: Snipaste_2021-04-14_14-57-17.PNG方法2,自己去这个软件在github的网址下载到自己的服务器上,然后用代码本地安装:devtools::install_local("/ifs1/User/ziyuan/singleRNA/iTALK-master.zip")
从报错中可以看出,R是说不能找到libv8 engine library. 然后让我尝试安装:
- deb: libv8-dev or libnode-dev (Debian / Ubuntu)
- rpm: v8-devel (Fedora, EPEL)
- brew: v8 (OSX)
- csw: libv8_dev (Solaris)
或者, on Linux (x86_64) or MacOS 设置环境变量 :
DOWNLOAD_STATIC_LIBV8=1等等。
我思考了一下,选择前者----先尽量尝试安装,因为改变环境变量这个事,对我来说比较复杂哦。另外,后续的报错还说Cairo、scde没有,但原则上是一个问题一个问题解决,而且有些时候一个问题解决了,后面的问题就自然没有了(比如可能一个包安上的同时也把它缺的一些依赖包也安上了)。
第二步 尝试分析问题(上网搜、仔细看报错信息等),不要上来就急于不停安装哦
然后,我把error message里的“v8.h:No such file or directory”输入到百度里去找网页,没有发现一模一样的问题,但提到要安装v8,或者有些说是服务器里有,只是R找不到只需要链接过去等等。找总比安快多了吧,于是我果断先快速学习一下find命令,用find命令找了一下,确实没有v8:
开始大小写没注意,后来搜了小写v8也没有
然后,报错信息不是提醒我安装libv8-dev or libnode-dev或者libv8-devel或者v8嘛,那我这个服务器该安哪个呢?就查一下呗,发现应该是安装这个: * rpm: v8-devel (Fedora, EPEL)
查了一下我的服务器是centos的ubuntu基于debian,fedora基于redhat
两者区别1. 软件包格式,ubuntu/debian——deb fedora/redhat——rpm
两者区别2. 在终端下的软件管理: ubuntu/debian——apt-get fedora/redhat——yum
第三步,摸索着开始安装
但是没有管理员权限sudo yum install v8-devel搞不定,而conda install v8-devel又安装不上(如下图),怎么办?
图片.png
开始以为是conda的镜像配置问题,照着这个网页的vim进入~/.condarc都修改了,还是安不上:
图片.png
于是我想依葫芦画瓢,把v8-devel下载到服务器呢,直接百度v8-devel,直接搜索到软件根据我的服务器版本号下载:
https://pkgs.org/download/v8-devel 悲催的是各种依赖没安装,还是安装不上,所以现在才知道conda的好
下载了依赖后,安装又是permission deny,哭
怎么办,思考中···依赖复依赖,依赖何其多!我得conda啊,于是我想:直接用conda搜索一下,搜索的时候不要限制词太多,搜关键词v8,于是,我看到了一连串的libv8:
Snipaste_2021-04-14_17-29-24.PNG
虽然系统提示我安装 v8-devel,但是系统也说了“Configuration failed to find the libv8 engine library. ”里面有libv8这个关键词哦,libv8、v8.h、v8-devel它们之间应该是一家人,conda又擅长解决各种依赖,安一个一家都安上了,所以,我就尝试安conda里有的libv8吧。
Snipaste_2021-04-14_17-31-17.PNG
3个done,表示成功安装了。于是又重新运行命令:devtools::install_local("/ifs1/User/ziyuan/singleRNA/iTALK-master.zip")
Snipaste_2021-04-14_17-33-35.PNG
没有报v8的错误了,说明解决了,小激动一下,哈哈。然后是Cairo和scde,Cairo在前,而且它是scde的依赖,按原则也是一个一个解决,先弄Cairo吧。
直接在r里用install.packages命令安装,又报错安不上:
Snipaste_2021-04-14_17-38-32.PNG
好吧,我回到Linux里,用conda安装,3个done,安上了(顺便说一下,一会儿要在R的某个小环境下,一会要在Linux下面,来回转换好麻烦,我就直接把服务器登录界面点击2次,登录2个,不是说Linux可以多人同时登陆一个账号嘛):
Snipaste_2021-04-14_17-38-58.PNG
然后我再运行命令:devtools::install_local("/ifs1/User/ziyuan/singleRNA/iTALK-master.zip"),直接就安装上了iTALK,可能conda安装Cairo时候把scde也解决了吧:
图片.png
小洁老师说warning不用管,你看我第三次library(iTALK)就没有warning了(搞笑,第二次library还把iTALK写错了,真的是能tab补全就不要去手打啊)。
至此,安装上了iTALK。
总结
1 conda真心好用。能conda装还是要conda装(包括R包),因为很多依赖没法一起安,依赖又有依赖,无穷尽······
2 conda建一个环境真的很重要。因为很多时候解决问题就会心情不好,一不小心就乱安一通,有一个小环境就不至于把整个服务器搞崩溃,最多把那个小环境删除了嘛。
3 解决报错是常态(因为每个人电脑环境都是独一无二的,除非有人帮你操作电脑解决,不然一切还是得靠你自己,别人或网上只能提供一些可能的原因,你自己要操作去验证,不要简单的把这些操作验证的过程当成走弯路,觉得自己亏了),心态要好(真不好做到,只有多尝试去解决几次这种情况,就习惯了,“脱敏”了)
4 虽然说是小白,但还是有一些Linux、R基础 的(比如做一类项目就最好conda一个小环境,github的包下载下来命令怎么安装等等),所以零基础的同学还是应该先多学一点,学得多,更可能解决问题,解决问题也快得多。