zoukankan      html  css  js  c++  java
  • SnpHub搭建(一) | CentOS 7下配置SnpHub所需系统环境

    SnpHub(主页:http://guoweilong.github.io/SnpHub/)是一款针对大规模基因组变异数据的数据库模型,提供在线的快速检索与轻量级的分析、可视化功能。目前,SnpHub已于GigaScience杂志在线发表(https://doi.org/10.1093/gigascience/giaa060)。本文将介绍SnpHub所需系统环境配置方法和一些问题的解决方案。考虑到CentOS 7系统作为一款稳定可靠且开源免费的Linux发行版系统,在服务器中十分常见。同时,一些依赖项在CentOS 7上的配置较为复杂。因此,本文将以CentOS 7为系统环境进行介绍。

    本文的方法在Docker镜像中(FROM centos:centos7)成功配置了SnpHub所需的系统环境。在实际系统中,也经过的解决方案成功完成了配置。但考虑到系统环境的复杂性,在实际安装中,还请针对错误信息选择(搜索)相应的解决方案,并做好备份

    1. 环境配置

    本节默认用户具有root权限。若非root用户,请在命令前添加sudo(如sudo yum -y update)。

    1.1 yum安装的软件

    yum -y update
    
    yum -y install epel-release
    
    yum -y update
    
    yum -y install R
    
    yum -y install libjpeg-turbo-devel
    
    yum -y install openssl-devel
    
    yum -y install libcurl-devel
    
    # 安装后包含lwgeom,GEOS会用
    yum -y install -y geos-devel
    
    # R包udunits2会用到
    yum -y install udunits2-devel
    
    # R包RPostgreSQL会用
    yum -y install postgresql-devel
    
    # Proj.6会用到
    yum -y install libsqlite3x-devel.x86_64
    
    yum -y install wget
    
    yum -y install curl
    
    yum -y install bzip2
    
    yum -y install ncurses-devel
    
    yum -y install git
    

    1.2 SAMtools工具组和seqkit

    本小节及之后,会将压缩包下载至/tmpdownloads目录。可将此目录替换为自己的临时目录/下载目录。

    # 创建临时文件夹
    # 可连同下述代码一起替换为自己的文件夹地址
    mkdir /tmpdownloads
    

    完全按照本文安装,安装完成后,/tmpdownloads目录可删除。

    # SAMtools
    cd /tmpdownloads/
    wget -c https://github.com/samtools/samtools/releases/download/1.4/samtools-1.4.tar.bz2
    tar jxvf samtools-1.4.tar.bz2
    cd /tmpdownloads/samtools-1.4
    ./configure --prefix=/tmpdownloads/samtools-1.4
    make && make install
    # 编译好的二进制程序放到/usr/local/bin/中,以供命令行下直接调用
    cp ./bin/samtools /usr/local/bin/
    echo 'export PATH="/tmpdownloads/samtools-1.4/bin:$PATH" ' >>~/.bashrc
    # 查看版本信息,正常显示证明安装完成
    samtools
    
    # BCFtools
    cd /tmpdownloads/
    wget -c https://github.com/samtools/bcftools/releases/download/1.8/bcftools-1.8.tar.bz2
    tar jxvf bcftools-1.8.tar.bz2
    cd /tmpdownloads/bcftools-1.8
    ./configure --prefix=/tmpdownloads/bcftools-1.8
    make && make install
    # 编译好的二进制程序放到/usr/local/bin/中,以供命令行下直接调用
    cp ./bcftools /usr/local/bin/
    echo 'export PATH="/tmpdownloads/samtools-1.4/bin:$PATH" ' >>~/.bashrc
    # 查看版本信息,正常显示证明安装完成
    bcftools
    
    # tabix & bgzip
    cd /tmpdownloads/
    wget -c https://github.com/samtools/htslib/releases/download/1.6/htslib-1.6.tar.bz2
    tar jxvf htslib-1.6.tar.bz2
    cd /tmpdownloads/htslib-1.6
    ./configure --prefix=/tmpdownloads/htslib-1.6
    make && make install
    # 编译好的二进制程序放到/usr/local/bin/中,以供命令行下直接调用
    cp ./bin/tabix /usr/local/bin/
    # bgzip在数据预处理中可能用到
    cp ./bin/bgzip /usr/local/bin/
    echo 'export PATH="/tmpdownloads/htslib-1.6/bin:$PATH" ' >>~/.bashrc
    # 查看版本信息,正常显示证明安装完成
    tabix
    
    # seqkit
    
    cd /tmpdownloads/
    wget -c https://github.com/shenwei356/seqkit/releases/download/v0.11.0/seqkit_linux_amd64.tar.gz
    tar -zxvf seqkit_linux_amd64.tar.gz
    # 解压完成直接就是二进制软件
    cp seqkit /usr/local/bin/
    

    1.3 PROJ6、GEOS和GDAL的安装

    # PROJ
    cd /tmpdownloads/
    wget https://download.osgeo.org/proj/proj-6.2.1.tar.gz
    tar -zxvf proj-6.2.1.tar.gz
    wget https://download.osgeo.org/proj/proj-datumgrid-1.8.zip
    # 该压缩包需要解压至proj-6.2.1/data/目录下
    unzip -o proj-datumgrid-1.8.zip -d proj-6.2.1/data/
    cd /tmpdownloads/proj-6.2.1
    ./configure && make && make install
    # 安装完成后,下述命令查看`proj.4`的`.pc`文件路径是否在`$PKG_CONFIG_PATH`中。
    echo $PKG_CONFIG_PATH
    # 如不在,手动添加。(例中,编译后`.pc`文件绝对路径为/tmpdownloads/proj-6.2.1)
    export PKG_CONFIG_PATH=/tmpdownloads/proj-6.2.1
    
    # GEOS
    cd /tmpdownloads/
    wget http://download.osgeo.org/geos/geos-3.6.2.tar.bz2
    tar -xjf geos-3.6.2.tar.bz2
    cd /tmpdownloads/geos-3.6.2
    ./configure && make && make install
    echo "/usr/local/lib" > /etc/ld.so.conf.d/libgeos-x86_64.conf
    # relink to new gdal 
    # need to relogin R
    ldconfig
    
    # GDAL
    cd /tmpdownloads/
    wget http://download.osgeo.org/gdal/3.0.2/gdal302.zip
    unzip gdal302.zip
    cd /tmpdownloads/gdal-3.0.2
    ./configure && make && make install
    echo "/usr/local/lib" > /etc/ld.so.conf.d/libgdal-x86_64.conf
    # relink to new gdal
    # need to relogin R
    ldconfig
    

    1.4 R包的安装

    R -e "install.packages('shiny', repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('ggplot2', repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('ggmap', repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('crayon', repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('rjson', repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('udunits2', configure.args='--with-udunits2-include=/usr/include/udunits2/', repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('RPostgreSQL', dependencies=TRUE, repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('pegas', repos='https://cran.rstudio.com/')"
    
    # 在2020.07.20的安装中,CRAN下架了本软件包,但仍可以下载旧版本。解决方案见第二节
    R -e "install.packages('vcfR', repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('DT', repos='https://cran.rstudio.com/')"
    
    R -e "install.packages('maps', repos='https://cran.rstudio.com/')"
    

    1.5 Shiny-Server安装

    官方安装教程:Download Shiny Server for Red Hat/CentOS 6+

    官方配置教程:Shiny Server Professional v1.5.14 Administrator’s Guide

    wget https://download3.rstudio.org/centos6.3/x86_64/shiny-server-1.5.14.948-x86_64.rpm
    sudo yum install --nogpgcheck shiny-server-1.5.14.948-x86_64.rpm
    

    2. 奇怪问题的解决方案

    上文的安装方法在Docker的环境配置中成功完成,但在另一次实际环境配置中出现了一些问题。本节记录了这些问题的解决方案。

    /lib64/libstdc++.so.6: version ‘GLIBCXX_3.4.20’ not found (required by /usr/lib64/R/library/00LOCK-Rcpp/00new/Rcpp/libs/Rcpp.so)

    安装Rcpp时出现

    首先检查库文件中是否真的没有记录GLIBCXX_3.4.20,返回中若确实没有,则证明文件libstdc++.so.6版本过旧

    strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
    

    查找全局,寻找有无更新版本的libstdc++.so.6x

    sudo find / -name "libstdc++.so.6*"
    

    (如果没有,安装一下或许再寻找就有了)

    sudo yum install libstdc++
    

    假设找到了其他目录下的更加新的版本的文件libstdc++.so.6.0.25(可检查其中是否有GLIBCXX_3.4.20),将其复制到库目录下,并重命名(软连接)为libstdc++.so.6

    sudo cp /opt/anaconda3/lib/libstdc++.so.6.0.25 /usr/lib64/
    
    sudo mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bkp
    
    sudo ln -s /usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6
    

    /usr/lib/libgdal.so.20: undefined symbol: sqlite3_column_table_name

    安装GDAL时出现

    问题出在SQLite3安装时未设置对应参数,导致编译出的SQLite3缺少对应API。

    解决方案是手动下载源码,编译安装。注意,这里下载的版本是3070500,而不是目前最新的3320300,因为3320300版本手动添加SQLITE_ENABLE_COLUMN_METADATA后会报错,疑似存在BUG。

    wget http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz
    tar xvzf sqlite-autoconf-3070500.tar.gz
    cd sqlite-autoconf-3070500
    

    进入目录后,编辑sqlite3.c文件,添加#define SQLITE_ENABLE_COLUMN_METADATA,使看起来形如

    /* ...
    ** if you want a wrapper to interface SQLite with your choice of programming
    ** language. The code for the "sqlite3" command-line shell is also in a
    ** separate file. This file contains only code for the core SQLite library.
    */
    #define SQLITE_CORE 1
    #define SQLITE_AMALGAMATION 1
    #ifndef SQLITE_PRIVATE
    # define SQLITE_PRIVATE static
    #endif
    #ifndef SQLITE_API
    # define SQLITE_API
    #endif
    #define SQLITE_ENABLE_COLUMN_METADATA
    /************** Begin file sqliteInt.h ***************************************/
    /*
    ** 2001 September 15
    **
    ** The author disclaims copyright to this source code.  In place of
    ** a legal notice, here is a blessing:
    

    保存并退出。设置了SQLITE_ENABLE_COLUMN_METADATA后,SQLite3即可增加如下API。(细节见SQLite文档

    SQLITE_ENABLE_COLUMN_METADATA
    
        When this C-preprocessor macro is defined, SQLite includes some additional APIs that provide convenient access to meta-data about tables and queries. The APIs that are enabled by this option are:
    
            sqlite3_column_database_name()
            sqlite3_column_database_name16()
            sqlite3_column_table_name()
            sqlite3_column_table_name16()
            sqlite3_column_origin_name()
            sqlite3_column_origin_name16()
    
    

    继续编译安装SQLite3

    ./configure
    make
    sudo make install
    

    /usr/bin/ld: cannot find -lgfortran

    安装ape时出现

    查看库目录,确实没有名为libgfortran.so的文件,但是有以libgfortran为前缀的其他文件。

    cd /usr/lib64/
    ls
    

    **(可选,不一定好用)**直接重新安装编译工具集

    sudo yum install centos-release-scl-rh
    sudo yum install devtoolset-7-toolchain
    

    系统内寻找库文件

    locate  lgfortran.so
    

    如果/usr/lib64没有名为libgfortran.so的文件,而在其他目录找到了,把它复制过去。(本例在/usr/lib/gcc/x86_64-redhat-linux/4.8.2/目录下找到了libgfortran.so

    cp /usr/lib/gcc/x86_64-redhat-linux/4.8.2/libgfortran.so /usr/lib64/
    

    vcfR包默认方法安装不上,提示未找到

    原因:vcfR有问题一直没修,被CRAN下架了

    2020.07.20查看时,CRAN上的提示信息

    方法:安装旧版

    # 手动安装依赖
    install.packages('memuse', repos='https://cran.rstudio.com/')
    install.packages('pinfsc50', repos='https://cran.rstudio.com/')
    # 下载旧版安装包进行安装
    install.packages("https://cran.r-project.org/src/contrib/Archive/vcfR/vcfR_1.9.0.tar.gz", repos=NULL, type="source")
    
  • 相关阅读:
    使用python自带的http server共享文件
    vim常用快捷键与快捷操作
    wordpress 安装中文插件提示:To perform the requested action, WordPress needs to access your web server. Please enter your FTP cr
    python async异步编程,await后接task(三)
    虚拟机下ubuntu使用df命令查看磁盘空间小于实际空间
    python线程池
    使用Redis连接错误处理It was not possible to connect to the redis server(s);to create a disconnected multiple
    Sqlite数据库设置密码小工具
    [转]netcore一键部署到linux服务器以服务方式后台运行
    C#3种常见的定时器(多线程)
  • 原文地址:https://www.cnblogs.com/esctrionsit/p/13415008.html
Copyright © 2011-2022 走看看