Linux Unison失败:未捕获异常失败(“输入值:格式错误的消息”)

Linux Unison失败:未捕获异常失败(“输入值:格式错误的消息”),linux,ubuntu,centos,unison,Linux,Ubuntu,Centos,Unison,我有两台电脑,一台运行Ubuntu19.04,另一台运行Ubuntu20.04。我使用unison将它们与我工作场所运行CentOS 7.7.1908的服务器同步。我的Ubuntu 19.04机器运行的是Unison 2.48.4。我的Ubuntu 20.04机器运行的是2.48.4。正在工作的服务器正在运行Unison 2.48.15 Ubuntu 19.04机器与服务器同步没有问题。在我升级到20.04之前,运行19.10的机器与服务器很好地同步。现在在Ubuntu20.04中,它可以成功地

我有两台电脑,一台运行Ubuntu19.04,另一台运行Ubuntu20.04。我使用unison将它们与我工作场所运行CentOS 7.7.1908的服务器同步。我的Ubuntu 19.04机器运行的是Unison 2.48.4。我的Ubuntu 20.04机器运行的是2.48.4。正在工作的服务器正在运行Unison 2.48.15

Ubuntu 19.04机器与服务器同步没有问题。在我升级到20.04之前,运行19.10的机器与服务器很好地同步。现在在Ubuntu20.04中,它可以成功地扫描文件,但当我尝试与“Go”同步时,它会错误地崩溃

Unison失败:未捕获异常失败(“输入值:格式错误的消息”)

在文件“/opt/unison-2.48.15v4/src/lwt/lwt.ml”第135行第6-13个字符处提出

从文件“list.ml”调用,第85行,字符12-15

调用文件“/opt/unison-2.48.15v4/src/lwt/lwt.ml”,第31行,字符2-37

从文件“/opt/unison-2.48.15v4/src/lwt/lwt.ml”(内联)调用,第83行,字符17-46

从文件“/opt/unison-2.48.15v4/src/lwt/generic/lwt_unix_impl.ml”调用,第55行,字符6-23

从文件“/opt/unison-2.48.15v4/src/lwt/generic/lwt_unix_impl.ml”调用,第147行,字符6-40

从文件“/opt/unison-2.48.15v4/src/main.ml”调用,第202行,字符6-24

从文件“/opt/unison-2.48.15v4/src/main.ml”中调用,第131行,字符4-9


我认为这可能是一个类似的问题,但我构建了一个全新的unison配置文件来同步一个包含单个空文本文件的新目录。我认为这意味着,正如约翰推断的那样,以前没有相关的档案导致这个问题。我还与-ignorearchives指令运行了unison,我得到了相同的错误。

这将更多地是一个注释而不是一个答案,但我还不允许评论,所以我会将其作为答案发布:

你试过这个答案吗

它确实解决了我长期存在的问题,因为Unison的不同版本之间不兼容,甚至同一个版本是用不同版本的OCaml构建的

默认情况下,Snapd安装在Ubuntu中,但我认为您需要先在CentOS中安装它。据此,

您必须在终端中发出这些命令

sudo yum install snapd
sudo systemctl enable --now snapd.socket
然后像上面引用的答案那样继续

编辑:如果您无法访问其中一台计算机,则无法保证您安装的Unisons兼容。在这种情况下,您可以尝试不同的捕捉“通道”。有关Unison,请参见:

在右上角可以找到不同的版本

您还可以发布:

snap info unison-jz
在你的情况下,它将是测试版,所以

sudo snap install --channel=beta --devmode unison-jz
因为服务器没有安装unison jz,所以不要将“servercmd”行添加到unison配置文件中

如果此版本的unison jz与CentOS机器中的版本不兼容,恐怕您必须从这里这样的源代码处编译


您可以在两台主机上手动安装相同的版本:

# remove the current version
sudo apt purge unison

# for the command line version:
wget http://ftp.fr.debian.org/debian/pool/main/u/unison/unison_2.48.4-1+b1_amd64.deb
sudo dpkg -i unison_2.48.4-1+b1_amd64.deb

# for the gui version:
wget http://ftp.fr.debian.org/debian/pool/main/u/unison/unison-gtk_2.48.4-1+b1_amd64.deb
sudo dpkg -i unison-gtk_2.48.4-1+b1_amd64.deb

# make sure the current version is not updated
sudo apt install aptitude
sudo aptitude hold unison
确保从
~/.unison

这是我从以下地方得到的:

我正在使用Kubuntu20.04客户端和Ubuntu18.04服务器(都使用命令行版本)。我以前也有同样的问题


Bug跟踪器:

我在CentOS计算机上没有root权限。但我在我的Ubuntu机器上是这样做的。你认为我可以在我的Ubuntu机器上找到一个快照来安装,它与CentOS机器上的Unison和OCaml版本相匹配吗?我怎样才能找到CentOS unison编译时使用的OCaml版本?快照的稳定版本在安装后会自动更新。最近的是2.51.2。有时保留测试版或边缘版。在这种情况下,有一个测试版可以满足您的需要。我正在编辑上面的答案来完成这项工作,因为要找出Unison编译时使用的OCaml版本,最新版本的Unison在打开窗口时会显示在窗口底部,而旧版本则不会。我不知道有什么简单的方法可以告诉你。如果您的Unison来自发行版repos,通常在这些repos中使用OCaml版本进行编译,但并不总是…好的,我已经通过snap在我作为root用户的两台机器上安装了Unison jz作为测试。但是现在我得到了错误>[remote]Shell连接:ssh(ssh,-l,user,server,-e,none,-C,/snap/bin/unison-jz.unison,-ui,text,-server)>create_session child>[remote_emit+]grab:EOF>与服务器的连接丢失我不是CentOS服务器上的root用户,但是我在那个网站上找到了一个.deb,它与服务器上的版本一起工作(我想这意味着它是用同一版本的OCaml编译的),所以我在我的两台机器上都安装了它,现在又恢复同步了!谢谢。我注意到阻止unison更新:
echo“unison gtk hold”| dpkg——设置选项
非常感谢,这就成功了(在linux mint 19.3和linux mint 20上)