【问题标题】:Installing a list of packages in OPAM在 OPAM 中安装软件包列表
【发布时间】:2020-04-16 04:07:37
【问题描述】:

OPAM 是一个很棒的 OCaml 包管理器。

有没有办法像pip 在 Python 中那样安装给定的软件包列表(使用命令 pip -r requirements.txt)?

我们有一个与几个人共享的小型 Git 存储库,一次安装所有项目依赖项会很好。

是的,我们可能有一个小的 shell 脚本或列出 .txt 文件中的包并将其通过管道传输到 opam install ...但可能有更好的解决方案。

谢谢

【问题讨论】:

    标签: installation ocaml package-managers opam


    【解决方案1】:

    假设您在项目的NAME.opam(或只是opam)文件中指定了依赖项,您可以运行

    opam install . --deps-only
    

    这将为您的包(如果您的项目中有多个 opam 文件,则安装包)的所有依赖项。

    默认情况下 opam 会忽略未提交的更改,因此如果您想使用修改后的 opam 文件运行此命令,您需要添加 --working-dir

    您可以选择锁定通过运行opam lock 使用的依赖项版本,这将创建.opam.locked 文件。 opam-lock 是 2.0.5 中的一个单独插件(可能直到 2.1),所以 opam 会提示安装它。

    在存在锁定文件的情况下,您还应该将--locked 添加到opam install 以要求它使用锁定文件并安装完全相同的版本。

    我还建议添加-j X,其中X 是您可用的内核数量,这将加快速度。

    我的 Makefile 中通常有以下内容:

    deps:
            opam install . --deps-only --locked --working-dir
    

    .opam文件的语法描述here

    【讨论】:

    • 谢谢。 .opam 文件的语法是什么?
    • 我有opam 1.2.2版本:和你刚才说的兼容吗?我有以下opam: unknown option --working-dir'。`
    • 不确定 1.2.2,它适用于 2.0.5,这就是我所拥有的。为什么不升级 opam?语法手册见这里:opam.ocaml.org/doc/Manual.html#Common-file-format网上很多例子,这个很容易消化:github.com/inhabitedtype/httpaf/blob/master/httpaf.opam
    • 我可能做不到:尝试升级时收到消息opam is already the newest version (1.2.2-6).。可能是因为我在 WSL(在 Win10 中)中使用 Ubuntu,或者我在中国并且某些连接被阻止......无论如何,我可以没有它。谢谢@Lupus!
    • 发行版通常会提供相当过时的 OCaml 基础架构。我建议按照in official manual 的描述安装最新的 opam,并使用新的 OCaml 创建全局/本地切换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2021-03-13
    相关资源
    最近更新 更多