OPAM是OCaml的出色软件包管理器。
是否可以像Python中的pip
那样安装给定的软件包列表(使用命令pip -r requirements.txt
)?
我们有一个与几个人共享的小型Git存储库,一次安装所有项目依赖项会很好。
是的,我们可能会有一个小的Shell脚本,或者在.txt文件中列出了软件包,并将其通过管道传输到opam install
...,但是可能会有更好的解决方案。
谢谢
假设您在项目的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