私は2台のマシンでUbuntu 18.04とUbuntu 20.04を実行しています。 Unisonを使用してファイルを同期したいのですが、いくつか問題があります。まず、他のマシンとも同期するため、ソースのUnison 2.48.3からコンパイルしました。次に、Ubuntu 18.04で、UbuntuソフトウェアUnison 2.48.4からインストールしたため、Ubuntu 20.04でインストールしました。それらを適切に設定した後、Ubuntu 18.04のコマンドラインから_unison-2.48.4-gtk
_を実行して同期を試みます。すべて正常に動作しますが、つまり、マシンとディレクトリが検出されると、Fatal error during unmarshaling (input value:ill-formed message) possibly because client and serer have been compiled with different versions of OCaml compiler
というメッセージが表示されます。 20.04で、OCamlのバージョンを確認しましたが、どうやら何も返されませんでした(たとえアプリストアからunisonをインストールしたとしても)。 18.04では、バージョンは4.05.0です。私に何ができるかについてのアイデアはありますか?
Unisonバージョン2.48.3と2.48.4を混在させています。開発者はマイナーバージョン間でもUnisonアーカイブファイルの形式を変更するため、Unisonはこれについて非常に気難しいです。とにかく、Unisonのバージョンはすべてのマシンで一致している必要があります。アプリストアをスキップして、Ubuntuマシンに手動で2.48.3をコンパイル/インストールします。
さらに、各マシンで同じバージョンのoCamlを使用して同じバージョンのUnisonをコンパイルすることを確認する必要があります;)
複数のコンピューターを異なるオペレーティングシステムと同期させる必要がある場合、UnisonやOCamlが何かを変更するたびにソースからコンパイルしたくない場合は、すべきであるクリーンなソリューションが1つあります常に機能し、Unisonをスナップとしてインストールします。このようにして、すべてのLinuxコンピューター、クライアント、サーバーで、Unison/OCamlのバージョンがまったく同じになります。これがスナップの目的です。インストールされているOSに関係なく、同じスナップがまったく同じように機能するはずです。この場合、ソフトウェアセンターでunison-jzを利用できます。 OCaml 4.02.3に対してコンパイルされたUnison 2.51.2をインストールします
Ubuntuのように、snapdがすでにインストールされている場合は、次のコマンドを発行するだけです。
Sudo snap install unison-jz
私はshouldが常に機能するため、何らかの理由で、Ubuntu(ただし、Debianではなく面白いこと)でunison-jzを開発者モードでインストールする必要があるため、そうしないと、必要な権限を処理できません。したがって、Ubuntuでは、ターミナルで使用する必要がある行は次のとおりです。
Sudo snap install --devmode unison-jz
スナップ版のUnisonを機能させるには、他に2つのことを行う必要があります。それらは:
ファイルの同期に使用するUnisonプロファイルを作成したら、テキストエディターを使用して行を追加します。
servercmd = /snap/bin/unison-jz.unison -ui text
〜/ snap/unison-jz/current/.unison /にあるプロファイルファイルに
すべてのプロファイルファイルは拡張子.prfを使用します
このように、クライアントマシンのユニゾンは、サーバーのスナップされたバージョン(unison-jz)を呼び出します。これは、同じUnison/OCamlバージョンを持つバージョンです。
どうやら、unison-jzに含まれているsshのバージョンは、sshの構成ファイルに含まれている「インクルード」という用語を理解しておらず、見つかるとエラーになります。したがって、おそらく、/ etc/ssh/ssh_configファイルも編集する必要があります。
任意のテキストエディタを使用して、管理者としてそれを開きます。例えば
Sudo nano /etc/ssh/ssh_config
19行目をコメントアウトします
Include /etc/ssh/ssh_config.d/*.conf
このようになります
#Include /etc/ssh/ssh_config.d/*.conf
古いバージョンのUbuntuで新しいバージョンのOCamlまたはUnisonをコンパイルしようとすると発生する依存関係の問題のために、ソースからのビルドが不可能になることが多いため、これは状況を処理する簡単な方法だと思います。
詳しくは:
各プロファイルを変更する代わりに、スナップエイリアスを使用する方が簡単な場合があります。
Sudo snap alias unison-jz.unison unison
クライアント側とサーバー側の両方で。