whohas 项目在 GitHub 上保留了一份相当清晰的自我定位:它是一个命令行查询工具,用 Perl 编写,用来同时检索多个 Linux、BSD 及类 Unix 软件仓库中的包信息。支持范围包括 Arch、Debian、Fedora、Gentoo、Mageia、Mandriva、openSUSE、Slackware、Source Mage、Ubuntu、FreeBSD、NetBSD、OpenBSD、Fink、MacPorts 和 Cygwin。
这类工具容易被误读成“跨平台包管理器”。但 whohas 不安装软件、不升级软件,也不处理依赖。它的价值更窄,也更实际:把不同发行版的软件包名称、版本、仓库和详情链接摆在一张终端输出里,供维护者和高级用户对照。
whohas 解决的是跨发行版查包,而不是替代包管理器
Linux 生态长期存在一个现实问题:同一个上游软件,在不同发行版里可能叫不同名字,版本节奏也不同。Arch 的 PKGBUILD、Gentoo 的 ebuild、Debian 的打包元数据,背后是不同社区的规则、补丁和维护习惯。
whohas 最初面向的就是包维护者。维护一个新包或更新旧包时,维护者常会参考其他发行版已经写好的打包定义,看看构建参数、补丁处理、依赖拆分是否有可借鉴之处。whohas 把这些入口聚合到命令行里,降低了来回打开多个仓库网页的成本。
它的输出字段也很朴素:发行版、包名、版本、日期、仓库名和详情 URL。项目文档中的 gaim 示例只是历史输出样例,不能当作当前仓库状态理解。
| 工具 | 主要用途 | 更适合谁 | 判断 |
|---|---|---|---|
| whohas | 终端里横向查多个发行版包信息 | 包维护者、高级用户 | 轻量、直接,但依赖各仓库查询接口 |
| Repology | 跟踪各发行版软件版本 | 维护者、发行版观察者 | 更像版本监测服务 |
| pkgs.org | 搜索 Linux/BSD 软件包仓库 | 普通用户、管理员 | Web 检索体验更完整 |
| Debian namecheck | 检查名称在何处被使用 | Debian 开发者 | 场景更窄,偏命名冲突检查 |
典型用法很 Unix:查出来,再用 grep 和 cut 处理
whohas 的使用方式延续了传统命令行工具的思路。用户可以直接执行 whohas gimp 查询相关包,再用 grep "gimp " 过滤精确包名,避免把 gimp-print 之类结果混进来;也可以用 grep Arch 或 grep "^Arch" 只看 Arch Linux 结果。
这种设计对熟悉 shell 的用户友好,对普通桌面用户则不算友好。它没有现代 Web 服务的筛选面板,也不会替用户解释哪个版本更适合安装。它给的是线索,不是结论。
Debian 是一个相对特殊的支持对象。whohas 文档提到,它可以按 Debian 的不同发布分支查询版本,这是其跨同一发行版不同 release 比较中较完整的一部分。但 Debian 这里指的是 binary distribution,理解时不能简单等同于所有源码包或所有架构状态。
最该盯的是准确性边界:Slackware、架构和仓库链接
whohas 的限制比功能更值得认真看。文档明确说明,Slackware 只查询 Current;架构信息主要围绕 x86,而且对 Debian、Gentoo 等场景并不保证完全可靠。换句话说,终端里看到的版本和可用性,不能直接变成生产环境决策。
这对包维护者的影响很具体:whohas 适合做第一轮比对,帮助找到其他发行版的打包入口;真正提交更新、判断依赖或确认二进制可用性时,还要点开输出里的仓库 URL 核验。普通用户如果只是想知道“我现在能不能装”,用发行版自带包管理器或 pkgs.org 这类 Web 查询通常更稳。
接下来最该观察的,不是 whohas 会不会变成大型索引服务,而是各发行版是否仍提供稳定、可查询、字段足够清楚的包列表接口。whohas 这种工具的生命力,取决于上游仓库页面和接口是否可被可靠抓取。对老派 Unix 工具来说,这既是它的轻,也正是它的脆。
