2

我有两台计算机,一台运行 Ubuntu 19.04,另一台运行 Ubuntu 20.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 的机器与服务器正常同步。现在在 Ubuntu 20.04 中,它可以成功扫描文件,但是当我尝试与“Go”同步时,它会因错误而崩溃

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

在文件“/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

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

4

2 回答 2

1

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

# 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

确保删除所有fp*文件~/.unison

我取自:https ://askubuntu.com/a/1235089/917854

我将它与 Kubuntu 20.04 客户端和 Ubuntu 18.04 服务器(都使用命令行版本)一起使用。我以前也有同样的问题。

错误跟踪器:https ://bugs.launchpad.net/ubuntu/+source/unison/+bug/1875475

于 2020-05-26T22:07:01.457 回答
1

这更像是一个评论而不是一个答案,但我还不能发表评论,所以我会像一个答案一样发布它:

你试过这个答案吗?

https://unix.stackexchange.com/questions/583058/unison-and-version-compiler-conflicts/583377#583377

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

Snapd 默认安装在 Ubuntu 中,但我认为您需要先在 CentOS 中安装它。根据这个

https://snapcraft.io/docs/installing-snap-on-centos

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

sudo yum install snapd
sudo systemctl enable --now snapd.socket

然后像上面引用的答案一样进行。

编辑:如果您无法访问其中一台机器,则不保证您安装的 Unisons 兼容。在这种情况下,您可以尝试不同的快照“通道”。对于 Unison,请参阅:

https://snapcraft.io/unison-jz

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

您还可以发出:

snap info unison-jz

在您的情况下,它将是测试版,所以

sudo snap install --channel=beta --devmode unison-jz

由于服务器没有安装 unison-jz,所以不要在你的 unison 配置文件中添加“servercmd”行。

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

如何跨 OS X 和 linux 使用一致?由于 ocaml 版本导致的致命错误

于 2020-05-20T11:02:42.987 回答