列出与给定OCaml编译器兼容的所有opam包版本

时间:2017-11-07 17:11:53

标签: ocaml opam

opam info package有一个字段available-versions,其中列出了针对至少一个OCaml版本 的给定包的所有版本。

对我来说,在日常使用中,对我目前的OCaml版本提供的软件包版本列表更有用。

例如,如果我目前使用OCaml 4.05.0,并且运行opam info merlin,我会得到:

 available-versions: 1.3, 1.3.1, 1.3.1-trunk, 1.4, 1.4.1, 1.5, 1.6, 1.7, 
 1.7.1, 2.0.0, 2.1.0, 2.1.1, 2.1.2, 2.2, 2.3, 2.3.1, 2.5.0, 2.5.1, 2.5.2,
 2.5.3, 2.5.4, 2.5.5, 3.0.0, 3.0.1, 3.0.2, 3.0.3

但如果我尝试opam install merlin.1.3,它就会失败:

[ERROR] merlin.1.3 is not available because your system doesn't comply
with ocaml-version > "4.00.1" & ocaml-version < "4.02.0".

请注意,opam list仅输出一行(已安装的版本,如果未安装,则为--),因此它也不允许知道哪些版本可以安装。

有没有办法直接获取实际可用的所有包版本(对于我当前的编译器),而不是尝试安装它们中的每一个?

1 个答案:

答案 0 :(得分:2)

我将使用opam 2.0。为此目的,您有两种选择:

  • opam list --available merlin只会通过查看开关,环境和merlin包本身来列出内容。此选项应在opam 1.3中提供。

  • opam list --installable merlin实际上会运行解算器以检查是否正常。这意味着特别是处理依赖关系。我认为这个选项是2.0的新功能。

最后,选项--all-versions允许您强制opam列出每个包的所有版本。