【问题标题】:Problems using opam and ocaml使用 opam 和 ocaml 的问题
【发布时间】:2019-02-05 12:48:48
【问题描述】:

我正在使用 Ubuntu 14.04 开发 RDP,并尝试安装 ocaml。

我正在尝试将我的 ocaml 编译器更新到 4.05.0 或更高版本,但 opam switch list 只提供了一个编译器 system C system System compiler (4.01.0)。我的opam update 也给了我下面的日志。

[ERROR] Your version of OPAM (1.1.1) is not recent enough to read ~/.opam/repo/default/repo. Upgrade OPAM to a more recent version (at least 2.0) to read this file correctly.
[ERROR] Skipping https://opam.ocaml.org as the repository is not available.
Updating ~/.opam/repo/compiler-index ...
Updating ~/.opam/compilers/ ...
Updating ~/.opam/repo/package-index ...
Updating ~/.opam/packages/ ...
Updating the cache of metadata (~/.opam/state.cache) ...
Everything is up-to-date.

知道怎么做吗?提前感谢您的帮助。

更新: 我需要使用二进制分发单独安装更新的 opam 版本。有了这个

sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) 

命令我可以安装它,但它会提示我在哪里安装它, 但我必须自动化安装,以便用户端没有交互。有什么办法吗?

更新 2:

找到了一种使用 ppa 的方法,请参阅我的答案。

【问题讨论】:

    标签: bash ocaml ubuntu-14.04 opam


    【解决方案1】:

    嗯,正如日志所说,您必须将 OPAM 更新到 2.x。不再支持旧版本。所以你必须关注installation instructions 并更新你的OCaml。

    【讨论】:

    • @user:2625442 我正在使用管道安装 opam,我必须自动化安装你知道有什么方法可以做到吗? i,e sh &lt;(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) 将提示安装位置。有没有办法强制目录或类似的东西?
    • 理想情况下,您应该为您的自动化系统找到一个预构建的包(例如,使用正确的 docker 或 vagrant 基础映像)。不过,在一般情况下,您仍然可以在自治模式下运行交互式脚本,对于install.sh,它就像echo "" | sh ./install.sh 一样简单。如果您有足够的权限,这将起作用。否则,要么添加权限(通过 sudo),要么将位置更改为无需额外权限即可安装的位置,例如 echo "/home/user/bin" | sh ./install.sh
    【解决方案2】:

    我尝试使用sh &lt;(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh),但未能将其用作非交互式脚本。

    我发现这种方法确实有效,尽管使用 Ubuntu 14.04 添加 ppa sudo add-apt-repository ppa:avsm/ppa 然后进行更新、升级、dist-upgrade,最后安装 opam 将是 2.2 版(最新版由 ppa 提供)。请按照以下命令了解具体步骤。

    add-apt-repository ppa:avsm/ppa
    apt-get update -y
    apt-get upgrade -y
    apt-get dist-upgrade -y
    apt-get install curl build-essential m4 zlib1g-dev libssl-dev ocaml ocaml-native-compilers opam -y
    opam init --disable-sandboxing -y
    eval `opam config env`
    opam update
    opam switch list-available
    opam switch create 4.07.0
    opam init -y
    eval `opam config env`
    

    在此之后,一切都应该是最新的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 2022-04-28
      • 1970-01-01
      • 2016-12-05
      相关资源
      最近更新 更多