Raspbian 9를 실행하는 파일 서버가 있고 SSH를 통해 Unison을 사용하여 둘 사이의 홈 디렉터리를 동기화합니다.
이것은 Ubuntu 18.04를 사용하는 2년 동안 잘 작동했지만 Ubuntu 20.04로 업그레이드한 후 SSH를 통한 동기화가 두 Unison 버전(로컬 및 원격)이 서로 다른 OCaml 버전으로 구축되었다는 비정렬 오류로 인해 중단되었습니다.
관련된 모든 시스템(업그레이드 전 및 업그레이드 후)의 Unison 버전은 2.48입니다.
무엇을 제공합니까?
답변1
이유
네트워크를 통해 Unison을 사용하면 전체 네트워크에서 동기화 속도를 크게 높일 수 있지만(파일이 네트워크 전체가 아닌 로컬에서 변경 사항을 검색하기 때문에) 양쪽 끝에서 일치하는 Unison 버전이 필요합니다. Unison은 동기화를 위해 일부 OCaml 라이브러리에 의존하고 이러한 라이브러리는 분명히 OCaml 버전 전체에서 안정성이 보장되지 않으므로 양쪽 끝에서 동일한 Unison 버전뿐만 아니라 동일한 OCaml 버전으로 빌드된 동일한 Unison 버전도 실행해야 합니다. (예, 이것은 좋지 않습니다. Unison 프로젝트에는 이와 관련하여 여러 가지 문제가 있습니다.375화프로토콜 정보는 이를 구축하는 데 사용된 OCaml 버전에 따라 다릅니다. 현재 개발 중이지만 Unison 2.51.3 기준으로 여전히 열려 있습니다.#407각 버전마다 변경되는 유선 프로토콜에 대한 가정입니다. )
내가 아는 한, Raspbian 9(Stretch)에는 OCaml 4.02가, Ubuntu 18.04에는 OCaml 4.05, Ubuntu 20.04에는 OCaml 4.08이 함께 제공됩니다. 아마도 Unison은 플랫폼의 기본 OCaml 버전을 기반으로 구축되었지만 2.48에서는 아직 이를 알려주지 않습니다(후속 버전에서는 OCaml 버전을 보고함). 4.05는 4.02와 호환되는 것으로 보이지만 4.08에서는 호환성을 깨뜨리는 변경 사항이 도입된 것으로 보입니다.
Unison 프로젝트는 다음을 제공합니다.CI의 바이너리, 이후 버전에서는 다양한 OCaml 버전 중에서 선택할 수 있습니다. 불행하게도 이는 해당 아키텍처나 Unison 2.48에서는 작동하지 않으므로 armhf
여기서는 도움이 되지 않습니다.
단기 솔루션(즉시 사용 가능)
현재 Ubuntu 시스템의 Unison을 18.04와 함께 제공된 버전으로 다운그레이드하는 것이 효과적입니다. (이 패키지는 libc의 최소 버전을 제외하고 최소한의 종속성을 갖습니다.)
잡다unison-gtk_2.48.4-1ubuntu1_amd64
Ubuntu 저장소(18.04와 함께 제공되는 버전, 20.04에 있음 unison-gtk_2.48.4-4ubuntu1_amd64
)에서 다음 명령을 사용하여 설치합니다.
sudo dpkg -i ~/Downloads/unison-gtk_2.48.4-1ubuntu1_amd64.deb
업데이트 프로그램이 다음에 실행될 때 변경 사항을 취소하지 않도록 하려면 패키지를 보류 상태로 두십시오.
sudo apt-mark hold unison-gtk
(나중에 업그레이드하기로 결정한 경우 이 명령을 다시 실행하면 unhold
이 작업이 취소되어 패키지를 다시 업그레이드할 수 있습니다.)
~/.unison/ar*
양쪽 끝에서 Unison 캐시를 삭제해야 할 수도 있습니다 .~/.unison/fp*
이제 Unison이 다시 작동합니다.
단기~중기적 솔루션(~2021년 중반)
다가오는 Debian 11(Bullseye)에는 Unison 2.51이 포함되어 있습니다. 다음 단계는 파일 서버를 Debian 11 및 Unison 2.51로 업데이트하고 모든 워크스테이션에 대해 일치하는 프로그램 및 OCaml 버전과 함께 Unison의 CI에서 바이너리 버전을 가져오는 것입니다. 데비안의 이전 릴리스 주기를 고려하면 2021년 초/중반에 Bullseye 릴리스가 다소 현실적입니다.
중장기적 솔루션(2022~2023)
해당 문제를 이해하는 한, 유선 프로토콜에서 OCaml 버전 종속성을 제거하는 것이 곧 다가올 것입니다. 글쎄, 갈 방법은 양쪽 끝에서 일치하는 Unison 버전을 갖는 것입니다(종속성이 제거된 버전인 경우). 그러나 여러분이 가장 좋아하는 배포판이 이러한 버전을 제공하려면 출시 후 시간이 좀 걸릴 수 있습니다. 아마도 2022년 4월에서 2023년 중반 사이에 이야기할 것입니다.
장기적인 솔루션
Unison 팀은 또한 프로그램 버전과 별도로 유선 프로토콜 버전 번호를 할당하는 작업을 진행 중이므로 프로토콜이 실제로 변경되지 않는 한 여러 버전이 결국 유선 프로토콜의 동일한 버전을 공유하게 됩니다. 이런 일이 발생하면 서로 다른 Unison 버전도 동일한 프로토콜 버전을 사용하는 한 함께 작동할 수 있습니다.