开源推荐:MacPorts
说到想在 macOS 下装点啥,一般都会想到 Homebrew。但 macOS 上也有其他包管理软件,MacPorts、Nix、pkgsrc、Fink 等等。MacPorts 社区相对活跃且有针对 macOS 优化,这回就来聊下 MacPorts 和 Homebrew 相比优势和劣势在哪。
优势
- 软件数量多,大部分你需要的包都能找到。根据 ports 站统计 MacPorts 目前有 25000+ 个包,而 homebrew/core 只有 5000 左右。数量差距如此之大的原因一是 MacPorts 支持同时安装多版本 Python、Perl、PHP 包导致这类包数量较多,二是 Homebrew 的准入标准较高。
- 准入门槛较低意味着你想要的软件基本都可以自己写 Portfile 提交进来,当然也有些不成文的规定,例如尽可能从源码编译。
- PortGroup 丰富,CMake?Meson?没问题,大多数情况下照着现有的 Portfile 抄作业就足够了,语法非常直观。
- ${prefix} 灵活,安装到自定义路径下后可以直接打包成 .pkg 分发,MacPorts 自身的安装包就是通过这个机制生成的。
- sudo 大法好,多用户环境下也很方便。
劣势
- 包数量太多加重了维护负担,目前很多包版本都落后于上游。这块只能靠社区贡献了。
- 软件协议检查严格,协议不兼容时不提供二进制包。由于 MacPorts 的策略是避免使用系统库,OpenSSL 和 GPL 等协议兼容性问题十分常见。Homebrew 似乎没有考虑这个问题,全部提供二进制,用户体验好很多。
- 自动打包系统规模很小,除了一台 Apple Silicon 的编译机由 MacStadium 赞助以外都在 Austin 由 Ryan 管理。1
- port 命令本身使用 Tcl 语言实现。这个语言圈子较小,目前只能通过 GSoC
吃人吸引新鲜血液。 - 性能较差,安装包时遍历依赖要很久,装的包多了自动 rev-upgrade 会很慢。
参考资料
- https://lists.macports.org/pipermail/macports-dev/2017-September/036377.html
- https://lists.macports.org/pipermail/macports-users/2021-February/049571.html
- four Xserves and a Power Mac G5 in Austin, TX ↩