두 대의 컴퓨터가 있습니다. 하나는 Ubuntu 18.04를 실행하고 다른 하나는 Ubuntu 20.04를 실행합니다. Unison을 사용하여 파일을 동기화하고 싶지만 몇 가지 문제가 있습니다. 먼저, 다른 컴퓨터와도 동기화 중이므로 소스 Unison 2.48.3에서 컴파일했습니다. 그런 다음 Ubuntu 18.04에서는 Ubuntu Software Unison 2.48.4에서 Ubuntu 20.04를 설치했습니다. 올바르게 설정한 후 Ubuntu 18.04의 명령줄에서 실행
unison-2.48.4-gtk
하고 동기화를 시도했습니다. 모든 것이 잘 작동하지만, 즉 시스템과 디렉터리를 찾았지만 다음 메시지가 표시됩니다
Fatal error during unmarshaling (input value:ill-formed message) possibly because client and serer have been compiled with different versions of OCaml compiler
. 20.04에서 OCaml 버전을 확인했지만 분명히 아무것도 반환하지 않았습니다(앱 스토어에서 unison을 설치했음에도 불구하고). 18.04의 버전은 4.05.0입니다. 내가 무엇을 할 수 있는지에 대한 아이디어가 있나요?
답변1
여러 컴퓨터를 서로 다른 운영 체제와 동기화해야 할 때 Unison 및/또는 OCaml이 무언가를 변경할 때마다 소스에서 컴파일하지 않으려는 경우 깨끗한 솔루션이 있습니다.~해야 한다항상 Unison을 빠르게 작동하고 설치합니다. 이렇게 하면 모든 Linux 시스템, 클라이언트 및 서버에서 정확히 동일한 버전의 Unison/OCaml을 갖게 됩니다. 이것이 바로 스냅샷의 목적입니다. 동일한 스냅샷은 설치된 운영 체제에 관계없이 정확히 동일하게 표시되어야 합니다. 이 경우 소프트웨어 센터에서 unison-jz를 사용할 수 있습니다. OCaml 4.02.3에 대해 컴파일된 Unison 2.51.2를 설치합니다.
Ubuntu처럼 snapd가 이미 설치되어 있는 경우 다음을 실행하면 됩니다.
sudo snap install unison-jz
홈 디렉터리 외부의 콘텐츠를 동기화하려면 필요한 권한을 처리할 수 있도록 개발자 모드에서 unison-jz를 설치해야 할 수도 있습니다. 이 경우 터미널에서 사용해야 하는 라인은 다음과 같습니다.
sudo snap install --devmode unison-jz
Unison의 스냅샷 버전이 제대로 작동하려면 두 가지 작업을 더 수행해야 합니다. 사람들은:
파일을 동기화하는 데 사용할 Unison 구성 파일을 생성한 후 텍스트 편집기를 사용하여 다음 줄을 추가합니다.
servercmd = /snap/bin/unison-jz.unison -ui text
~/snap/unison-jz/current/.unison/에 있는 구성 파일에
모든 구성 파일은 .prf 확장자를 사용합니다.
이런 식으로 클라이언트 시스템의 unison은 동일한 Unison/OCaml 버전이 있는 서버에서 snap'd 버전(unison-jz)을 호출합니다.
분명히 unison-jz에 포함된 ssh 버전은 ssh 구성 파일의 "include"라는 용어를 이해하지 못하며 발견되면 오류가 발생합니다. 따라서 /etc/ssh/ssh_config 파일을 편집해야 할 수도 있습니다.
원하는 텍스트 편집기를 사용하여 관리자 권한으로 엽니다. 예를 들어
sudo nano /etc/ssh/ssh_config
아래와 같이 19행을 주석 처리합니다.
Include /etc/ssh/ssh_config.d/*.conf
그것은 이렇게 보일 것입니다
#Include /etc/ssh/ssh_config.d/*.conf
이전 버전의 Ubuntu에서 새 버전의 OCaml 또는 Unison을 컴파일하려고 할 때 종속성 문제로 인해 소스에서 빌드하는 것이 종종 불가능하기 때문에 이것이 이 상황을 처리하는 더 쉬운 방법이라고 생각합니다.
추가 정보:
답변2
Unison 버전 2.48.3과 2.48.4를 혼합하고 있습니다. Unison은 개발자가 마이너 버전 간에도 Unison 아카이브 파일의 형식을 변경하기 때문에 이에 대해 매우 까다롭습니다. 그럼에도 불구하고 Unison 버전은 모든 컴퓨터에서 일치해야 합니다. 저는 앱 스토어를 건너뛰고 Ubuntu 컴퓨터에 2.48.3을 수동으로 컴파일/설치하겠습니다.
또한, 동일한 버전의 oCaml을 사용하는 각 컴퓨터에서 동일한 버전의 Unison을 컴파일해야 합니다.)
답변3
이 문제를 해결하는 간단한 방법은 다음과 같이 적절한 고정을 사용하는 것입니다.데비안또는우분투이전 시스템으로의 릴리스를 위해 최신 호스트에서 일관된 패키지를 유지하기 위한 설명서입니다.
Debian Bullseye가 Buster를 일관되게 사용하게 하려면 /etc/apt/sources.list
두 버전 모두에 대한 행을 포함하고 다음을 입력하십시오 /etc/apt/preferences.d/unison
:
Package: unison
Pin: release n=bullseye
Pin-Priority: -10
Package: unison
Pin: release n=buster
Pin-Priority: 900
apt-get install unison/buster
설치된 경우 실행하면 패키지가 다운그레이드됩니다. 패키지 이름 뒤에 슬래시와 릴리스 버전이 어떻게 붙는지 확인하세요.
불스아이를 포커스로 바꾸고 구축함을 바이오닉으로 교체하면 효과가 있을 수 있지만 아직 테스트해 본 적은 없습니다. Q&A에 나온 버전명에 해당하는 번호는 다음과 같습니다.
- 바이오닉 비버는 우분투 18.04입니다
- Focal Fossa는 Ubuntu 20.04입니다.
- 버스터는 데비안 10입니다
- Bullseye는 데비안 11입니다.
(다른 답변에서는 snap 사용을 제안합니다. 일부 사람들은 이것을 받아들일 수 있지만 소프트웨어가 사실상 삭제가 불가능한 ~/snap/ 디렉토리를 생성하는 방법과 5년 동안 간단한 솔루션이 허용되지 않았다는 점에 유의하십시오.askubuntu.com/882562/.)
답변4
모든 구성 파일을 수정하는 대신 스냅 별칭을 사용하는 것이 더 쉬울 수 있습니다.
sudo snap alias unison-jz.unison unison
클라이언트 측과 서버 측 모두에서.