首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unison和版本/编译器冲突

Unison和版本/编译器冲突
EN

Unix & Linux用户
提问于 2020-04-28 10:26:57
回答 4查看 3.8K关注 0票数 6

我有两台机器,一台运行Ubuntu18.04,另一台运行Ubuntu20.04。我想使用Unison在它们之间同步文件,但是有一些问题。首先,因为我也与另一台机器同步,所以我从源Unison2.48.3编译。然后在Ubuntu18.04中,我安装了Ubuntu软件Unison2.48.4,所以我使用了Ubuntu20.04。正确设置它们之后,从Ubuntu18.04命令行运行unison-2.48.4-gtk并尝试同步。虽然一切都很好,但它找到了机器和目录,然后我得到消息:Fatal error during unmarshaling (input value:ill-formed message) possibly because client and serer have been compiled with different versions of OCaml compiler。在20.04版中,我检查了OCaml的版本,但显然它什么也没有返回(尽管我从应用程序商店安装了unison )。在18.04版本是4.05.0。对我能做什么有什么想法吗?

EN

回答 4

Unix & Linux用户

回答已采纳

发布于 2020-04-29 06:09:05

您正在混合Unison版本2.48.3和2.48.4。Unison对此非常挑剔,因为开发人员更改了Unison存档文件的格式,甚至在次要版本之间也是如此。无论如何,Unison的版本应该在您的所有机器之间匹配。我会跳过应用程序商店,在Ubuntu机器上手动编译/安装2.48.3。

此外,您还必须确保使用相同版本的oCaml在每台机器上编译相同版本的Unison ;)

票数 3
EN

Unix & Linux用户

发布于 2020-04-29 17:45:48

当您需要将多台计算机与不同的操作系统同步时,如果您不希望每次Unison和/或OCaml更改某些内容时都要从源代码中编译,那么有一个干净的解决方案应该总是有效的,那就是快速安装Unison。这样,您在所有linux计算机、客户端和服务器上都拥有相同的Unison/OCaml版本。这就是截图的意义所在。无论安装在哪个操作系统中,相同的snap的工作方式都应该完全相同。在这种情况下,我们可以在软件中心获得unison。它将安装根据OCaml 4.02.3编译的Unison2.51.2

如果已经安装了快照,就像在Ubuntu中一样,只需发出:

代码语言:javascript
复制
sudo snap install unison-jz

如果要同步主目录之外的内容,则可能必须在developer模式下安装unison,以便它能够处理所需的权限。在这种情况下,您必须在终端中使用的行是:

代码语言:javascript
复制
sudo snap install --devmode unison-jz

对于Unison的快速版本,还有两件事你必须做。这些措施是:

  1. 创建了要用于同步文件的Unison之后,使用文本编辑器将servercmd = /snap/bin/unison-jz.unison -ui文本添加到配置文件中,该文件位于~/snap/ unison /.Unison/.Unison/所有配置文件使用扩展名.prf,客户机中的Unison调用服务器中的snap'd (Unison)版本(Unison),服务器具有相同的Unison/OCaml版本。
  2. 显然,包含在unison中的ssh版本并不理解ssh配置文件中的“Include”一词,如果它找到了它,就会出错。因此,您可能还必须以管理员身份编辑文件/etc/ssh/ssh_config,使用您选择的文本编辑器打开它。例如,sudo nano /etc/ssh/ssh_config,并注释掉类似于Include /etc/ssh/ssh_config.d/*..conf的第19行,它应该类似于#Include /etc/ssh/ssh_config.d/*..conf。

我认为这是一种更容易处理这种情况的方法,因为在较早版本的Ubuntu中编译更新版本的OCaml或Unison时会出现依赖问题,所以从源代码构建通常是不可能的。

更多信息:

http://www.xente.mundo-r.com/zasjls/other/20/unison_en.html

票数 4
EN

Unix & Linux用户

发布于 2020-10-09 15:55:42

解决这一问题的一个简单方法是使用apt钉扎(如德比氏乌本图 docs所描述的那样),使较新主机上的统一包与旧系统的发布保持一致。

为了使debian使用来自buster的一致性,请确保/etc/apt/sources.list包含两个版本的行,并将以下内容放在/etc/apt/preferences.d/unison中:

代码语言:javascript
复制
Package: unison
Pin: release n=bullseye
Pin-Priority: -10

Package: unison
Pin: release n=buster
Pin-Priority: 900

运行apt-get install unison/buster将降低软件包的级别,如果它已经安装。请注意包名是如何用斜杠和发行版后缀的。

用聚焦和仿生取代斗牛可能会有效果,但我还没有测试过。问题和答覆中与新闻稿名称相对应的数字如下:

  • 仿生海狸Ubuntu 18.04
  • 焦点Fossa是Ubuntu 20.04
  • Buster是Debian 10
  • 牛头是Debian 11

(其他使用snap回答建议。虽然有些人可以接受,但请注意,该软件是如何创建一个不能实际删除的~/snap/目录的,而且已经有五年没有接受简单的修复了。(详见askubuntu.com/882562/。)

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/583058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档