Ubuntu 16.04 xenialにUnison 2.40をインストールする方法(「致命的なエラー:予期しないヘッダーを受信する」を修正)

Ubuntu 16.04 xenialにUnison 2.40をインストールする方法(「致命的なエラー:予期しないヘッダーを受信する」を修正)

私のRaspberry Piコンピュータから:

pi@mizu:~ $ unison -version
unison version 2.40.102

私のデスクトップUbuntu 16.04 xenialから:

kayd@Trunk:~$ unison -version
unison version 2.48.3

同期しようとしたとき:

kayd@Trunk:~$ unison . ssh://pi@mizu/.
...
Fatal error: Received unexpected header from the server:
 expected "Unison 2.48\n" but received "Unison 2.40\n\000\000\000\000\017", 
which differs at "Unison 2.40".

関連投稿1インストールしますunison-all。インストールしましたが、バージョン2.48のみが含まれています。

kayd@Trunk:~$ ls -l /usr/bin/unison*
lrwxrwxrwx 1 root root      24 Mai 20 22:15 /usr/bin/unison -> /etc/alternatives/unison
lrwxrwxrwx 1 root root      13 Mär 18 16:10 /usr/bin/unison-2.48 -> unison-2.48.3
-rwxr-xr-x 1 root root 2169968 Mär 18 16:10 /usr/bin/unison-2.48.3
lrwxrwxrwx 1 root root      13 Mär 18 16:10 /usr/bin/unison-latest-stable -> unison-2.48.3

私が見ることができる2つのオプションは次のとおりです。

  1. 2.40のXenial PPAを見つけました。
  2. 2.48を含むラズベリー用PPAを見つけました。

これまでのところ、どちらも成功しませんでした。

以下のユーザーの回答に基づいていますマフェアーズ 271自分でコンパイルしてみようかと思いましたが、結果はちょっと悪夢だったようです。最後 Unison開発メーリングリストに投稿たとえば、国「新しいOCaml 4.03バージョンは、ライブラリにいくつかの互換性のない変更を適用しました。バージョン2.48を修正して、4.02または4.03でコンパイルし、新しいバージョンでリリースできるようにしました。」そして「PS、「ocaml 4.02.1はocaml 4.02.2と互換性がありません」という恐ろしいエラーが発生したときに報告するより良いエラー報告機能も追加しました。 」これはすべてが違うという結論につながる。高い壊れやすいので、更新された内容があれば、改訂番号が少しだけ変更されても破損することがあります。同期する必要があるコンピュータが多数あり、その一方または他のコンピュータが定期的に更新されます。

ベストアンサー1

一人に会った解決策:

Debian は Ubuntu バージョンと互換性のある 2.48 でテストされました。 Piにテストリポジトリを追加する必要がありますが、優先順位が低いため、明示的に要求された場合にのみ使用されます。

次の行を追加します/etc/apt/preferences(ファイルが存在しない場合は作成)。

Package: *
Pin: release o=Raspbian,a=stable
Pin-Priority: 500

Package: *
Pin: release o=Raspbian,a=testing
Pin-Priority: 300

次に、次の行を追加します/etc/apt/sources.list

deb http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi

次に、次を実行します。

sudo apt-get update
sudo apt-cache policy

確認するテスト追加したばかりのリポジトリは他のリポジトリよりも優先順位が低くなります。

ついに:

sudo apt-get install -t testing unison-all

これはPiで2.48を提供し、接続して同期することができます。


既存のバージョンとともに Unison の明示的なバージョンをインストールすることもできます。走る

sudo apt-cache search unison

提供されたバージョンを見つけて、必要なバージョンをインストールするには、次の手順を実行します。

sudo apt-get install -t testing unison2.40.102

バージョン番号を持つパッケージは実際のパッケージです。unison常に最新バージョンに依存するメタパッケージunison-allですが、バージョン選択に依存するメタパッケージです。

サーバーに複数のバージョンがある場合は、-addversionno次のオプションを使用してUnisonを実行できます。これにより、クライアントはバージョン番号をサーバーに送信し、サーバーに基本バージョンではなく同じバージョンを実行するように指示します。


あるいは、Ubuntuデスクトップで同様のことを試すこともできます。以下を行う必要があります。

  • PiでUnisonバージョンを提供するディストリビューションを見つけてください。
  • そのバージョンのリポジトリを/etc/apt/sources.listxenial
  • これに従って修正してくださいetc/apt/preferences。代わりに、現在のバージョン名と目的のUnisonバージョンを使用してくださいstabletesting現在のバージョンの500優先順位が高くなります。
  • sudo apt-get update; sudo apt-cache policy優先順位が正しく設定されていることを確認するには、出力を実行して確認します。そうでなければ、Ubuntuのインストールはめちゃくちゃになる可能性があります!
  • すべてが正常であることを確認したら、インストールunison(またはunison-all明示的にビルド)して新しいリポジトリを選択します。

または、.debファイルを入手して自分でインストールしてみてください。

おすすめ記事