5

我想在本地重新编译/重新安装已经通过 OPAM 下载的包,但无需再次下载。

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

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

  • 本地源代码已被修改,并且该人希望应用修改,而无需从原始源代码手动重建所有内容;
  • 当前没有 Internet 连接,或者速度很慢/有上限。
4

1 回答 1

4

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

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

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

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

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

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

于 2015-05-05T18:24:22.270 回答