Linux – Unison “Fatal error during unmarshaling”

linux-mintunison

I have installed unison 2.48.4 on three machines, two running Linux Mint 17 and one Linux Mint 18. I sync via SSH.

The two 17's sync with no problem. However the 18 cannot sync with either of the other two. The list of potential transfers is generated but when I press "GO" I get the following:

Fatal error: Server: Fatal error during unmarshaling (input 
  value: bad bigarray kind), possibly because client and server 
  have been compiled with different versions of the Ocaml compiler.

I get the same message when I use the graphical or the command-line version of unison client. Also when I try unison 2.48.3 on the client side, which makes me believe it is the difference in the mint version (17 vs 18) which creates the problem.

I haven't compiled anything myself, just installed from the repos or downloaded deb packages.

Best Answer

The Unison protocol is version-specific. Version N can't talk to version M with M ≠ N.

Debian (and derivatives: Ubuntu, Mint, …) provides a unison-all package which despite the name contains some recent-but-not-latest versions of Unison, not all past versions. I haven't checked but I'd expect unison-all on Mint 18 to contain the version that's on Mint 17.

Alternatively, you can install all the versions of Unison that you use anywhere by copying them to /usr/local/bin or ~/bin in the machine that you use as your Unison hub. The unison-NN.NN binary only depends on the standard library so it works on any 21th century non-embedded Linux without having to install anything extra. That's what I do. You do need to remember to update this binary when a bug fix comes out.

Unless you arrange to run the same version of Unison everywhere, you'll need to tell it to invoke the matching version on the remote side by putting addversionno = true in your profile(s).

Related Question