双方向ファイル同期化ツール 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