OPAM:如何在不重新下载的情况下在本地重新安装软件包?
OPAM: how to locally reinstall a package without re-downloading it?
我想在本地 recompile/reinstall 一个已经通过 OPAM 下载的包,但不需要再次下载。
opam reinstall
似乎总是重新下载软件包,我看不到禁用它的选项。
以下是您可能想要执行此本地重新安装的几个原因:
- 本地源已被修改,此人想要应用修改,而无需从原始源代码手动重建所有内容;
- 目前没有网络连接,或者是slow/capped。
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
包的来源。
我想在本地 recompile/reinstall 一个已经通过 OPAM 下载的包,但不需要再次下载。
opam reinstall
似乎总是重新下载软件包,我看不到禁用它的选项。
以下是您可能想要执行此本地重新安装的几个原因:
- 本地源已被修改,此人想要应用修改,而无需从原始源代码手动重建所有内容;
- 目前没有网络连接,或者是slow/capped。
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
包的来源。