我有两台机器运行 Ubuntu。一个运行 Ubuntu 18.04 LTS,另一个运行 Ubuntu 20.04 LTS。我想使用unison在它们之间同步文件。我已经以传统方式在他们两个上安装了一致。IE:
sudo apt install unison-all
当我检查安装的版本时,我在两台机器上都得到了这个:
unison version 2.48.4
当我尝试在它们之间同步时,同步失败并收到以下消息:
解组过程中的致命错误(输入值:格式错误的消息)可能是因为客户端和服务器已使用不同版本的 OCaml 编译器进行编译。
当我查看/usr/bin/unison-2.48.4
两台机器时,我得到:
3377264 Oct 31 2017 /usr/bin/unison-2.48.4 [18.04]
3866920 Feb 16 10:04 /usr/bin/unison-2.48.4 [20.04]
因此,虽然版本号相同,但它们具有不同的大小和不同的时间戳,我的猜测是差异是导致错误的原因。
问题也发布在这里:https ://www.mail-archive.com/[email protected]/msg5750379.html - 但还没有解决方案。
安装在运行 Ubuntu 18.04 LTS 的机器上的 unison 与用于 MS Windows 10 的 unison 2.48.4 同步良好,所以这也是我想在 Ubuntu 20.04 LTS 上使用的。
有没有办法在 Unison 20.04 LTS 上安装适用于 Ubuntu 18.04 LTS的unison版本?
如果“是”,怎么做?
我认为更好的解决方案是
然后将它们置于搁置状态
aptitude hold unison unison-gtk
。关注https://bugs.launchpad.net/ubuntu/+source/unison/+bug/1875475看看何时修复。我发现了显然是常识的困难方式:Unison不仅对工具本身的版本号非常挑剔,而且对用于编译它的 OCaml 编译器也非常挑剔。看起来将 Ubuntu 20.04 LTS 的二进制文件放在一起的团队使用比以前使用的更新版本的 OCaml 编译器重新编译,没有考虑向后和跨平台兼容性是同步工具的主要功能。恕我直言,这是一个重大的失误。
我解决这个问题的方法是首先通过apt在 Ubuntu 20.04 LTS 上清除unison,然后使用可以从以下网址下载的静态文件“手动”重新安装它:https ://www.urs-mueller.ch/de/computer /index.html。
unison-2.48.4-linux-i386-text-static.tar.gz
我不是 Ubuntu 向导,所以我不知道这是否是解决此问题的正确方法,但它适用于我,并允许我再次在所有计算机之间同步。
另一个解决方案,从长远来看更好,特别是如果你只同步 linux 机器,那就是安装 Unison 的 snap 版本。
这个版本的 Unison 是独立于系统的,无论你安装它是什么版本的 Ubuntu、Debian 等,它总是针对相同的 OCaml 编译。因此,每次 Unison 或 OCaml 发生变化时,您不必担心这些问题。目前,Unison 为 2.51.2 和 OCaml 4.02.3
看到这个:
https://unix.stackexchange.com/questions/583058/unison-and-version-compiler-conflicts/583377#583377
请记住,如果您不使用 Ubuntu,则必须先安装 snapd:
注销并重新登录,或重新启动系统,以确保在继续之前正确更新 snap 的路径。
然后,按照上面链接或此链接中显示的步骤操作:
http://www.xente.mundo-r.com/zasjls/other/20/unison_en.html