OPAM:如何在不重新下载的情况下在本地重新安装软件包?

OPAM: how to locally reinstall a package without re-downloading it?

我想在本地 recompile/reinstall 一个已经通过 OPAM 下载的包,但不需要再次下载。

opam reinstall 似乎总是重新下载软件包,我看不到禁用它的选项。

以下是您可能想要执行此本地重新安装的几个原因:

opam 将尝试使下载的包与上游包保持同步。这意味着,如果包在本地缓存中并且它与上游包没有区别,那么它就不会被下载。

如果要在本地更改源代码,则需要 pin 包。 另一种选择是创建您自己的存储库并将其添加到您的 opam。您的本地存储库可以包含所有包或仅包含您感兴趣的几个包。对于处理本地存储库,有一个 opam-admin 工具。

创建自己的存储库不是一件容易的事,所以我建议您使用 pin 命令,并将您想要在本地拥有的包固定到指定的本地路径。

示例(需要 opam 1.2 或更高版本)

 opam source lwt.2.4.8
 opam pin add lwt lwt.2.4.8

lwt 是随意选择的,只是因为它很短。第一个命令将下载指定版本的源代码并将它们与 opam 文件一起放在文件夹 lwt.2.4.8 中。第二个将强制 opam 工具使用此特定文件夹作为 lwt 包的来源。