15

如何在 Windows 上使用 OPam 安装 OCaml?

4

3 回答 3

6

通过遵循以下网站的教程,我已经能够在 Windows 10 中使用 Opam 包管理器设置 OCaml 4.03.0:http: //fdopen.github.io/opam-repository-mingw/。以下是我执行的详细步骤:

  • 安装 OCaml、Opam 和 Cygwin:

    • 从此链接下载安装包:http: //fdopen.github.io/opam-repository-mingw/installation/。有 32 位和 64 位版本,但我建议安装 OCaml 64bit 。

    • 运行图形安装文件时,会自动为你安装OCaml 4.02.3、Cygwin、Opam。

    • 安装后,将在您的 Windows 桌面上创建 OCaml 和 Cygwin 的快捷方式。

  • 现在,从 Windows 桌面的快捷方式打开 Cygwin 终端并执行以下操作:

    • 为 Opam 安装一些必需的库:

      • opam install depext
      • opam install depext-cygwinports
    • 使用 Opam 将您的 OCaml 升级到 4.03.0:

      • opam switch 4.03.0+mingw64
      • eval `opam config env`

Windows 上有 OCaml 4.03.0!

于 2016-09-26T02:39:21.827 回答
4

我能够使用 Windows Subsystem for Linux (WSL) 在 Windows 10 中运行 OCaml 和 Opam,没有任何问题。

这是一个非常详细的描述和说明 OCaml on Windows: The easy way

