dxy logo
首页丁香园病例库全部版块
搜索
登录

[原创]【NGS数据分析经验分享】1-3 安装编译基本库和基本开发工具

发布于 2018-01-12 · 浏览 8871 · IP 美国美国
这个帖子发布于 7 年零 147 天前,其中的信息可能已发生改变或有所发展。
icon推荐


【目录贴】

大多数NGS数据分析工具以源代码(source code)的形式发布。需要对这些源代码进行编译才能运行。编译过程很简单,但是有时会因为缺少基本库(library)而失败。为了方便以后编译安装工具软件,我们首先安装常用的基本库。CentOS自带yum管理软件,方便快速安装基本库。使用yum需要管理员权限(sudo)。在开始之前,我推荐大家使用PuTTY软件“远程”登陆你的虚拟机来熟悉控制台终端操作。将来远程登陆服务器将使用类似的方法。可以在下面地址下载PuTTY软件。

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

img

我选择64-bit的版本,就1个exe文件,很小,下载下来放在桌面就可以了。然后运行这个文件。

img

需要在“Host Name (or IP address)”里面填上虚拟机Linux的IP地址。我们启动虚拟机Linux,登陆,打开一个控制台窗口,并敲入下面命令。

ifconfig

img

输出结果的最开始一段,找到inet后面的IP地址(我的是192.168.182.130)。

img

把这个地址复制粘贴到PuTTY的“Host Name (or IP address)”框里,给这个会话(session)起个名叫“CentOS 7 VM”,然后点击“Save”(方便以后使用)。之后点“Open”或双击保存的会话(CentOS 7 VM)。

img

第一次连接需要注册主机(这里指Linux,一般登陆的远程计算机称为主机,假想你的虚拟机Linux是远程服务器),点“Yes”(如果你不想每次看到这个对话框)。

img

用你的用户名和密码登陆。注意,密码并不会显示(连*都不会显示,这是为了防止被人看见你的密码有多长)。成功登陆会出现提示符$,表明你以普通用户登陆系统。

下面安装基本系统库(当然不完全,我根据我自己的经验选择了一些),非常简单,运行下面的命令。

sudo yum groupinstall "Development tools"
sudo yum install gcc gcc-c++ make automake
sudo yum install kernel-headers kernel-devel
sudo yum install ncurses ncurses-devel sqlite sqlite-devel openssl openssl-devel tk tk-devel bzip2 bzip2-devel readline readline-devel zlib zlib-devel libpng libpng-devel freetype freetype-devel


注意,我们在Windows里复制其中一行命令,然后到PuTTY里面点击鼠标右键,复制的命令会自动粘贴。

img

使用sudo命令会调用管理员(Administrator,或者称为sudoer)权限来执行后面的命令,因此需要输入密码(这里是你的用户密码,不是root密码,因为你的用户具有管理员权限,参考1-1 VMware虚拟机安装Linux)。在一段时间内(几分钟)不需要再次输入密码。

img

yum会自动查找关联(dependencies)的软件包(这曾经是让系统管理员非常头疼的事儿)。如果有需要安装或升级的包,会给出一个列表。键盘敲“y”并回车继续。

安装之前的第三行命令(kernel相关的包)不是必须的。如果安装之后,发现Windows共享目录不工作,则需要重新编译虚拟机驱动程序(参考1-2 配置VMware磁盘共享)。

img

安装完成之后,最好执行下面命令,来更新系统到最新版本。

sudo yum update

img

哇~~好多软件包需要更新!

在一段广告之后(有人想要插播广告吗?),更新完成。然后运行sudo reboot重新启动Linux。

img

PuTTY弹出提示“失去网络连接”(当然了,因为重启了Linux主机)。关闭PuTTY,查看VMware窗口,等Linux重启完成后(看到登陆窗口就可以,不需要登陆),重新打开PuTTY软件。双击保存的会话“CentOS 7 VM”,输入用户名和密码登陆。

下面涉及系统级别的软件安装,包括gcc,python和perl。

如果是初学者或者想活的简单一些,可以使用conda创建和管理虚拟环境(强烈推荐如果你在HPC上工作,而不是可以随便搞的虚拟机)。如果需要在系统上运行不同版本的软件,这将非常方便。如何使用conda,请移驾到楼下。如果想要更加高冷,使用完全独立的虚拟环境,比如Vagrant或Docker,请Google。如果想挑战自己,请继续看(反正是虚拟机,搞坏了就重新装一个)。

运行下面的命令检查GCC,Python和Perl的版本。

gcc --version
python --version
perl --version

img

GCC的版本是4.8.5-16,够用(就算不够用也最好不要尝试自己安装,找个头发比你多的朋友帮忙吧);Python的版本是2.7.5,这个版本比较低,需要升级(然而这已经是系统自带Python的最新版本,我们刚刚sudo yum update过的);Perl的版本是5.16.3,也够用(这个如果不够可以自己搞)。我发现我们只需要安装新的Python就可以了,惊不惊喜?意不意外?(难道你就不想问问Java的事儿吗?为了做教程的时候不困,Java被我给喝了。)

