Opam 中的图形安装

问题描述

我正在尝试使用 opam install graphics 安装图形,但出现以下错误 留言:

$ opam install graphics
The following actions will be performed:
  ∗ install   graphics     5.1.1
  ↻ recompile ocamlfind    1.9.1 [uses graphics]
  ↻ recompile base-bytes   base  [uses ocamlfind]
  ↻ recompile ounit2       2.2.4 [uses base-bytes]
  ↻ recompile ANSITerminal 0.8.2 [uses base-bytes]
===== ∗ 1   ↻ 4 =====
Do you want to continue? [Y/n] y

<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><>  ? 
[ANSITerminal.0.8.2] found in cache
[graphics.5.1.1] found in cache
[ocamlfind.1.9.1] found in cache
[ounit2.2.2.4] found in cache

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><>  ? 
[ERROR] The compilation of graphics Failed at "/Users/traviszhang/.opam/opam-init/hooks/sandBox.sh build dune
        build -p graphics -j 3 @install".

#=== ERROR while compiling graphics.5.1.1 =====================================#
# context     2.0.8 | macos/x86_64 | ocaml-base-compiler.4.11.1 | https://opam.ocaml.org#7e6a6dcc
# path        ~/.opam/cs3110-2021sp/.opam-switch/build/graphics.5.1.1
# command     ~/.opam/opam-init/hooks/sandBox.sh build dune build -p graphics -j 3 @install
# exit-code   1
# env-file    ~/.opam/log/graphics-9364-8b8a2d.env
# output-file ~/.opam/log/graphics-9364-8b8a2d.out
### output ###
# [...]
# In file included from src/unix/subwindow.c:16:
# src/unix/libgraph.h:17:10: Fatal error: 'X11/Xlib.h' file not found
# #include <X11/Xlib.h>
#          ^~~~~~~~~~~~
# 1 error generated.
#           cc src/text.o (exit 1)
# (cd _build/default/src && /usr/bin/cc -O2 -fno-strict-aliasing -fwrapv -D_FILE_OFFSET_BITS=64 -D_REENTRANT -g -I /Users/traviszhang/.opam/cs3110-2021sp/lib/ocaml -o text.o -c text.c)
# In file included from src/unix/text.c:16:
# src/unix/libgraph.h:17:10: Fatal error: 'X11/Xlib.h' file not found
# #include <X11/Xlib.h>
#          ^~~~~~~~~~~~
# 1 error generated.



<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><>  ? 
┌─ The following actions Failed
│ λ build graphics 5.1.1
└─ 
╶─ No changes have been performed

我尝试了以下解决方案,但似乎都不起作用:

  1. https://github.com/ocaml/graphics/issues/16(运行 export LIBRARY_PATH=/opt/X11/lib
  2. 还将 export PKG_CONfig_PATH="$PKG_CONfig_PATH:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig" 添加到我的 .zshrc 文件中(这在与 1 相同的线程中提到。

当我运行 pkg-config --list-all | grep x11 时,x11 库会弹出,但由于某种原因,垃圾邮件在尝试安装图形时似乎找不到它。任何建议都会有所帮助!

这是我当前的计算机配置:

  • macOS BigSur 版本 11.2.1
  • Ocaml 编译器 4.11.1

更新:

此问题已在以下线程 (https://github.com/ocaml/graphics/pull/36#issuecomment-846827032) 中提出,并将在新的图形版本中更新。

解决方法

让图形包在 macOS 上运行的最简单方法是安装并正确设置 homebrew,之后你就可以了

opam depext --install graphics

它应该通过自制软件(xquartzxorgproto)安装系统依赖项并安装 OCaml 库。