我是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更好/更容易的发行版,我将没有任何问题!
谢谢, 戴夫
答案 0 :(得分:1)
这是我为使事情正常进行的工作。基于此评论:
“我认为,可以消除〜/ .opam / config并使用opam init --disable-sandboxing来解决此问题,但这比理想的用户体验要差一些。”
https://github.com/ocaml/opam/issues/3505
和此说明:
”实际上,WSL不支持bwrap(请参阅此问题)。 为了能够在您的情况下使用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上进行了测试)。