Unison и конфликты версий/компиляторов

Я написал https://github.com/kislyuk/yq, обертку вокруг https://stedolan.github.io/jq/, для решения этого варианта использования.

3
28.04.2020, 13:26
4 ответа

Вы смешиваете версии Unison 2.48.3 и 2.48.4. Unison очень придирчив к этому, поскольку разработчик меняет формат архивных файлов Unison даже между младшими версиями. В любом случае версии Unison должны совпадать на всех ваших машинах. Я бы пропустил магазин приложений и скомпилировал/установил 2.48.3 вручную на вашем компьютере с Ubuntu.

Кроме того, вы должны убедиться, что используете одну и ту же версию oCaml для компиляции одной и той же версии Unison на каждой машине;)

2
19.03.2021, 02:21

Вместо изменения каждого профиля может быть проще использовать псевдоним привязки:

sudo snap alias unison-jz.unison unison

как на стороне клиента, так и на стороне сервера.

1
19.03.2021, 02:21

Когда вам нужно синхронизировать несколько компьютеров с разными операционными системами, если вы не хотите компилировать из исходного кода каждый раз, когда Unison и/или OCaml что-то меняют, есть одно чистое решение, которое должно всегда работы и заключается в установке Unison в качестве оснастки. Таким образом, у вас будет одна и та же версия Unison/OCaml на всех ваших Linux-компьютерах, клиентах и ​​серверах. Вот для чего предназначены снэпы. Один и тот же снап должен работать абсолютно одинаково, вне зависимости от ОС, в которой он установлен. В этом случае у нас есть унисон -jz, доступный в Центре программного обеспечения. Он установит Unison 2.51.2, скомпилированный с OCaml 4.02.3

.

Если snapd уже установлен, как в Ubuntu, вам просто нужно выполнить команду:

sudo snap install unison-jz

Если вы хотите синхронизировать что-то за пределами вашего домашнего каталога, вам может потребоваться установить unison -jz в режиме разработчика, чтобы он мог обрабатывать необходимые разрешения. В этом случае вы должны использовать строку в терминале:

sudo snap install --devmode unison-jz

Есть еще две вещи, которые вам нужно сделать, чтобы снэп-версия Unison заработала. Это:

  1. После создания профиля Unison, который вы собираетесь использовать для синхронизации файлов, используйте текстовый редактор, чтобы добавить строку

     servercmd = /snap/bin/unison-jz.unison -ui text
    

    в файл вашего профиля, расположенный в ~/snap/unison -jz/current/.unison/

    Все файлы профилей имеют расширение.prf

    Таким образом, unison на клиентской машине вызывает снап-версию (unison -jz )на сервере, который имеет те же версии Unison/OCaml

  2. Судя по всему, версия ssh, включенная в unison -jz, не понимает термин «включить» в файле конфигурации ssh и выдает ошибку, если находит его. Так что, вероятно, вам также придется отредактировать файл /etc/ssh/ssh _config

    Откройте его от имени администратора в любом текстовом редакторе.Например

     sudo nano /etc/ssh/ssh_config
    

    и закомментируйте строку 19, которая выглядит как

     Include /etc/ssh/ssh_config.d/*.conf
    

    Это должно выглядеть так

     #Include /etc/ssh/ssh_config.d/*.conf
    

Я думаю, что это более простой способ справиться с ситуацией, поскольку сборка из исходного кода часто невозможна из-за проблем с зависимостями, возникающих при попытке скомпилировать более новую версию OCaml или Unison в более старой версии Ubuntu.

Дополнительная информация:

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

4
19.03.2021, 02:21

Между 18.04 и 20.04 Ubuntu увеличила версию OCaml с 4.05 до 4.08 — это пакет, доступный в репозиториях, и, предположительно, также версия, используемая для сборки Unison для соответствующего выпуска.

Более поздние версии Unison (, начиная с 2.40 ), доступны в виде бинарных загрузок из самого проекта. Начиная с 2.51.3, они даже предлагают сборки с разными версиями OCaml. Возьмите тот, который вам нужен, и разверните его на обеих ваших машинах, что гарантирует, что вы работаете одинаково на обоих концах.

Или вы можете понизить версию машины 20.04 до пакета Unison, поставляемого с 18.04 (сборкой -1ubuntu1вместо-4ubuntu1):Возьмитеunison-gtk_2.48.4-1ubuntu1_amd64из репозиториев Ubuntu (это выпуск, который поставляется с 18.04; 20.04 имеет unison-gtk_2.48.4-4ubuntu1_amd64), и установите его с помощью:

sudo dpkg -i ~/Downloads/unison-gtk_2.48.4-1ubuntu1_amd64.deb

Чтобы программа обновления не отменила ваши изменения при следующем запуске, приостановите пакет:

sudo apt-mark hold unison-gtk

(Если вы решите выполнить обновление в будущем, повторный -запуск этой команды с unholdотменит это, что позволит снова обновить пакет.)

Возможно, вам придется удалить кэш Unison — ~/.unison/ar*и ~/.unison/fp*— на обоих концах.

В долгосрочной перспективе команда работает над устранением зависимости от версии OCaml (, насколько я понимаю, проблема#375 , разработчик просто ждет следующего выпуска, чтобы объединить свои изменения ). ]. Мы можем получить удовольствие от этого, как только выйдет версия 2.52 или 2.53. У них также есть планы по внедрению взаимодействия между различными версиями Unison, пока проводной протокол остается неизменным(#407 ), но это может занять немного больше времени.

0
19.03.2021, 02:21

Теги

Похожие вопросы