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

내 데스크탑 우분투 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

내가 볼 수 있는 두 가지 옵션은 다음과 같습니다.

  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

한 사람을 만났다해결책:

데비안은 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.list.xenial
  • 이에 따라 수정하십시오 etc/apt/preferences. 및 대신 현재 버전 이름과 원하는 Unison 버전을 사용하세요 stable. testing현재 버전의 500우선순위가 더 높습니다.
  • sudo apt-get update; sudo apt-cache policy우선순위가 올바르게 설정되었는지 확인하려면 출력을 실행하고 확인하십시오 . 그렇지 않으면 Ubuntu 설치가 엉망이 될 수 있습니다!
  • 모든 것이 정상이라고 확신하면 설치 unison(또는 unison-all명시적으로 빌드)하고 새 저장소를 선택합니다.

아니면 .deb파일을 받아서 직접 설치해보세요.

답변2

예, 동일한 버전의 Unison을 실행해야 합니다. 이는 Unison이 콘텐츠를 추적하는 데 사용하는 아카이브 파일의 형식이 새 릴리스마다 개선되고 변경되기 때문입니다 .

Unison을 소스에서 직접 설치하면 어떨까요? Raspberry Pi에 2.48을 설치하는 것이 좋습니다. 소스코드를 다운로드 받을 수 있습니다Unison 2.48.3 여기, 이를 수행하는 방법에 대한 지침을 확인하세요.여기에서 컴파일하고 설치하세요.. 실제로 Ubuntu를 실행하는 데스크탑의 소스에서 Unison을 컴파일하고 설치하는 것이 좋습니다. 이렇게 하면 Ubuntu가 Unison 패키지를 업데이트하기로 결정한 경우 예상치 못한 문제를 피할 수 있으며 이전에 문제가 되었던 동일한 버전의 OCaml로 해당 패키지가 모두 컴파일되었는지 확인할 수도 있습니다.

Raspberry Pi에서는 네이티브 코드가 아닌 바이트코드로 컴파일해야 할 수도 있다는 점에 유의하는 것도 중요합니다. Native=falseMakefile에서 설정하면 됩니다 . 날 봐여기에 대답하세요더 많은 정보를 알고 싶습니다.

답변3

설치할 수도 있습니다.

unison-all

에 설명된 대로 올바른 버전을 자동으로 선택합니다.

하나의 시스템에서 여러 버전의 unison을 사용하는 방법은 무엇입니까?

답변4

Unix 시스템(Debian Jessie)을 2.40.102 Unison 버전(apt-get의 공식 안정 패키지 버전에서 설치됨) 및 최신 2.48.15 버전의 macOS 시스템과 동기화하는 데에도 동일한 문제가 발생했습니다.

가장 좋은 해결책은 Unison의 macOS 버전을 2.40으로 다운그레이드하는 것입니다. 바이너리는 여기에 있습니다:

macOS Intel용 Union 2.40.61(GUI)

그리고 Unison 메뉴 > 명령줄 도구 설치에서 명령줄을 설치하는 것을 잊지 마세요.

동기화하면 경고가 대체됩니다.

Unison[16276:318574] Calling nonGuiStartup
Fatal error: Received unexpected header from the server:
expected "Unison 2.40\n" but received "Unison 2.48\n\000\000\000\000\017",
which differs at "Unison 2.48".

통과:

Unison[18574:332371] Calling nonGuiStartup
Connected [//SERVER.IP//Users/USer/Desktop/Unison -> //localhost//home/user/test]
Looking for changes Warning: No archive files were found for these roots…

참고: 저는 macOS Sierra 10.12.4를 사용하고 있으며 Unison 2.40.61이 제대로 작동하는 것 같습니다.

관련 정보