如何升级单个包?

时间:2015-10-26 16:56:38

标签: ocaml opam

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

然而,由于担心无意中破坏某些内容,我想升级单个包,而不会触及其他包。这个包没有依赖关系,似乎没有其他包依赖它。

然而,执行opam upgrade <package>会导致与opam upgrade相同,即OPAM想要升级所有10个包,而不仅仅是我想要的包。

我甚至试过opam install <package>.<new version>,但它也希望一次升级所有内容。

有没有办法升级这个单独的包,而不接触其余的?从理论上说,没有什么可以打破,但在实践中经常发生......

1 个答案:

答案 0 :(得分:1)

我发现正在做

opam reinstall <package>.<new version>

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

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

之后,尽管有一些关于目标目录不为空的警告(由于已安装的先前版本),OPAM只能安装所需的软件包,而无需升级所有软件包。

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

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

修改:如this OPAM Github issue所示,使用opam reinstall--criteria=paranoid也可以帮助您不修改任何其他内容。