我有两台机器。一个是 unison v. 2.40 (Debian Jessie),另一个是新的 (Debian Stretch),我在其中安装了 package unison-all
,它引入了 unison 版本 2.32、2.40 和 2.48。然而,我无法让我的 2.40 在新机器上运行,因为它只提供了 2.48 版本。无论我做什么,我都会得到:
expected "Unison 2.40\n" but received "Unison 2.48\n\000\000\000\000\017",
unison-all
我通过明确删除并安装 v.2.40解决了这个问题,但我想知道如果我想在这台机器上使用两个并发版本的 unison 该怎么办。
答案1
我自己也遇到了这个问题,花了好长时间才找到答案!所以这就是答案,它对我有用。
要使用多个版本的 unison,请安装unison-all
.然后...
在上使用多个版本的 Unison客户
通过附加版本号来选择要运行的特定版本,如下所示:
unison-2.40 ...
或者,如果您想运行最新版本,只需键入:
unison
在上使用多个版本的 Unison服务器
指示 Unison 的客户端版本使用该标签调用服务器上匹配的 Unison 版本-addversionno
,如下所示:
unison -addversionno
欲了解更多详情
如果你仍然得到
Fatal error: Received unexpected header from the server
看到这个解决方案。
答案2
安装更容易静态 Unison 版本,而不是希望每个客户端和服务器都有完全相同的系统版本。
我从每个系统中删除了 unison Debian 软件包,并在各处启动了完全相同的脚本:
#!/bin/bash
set -e
mkdir /tmp/unison
cd /tmp/unison
curl -LO https://github.com/bcpierce00/unison/releases/download/v2.53.4/unison-2.53.4-ubuntu-x86_64-static.tar.gz
tar xvfz unison-2.53*
cd bin
chmod 755 unison unison-fsmonitor
sudo chown root:root unison unison-fsmonitor
sudo mv unison unison-fsmonitor /usr/local/bin/
cd /tmp/
rm -r unison
unison -version
每个客户端和服务器现在都可以一起交谈,因为他们同意:
❯ unison -version
unison version 2.53.4 (ocaml 4.14.1)
libc、ocaml 或保存包不再有问题!即使在旧服务器上,我也可以使用最新的 Unison 版本。