分享

18年第一篇干货|生信开发环境的构建与调试

 微笑如酒 2018-01-01

工欲善其事,必先利其器。

在后续的生信心得分享之前,我想先谈一下开发环境的构建以及网络调试的问题。用直接一点的话说便是---

'你是不是长期上不了Google,查资料倍感烦恼?'

'你是不是发现在下国外的软件速度会越来越慢...刚开始还有100k,后来直接就倒在了进度条上?'

'安装软件十分费劲,存放、编译、设置环境变量等步骤十分繁琐;再考虑到后续更新简直更烦人...'

这篇文章主要就是用来解决这些问题。当然,鉴于这个问题的敏感性,我将主要从网络安全-数据保密的角度阐释相关理论(only)。希望大家能够在目前的特殊网络环境对症下药,根据自己的需要做到有的放矢。

为什么某些网址我们无法访问

简而言之,主要两种情况:

  1. IP地址在通信管道上被block;

  2. DNS无法正确解析。

首先谈一谈DNS污染问题。

如果你不知道什么是DNS,有兴趣请自行百度。在这里为了增加文章的可读性,我们不妨将其理解为在网络交通中指路的交警,功能是实时翻译网址为IP地址。

当然一些无良运营商以及其它有关方出于自身经济利益因素会对流量进行劫持。例如,你想上一个baidu.com,人家非给你导流到澳门赌场在线发牌,给别人强行做广告牟利。其做法就是利用恶意的DNS解析到错误IP地址,从而使得访问出现以上问题。

对付这种情况当然有对应的策略,我们只需要人工指定某网址对应的IP地址即可。在各个系统中都有这样的名单,叫做hosts。点到为止,具体的位置请自行百度。

当然这种对应关系常常会动态变化---即我今天的指定的google IP往往后面就失效了,而hosts的访问优先级是高于代理工具和外源DNS查询结果的,所以之前取巧的IP地址失效后必须删除,否则就给你带到沟里去了。

IP block

有些无良运营商将网络访问IP直接封掉,使得我们看到404。对于这种情况,之前所述的trick都回天泛术,所做的只能绕道而行曲线救国。 

无良运营商“没有访问限制”也是相对而言的,否则这条路未免也太简单了点(In fact, all traffic online is censored by the big brother.)。因此这就牵扯到伪装(encrypt)流量的问题。各种proxy工具也就是在这个上面下文章。

当然你可能会想让我推荐一个工具。因此我推荐你们看看生信技能树[2017-11-23]的一篇文章。别人造好的轮子我也不想重复造了。


不过要说明的是,这个方法不一定可行,谷歌现在可精明了...不是你想薅羊毛就可以的。如果有需要,可以去相关网站直接花RMB租服务器进行科学计算吧。多一句,阿里云等就算了。当然也有现网站卖现成做好的梯子,完全够科研用。

以上是我认为一些出于实用目的,所能实现正常上网的最简洁的理论知识了。我相信我能说的已经够多,有心人也知道怎么去做了。

最后再提示小的细节:

  • 清理DNS【flush DNS】 错误的DNS结果是有缓存的,这就意味着常常你需要排毒(否则还会掉到坑里)。对于windows大多使用:

ipconfig/flushdns

Mac OS使用:

sudo dscacheutil -flushcache

各大软件的镜像使用

对于国外访问十分困难这一情况,其实科研界也有着手应对。其中很重要的一点就是建立镜像,目前在国内主要的镜像源在清华、中科大。兰州大学目前也承担了很多镜像的建立工作。

由于本人常用的编程环境为R以及Python,下面直接贴一下Bioconductor、CRAN、Conda(后面会详细阐述)的镜像指定代码:

对于RStudio的两大软件托管仓库:

chooseBioCmirror()chooseCRANmirror()


我们所要选取无非就是网络环境最为接近的那个镜像,这样可以极大地提高软件下载速度。

在Anaconda中推荐使用清华开源镜像库:

 

只需要跟着在terminal添加即可:

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

Anaconda在生信分析环境构建中的作用

很多小白上来就问Conda是什么,能有什么用。在Linux安装软件远比win/mac复杂。一般来说源码的安装需要经过冗杂的编译过程(make - make test - make install),如果编译成功,最后还要将环境变量添加到bashrc中。

Conda大体可以与360软件管家之类的软件进行类比。当然,除了一站式安装软件的功能外,anaconda的用处远比windows上的各类管家软件强大。在此试举几例用途,其他用途大家可以自行学习manual或者参考Cheatsheet进行管理。

安装软件

conda install # -c 参数表示托管地址


软件列表

conda list


环境模拟

有时候由于软件兼容性的原因我们需要构建旧版本的Python或者R等配套环境,利用conda可以轻易实现这一点:

conda create --name py35 python = 3.5 R = 3.3.2



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多