我想在本地重新编译/重新安装已经通过 OPAM 下载的包,但无需再次下载。
opam reinstall
似乎总是重新下载包,我看不到禁用它的选项。
以下是人们可能想要执行此本地重新安装的几个原因:
- 本地源代码已被修改,并且该人希望应用修改,而无需从原始源代码手动重建所有内容;
- 当前没有 Internet 连接,或者速度很慢/有上限。
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
包的来源。