Как установить Unison 2.40 в Ubuntu 16.04 xenial (для устранения «Неустранимая ошибка: получен неожиданный заголовок»)

Если, например, у вас есть команда, которая возвращает ненулевой статус выхода как часть раскрытия PROMPT_COMMAND ( который выполняется перед выводом приглашения в bash ), тогда это вызовет немедленный выход оболочки, если вы установите параметр errexit с помощью set -e .

Другая возможность состоит в том, что существует набор прерываний DEBUG , который возвращает ненулевой статус выхода.Однако ловушка DEBUG выполняется до вызова команды, поэтому при нажатии оболочка не будет немедленно завершаться, когда вы нажмете Введите после установки - e , но вместо этого перед запуском следующей команды.

С помощью set -u вы устанавливаете опцию оболочки nounset . Эта опция приведет к тому, что оболочка выдаст ошибку, если вы попытаетесь развернуть любую неустановленную переменную отдельно от $ @ и $ * . Это не приведет к завершению работы оболочки, если также не действует set -e .

Если установить -u в действии и неустановленную переменную в PS1 , оболочка выйдет , как только вы установите Параметр errexit с установлен -e .

1
13.04.2017, 15:36
3 ответа

Вы также можете установить

unison-all

и автоматически выбрать нужную версию, как описано в

Как использовать несколько версий unison в одной системе?

0
27.01.2020, 23:47

Обнаружил решение :

Тестирование Debian имеет 2.48, что должно быть совместимо с версией Ubuntu. Вам нужно добавить тестовое репо на свой Pi, но с более низким приоритетом (поэтому репо будет использоваться только при явном запросе).

Добавьте следующие строки в / etc / apt / preferences (создайте файл, если он еще не существует):

Package: *
Pin: release o=Raspbian,a=stable
Pin-Priority: 500

Package: *
Pin: release o=Raspbian,a=testing
Pin-Priority: 300

Затем добавьте следующую строку в / etc / apt / sources .list :

deb http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi

Теперь запустите:

sudo apt-get update
sudo apt-cache policy

Убедитесь, что репозиторий testing (тот, который был только что добавлен) имеет более низкий приоритет, чем другие.

Наконец:

sudo apt-get install -t testing unison-all

Это дало мне 2,48 на Pi, и я смог подключиться и синхронизировать.


Вы также можете установить явную версию Unison вместе с существующими. Запустите

sudo apt-cache search unison

, чтобы узнать, какие версии предлагаются, а затем установите одну (и) по вашему выбору, например: [

sudo apt-get install -t testing unison2.40.102

] Пакеты с номером версии являются актуальными. unison - это метапакет, который всегда зависит от последней версии, а unison-all - это метапакет, который зависит от выбора версий.

Если на вашем сервере несколько версий, вам может потребоваться запустить Unison с параметром -addversionno : в результате клиент отправляет на сервер номер своей версии и приказывает серверу запустить та же версия, а не версия по умолчанию.


Вы также можете попробовать то же самое на своем рабочем столе Ubuntu. Вам нужно будет:

  • Найти выпуск, в котором версия Unison доступна на вашем Pi.
  • Добавьте репо для этого выпуска в /etc/apt/sources.list . (Скопируйте строку для текущего выпуска и измените название выпуска - это прилагательное, например, xenial для Xenial Xerus.)
  • Измените etc / apt / preferences соответственно. Вместо стабильного и тестирования используйте название текущего выпуска и выпуск с желаемой версией Unison. Ваш текущий выпуск имеет более высокий приоритет 500 .
  • Обязательно запустите sudo apt-get update; sudo apt-cache policy и проверьте вывод, чтобы убедиться, что приоритеты установлены правильно. Иначе вы можете испортить установку Ubuntu!
  • Если вы уверены, что все в порядке, установите unison (или unison-all или явную версию), выбрав новое репо.

Или возьмите файл .deb и установите его напрямую.

1
27.01.2020, 23:47

Та же проблема для меня, чтобы синхронизировать компьютер Unix (Debian Jessie) с версией 2.40.102 Unison (установленной из официальных выпусков стабильных пакетов apt-get) и компьютер macOS с последней версией 2.48.15.

Лучшим решением было понизить версию Unison для macOS до 2.40. Двоичный файл находится здесь:

Union 2.40.61 (GUI) для macOS Intel

И не забудьте установить командную строку из меню «Unison» > «Установить инструмент командной строки».

При синхронизации предупреждение:

Unison[16276:318574] Calling nonGuiStartup
Fatal error: Received unexpected header from the server:
expected "Unison 2.40\n" but received "Unison 2.48\n\000\000\000\000\017",
which differs at "Unison 2.48".

заменяется на:

Unison[18574:332371] Calling nonGuiStartup
Connected [//SERVER.IP//Users/USer/Desktop/Unison -> //localhost//home/user/test]
Looking for changes Warning: No archive files were found for these roots…

NB: У меня macOS Sierra 10.12.4 и Unison 2.40.61, кажется, работает хорошо.

0
27.01.2020, 23:47

Теги

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