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.
그래서 버전을 일치시키려고 노력했는데, 찾아보니 우분투에서 사용할 수 있는 버전은 하나뿐이었습니다.
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 버전에 대한 빌드도 제공합니다. 원하는 것을 잡고 두 시스템 모두에 배포하면 양쪽 끝에서 동일한 작업이 실행됩니다.