第4章 源码下载:从官方 GitHub 仓库获取 Vina 及 ADFR 工具包的正确方式

要说装 Vina 的第一步,不是急着找编译命令,而是先把源码搞到手。你去网上随便搜,能出来一堆「一键安装包」或者「绿色版」。但我劝你,源码这东西,一定要从官方仓库拿。为啥?你想想看,非官方渠道的代码鬼知道有没有被改过,跑出来的结果你敢往论文里写吗?

这一章我就带你走一遍正规流程。从 GitHub 上把 Vina 和 ADFR 工具包稳稳当当地下载下来。我自己的习惯是,所有工具链都从官方源头拿,这样后面出问题才知道往哪儿追查。

核心原则: 永远从 https://github.com/ccsb-scripps 官方组织仓库下载。其他个人 fork、第三方打包站、镜像站(除非你确认真伪)一律不推荐。

4.1 官方仓库在哪?记住这两个地址

Vina 和 ADFR 属于同一个课题组——Scripps 研究所的 CCSB 团队。他们在 GitHub 上有一个组织账号,所有工具都放在下面。你只需要记住两个仓库:

工具包 GitHub 仓库 主要用途
AutoDock Vina ccsb-scripps/AutoDock-Vina 分子对接主程序,含 vina、vina_split 等
ADFR 工具包 ccsb-scripps/ADFR 受体与配体预处理、pdbqt 格式转换、盒子生成

打开浏览器,直接访问这两个地址就好。不过我建议你不要直接在网页上下载 ZIP,后面我会说为什么。

小技巧: 我习惯在终端里先试一下能不能 ping 通 GitHub,或者用 curl -I 看一眼仓库是否可达。尤其你在内网或者用代理的时候,这一步能帮你快速定位网络问题。

4.2 选择正确的版本:稳定版 vs 开发版

进了仓库,你会看到一堆 tag 和 branch。新手最容易犯的错——直接 clone 了 main 或者 develop 分支。结果编译的时候报一堆莫名其妙的依赖错误。

为什么会这样?因为 main 分支有时候处于「正在开发中」的状态,可能依赖了最新的 Boost 或者 OpenCV 版本,你的系统根本装不上。

我的建议:永远从 tag 拉稳定版。

Vina 目前的稳定版是 v1.2.5(截至本章写作时)。ADFR 的最新 release 是 v1.0。怎么看?

# 查看所有 tag(按版本排序)
git ls-remote --tags https://github.com/ccsb-scripps/AutoDock-Vina.git

# 或者直接去 GitHub 页面点 "Releases" 侧边栏
# 稳定版一般会标记为 "Latest release"

我个人习惯把 tag 列表存下来,跟 release notes 对照着看。有一次我差点下了 v1.2.0,结果发现有个已知的批处理 bug,幸好多看了一眼 release notes。

避坑指南: 我曾经在 v1.2.3 上踩过一个坑——那个版本对 GCC 11 支持有问题,编译出来的二进制跑多线程会 segfault。后来发现官方在 v1.2.4 里悄悄 fix 了。所以 不要追新,也不要用太老的版本,盯准当前 stable 就好。

4.3 下载方式:git clone 还是 ZIP?

GitHub 页面上有个绿色的 "Code" 按钮,点开给两个选项:HTTPS 克隆 和 下载 ZIP。选哪个?

方式 优点 缺点
git clone 完整 Git 历史,方便切 tag、回滚、对比改动 需要安装 Git,初次下载略慢(尤其大仓库)
下载 ZIP 不用 Git,一次搞定 没有版本信息,无法切分支,重下载需重新解压

我选 git clone。 你想想看,后面你编译遇到问题,可能需要切到某个特定 commit 验证 bug,或者拉最新的 hotfix。这时候 ZIP 就完全帮不上忙了。

具体命令如下:

