Raspbian 9を実行しているファイルサーバーがあり、SSHを介してUnisonを使用して2つの間のホームディレクトリを同期します。
これはUbuntu 18.04を使用して2年間うまく機能しましたが、Ubuntu 20.04にアップグレードした後、SSHを介した同期が2つのUnisonバージョン(ローカルとリモート)が異なるOCamlバージョンで構築されたという非整列エラーによって中断されました。
関連するすべてのシステム(アップグレード前およびアップグレード後)のUnisonバージョンは2.48です。
何を提供しますか?
答え1
理由
ネットワーク経由でUnisonを使用すると、ネットワーク全体の同期速度を大幅に向上させることができますが(ファイルがネットワーク全体ではなくローカルで変更を取得するため)、両端で一致するUnisonバージョンが必要です。 Unisonは同期のために一部のOCamlライブラリに依存しており、これらのライブラリは明らかにOCamlバージョン全体で信頼性が保証されていないため、両端で同じUnisonバージョンだけでなく、同じOCamlバージョンで構築された同じUnisonバージョンも実行する必要があります。 (はい、これは良いことではありません。Unisonプロジェクトにはこれに関連するいくつかの問題があります。375話プロトコル情報は、それを構築するために使用されるOCamlのバージョンによって異なります。現在開発中ですが、Unison 2.51.3ベースでまだ開いています。#407各バージョンで変更される有線プロトコルの前提です。 )
私が知る限り、Raspbian 9(Stretch)にはOCaml 4.02、Ubuntu 18.04にはOCaml 4.05、Ubuntu 20.04にはOCaml 4.08が付属しています。おそらくUnisonはプラットフォームのデフォルトのOCamlバージョンに基づいて構築されていますが、2.48ではまだこれを知らせていません(後続のバージョンではOCamlバージョンを報告します)。 4.05は4.02と互換性があるようですが、4.08では互換性を破る変更が導入されているようです。
Unisonプロジェクトは以下を提供します。CIのバイナリ以降のバージョンでは、さまざまなOCamlバージョンから選択できます。残念ながら、これはそのアーキテクチャやUnison 2.48では機能しないため、armhf
ここでは役に立ちません。
短期ソリューション(即時利用可能)
現在、UbuntuシステムのUnisonを18.04に付属のバージョンにダウングレードすることが効果的です。 (このパッケージはlibcの最小バージョンを除いて最小限の依存関係を持ちます。)
捕まえるunison-gtk_2.48.4-1ubuntu1_amd64
Ubuntuリポジトリ(18.04に付属のバージョン、20.04にありますunison-gtk_2.48.4-4ubuntu1_amd64
)から、次のコマンドを使用してインストールします。
sudo dpkg -i ~/Downloads/unison-gtk_2.48.4-1ubuntu1_amd64.deb
更新プログラムが次回実行されたときに変更を取り消さないようにするには、パッケージを保留のままにします。
sudo apt-mark hold unison-gtk
(後でアップグレードすることにした場合は、このコマンドを再実行すると、unhold
この操作がキャンセルされ、パッケージを再アップグレードできます。)
~/.unison/ar*
両端でUnisonキャッシュを削除する必要があるかもしれません。~/.unison/fp*
今Unisonが再び動作します。
短期~中期的なソリューション(~2021年半ば)
今後のDebian 11(Bullseye)にはUnison 2.51が含まれています。次の手順は、ファイルサーバーをDebian 11およびUnison 2.51に更新し、すべてのワークステーションに一致するプログラムとOCamlのバージョンとともに、UnisonのCIからバイナリバージョンをインポートすることです。 Debian の以前のリリースサイクルを考慮すると、2021 年の初め/中旬に Bullseye リリースがやや現実的です。
中長期的なソリューション(2022~2023)
その問題を理解する限り、有線プロトコルからOCamlバージョンの依存関係を削除することはすぐに近づくでしょう。まあ、行く方法は、両端に一致するUnisonバージョンを持つことです(依存関係が削除されたバージョンの場合)。しかし、あなたのお気に入りのディストリビューションがこれらのバージョンを提供するには、リリース後に少し時間がかかるかもしれません。おそらく2022年4月から2023年半ばの間に話します。
長期的なソリューション
Unisonチームはまた、プログラムバージョンとは別に有線プロトコルバージョン番号を割り当てる作業を進めているため、プロトコルが実際に変更されない限り、複数のバージョンが最終的に有線プロトコルの同じバージョンを共有することになります。これが発生した場合、異なるUnisonバージョンも同じプロトコルバージョンを使用している限り、一緒に機能することができます。