【问题标题】:Can I use opam to make a package out of a local file and install it?我可以使用 opam 从本地文件制作一个包并安装它吗?
【发布时间】:2020-05-13 08:35:13
【问题描述】:

我是 opam 的新手,并试图弄清楚如何正确使用它。对于一个班级,我想为学生设置一个安装了一些自定义包的环境。 (该软件包将包含我从另一所学校的同事那里获得的一些原始 .ml 文件;这些文件在他们的 github 上,但我看不到 .opam 文件,据我所知,它们不在任何文件中官方软件包发布。)

我可以以某种方式将这些本地 .ml 文件称为一个包并要求 opam 安装它吗?文件是否必须首先在 github 上,如果可以,我可以使用我同事的现有存储库作为源吗?我不想公开这些,因为这不是我自己的作品;我只想配置我的本地环境,以便可以轻松地将文件中的代码作为一个包包含在内。基本上我不知道最好的方法,所以我很乐意提供任何建议。

【问题讨论】:

    标签: configuration ocaml configuration-files opam


    【解决方案1】:

    您可以在项目的基本目录中添加自定义 opam 文件。请参阅documentation 了解如何创建该文件。

    然后你可以在基础目录中输入opam pin add .,你的项目就会像opam包一样被安装。查看opam pin --help 了解更多信息(例如,您也可以固定到远程 git 项目)。

    请注意,尽管默认存储库托管在 github 上,但这绝不是 opam 的要求。 Opam 依赖于 git,但您绝对可以将它与私有 git 存储库一起使用。如果您想使用您同事的存储库作为源,这是完全可行的,尽管通常最好将 opam 文件放在目录的根目录中(您可以在他们的存储库上进行 PR 或在 github 上创建自己的 fork ,该网站清楚地表明您复制了代码)。

    如果固定不符合您的口味,您也可以创建自己的存储库,尽管这对于您的需求来说可能有点过于繁重。

    祝你好运!

    【讨论】:

    • 谢谢! .opam 模板默认值似乎假定了一个知道如何构建和安装包的生成文件。我只有一个原始的 .ml 文件。我假设我可以构建:它使用 ocamlc,但我不确定在 install: 字段中放置什么。
    • 我建议你使用一个构建系统来为你做这件事(沙丘让它变得很容易)。快速而肮脏的解决方案是将所有生成的文件复制到正确的目录中。
    • 不过,根据您的需要,您可以在安装字段中放置任何内容,让您的学生在基本代码的存储库中工作。 opam pin add -n 将安装依赖项而不尝试安装包本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多