1. 系统配置
uname -a
[out1]
Linux localhost 3.10.0
2. 问题汇总
通过浏览器进行Rstudio界面登陆,同时完成界面等设置修改后开始安装Seurat5的安装
if(!require(yulab.utils)) install.packages(yulab.utils)
library(yulab.utils)
install.packages(BiocManager)
pload(Seurat)
发现安装Seurat的依赖包时基本每个都有问题😅
2.1 C++17 standard requested but CXX17 is not defined
首先是第一个问题,安装RcppTOML包时的报错,查询发现是gcc版本低了,查看发现服务器的gcc版本是4.8.5的默认版本,对其进行更新。
sudo yum list all --enablerepo='centos-sclo-rh' | grep 'devtoolset-'
# 如果发生以下报错
Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86_64&release=7&repo=
sclo-rh error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误
# 则需要进行yum repo的修改
sudo yum install devtoolset-11-toolchain
# 临时修改gcc版本为11
scl enable devtoolset-11 bash
# 永久修改的一种方式
mv /usr/bin/gcc /usr/bin/gcc-4
mv /usr/bin/g++ /usr/bin/g++-4
ln -s /opt/rh/devtoolset-11/root/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-11/root/bin/g++ /usr/bin/g++
# 最后需要新建一个.R/Makevars文档并写入内容
mkdir .R
echo "CXX = g++ -std=c++17 -fPIC" >> .R/Makevars
# 再安装一次seurat
install.packages(Seurat)
# 发现RcppTOML包安装上了,但是还有其他问题导致一部分包安装不上
2.2 make[1]: *** [aclocal.m4] 错误 127
该问题出现在shiny包的依赖httpuv的安装过程中,具体原因不太清楚,我最后解决这个问题的方法如下
conda install autoconf automake libtool
autoreconf -ivf
在执行autoreconf -ivf时报错autoreconf: ‘configure.ac‘ or ‘configure.in‘ is required
一个解决办法是
autoscan
mv ./configure.scan configure.ac
autoreconf -ivf
这样autoreconf -ivf可以运行了,但是最后会报错
configure.ac:14: error: required file './config.rpath' not found
autoreconf: error: automake failed with exit status: 1】
可以通过以下方式尝试解决
touch config.rpath
autoreconf -ivf
再回去进行Seurat安装,httpuv和shiny等就能安装上了,只是在最后安装uwot的时候会报错
2.3 r_uwot.cpp:137:19: note: ‘std::make_unique’ is only available from C++14 onwards
这个问题查阅资料的解决办法是自己编写一个临时make_unique函数,但是试过之后好像不太顶用,不过这个解决倒是简单
vim .R/Makevars
# 在最后加上
CXX_STD=CXX14
CXX = g++ -std=gnu++14
最后开始安装seurat
install.packages(Seurat)
成功安装