Не удалось выполнить обмен версией протокола резервного копирования, код ошибки -1

#libimobiledevice

#libimobiledevice

Вопрос:

Мне нужно создать резервную копию iphone с помощью libimobiledevice, используя ubuntu, устройство обнаружено, но при запуске команд резервного копирования отображается следующая ошибка:

Запущена служба «com.apple.mobilebackup2» на порту 49343. Не удалось выполнить обмен версией протокола резервного копирования, код ошибки -1

От чего это может зависеть?

Ответ №1:

Об этой проблеме сообщалось в нескольких выпусках Github, подобных этому.

Решение:

вам необходимо использовать последнюю версию idevicebackup и libimobiledevice

Действительно, если вы используете Ubuntu 20.04 (например), пакет libimobiledevice на данный момент устарел.

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

Отказ от ответственности: недостатком самостоятельной компиляции является то, что ваши двоичные файлы не управляются менеджером пакетов. Вам придется обновлять себя, git pull редактировать или загружать новейшие версии исходного кода и каждый раз перекомпилировать все. Возможно, вам придется переделать все это после обновления дистрибутива. Положительным моментом является то, что ваши двоичные файлы работают…

Примечание: этапы компиляции описаны на официальном сайте только для debian; я мог бы выполнить их одинаково хорошо на Linux Mint 20.3 (на основе Ubuntu, на основе debian). OP не упоминает ОС, которую он или она использует, но, похоже, на данный момент доступны только ОС на базе debian, поэтому то, что следует, должно работать на ОС на базе debian.

Компиляция из исходного кода, шаг за шагом:

  • удалите официальный пакет и его зависимости и:
  • установите зависимости сборки: sudo apt install build-essential checkinstall git autoconf automake libtool-bin libplist-dev libusbmuxd-dev libssl-dev usbmuxd (см. «из источника» здесь)
  • получить исходный код libimobiledevice из его репозитория, используя, например git clone https://github.com/libimobiledevice/libimobiledevice.git . Вы можете перейти на страницу выпусков и использовать последнюю версию tar.gz вместо этого (1.3 на данный момент).
  • также получите исходный код других библиотек, необходимых libimobiledevice: libplist, libimobiledevice-glue и libusbmuxd. (Я также скомпилировал usbmuxd вместо использования официального пакета, но я не уверен, что это необходимо). Для каждого из них вы можете git clone загрузить или удалить последнюю версию исходного кода, если она доступна.
  • выберите префиксный каталог, куда будут помещаться библиотеки и двоичные файлы. Создайте его, если необходимо (официальный сайт libimobiledevice предлагает /opt/local , и я буду использовать это также в следующих шагах; для того, чтобы компиляция работала, вам нужно будет sudo mkdir /opt/local и export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig перед началом первой компиляции)
  • скомпилировать и установить cd в корень каждого git-клонированного (или загруженного из исходного кода) каталога (в таком порядке: lipblist, libimobiledevice-glue, libusbmuxd и libimobiledevice, поскольку каждый из них зависит от предыдущего) и выполнить в каждом из них: ./autogen.sh --prefix=/opt/local , затем make и, наконец sudo make install . (Обратите внимание, autogen строка для libimobiledevice может быть ./autogen.sh --prefix=/opt/local --enable-debug , как предложено здесь).

Сделав все это, iphone не был смонтирован автоматически, мне пришлось запустить вручную idevicepair pair , а затем смонтировать его с помощью ifuse ./iphone_mount_point/ (сделайте sudo apt install ifuse , если необходимо) и выполните резервное копирование с помощью idevicebackup2 backup --full iphone_backup/ . Прочитайте справку idevicebackup2 для получения дополнительной информации.