OCamlをWindowsで動かすにはいろいろと問題があるらしい。しかしWSL2ならなんとかなるんじゃないかと思ってインストールしてみたら、嬉しいことに特別な配慮をすることなく動かすことができた。
WSL2の導入
WSL2はこの春(2020年)に一般提供されるらしいが、まだ正式にリリースされていない。待ちきれないのでWindows Insider Programに登録して先に使わせてもらおう。
LinuxのディストリビューションにはUbuntu 18.04 LTSを選択した。Ubuntu 16.04 LTSだとopamのインストールに関していろいろと面倒なことがありそうである。
導入は公式の指示通りにやればできる。資料が日本語なのでうれしい。 docs.microsoft.com
Windows Terminalの導入
WSL2はコマンドプロンプトやPowerShellから使えるのだが使い勝手が怪しい。ちょうどマイクロソフトが出しているWindows Terminal (Preview)がよさそうなのでMicrosoft Storeからインストールして使うことにした。
いくつかWindows Terminalの設定をいじくる。設定ファイルはJSONで書かれている。
- 開始ディレクトリ
WSLを起動するとカレントディレクトリが/mnt/c/Users/(Windowsユーザ名)
の状態で開始される。これをホームディレクトリに変更したい。
profiles
にあるUbuntuのprofileに以下の項目を加える。
"startingDirectory": "//wsl$/Ubuntu-18.04/home/(UNIXユーザ名)"
- カラースキーム
わたしは個人的にIcebergが好きなのでIceberg color scheme for Windows Terminal · GitHubから色設定をもってきた。
ただしgreen
が背景になったとき文字が見づらくなるので、green
だけ元の色のRGB値をそれぞれ半分にした"#5a5f41"
に変えてある。
opamのインストール
まずOCamlのコンパイラなどをビルドするために必要なソフトウェアをインストールしておく。
sudo apt update sudo apt install build-essential m4
次にopamをインストールするのだが、aptで入るopamはバージョンが古いのでよろしくない。
opam - Installに従って次のようにすると最新安定版が入る。
sudo add-apt-repository ppa:avsm/ppa sudo apt update sudo apt install opam
あとは普通に初期設定をする。--disable-sandboxing
などの変なオプションは必要ないので安心。
opam init eval $(opam env)
これでOCamlが使えるようになった。非常にうれしい。
$ ocaml OCaml version 4.10.0 # print_endline "hogeeeee";; hogeeeee - : unit = () #
SATySFiのインストール
OCamlが入ったので、調子に乗って GitHub - gfngfn/SATySFi: A statically-typed, functional typesetting system も導入してしまった。
基本的にreadmeの通りにやればインストールできるのだが、つい先日(2020/4/5)にSATySFiがサポートするOCamlのバージョンが4.06.0から4.08.0以上に引き上げられて、2020/4/9現在readmeが更新されていないのでそこだけ注意が必要である。
readmeに依存するソフトウェアの一覧があるので、ないものはインストールしておく。
sudo apt install ruby
SATySFi用のスイッチを作成する。ここでOCamlのバージョンには以前4.10.0でビルドに失敗したので4.08.0を選択したが、今は4.10.0がサポートされていそうだ。
opam switch create satysfi 4.08.0 eval $(opam env)
なおSATySFi用のスイッチでインストールを行うと、スイッチをデフォルトに戻したときsatysfi
コマンドが見つからないということになってしまう。この面倒をいくらか減らすにはスイッチの自動切換え機能を使うとよい。SATySFiを扱うディレクトリでopam switch link satysfi
を実行すれば、以降はそのディレクトリ以下では自動的にスイッチがsatysfiに切り替わるようになる。
あとは適当なインストールディレクトリにてreadmeに従って次のコマンドを順に実行するとインストールが完了する。
opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git opam update git clone https://github.com/gfngfn/SATySFi.git cd SATySFi opam pin add satysfi . opam install satysfi ./download-fonts.sh sudo ./install-libs.sh
最後のinstall-libs.sh
はsudoがないと実行できなかった、、、
デモをコンパイルしてみよう:
cd demo make explorer.exe .
explorer.exe .
を実行することでwindowsのエクスプローラーからLinuxのファイルシステムを覗けるので、そこから出力されたpdfを簡単に見ることができる。