发布于 

踩坑记(第一期)

记录我踩过的坑。这里的坑指完全按照指南操作但是却出现了意料之外的问题,我是如何解决的。这些坑主要集中在软件的安装上。虽然我之前已经踩过不少坑,但只有个别做了记录(可以查看之前的文章)。这个页面将会为今后的踩坑做记录。

Mummer

Q:提示找不到 libumdmummer.so.0。

A:按照这个 issue 的提示,这是因为 mummer 装在了默认位置(./configure —prefix=xxx没有指定),可以在装完后执行sudo ldconfig

Syri or Plotsr

Q:conda 无法直接安装。

A:下载源码安装。首先建立一个新的 conda 环境,安装 numpy 等必要的依赖,然后从 Github 下载 Syri 或者 Plotsr 的源码,执行python setup.py install,期间可能会报一些警告(Warning),忽略就行。

Gnuplot or Mummerplot

Q:WSL 下 mummerplot 只能生成绘图脚本,无法正常绘图。

A:mummerplot 绘图依赖 gnuplot。而 gnuplot 在 Linux 下编译安装会跳过没有的依赖,比如一些图形库、Qt 这种。可以尝试下载 gnuplot 需要的各种依赖,重新编译(没试过,改天试试)。取巧的方法是安装 Windows 版本 gnuplot,手动执行 mummerplot 生成的 xxx.gp 脚本进行绘图。

jcvi

Q:安装 jcvi 需要 pysam、pybigwig 等依赖,Windows 下 pip 无法安装。

A:用 WSL。

Q:jcvi 画使用 jcvi.graphics.xxx 提示需要 LaTeX。

A:我服了,为什么一个 Python 程序画图需要 LaTeX。我在 Windows 上是装过 LaTeX 的,因为我的 jcvi 是装在 WSL 中的,我不想在 Wsl 里再装一遍。我想到 WSL 和 Windows 的环境变量是互通的,可以在 WSL 里直接调用 LaTeX。但我之前把这个功能关了,原因是当 Windows 和 WSL 里有一样的软件比如 node.js 或者 Python 时,这就很烦。我直接采取简单粗暴的方法关掉了。所以这一方案失效了(以后可以试一下)。不过,虽然 jcvi 的 wiki 里的提示是自行安装 TeXlive(好家伙):

但是唐老师给 jcvi.graphics留了一个—notex 选项 ,在命令后加上就可以直接画图了。不过像是jcvi.compara.synteny depth —histogram 这种本身就不需要 LaTeX 来画图。

Docker-Easyconnect

Q:提示 1080 端口被占了。

A:hyper-v 每次启动会默认保留一些端口,保留的端口是随机的,可以通过 netsh interface ipv4 show excludedportrange protocol=tcp 查看。运气好的话重启一下就行了。当然更好一些的做法是挑一个没被占的端口,比如改成 1180:1080,然后在 SwichyOmega 等软件的 socks5 代理处改成 1180。当然也有一些单独设置端口的手段,比如 这个方法,但我没有试过。

不过我现在使用一个叫 EasierConnect 的项目,用 Go 写了一个命令行客户端,支持短信验证码,使用起来比 Docker 方便,十分优雅。