#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
для получения дополнительной информации.