# 克隆 Vina 稳定版(指定 tag)
git clone --branch v1.2.5 --depth 1 https://github.com/ccsb-scripps/AutoDock-Vina.git

# 克隆 ADFR 工具包
git clone --branch v1.0 --depth 1 https://github.com/ccsb-scripps/ADFR.git

注意我加了 --depth 1,这叫「浅克隆」。它只拉取最新版本的代码,不会下载整个 Git 历史。对于安装来说完全够用,还能省流量。

小技巧: 如果某一天官方更新了版本,你只需要 cd AutoDock-Vina && git fetch --tags && git checkout v1.2.6,不用重新下载整个仓库。

4.4 验证下载的完整性

代码下载完了,怎么确保它是完整的、没被篡改过的?官方在每个 release 里都会附上 SHA256 校验值。你下载完了算一遍,对得上就行。

# 进入仓库目录
cd AutoDock-Vina

# 计算整个仓库的校验和(或者针对特定压缩包)
find . -type f -exec sha256sum {} \; | sort | sha256sum

# 去 GitHub Release 页面找到官方提供的 checksum
# 对比是否一致

说实话,这一步很多人会跳过。但我建议你至少做一次。我以前在某个镜像站下过被改过的源码包,里面被插了广告脚本。虽然 Vina 本身不联网,但养成校验的习惯没坏处。

注意: 如果你是用 git clone 拉的代码,Git 本身已经通过 commit hash 保证了代码的完整性。只要你信任官方仓库,基本不需要额外校验。但如果你是从浏览器下载的 ZIP,一定要检查 checksum。

4.5 目录结构速览

下载完成后,我建议你先花两分钟看看目录长什么样。心里有个数,后面编译才不会迷路。

AutoDock-Vina/
├── build/              # CMake 构建目录(初次 clone 可能不存在)
├── src/                # 核心源代码
│   ├── main/           # 主程序入口
│   ├── lib/            # 依赖库封装
│   └── split/          # vina_split 工具
├── docs/               # 文档
├── examples/           # 示例文件
├── CMakeLists.txt      # 顶层 CMake 配置
├── LICENSE             # 开源协议(Apache 2.0)
└── README.md           # 快速上手说明

ADFR/
├── bin/                # 编译后的二进制(预编译或自己编)
├── src/                # 源码
├── scripts/            # Python 辅助脚本
├── CMakeLists.txt      # CMake 配置
└── README.md

两个仓库都是 CMake 工程。你不需要深入每一个文件,但至少要知道 src/ 和 CMakeLists.txt 在哪儿——下一章编译的时候会反复跟它俩打交道。

4.6 整体流程:一图看清

下面这张图总结了我刚才讲的全部流程。从打开浏览器到源码就绪,每一步都走官方渠道。以后你装别的工具也可以套用这个思路。

从官方 GitHub 获取 Vina / ADFR 源码流程 开始获取源码 访问 ccsb-scripps 组织仓库 选择:Vina / ADFR 仓库 选择稳定版 tag(v1.2.5 / v1.0) 下载方式:git clone --branch [tag] --depth 1 验证完整性(可选但推荐) 切记:所有步骤都走官方渠道,不要从第三方站点下载源码

4.7 本章小结

到这里,Vina 和 ADFR 的源码应该已经在你的硬盘上了。我们来快速回顾一下关键点:

  • 官方仓库地址:ccsb-scripps/AutoDock-Vina 和 ccsb-scripps/ADFR
  • 版本选择:认准稳定版 tag,不要用 main 或 develop
  • 下载方式:优先 git clone --depth 1 --branch [tag]
  • 完整性校验:ZIP 下载必须做,git clone 可做可不做
  • 目录结构:重点记住 src/ 和 CMakeLists.txt 的位置
我的习惯: 每次拿到新版本源码,我都会在仓库根目录建一个 BUILD_INFO.txt,记录下 tag 名、下载时间、系统环境。以后出问题对照着看,排查会快很多。