操作系统选择:Linux、macOS、Windows 三者的安装难易度对比
装 Vina 之前,先选好战场。
说白了,操作系统就是你跟分子对接之间的那层壳。壳选不好,后面全是坑。我自己折腾过三个系统,也帮不少新手远程排过雷——嗯,有些雷其实完全可以避开。
三者的第一印象
| 系统 | 开箱复杂度 | 依赖管理 | GPU 加速门槛 | 我踩过的坑 |
|---|---|---|---|---|
| Linux | 中(需配包管理器) | 极佳(apt/yum) | 低 | …… |
| macOS | 中低(Homebrew) | 良好 | 中(Metal 兼容麻烦) | …… |
| Windows | 高(WSL 或 Cygwin) | 差 | 高 | …… |
你可能觉得 Windows 用户多就省事?恰恰相反。AutoDock Vina 从骨子里就是 Unix 世界的东西,它的 makefile、依赖链、GPU 扩展,每一个环节都默认你在一台 Linux 上干活。
Linux 发行版:Ubuntu vs CentOS
我个人习惯用 Ubuntu LTS。原因很简单:社区大、包新、提问秒回。我曾经在 CentOS 7 上编译 Vina 1.2.3 时,因为 gcc 版本太低,卡了整整一下午。后来发现 CentOS 官方仓库里的 gcc 还是 4.8.5,连 C++11 都半残。而 Ubuntu 20.04 自带 gcc 9,一条命令解决问题。
CentOS 当然也能用,如果你所在的高性能计算集群强制用它,那就用。但你需要先配 EPEL 和 Devtoolset,步骤多一点。
我的推荐顺序:
- Ubuntu 22.04 LTS 或 20.04 LTS
- Debian 11/12
- CentOS 7 + 额外仓库(不推荐新手)
- Fedora(次选,但也能跑)
macOS 的典型陷阱
macOS 有 Homebrew,看似方便。但你要注意:Vina 的官方源码里有些 POSIX 特有的头文件,比如 <sys/sysinfo.h>,苹果的 Clang 可不认。我记得有一次帮同事在 M1 Mac 上编译,报错 sysinfo 未定义,最后只能用 brew install autodock-vina 装了一个预编译版本——这倒是个捷径。
另外,macOS 的 gcc 其实是个软链到 Clang,而 Vina 的 CMake 脚本有时候会把它误判成 GNU GCC,导致链接失败。解决办法是显式指定编译器:
export CC=/usr/local/opt/gcc/bin/gcc-11
export CXX=/usr/local/opt/gcc/bin/g++-11
cmake -B build
cmake --build build -j4
注意:macOS Ventura 及以上版本中,系统 Integrity Protection 会拦截某些编译产物,你可能会遇到“无法打开来自未识别开发者的应用”提示。这时候需要手动去“安全性与隐私”中允许,或者用 spctl --master-disable 临时关闭(不推荐长期)。
Windows:我建议你直接放弃原生
Windows 原生编译 Vina?我试过,很痛苦。
首先,Vina 依赖 Boost、OpenBabel 和 pthread。Windows 没有 pthread,你得上 MinGW 或者 Cygwin,而 Cygwin 会把 Unix 路径映射成 C:\cygwin64\...,Vina 的 CMake 脚本不认。我曾经花了一整天配置 MSYS2,最后跑出来的可执行文件只要碰到绝对路径就崩溃。
正确的 Windows 玩法:WSL 2
# 在 PowerShell(管理员)中:
wsl --install -d Ubuntu-22.04
# 然后所有操作都在 WSL 终端里完成
sudo apt update
sudo apt install build-essential cmake libboost-all-dev
git clone https://github.com/ccsb-scripps/AutoDock-Vina.git
cd AutoDock-Vina
cmake -B build
cmake --build build -j$(nproc)
这样做的好处是,你依然拥有 Windows 的图形界面,却能在 Linux 子系统中得到最干净的编译环境。我个人把所有计算任务都放在 WSL 里,文件可以通过 /mnt/c/ 共享。
一句话总结
我的建议:如果你还没装系统,直接上 Ubuntu 22.04 LTS。如果手里只有 Windows,装一个 WSL 2 也够用。macOS 用户直接用 Homebrew 装预编译包,别自己编译。不要为了“折腾”而选最难的路——你的时间应该花在对接结果上,而不是环境配置上。
操作系统决策树(SVG)
下面这图总结了我平时帮人推荐操作系统的逻辑。你可以快速对照自己的情况。