查看原文
其他

世上没有白走的路,每一步都算数

2017-07-13 徐洲更 生信媛

经验这种东西,不像武侠小说里的内力那样,随随便便就能获取别人几十年的修为, 往往是你过了多年以后才会顿悟,原来这个道理那么重要,我当时怎么没有想到呢。
避免这种尴尬的方法就是用你的逻辑去判断,然后践行那些你推理之后正确的经验。

直到现在,我才读懂了下面这段话。

Package, dependency and environment management for any language: Python, R, Scala, Java, Javascript, C/ C++, FORTRAN
Package, dependency and environment management for any language: Python, R, Scala, Java, Javascript, C/ C++, FORTRAN
Package, dependency and environment management for any language: Python, R, Scala, Java, Javascript, C/ C++, FORTRAN

更加不可思议的是,这句话其实在(conda)[https://conda.io/docs/] 首页的第一句,可见有些东西,你是“看不见的“。

日常工作的窘境

我们研究所里有一台服务器,很久之前在Linux基础不太好的时候,我想安装软件时候因为缺少依赖而无法编译,甚至有时候是g++编译器的版本不够。如果你的技术足够好,你可以用旧的编译器编译新的版本,然后安装好其他以来环境,但对于大部人而已,这件事情是可以交给管理员做的。但是,问题在于我们的服务器的管理员已经离职,目前的管理者就是给你加加存储空间而已。

初见conda

我是在anaconda的介绍下认识conda的。当时为了学习Python爬虫,课程老师建议Windows平台安装anaconda,保证环境一致,省去许多软件的安全感。后来接触到虚拟工作环境,发现conda还能创建许多独立的Python环境。那时年少,就只会用conda install装装软件而已。

又见conda

后来学习生物信息学,也就是去年的事情,在安装生信软件折腾中被bioconda解救。当时发现,只要在conda中添加如下channel,就能非常便捷的安装生物信息软件了。之前还专门写了一篇文章介绍:

生信软件的好帮手-bioconda

(conda config --add channels r) conda config --add channels defaults conda config --add channels conda-forge conda config --add channels bioconda

缺陷就在于Windows的conda即便添加了这些channel也是无法安装软件的。不过好在我的目的是服务器,所以无关紧要。
不过bioncda的镜像在国外,速度太慢了,也是我当初认为的“缺陷”。

如何正确的使用bioconda

今天,我用服务器编译一个软件的时候,发现./configure出现gcc版本过低不能通过,本来想着要自己去编译一个gcc,但是又想到,似乎我用bioconda安装软件的时候,它会自动安装java, c++等依赖环境,进一步的想到,我能不能用conda环境的gcc进行编译呢?结果验证了我的想法,真的可行!

于是乎,我想到了Linux的本质就是Linus写的一个内核,然后gnu团队为了提供了无数开源软件。后来为了方便软件安装,处理错综复杂的依赖关系,就有了RPM和DPKG两大主流的软件管理器,对应yum和apt。

conda本质上也是一种软件管理器,所以分为依赖环境和在此之上运行的软件。想通这一点,就知道如何加速bioconda的下载速度了。生信软件本身不大,但是依赖的软件包倒是挺多的,只要保证依赖的软件包的下载速度够快,那么总体速度就上去了,而这些在清华源已经有了。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

因此,上帝的归上帝,凯撒的归凯撒。

多么感人的速度呀,为什么之前没有明白这个简单的道理呢?再也不需要去考虑Linuxbrew了

但是要明白这个简单的道理,却至少得了解什么是Linux,知道什么叫做软件管理器,还得折腾过conda。可见世上没有白走的路,每一步都算数。





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存