| tags:sync categories:server

Unisonをビルドする

雨季の中、珍しく天気の良い日(!暑い!)です。 滞在先、自転車がパンクしました。近所の自転車屋さんが割としっかりしていて、 なかなかの対応をしていただきました。ありがたや。 データーも溜まってきてのでバックアップしなければとの、啓示なのかも。

さて、せっせと、設定ファイルやスクリプトを書いてます。

端末にて、編集、サーバーでもちょっとだけ変更・実行・確認、そして端末にてまた編集。。

「少しだったらサーバーの方で直して」ってのが悪で、先祖返りを起こしたり。。 ファイルのやり取りがちょっと面倒になる。

既にインストールしているsyncthingで同期しながらってのも考えたけれど、 回線が不安定なのもあり今ひとつ信用に欠ける。 やはりここは、半自動でいいやと、、 割と利便性が高そうなunisonでスクリプトを扱うフォルダー同期することにする。 ついでに端末側のアップル・スクリプトとかのバックアップ先にもなるので、 一石二鳥にもなるか。。

Unison

さて、このunisonにはインストール時の注意点があります。 同期したいサーバ間のunisonのバージョンは必ず一致し ていなければいけないという点で、 (まぁ、あっちがたてば、こっちがへっこむみたいな。。) unisonのバージョンが一致してなければ同期に失敗します。

で、やはりバージョンが合いません。 mac.brewの環境ではversion 2.51.2、 ラズビアン・バスターではversion 2.48.4が インストールされます。

brewではダウングレードも可能らしいですが、該当のファイルが見つけられず断念。

ということで、 ラズビアン・パイ側のunisonを新しいバージョンにするしかない。 しかし、残念ながらsidバージョンでも同じバージョンはなく、 開発サイトにあるバイナリーはパイと互換性のあるものは存在しないので、 ビルドすることになる。(ちょっと嬉しかったり。)

Build Unison v2.51.2

Unison

わからんなりに進める。以前にもどこかで同様の作業したような気がして、 ocamlが必要だったとの記憶がある。 ビルドのツールと一緒にダウンロードします。

そしてギットハブよりマックと同じバージョンのソースコードをとってきます。 最新のバージョンでした。

pi@raspberry:~ $ sudo apt-get install build-essential ocaml-nox
pi@raspberry:~ $ wget -c https://github.com/bcpierce00/unison/archive/v2.51.2.zip
pi@raspberry:~ $ unzip v2.51.2.zip
pi@raspberry:~ $ cd unison-2.51.2
pi@raspberry:~/unison-2.51.2 $ make

解凍して、ビルドします。makeで警告が幾つか出ますが5分ぐらいで終了しました。 make installはトンチンカンな感じでエラーが出たので、 バイナリーを直接/usr/bin/へ持って行くことにする。 で、ちょっと見てみると、これがなんかたらい回しな感じです。 理由があるのかもしれなので、流儀に合わせます(?) update-alternativesなんてコマンドが、あるんですね。。。 でも、manのファイルを消さんでも。。

pi@raspberry:~/unison-2.51.2 $ ls -la /usr/bin/ | grep unison
lrwxrwxrwx  1 root root          24 Aug 17 19:03 unison -> /etc/alternatives/unison
lrwxrwxrwx  1 root root          13 Oct 30  2017 unison-2.48 -> unison-2.48.4
-rwxr-xr-x  1 root root     2221604 Oct 30  2017 unison-2.48.4
lrwxrwxrwx  1 root root          13 Oct 30  2017 unison-latest-stable -> unison-2.48.4

pi@raspberry:~/unison-2.51.2 $ ls -la /etc/alternatives/ | grep unison
lrwxrwxrwx   1 root root   29 Aug 17 19:03 unison -> /usr/bin/unison-latest-stable
lrwxrwxrwx   1 root root   45 Aug 17 19:03 unison.1.gz -> /usr/share/man/man1/unison-latest-stable.1.gz

pi@raspberry:~/unison-2.51.2 $ sudo mv src/unison /usr/bin/unison-2.51.2
pi@raspberry:~/unison-2.51.2 $ sudo update-alternatives --install /usr/bin/unison unison /usr/bin/unison-2.51.2 50

pi@raspberry:~/unison-2.51.2 $ ls -la /etc/alternatives/ | grep unison
lrwxrwxrwx   1 root root   22 Aug 17 19:47 unison -> /usr/bin/unison-2.51.2
pi@raspberry:~/unison-2.51.2 $ ls -la /usr/bin/ | grep unison
lrwxrwxrwx  1 root root          24 Aug 17 19:03 unison -> /etc/alternatives/unison
lrwxrwxrwx  1 root root          13 Oct 30  2017 unison-2.48 -> unison-2.48.4
-rwxr-xr-x  1 root root     2221604 Oct 30  2017 unison-2.48.4
-rwxr-xr-x  1 root root     2991484 Aug 17 19:47 unison-2.51.2
lrwxrwxrwx  1 root root          11 Aug 17 19:33 unison-latest-stable -> unison-2.51

pi@raspberry:/usr/bin $ unison -version
unison version 2.51.2 (ocaml 4.05.0)

で、とりあえずバージョンが揃いました。

めでたし。ちゃんと使えてますよぉ。

See Also

comments powered by Disqus