10

升级到 Mac OS X Catalina 后,我正试图让协调工作。不幸的是,macports 安装了更新版本的 ocaml (4.08.1),这意味着 unison 2.51.2 版本无法编译。

好吧,没问题,我只是同步更新到 git master,然后重新编译。不幸的是,这在同步时失败了,因为用于在 mac (4.08.1) 上编译的 ocaml 版本与用于在另一台机器上编译的版本 (4.07.1) 不同。叹。好的,使用 opam magic 在我的机器上安装 4.07.1。一切都应该没问题,对吧?不!

这是错误:

Connected [//zzzmyhost//home/clements/unison-home -> //zzzmyotherhost//Users/clements/clements]
Looking for changes
Uncaught exception Failure("input_value: ill-formed message")
Raised at file "/private/tmp/unison/src/lwt/lwt.ml", line 126, characters 16-23
Called from file "/private/tmp/unison/src/lwt/generic/lwt_unix_impl.ml", line 102, characters 8-23
Called from file "/private/tmp/unison/src/update.ml" (inlined), line 2105, characters 2-69
Called from file "/private/tmp/unison/src/uitext.ml", line 978, characters 16-56
Called from file "/private/tmp/unison/src/uitext.ml", line 1066, characters 6-90
Called from file "/private/tmp/unison/src/uitext.ml", line 1088, characters 19-66
Called from file "/private/tmp/unison/src/uitext.ml", line 1144, characters 21-43

这是怎么回事?

4

3 回答 3

10

叹息......这里的问题(非常不明显)实际上是在早期测试中进行失败同步时创建的损坏/错误格式的同步文件。

解决方案只是进入~/Library/Application Support/Unison(在 UNIX 机器上,此路径可能会存在~/.unison并删除导致问题的存档文件(可能是最近的文件)。在紧要关头,只需删除所有存档文件并重新开始。

于 2019-12-04T17:43:58.673 回答
3

从 Ubuntu 18.04 升级后,我在 Windows 和 Ubuntu 20.04 之间遇到了同样的问题。我在 20.04 中尝试了 Ubuntu 18.04 的二进制文件,但仍然失败,因此不兼容可能存在于其中一个依赖项中。

作为一种解决方法,我创建了一个基于 Ubuntu 18.04 的 Docker 映像:

FROM ubuntu:18.04

RUN apt-get update && apt-get dist-upgrade -y
RUN apt-get install unison -y
RUN useradd martin --home /home/martin

WORKDIR /home/martin
USER martin

构建它docker build -t unison:18.04 .

然后我添加了一个包装器~/bin/unison-2.48.4-docker

#!/bin/bash

docker run --rm -i \
  -v /home/martin/dirtosync:/home/martin/dirtosync \
  -v /home/martin/.unison:/home/martin/.unison \
  --hostname $(hostname) \
  unison:18.04 unison "$@"

设置--hostname很重要,因为主机名是存档文件的一部分。

在我配置的 Windows 机器上的配置文件中:

servercmd = ~/bin/unison-2.48.4-docker
于 2020-06-29T18:51:48.057 回答
0

在我使用两个 Windows 客户端和一个通过 ssh 连接的 Ubuntu 18.04 服务器的设置中,问题从在 Ubuntu 20.04 上运行的第二台服务器开始。旧服务器和 Windows 客户端都无法与新机器同步。

我的解决方案:将二进制文件从 Ubuntu 18.04 复制到 Ubuntu 20.04 机器中的新目录。这个新文件在新机器上 ssh 的“authorized_keys”文件中被引用。

到目前为止,一切都适用于 unison 2.48.4。

于 2020-11-09T17:40:03.963 回答