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

时间:2015-05-05 18:07:43

标签: ocaml opam

我想在本地重新编译/重新安装已经通过OPAM下载的软件包,但不再下载它。

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

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

  • 本地资源已被修改,此人想要应用修改,而无需手动重建原始源代码中的所有内容;
  • 目前没有互联网连接,或者速度缓慢/上限。

1 个答案:

答案 0 :(得分: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包的源。