注意:文章OCaml on Windows 中的 2 个错别字:这篇文章的简单方法,当你遇到这两个指令时,请使用以下说明

  1. nano .ocamlinit(*添加一个额外的 i nano .ocamlint*)
  2. open Core.Std;;(*从*中删除# #open Core.Std;;)

希望这对某人有帮助!

**最初的链接已被删除,所以这是内容

Windows 上的 OCaml:简单的方法

过去有很多方法可以在 Windows 上运行 OCaml,这里有一个广泛的列表。但是,它们都有缺点,无论是依赖其他人来更新安装程序二进制文件,还是为了运行 OCaml 而必须处理安装和管理 Cygwin。

幸运的是,随着 Windows Subsystem for Linux (WSL) 的发布,可以在 Windows 中轻松使用标准的 Ubuntu OCaml/OPAM,并将其与 Windows GUI 代码编辑器集成。本指南假定您已经设置了 WSL - 如果在按照本指南设置后未返回。

鉴于 Jane Street 的 Core 等基本模块如何使用 OCaml 进行任何实际工作,我们将安装 OPAM 包管理器和 Core 以及编译器。最终结果正是您开始出色的 Real World OCaml 指南所需的设置。

首先,我们需要下载并安装 ocaml 和 opam,我们需要将个人包存档 (ppa) 添加到 apt-get,因为官方 Ubuntu 存储库偶尔会出现问题。下面的代码将此私有仓库添加到 apt-get。

sudo add-apt-repository ppa:avsm/ppa
sudo apt-get update

然后只需使用 apt-get 安装 ocaml、opam 和 m4(安装程序正常工作还需要一个宏处理器)

sudo apt-get install ocaml opam m4

下一步是设置 opam。从 opam init 开始,它会要求您授予它更新 .ocamlinit 和 .profile 文件的权限。您只需对两者都回答“是”即可完成更改。

这使您可以使用 ocaml 命令运行基本的 REPL 循环。但是,要开始 Real World OCaml 指南,还需要一些额外的内容。我们通过 opam 使用以下命令安装这些附加功能:

opam install core utop

通常我们现在会添加环境变量以使用以下命令运行环境:

eval 'opam config env'

应该按照此处和此处的说明添加您需要的变量。但是,当我在 WSL 上尝试它时它不起作用,我认为这是 windows 和 linux 处理新行的方式不同的副作用。您可以通过运行命令然后 printenv 查看所有环境变量来亲自查看这一点 - 没有设置任何变量。

相反,如果我们使用这个命令:

eval "$(opam config env)"

然后所有命令都作为一个块传递给“eval”,因此整个事情的评估很干净,如果你运行 printenv 你应该看到所有需要的环境变量。

唯一剩下的就是通过编辑 .ocamlinit 文件来使用自定义 utop 设置 OCaml,该文件将位于您的主目录中。

旁注:如果您是 bash 新手,您可能会感到困惑,如果您在主目录中运行 ls,它不会出现。这是因为 . 在默认情况下隐藏它的文件名前面。如果您运行ls -a,您将能够看到它。

用你最喜欢的文本编辑器打开这个文件,例如nano .ocamlinit,然后添加这些行。这是一些 OCaml 代码,它将在初始化时执行,即每次启动 OCaml 环境时。

#use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.syntax";;
open Core.Std;;

现在一切都在做它应该做的事情——如果你运行 ocaml,你将得到加载核心模块的 utop,并准备好开始阅读优秀的 Real World OCaml 指南。

但是,还有最后一个皱纹。以这种方式设置环境变量是暂时的——如果你退出 WSL,然后用 bash 重新启动它,然后重新运行 printenv,你会看到你已经丢失了环境变量,并且 ocaml 命令现在将失败——无法找到 topfind 的路径,因为环境变量消失了。

为了解决这个问题,我们可以将命令添加eval "$(opam config env)"到主文件夹中 .bashrc 文件的底部,每次登录时都会由 bash 运行。这样可以确保它自动运行,因此您只需登录并运行 ocaml 即可一个功能齐全的 ocaml 环境设置。如果您通过 opam switch 命令切换编译器,您将需要重新运行该命令或使用 exit 然后 bash 重新启动 shell 以将更改推送到环境变量并更新 OCaml 使用的版本。

您现在已准备好开始 Real World OCaml - 享受吧!这为您提供了 bash 下的 REPL 循环,这对学习很有帮助。但是,对于更严肃的程序,您需要编写一个 .ml 文件 - 下一部分(即将推出)涵盖使用 bash OCaml 环境从 Windows 中的 GUI 代码编辑器(例如 Visual Studio Code)进行构建。

于 2017-09-25T21:58:05.843 回答
0

Windows 10   CygWin64   标准 C 工具链   OCaml 4.02.3 + BuckleScript-1   **   从源代码OPam编译的WebAssembly 规范/解释器    

安装 CygWin 64 位setup-x86_64.exe
- 选择你的路径(在下面缩写为cwd),其他一切都只有默认或下一步
- 将安装程序移动到cwd

从Windows cmd 提示符安装标准 C 工具链所需的软件包

cwd>setup-x86_64.exe -q -P wget -P gcc-g++ -P make -P diffutils -P libmpfr-devel -P libgmp-devel -P libmpc-devel

编辑cwd/home\username\.bash_profile,添加

export SHELLOPTS
set -o igncr

通过 Icon Cygwin64 终端启动

选择安装 BuckleScript git 的路径(以下缩写为bwd

cd /cygdrive/bwd
git config --global core.eol lf
git config --global core.autocrlf false
git clone --recursive https://github.com/bloomberg/bucklescript

(克隆到/cygdrive/bwd/bucklescript

编辑 /cygdrive/bwd/bucklescript/.gittattribute,添加

* text=auto  

选择要构建 OCaml 编译器的路径(以下缩写为owd

配置和制作

cd /cygdrive/owd/bucklescript/ocaml
./configure -prefix /owd
make world.opt
make install

安装 OPam

创建开关(打开问题,等待答案)
编译 bsc.exe(打开问题,等待答案)
安装 WebAssembly 规范解释器(WASM WAST 切换)

问题 WebAssembly/spec/interpreter/1052

... 要完成的!

于 2019-08-09T16:54:19.667 回答