最近の Unison をビルドする

双方向ファイル同期化ツール Unison File Synchronizer、 Mac で使っているのが Unison 2.48.6 の GUI 版なのだけれど、古いせいか macOS Catalina だと「Install command-line tool」 が機能しない(/usr/bin にインストールしようとしているからかな)。 macOS 上で text UI 版がちょっと使いたい & GUI 版も新しいのにしたいなと思ってビルドとかした。 現在の Unison のバージョン 2021年01月05日時点での安定版は 2.51.3。 Homebrew で入れる $ brew install unison で text UI 版の「unison version 2.51.3 (ocaml 4.10.0)」が入る。GUI 版は入らない。 macOS Catalina 上でビルドする Unison 最新版のバイナリ配布が見当たらないのでビルドしてみる。 Xcode が必要。 $ xcode-select --install で入る Command Line Tools だけだと text UI 版の Unison しかビルドできないので App Store から Xcode をインストールした。 OCaml は Homebrew ので済ます。 $ brew install ocaml 今日時点で入るのは OCaml 4.10.0 だ。次に Unison 2.51.3 をビルドする。 $ cd ~/tmp $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz $ tar zxvf v2.51.3.tar.gz $ cd unison-2.51.3 $ make all make だけだと text UI 版しかビルドされないので make all してみた。が残念 GUI 版はエラーで途中で止まった。今はうまくビルドできないのかもしれない。 諦めて make で text UI 版だけバイナリを得ることにした。 make 後 $ ./src/unison -version で実行できることを確認。 ./src/unison を適当なところにコピーしておく(これなら brew install unison で十分だった)。 FreeBSD 上でビルド ローカルホストの Unison とリモートホストの Unison のバージョンが合っていないと同期できないのでリモートホスト側 (FreeBSD 9.1-RELEASE-p24) でも同じバージョンのものをビルドする。さくらのレンタルサーバ プレミアムで root 権限はないのでユーザー権限にて。 まずは OCaml。最近の OCaml は opam というのでインストールして使うのが流儀らしい。 opam をインストール。 $ cd ~/tmp $ mkdir bin $ curl -OL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh $ BINDIR=$HOME/tmp/bin sh install.sh リモートホストの環境に合ったプレビルドが無いとエラーが出て install.sh ではインストールできず。 OCaml の前に遡って opam のビルドをする。 $ cd ~/tmp $ curl -OL https://github.com/ocaml/opam/archive/2.0.7.tar.gz $ tar zxvf 2.0.7 $ cd opam-2.0.7 $ gmake cold CONFIGURE_ARGS="--prefix ~/tmp/opam" $ gmake cold-install ビルドできた。opam を初期化する。 $ PATH=$HOME/tmp/opam/bin:$PATH $ opam init gpatch が無いとエラーで止まった。 patch へのシンボリックリンクで gpatch を作ってイケるかなと思ったけど今度は別のエラーで止まる。うーん。 opam で OCaml をインストールするのは断念。 OCaml のドキュメントを読んだら今まで通り configure して make も普通にできるじゃない。 $ curl -OL https://github.com/ocaml/ocaml/archive/4.10.0.tar.gz $ tar zxvf 4.10.0.tar.gz $ cd ocaml-4.10.0 $ ./configure --prefix $HOME/tmp $ gmake $ gmake install 次に Unison 2.51.3 をビルドする。出来上がったバイナリは今使っている Unison 2.48.3 と併用できるように別のディレクトリへ。 $ cd ~/tmp $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz $ tar zxvf v2.51.3.tar.gz $ cd unison-2.51.3 $ PATH=$PATH:$HOME/tmp/bin $ gmake $ ./unison -version $ mkdir -p $HOME/local/unison-2.51.3/bin $ cp -a src/unison $HOME/local/unison-2.51.3/bin サイト https://www.cis.upenn.edu/.../unison/ User Manual and Reference Guide Version 2.51.2