TL;DR
エラーメッセージを読んで、それに対応する。
背景
.opamフォルダを消す
やり直すには、.opamフォルダをとりあえず消す。
Windows10だとCygwinの設定を手動でやる必要がある
インストーラーではCygwinのインストールをやってくれない。
Note: on Windows 8.1 and above, the OCaml installer will fail to launch Cygwin's setup.exe. In that case, launch it manually (it has been downloaded to your desktop).
と書かれていた、だから先走って入れたChocolatyのCygwinしかなかったのかw。
そんなわけで、自分はChocolateyで入れたCygwinで環境構築することにして、以下の作業を行った。
まずは、ChocolateyのCygwinのセットアッププログラム(C:\tools\cygwin\cygwinsetup.exe)を起動して、 ドキュメントに掲載されたCygwinのパッケージを入れる。
opam init前の作業
環境変数をいったん無効化
ほかにも、前回のインストール作業で設定されてるが、これらは面倒だから放置した。
unset OCAMLLIB unset CAML_LD_LIBRARY_PATH unset CAMLP4LIB
環境変数OCAMLLIBを設定する
このOCAMLLIBが曲者だったw
公式のドキュメントではsqlite3のビルドではWindows表記にしろと書いてあるが、 少なくともそれまでの作業では以下のようななんとなくUNIXスタイル?でないとダメ。
多分この設定がocamlfindコマンドに埋め込まれる模様。
export OCAMLLIB=C:/OCaml/lib
opam init実行
これまでの手順で、opam initはうまくいく。 もっとも、前回の記事の際もこれはうまくできていた。
再び、環境変数を
source ~/.bashrc
して戻す。この際に、OCAMLLIBの設定も.bashrcに書いておいても 良いかも。
最初の難関
depext-cygwinportsのインストール これ、
この辺の改行問題で、opam install depext-cygwinports がコケるっぽい、こいつの手動インストール方法がよくわからない。 pic.twitter.com/lgFK8V6DE9
— kjunichi (@kjunichi) 2017年5月3日
という理由と思われるが、とにかくopam installできない。
出来ないが、一旦は
opam install depext-cygwinports
を実行する。これで、必要なファイルが展開された状態になる。
opamで展開されたconfigureを編集しても、次回のopam install時に 戻されてしまう。
なので、手動でやる。展開されているディレクトリに移り、opamファイルの記述を参考に
cd ~/.opam/system/build/depext-cygwinports.0.0.6/ vi configure # アーキテクチャのチェック箇所をコメントアウト
if [ "$mingw_arch" != "mingw64" ] && [ "$mingw_arch" != "mingw" ] ; then echo "unsupported mingw_arch: '$mingw_arch'" >&2 #exit 2 fi
./configure && make all && make wrappers && make install
本来のopamインストールが何をやるのか分からないので、 以降の追加作業を行った。
depext-cygwin.confのコピー
mkdir ../etc/depext-cygwinports cp depext-cygwinports.conf ../etc/depext-cygwinports
depext-cygwinports.confの修正
アーキテクチャの設定箇所が改行を修正しておく。
(* your mingw-toolchain: mingw32 or mingw64 *) mingw_arch = "mingw64"
pkg-config.exeの無効化
/usr/local/binに入れられたpkg-config.exeを無効にしておく
mv /usr/local/bin/pkg-config.exe /usr/local/bin/pkg-config.exe.bak
これで、たぶんdepext-cygwinportsが入ったことになる。
utopのインストール
今回の目標のutopのインストールで少しハマった。
lambda-term問題
公式のドキュメントにも別のパッケージを例に解決方法が出ていた。
rm ~/.opam/repo/default/packages/lambda-term/lambda-term.1.10.1/files/lambda-term.install
あれこれやって発見したが、lambda-termは1.11系はflexlinkが「-g」オプションに対応しておらず、 インストールできない。opam install utopでなく、直接lambda-tarm等を指定するとこれが原因で 上手くいかない。
まとめ
まぁ、エラーメッセージを読んでそれに対処すれば、UNIXの経験があれば、 何とかなるっぽい。
関連記事
- WindowsにOCaml入れようとしてocamlfindが動かない件
- OCaml(OpenGL)で「プログラムでシダを描画する」を通して学んだことのまとめ
- Mavericksにしたからかutopが動かなくなっていた #OCaml #opam #solved
- OSXで最速でOCamlでPostgresqlに接続するには
- Windowsでlablglを使う