4

opam list -a根据输出列出当前在 OPAM 上可用的所有软件包,但不显示当前未安装的软件包的版本号opam list --help

(...) 输出格式每行显示一个包,每行包含包的名称、安装的版本或 -- 如果未安装包,(...)

如何列出所有软件包,包括它们的版本号?

4

3 回答 3

5

使用opam info <packagename>.

由于包的依赖关系,我猜opam list只打印已安装包的版本。列出最新版本的软件包,例如尚未安装的软件包,并不是很有用。

于 2015-10-13T09:01:28.393 回答
2

anol 答案的精炼(和更快)版本是一次性提供整个包列表opam show(要求opam同时输出packageversion字段),并使用 处理结果sed,因为显然show在其自己的行上输出每个字段:

opam show -f package,version $(opam list -a -s) \
 | sed -e '/ *package:/N; s/ *package: \([^\n]*\)\n *version: \([^\n]*\)/\1: \2/'
于 2015-10-13T14:52:11.893 回答
1

这不是一个理想的解决方案,但使用 camlspotter 的建议,我version使用以下 shell 循环手动查询每个包的字段:

for p in $(opam list -a -s); do echo "$p $(opam show -f version $p)"; done

它可以工作,但在我的机器上完成大约需要 85 秒(查询当前可用的 1000 多个包)。

于 2015-10-13T11:30:37.710 回答