OCamlによるライフハック

関数型言語は素晴らしいので、仕事にも趣味にも生かしましょう。

OCaml Jupyter のインストールに手こずった

先週設定したテーマを進めようとしたら、環境整える段階でつまづきました。

テーマ→求めているものは、カーネルだった。 - OCamlによるライフハック

ひとつのシステムを動かすために、複数のプログラミング言語が使われていたり、多数のツールが複雑に組み合わさったりしているものです。

細かいことはよくわからんという人のために、必要なものが全て詰め込まれていて、それをインストールするだけで使えるようになるパッケージなるものが存在するわけです。

ちなみに、自分の場合はopamのjupyterというパッケージを入れようとした時に、いろいろとエラーを吐かれて先に進めなくなりました。

英語のエラーメッセージを読むのは結構辛いけど、どうにか解読してわかったことが、

  • conf-gmp がビルド出来ていない
  • 依存関係を確認して、いろいろなパッケージを入れる必要がある
  • opamだけでは完結しない

jupyterのDependenciesを見たところ、結構な数のパッケージが入っていないことが判明しました。条件を満たしていたのが、

ocaml>=4.04.0

のみ。これはOCamlそのもののバージョンを4.04.0以上にしてくださいね、という意味です。大体は指定されたバージョンより上であれば問題ないのですが、

base64>=2.1.2 & <3.0.0

のように一定の範囲内でないとダメなケースも稀にあります。

試行錯誤してちょっとずつエラーの数が減っていったけど、それでも解決しなかったのがzmq。こちらはビルドに失敗しているようで、以下のような結果になりました。

#=== ERROR while compiling conf-gmp.1 =========================================#
# context     2.0.1 | macos/x86_64 | ocaml-base-compiler.4.04.0 | https://opam.ocaml.org#5b9162fe
# path        ~/.opam/4.04.0/.opam-switch/build/conf-gmp.1
# command     ~/.opam/opam-init/hooks/sandbox.sh build sh -exc cc -c $CFLAGS -I/opt/local/include -I/usr/local/include test.c
# exit-code   1
# env-file    ~/.opam/log/conf-gmp-88202-39e0b1.env
# output-file ~/.opam/log/conf-gmp-88202-39e0b1.out
### output ###
# + cc -c -I/opt/local/include -I/usr/local/include test.c
# test.c:1:10: fatal error: 'gmp.h' file not found
# #include <gmp.h>
#          ^~~~~~~
# 1 error generated.




<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><>  🐫 
┌─ The following actions failed
│ λ build conf-gmp 1
└─ 

gmpがないって怒られています。C言語のエラーなので、opamとは直接関係がないようです。 brew経由でgmpをインストールした後、改めてopam経由でjupyterのインストールを試みたところ、

<><> jupyter.2.4.0 installed successfully <><><><><><><><><><><><><><><><><>  🐫 

と表示されたので、どうやらうまくいったようです。

最後にくだらないことですが、opamでラクダ🐫が出てくるのが面白いと思いました。