ocaml - 单个套餐如何升级?

标签 ocaml opam

我做了opam update然后opam upgrade ,现在 OPAM 想要将 10 个软件包升级到更新的版本。

但是,由于担心无意中损坏某些东西,我想升级单个软件包,而不影响其他软件包。该包没有依赖项,并且似乎其他包都没有依赖于它。

但是,做opam upgrade <package>结果与 opam upgrade 相同,也就是说,OPAM 想要升级所有 10 个软件包,而不仅仅是我想要的一个。

我什至尝试过opam install <package>.<new version> ,但它也想一次性升级所有内容。

有没有办法只升级这个单个包,而不影响其余的?从理论上讲,没有任何问题应该发生,但在实践中,这种情况经常发生......

最佳答案

我发现这样做

opam reinstall <package>.<new version>

允许我获得我想要的,即安装<package>及其依赖项,无需升级不相关的包。

OPAM 发出警告 ( [WARNING] <package>.<new version> is not installed. ),但建议我还是安装它。

之后,尽管出现一些关于目标目录不为空的警告(由于已经安装了以前的版本),OPAM 仍能够仅安装所需的软件包,而无需升级所有内容。

请注意,如果我尝试安装软件包,也会发生同样的事情:因为我以前的 opam update在更新列表中添加了几个软件包,尝试通过 opam install 安装任何内容将触发“更新所有内容”算法,而 opam reinstall不会。

我不知道这是否是不受欢迎的行为,但如果是这样,我希望它在未来的 OPAM 版本中仍然可用,或者有一种方法可以忽略不相关的升级。

编辑:如 this OPAM Github issue 中所示,使用--criteria=paranoid--criteria=-changed,-notuptodate还可以帮助您不修改任何其他内容。

关于ocaml - 单个套餐如何升级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33351326/

相关文章:

crash - Ocaml "Out of memory"异常;详细模式说 "Stack overflow in structural comparison"

compiler-construction - 手工创建的 OCaml AST 的无限值(value)

frama-c - 使用 opam 安装 Frama-C 时出错 (Ubuntu 14.04 LTS)

ocaml - OPAM软件包未运行

configuration - 在系统范围内安装 OPAM?

ocaml - 是否可以制作 opam "sandbox"?

安装tcoq时OCaml和预处理器有不兼容的版本错误

regex - 使用正则表达式验证数字范围

OCaml:如何解决多个 `cmi` s 的 findlib 警告

ocaml - 在本地 Opam 环境中安装 Z3 OCaml 绑定(bind)时出现链接器错误