如何在 Ubuntu 16.04 xenial 上安装 Unison 2.40(解决“致命错误:收到意外标头”)

kay*_*y_D 5 sync rsync unison 16.04

在我的其他计算机上,我有统一版本 2.40.102(这是可用的最新版本),在我的桌面 ubuntu 16.04 xenial 上我有统一版本 2.48.3。

尝试同步时:

kayd@Trunk:~$ unison . ssh://pi@mizu/.
...
Fatal error: Received unexpected header from the server:
 expected "Unison 2.48\n" but received "Unison 2.40\n\000\000\000\000\017", 
which differs at "Unison 2.40".
Run Code Online (Sandbox Code Playgroud)

各种来源告诉我安装unison-all,我做了,但它只包含版本 2.48:

kayd@Trunk:~$ ls -l /usr/bin/unison*
lrwxrwxrwx 1 root root      24 Mai 20 22:15 /usr/bin/unison -> /etc/alternatives/unison
lrwxrwxrwx 1 root root      13 Mär 18 16:10 /usr/bin/unison-2.48 -> unison-2.48.3
-rwxr-xr-x 1 root root 2169968 Mär 18 16:10 /usr/bin/unison-2.48.3
lrwxrwxrwx 1 root root      13 Mär 18 16:10 /usr/bin/unison-latest-stable -> unison-2.48.3
Run Code Online (Sandbox Code Playgroud)

我的问题是:

如何在 xenial 上安装 2.40 版?

kay*_*y_D 9

我在这里找到了一个 deb 文件,它是值得信赖的,但显然可以正常工作,下载了 64 位版本并使用

sudo dpkg --install ./unison-gtk_2.40.102-2ubuntu1_amd64.deb
Run Code Online (Sandbox Code Playgroud)

安装。基于ridgy的回答,我unison-2.40-gtk用来调用与我的 RaspberryPis 同步的同调

  • 此外,您可以使用 `sudo apt-mark hold unison-gtk` 来防止软件包在未来自动升级。 (2认同)

rid*_*dgy 2

今天我遇到了同样的问题:带有 raspbian (unison 2.40) 的服务器和两个客户端 (Ubuntu 14.04 / unison 2.40 和 Ubuntu 16.04 / unison 2.48)。

由于 raspbian,我无法(轻松)在服务器上升级到 2.48。但是将 2.40 二进制文件从 Ubuntu 14.04 复制到 Ubuntu 16.04 确实有效:

ubu1604# cd /usr/bin; sudo scp -p ubu1404:/usr/bin/unison-2.40.102* .
Run Code Online (Sandbox Code Playgroud)

然后,您可以直接调用,或更改相应二进制文件的unison-2.40.102链接。/etc/alternatives/unison*

编辑:

在我的第二台机器上从 14.04 升级到 16.04 后,我再次遇到了这个问题,感谢 kay_D,获取并安装 .deb 文件有所帮助。

仅更改 /etc/alternatives 中的链接是不够的,因为相应的 .desktop 文件直接调用一致二进制文件。所以我改变了 /usr/share/applications/unison-gtk.desktop

Exec=unison-gtk
Run Code Online (Sandbox Code Playgroud)

(有时我更喜欢不从终端调用程序,而是从菜单调用程序)