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

时间:2019-03-04 16:08:03

标签: 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开关创建ocaml-base-compiler.4.07.0,

我收到以下错误:

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

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

wget https://mirrors.edge.kernel.org/ubuntu/pool/main/b/bubblewrap/bubblewrap_0.3.1-2_amd64.deb 其次是: 须藤dpkg -i bubblewrap_0.3.1-2_amd64.deb

安装正常,但仍然出现错误。我必须承认我不知道: “ bwrap必须在此类系统上安装setuid” 手段。

1)我应该如何安装bwrap?

此站点:

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

似乎表明在Windows时期可能无法使bwrap正常工作: “ Flatpak和bubblewrap需要Linux。WSL不是Linux,它是Windows假装为Linux,并且不具有现代Linux内核的全部功能。据我所知,它不实现名称空间,因此你真倒霉。”

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

最后,我不嫁给UBUNTU。如果为了安装OCAML,可以使用与WSL更好/更容易的发行版,我将没有任何问题!

谢谢, 戴夫

2 个答案:

答案 0 :(得分:1)

这是我为使事情正常进行的工作。基于此评论:

“我认为,可以消除〜/ .opam / config并使用opam init --disable-sandboxing来解决此问题,但这比理想的用户体验要差一些。”

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

和此说明:

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

来自:

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

我清除了.opam目录并做了

opam init --disable-sandboxing

在执行此操作之前,我做了一个:

rm -r .opam

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

我正在使用OCaml 4.07.0 !!!

希望这对某人有帮助

答案 1 :(得分:0)

可以在Jane Street Install OCaml repo上找到更现代的指南(已在WSL2 Ubuntu 20.04上进行了测试)。