到Python的官方网站下载(https://www.python.org/downloads/)最新的Python 2.x (或者你喜欢用3.x也可以,不过我发现很多分析工具都是用2.x开发的)。

img

千万不要点击“Download Python 2.7.14”下载,因为网站识别你的操作系统为Windows,而我们需要下载Linux版本。

img

向下找到“Looking for a specific release?”,点击这个“Python 2.7.14”。

img

在新页面右键点“XZ compressed source tarball”(这个文件小一点儿,也可以选上面的Gzipped文件,解压缩参数略有不同)。

img

在弹出的对话框中选择“Copy link address”。

img

在PuTTY控制台中(确保你在主目录~下,如果不是,使用cd回到主目录)进入Downloads目录(或者随便什么你喜欢的目录),敲入wget (此处有个空格),按鼠标右键(复制的地址会自动粘贴),按回车键下载(wget是命令行的下载工具)。

cd
cd Downloads
wget

https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz

img

下载完成后,运行下面命令检查文件完整性。

md5sum Python-2.7.14.tar.xz

img

对比这个字符串“1f6db41ad91d9eb0a6f0c769b8613c5b”是否和网页上列出的一致。如果一致,说明下载的文件完整无缺。md5sum(有时也会用sha256sum)工具非常有用,常常用来生成文件的哈希(hash)串(你可以理解成文件指纹)来验证文件完整性。这对超大文件(NGS测序数据都超大的)非常有用(当文件非常大时,在复制、存储、上传、下载等过程中都可能出错)。

用下面的命令解压缩(如果你懒得打字,可以只打文件开头的几个字母,比如Py,然后按TAB键,系统会自动补全,如果不能补全,就接着再打几个)。

tar Jxvf Python-2.7.14.tar.xz

img

解压完成后,会生成一个目录“Python-2.7.14”(也就是Python 2.7.4的源代码目录),进入这个目录(cd Python-2.7.14)。

为了方便使用,我习惯在主目录下创建“Tools”目录(mkdir ~/Tools),并把各种程序都安装到这个目录下。

在Python 2.7.4的源代码目录中,用下面命令编译并安装Python。

unset PYTHONPATH
unset PYTHONHOME
./configure --prefix=$HOME/Tools/Python-2.7.14

img

这里要注意./不能省略。Linux默认只从系统PATH(使用echo $PATH查看系统路径,或使用printenv查看所有系统环境变量)里面寻找命令(除非你专门设置),而不包括当前目录(即使configure程序就在当前目录下,系统也找不到)。--prefix选项指定安装路径。如果不使用这一选项,之后的make install命令将会把程序安装到系统目录下(这需要sudo,然而你会发现,当远程操作服务器集群时,你并没有这个权限)。

然后运行make编译。

make

img

编译成功。系统提示这几个模块(module)找不到。这几个都是过去的老系统需要的库,现在已经不需要了,直接忽略掉。如果你发现还有其他的模块找不到(比如ncurses、readline之类),那么你没有成功安装基本库,请从头阅读本教程。运行下面命令测试(不是必须的)Python(此处可以插入广告或者吃个瓜什么的)。

make test

测试期间,你会看到许多警告信息(warning)。软件大都不是完美的,只要没有错误(error),我们就凑合着用吧。

img

测试成功后,安装Python到指定的目录($HOME/Tools/Python-2.7.14)。
make install

img

安装完成后,我们进入到~/Tools目录查看(~$HOME是等价的),果然有个Python-2.7.14目录。Python-2.7.14目录下有4个子目录,分别存储可执行文件(bin),头文件(include),库文件(lib)和联机Man说明文档(share)。运行python --version查看版本,发现还是老版本。这是因为我们还没有把新版本Python放在系统PATH里面,所以系统并不知道我们安装了新版。可以通过给出路径来运行新的Python。

img

也可以把新的Python添加到系统PATH

export PATH=$HOME/Tools/Python-2.7.14/bin:$PATH

这是我们再运行python --version查看版本,就是新版了(系统会运行找到的第一个Python)。

可以把这行命令放到启动配置文件~/.bashrc中,这样就不用每次启动都运行一遍了(因为~/.bashrc会在启动终端时自动运行)。

echo "export PATH=$HOME/Tools/Python-2.7.14/bin:$PATH" >> ~/.bashrc

img

在Linux中,以.开头的文件是隐藏文件。ls命令需要-a参数来显示所有文件。

ls -a

img

使用了-a选项,发现了好几个.开头的文件,其中,.bash_profile是登陆时自动运行,.bashrc是开启终端(在虚拟机Linux中打开终端)时自动运行(PuTTY相当于登陆并开启终端),.bash_logout在登出时运行。我常常通过编辑.bashrc来实现自动运行脚本。

为了方便安装Python的包(package),下面安装pip包管理器。

https://pip.pypa.io/en/stable/installing/#installing-with-get-pip-py

img

下载get-pip.py程序。

cd ~/Downloads/
wget https://bootstrap.pypa.io/get-pip.py

然后在控制台输入下面命令安装pip。

python get-pip.py

img

pip是Python的包管理器,和yum类似(yum管理Linux软件,pip管理Python包,下面要介绍的cpan管理Perl模块)。pip用于安装、更新、删除Python软件包,并且能够自动查找关联的包(dependencies)。

Perl也有类似的模块管理器(Perl中叫module,Python中叫package,都是一样的意思)。下面配置Perl模块管理器cpan。cpan默认已经安装好了,在控制台敲cpan运行。

img

第一次运行cpan需要简单的配置。

img

配置完成显示cpan[数字]提示符,键入h可以显示简单的帮助,q退出。接着安装App::cpanminus模块,已简化未来其他模块的安装。

cpan App::cpanminus

img

模块的下载,解压缩,编译和安装都是自动完成的。之后只需要运行cpanm Module::Name命令就可以安装模块了。模块默认安装在你的用户主目录下的perl5目录中。如果希望自己指定目录,可以安装local::lib模块。

好累!

就到这里,再见吧!

PS:发没发现,我的PuTTY的颜色比你的好看!想知道是怎么弄的?不告诉你

【回到目录】

最后编辑于 2018-09-09 · 浏览 8871

5 10 6

全部讨论0

默认最新
avatar
5
分享帖子
share-weibo分享到微博
share-weibo分享到微信
认证
返回顶部