使用 WSL (UBUNTU) 在 Windows 10 上安装 OCAML。bwrap (BubbleWrap) 的问题

Dav*_*ave 5 ubuntu ocaml windows-subsystem-for-linux

我是 Linux 和 OCAML 的新手。我认为让 OCaml 在 Windows 上运行并不简单。我找到了这个链接:

https://www.cs.umd.edu/class/spring2018/cmsc330/ocamlInstallationGuide.pdf#page=14&zoom=100,0,96

然而,我怀疑它有些过时了,因为他们提到 4.04 是最新的 OCaml 版本,而目前有 4.07。我进一步怀疑 OCaml 现在需要bwrap,这就是我的问题和疑问的根源。

我强调我只是想让 OCaml 在 Windows 上工作。如果有比使用 WSL(适用于 Linux 的 Windows 子系统)更简单的方法,我会很乐意这样做。

使用以下命令创建开关时:

opam switch create ocaml-base-compiler.4.07.0,
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

bwrap:创建新命名空间失败,可能是因为内核不支持用户命名空间。bwrap 必须在此类系统上安装 setuid。

我收集我需要 bwrap 并尝试了各种命令,例如:

wget https://mirrors.edge.kernel.org/ubuntu/pool/main/b/bubblewrap/bubblewrap_0.3.1-2_amd64.deb
Run Code Online (Sandbox Code Playgroud)

其次是:

sudo dpkg -i bubblewrap_0.3.1-2_amd64.deb
Run Code Online (Sandbox Code Playgroud)

安装似乎很顺利,但我仍然收到错误。我必须承认我不知道这bwrap must be installed setuid on such systems意味着什么。

1)我应该如何安装bwrap?

这个网站:

https://github.com/projectatomic/bubbblewrap/issues/139

似乎表明 bwrap 可能无法在 Windows 上运行:“Flatpak 和 bubblewrap 需要 Linux。WSL 不是 Linux,它是 Windows 伪装成 Linux,并且它不具备现代 Linux 内核的完整功能集.据我所知,它没有实现命名空间,所以你运气不好。”

2) 我可以使用 WSL 在 Windows 上启动并运行 OCaml 还是有更好的方法?

最后,我并没有执着于 Ubuntu。如果有更好/更容易的发行版与 WSL 一起使用来安装 OCAML,我可以毫无问题地进行更改!

谢谢,戴夫

Dav*_*ave 6

这是我为让事情正常运转所做的事情。基于此评论:

“我认为,我可以通过清除 ~/.opam/config 并使用 opam init --disable-sandboxing 来解决这个问题,但这有点不太理想的用户体验。”

https://github.com/ocaml/opam/issues/3505

和这个指令:

“事实上,WSL 不支持 bwrap(参见此问题)。为了能够在您的情况下使用 opam,您可以使用 --disable-sandboxing 选项禁用沙箱(谨慎使用)以进行新的 opam 初始化或通过opamrc。对于初始化的opam,您不能使用此选项,而是通过删除/空wrap-*-commandfields直接在配置文件中更改配置。请参阅此常见问题解答条目以获取更多信息。我在这里重复警告: “明智地使用 [sanbdoshing 禁用选项],运行 rm -rf / 的 Makefile 确实会发生损坏。””

从:

https://opam.ocaml.org/doc/FAQ.html#Why-does-opam-require-bwrap

我清除了 .opam 目录并执行了

opam init --禁用沙箱

在这样做之前我做了一个:

rm-r.opam

我将再次提及有关关闭沙箱是危险的所有警告(请参阅链接)。

我现在使用 OCaml 4.07.0!

希望这对某人有帮助