opam list -a
根据输出列出当前在 OPAM 上可用的所有软件包,但不显示当前未安装的软件包的版本号opam list --help
:
(...) 输出格式每行显示一个包,每行包含包的名称、安装的版本或 -- 如果未安装包,(...)
如何列出所有软件包,包括它们的版本号?
使用opam info <packagename>
.
由于包的依赖关系,我猜opam list
只打印已安装包的版本。列出最新版本的软件包,例如尚未安装的软件包,并不是很有用。
anol 答案的精炼(和更快)版本是一次性提供整个包列表opam show
(要求opam
同时输出package
和version
字段),并使用 处理结果sed
,因为显然show
在其自己的行上输出每个字段:
opam show -f package,version $(opam list -a -s) \
| sed -e '/ *package:/N; s/ *package: \([^\n]*\)\n *version: \([^\n]*\)/\1: \2/'
这不是一个理想的解决方案,但使用 camlspotter 的建议,我version
使用以下 shell 循环手动查询每个包的字段:
for p in $(opam list -a -s); do echo "$p $(opam show -f version $p)"; done
它可以工作,但在我的机器上完成大约需要 85 秒(查询当前可用的 1000 多个包)。