UbuntuインスタンスとCentOS 7インスタンス間でデータを同期しようとしています。これは双方向rsyncと同じだと思いました。一貫した最高のツールになります。両方のインスタンスにインストールしましたが、接続しようとするとバージョンが異なるため、エラーが発生します。
unison -testServer . ssh://myuser@myremotehost/efs/home/
Contacting server...
myuser@myremotehost's password:
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".
This can happen because you have different versions of Unison
installed on the client and server machines, or because
your connection is failing and somebody is printing an error
message, or because your remote login shell is printing
something itself before starting Unison.
それでバージョンを一致させようとしましたが、探してみるとUbuntuで使えるバージョンは1つだけでした。
myuser@mylocalhost:/nas/$ apt policy unison
unison:
Installed: 2.48.4-1ubuntu1
Candidate: 2.48.4-1ubuntu1
Version table:
*** 2.48.4-1ubuntu1 500
500 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status
CentOS 7を見ると不明です。どのバージョン
$ yum --showduplicates list unison
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: d36uatko69830t.cloudfront.net
* epel: mirror.prgmr.com
* extras: d36uatko69830t.cloudfront.net
* updates: d36uatko69830t.cloudfront.net
Error: No matching Packages to list
ただし、問題なくインストールできます。
$ sudo yum install unison
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: d36uatko69830t.cloudfront.net
* epel: d2lzkl7pfhq30w.cloudfront.net
* extras: d36uatko69830t.cloudfront.net
* updates: d36uatko69830t.cloudfront.net
Package unison240-gtk-2.40.128-5.el7.x86_64 already installed and latest version
Nothing to do
バージョンを見つけるとき、私は何か間違っているのでしょうか?どのように一致させることができますか?
ローカルホストは次のとおりです。
myuser@mylocalhost:/nas$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
リモートホストは次のとおりです。
$ cat /etc/*release
CentOS Linux release 7.6.1810 (Core)
答え1
@Freddyのコメントによると、コアはCentOSのソースから一心でコンパイルする:
yum install ocaml ocaml-camlp4-devel ctags ctags-etags
cd ~
wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.4.tar.gz
tar xvfz unison-2.48.4.tar.gz
cd src
make
sudo cp -v unison /usr/local/sbin/
sudo cp -v unison /usr/bin/
cd ~
rm -fr src
これにより、一貫して実行できます。
ローカルサーバーで目的の場所に移動し、次のコマンドを使用してテストします。
unison -testServer . ssh://myuser@myremotehost//path/to/data/
実際の作業を行うには、-testServer
上記から削除してください。これも良い考えです。マルチプレクサそれの前に。
答え2
ネットワーク経由で実行するには、Unisonは両端で同じプログラムバージョンを使用し、同じバージョンのOCamlコンパイラでビルドする必要があります。
他の回答で述べたように、ソースからUnisonをビルドできます。あるシステムでビルドし、バイナリを別のシステムにコピーするか、各システムで別々にUnisonをビルドすることにした場合は、両方のシステムに同じバージョンのOCamlコンパイラがあることを確認してください。
より簡単な選択肢として、2.40から始まるUnisonバージョンを次のように使用できます。バイナリダウンロード少なくともIntelプラットフォームの場合は、プロジェクト自体を見てください。 2.51.3 以降、さまざまな OCaml バージョンのビルドも提供しています。必要なものを持って両方のシステムに展開すると、両端で同じタスクが実行されます。