web-dev-qa-db-ja.com

Unisonとバージョン/コンパイラの競合

私は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です。私に何ができるかについてのアイデアはありますか?

1
hal

Unisonバージョン2.48.3と2.48.4を混在させています。開発者はマイナーバージョン間でもUnisonアーカイブファイルの形式を変更するため、Unisonはこれについて非常に気難しいです。とにかく、Unisonのバージョンはすべてのマシンで一致している必要があります。アプリストアをスキップして、Ubuntuマシンに手動で2.48.3をコンパイル/インストールします。

さらに、各マシンで同じバージョンのoCamlを使用して同じバージョンのUnisonをコンパイルすることを確認する必要があります;)

1
Mike Pierce

複数のコンピューターを異なるオペレーティングシステムと同期させる必要がある場合、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つのことを行う必要があります。それらは:

  1. ファイルの同期に使用するUnisonプロファイルを作成したら、テキストエディターを使用して行を追加します。

    servercmd = /snap/bin/unison-jz.unison -ui text
    

    〜/ snap/unison-jz/current/.unison /にあるプロファイルファイルに

    すべてのプロファイルファイルは拡張子.prfを使用します

    このように、クライアントマシンのユニゾンは、サーバーのスナップされたバージョン(unison-jz)を呼び出します。これは、同じUnison/OCamlバージョンを持つバージョンです。

  2. どうやら、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をコンパイルしようとすると発生する依存関係の問題のために、ソースからのビルドが不可能になることが多いため、これは状況を処理する簡単な方法だと思います。

詳しくは:

http://www.xente.mundo-r.com/zasjls/other/20/unison_en.html

2
zasjls

各プロファイルを変更する代わりに、スナップエイリアスを使用する方が簡単な場合があります。

Sudo snap alias unison-jz.unison unison

クライアント側とサーバー側の両方で。

0
user420932