Создание репозитория Cydia своими руками: подробная инструкция
Нас давно просили рассказать о том, как создать репозиторий Cydia, но мы откладывали эту задачу на потом. Сейчас у нас есть отличная возможность продемонстрировать всю эту процедуру на живом примере — нашем собственном репозитории и нашем твике Dual Time.
В качестве предисловия расскажем о базовых принципах устройства репозиториев. Отличия от App Store фундаментальны: в Cydia нет никакого централизованного источника распространения программ, нет здесь и никакой системы контроля. Всё, что вы качаете из Cydia, скачивается из каких-либо репозиториев, полностью независимых друг от друга, находящихся на разных хостингах в разных уголках мира. Более того, вы сами решаете, что будет вам доступно при поиске через Cydia, потому что список видимых вам репозиториев составляете вы сами. Исключение из этого правила лишь одно: в Cydia есть список базовых репозиториев (чаще их называют стандартными), которые добавляются вместе с установкой самой Cydia и не подлежат удалению.
Таким образом, если вы хотите организовать свой собственный репозиторий Cydia, вам потребуются:
- хостинг с доступом по FTP или SSH
- зарегистрированное доменное имя (для удобного добавления репозитория)
- хотя бы одна программа, тема или файл, который вы будете публиковать
- Ubuntu — в виде LiveCD, реальной системы или системы в виртуальной машине. Осведомленные читатели возразят, что подойдёт и Windows, и даже сама iOS, но мы настаиваем на том, что только Ubuntu обеспечивает минимальное количество глюков при создании репозитория
- набор необходимых скриптов для Ubuntu
Если всё перечисленное у вас имеется, пора приступать к процессу создания репозитория Cydia.
С технической точки зрения, Cydia репозиторий — не что иное, как особым образом структурированный набор папок. Все твики, приложения, рингтоны, темы и прочий ассортимент Cydia содержится внутри репозитория в виде DEB-пакетов. В свою очередь, пакет представляет собой особым образом структурированный архив.
Что же требуется от пользователя, создающего репозиторий? Не так уж и много:
- правильно разложить всё по нужным папкам
- верно заполнить файлы со служебной информацией по пакетам и репозиторию
- запаковать всё с использованием специальных скриптов
- залить созданный репозиторий на хостинг
Начнём с изучения структуры DEB-пакета. Его начинка обязательно должна включать системную папку DEBIAN со служебным файлом control внутри. Остальные файлы внутри DEB-пакета — это всё, что имеет отношение к вашей программе, твику и пр. Но все ваши файлы нельзя просто взять и сложить в корень DEB-пакета простым списком. Как тогда Cydia догадается, куда какой файл нужно будет устанавливать? Поэтому вся начинка DEB-пакета раскладывается в соответствии с теми путями, по которым эти файлы нужно будет разложить в файловой системе iOS.
В качестве примера приведем начинку DEB-пакета Dual Time:
Само приложение Dual Time ставится в папку системных приложений iOS, поэтому его нужно поместить в подпапку Applications. Кроме этого, DualTime включает плагин для MobileSubstrate, поэтому его надо положить в подпапку Library/MobileSubstrate. Никто не сможет подсказать вам правильные пути для инсталляции, вы определяете их сами в зависимости от специфики вашего твика.
Но самое главное в DEB-пакете — файл control. В нём содержится вся та информация, которую вы видите в качестве описания пакета в Cydia. Это обычный текстовый файл, созданный в Linux, но с удалённым расширением TXT. Создавать файл control желательно именно в Linux-системе, потому что невидимые глазу символы начала новой строки в Windows, OS X и Linux отличаются. Вот так выглядит содержимое этого файла для Dual Time:
Все поля обязательны к заполнению, если вы хотите, чтобы информация о твике нормально отображалась в Cydia. Вот их смысл:
- Package — идентификатор вашего DEB-пакета. Делается по шаблону com.yourcompany.tweakname. Нужен для того, чтобы Cydia могла опознать именно ваш твик среди тысяч других
- Name — имя, отображаемое в Cydia
- Version — индекс версии
- Depends — список зависимостей вашего пакета. Здесь через пробел вводятся имена пакетов, наличие которых требуется для установки вашего пакета
- Architecture — вводится iphoneos-arm
- Description — краткое описание вашего твика
- Maintainer — имя издателя твика
- Author — имя создателя твика
- Section — тематическая секция Cydia, к которой будет относиться пакет. Список секций можно узнать в самой Cydia
- Installed-Size — размер файлов твика без учёта сжатия, т.е. то место, которое установленный пакет будет занимать в устройстве. Вводится в килобайтах. Заметьте: эта цифра никак не связана с реальным размером, теоретически, вы можете ввести здесь что угодно
Есть ещё одна важная деталь: в конце файла control обязательно должна идти одна пустая строка. После того, как вы введёте значение Installed-Size, обязательно нажмите Enter, чтобы перевести курсор на новую строку, лишь потом сохраняйте файл!
Подытожим содержание этого этапа. По его итогам у вас на рабочем столе Ubuntu должна быть папка (желательно назвать её латиницей и покороче), в которой сложена вся начинка будущего DEB-пакета — полная структура файлов и папок вашего твика + служебная папка DEBIAN с заполненным файлом control внутри.
Теперь пора приступить к запаковке DEB. Но сначала нужно подготовить служебные утилиты. Распакуйте скачанный ранее файл со скриптами на рабочий стол — там появятся два новых файла: dpkg-scanpackages и dpkg-gettext.pl. Запустите Терминал (нажмите на верхнюю кнопку в левой панели Ubuntu, появится местный аналог Spotlight, где можно искать приложения по мере ввода их названия).
В Терминале нужно будет последовательно выполнить следующие команды, после каждой нажимая Enter:
[php]sudo cp ~/Рабочий\ стол/dpkg-scanpackages /usr/bin
sudo chmod 0777 /usr/bin/dpkg-scanpackages
sudo cp ~/Рабочий\ стол/dpkg-gettext.pl /etc/perl
sudo chmod 0777 /etc/perl/dpkg-gettext.pl[/php]
После первой команды потребуется вслепую ввести пароль от аккаунта и нажать Enter. Обратите внимание — если у вас не русская, а английская версия Ubuntu, в командах выше (и ниже) вместо Рабочий\ стол нужно будет ввести Desktop.
Теперь можно создать DEB-пакет. Предположим, что упомянутая выше папка с начинкой DEB-пакета на Рабочем столе называется package. Тогда в Терминале вам нужно ввести команды:
[php]cp ~/Рабочий\ стол/
dpkg -b package[/php]
В итоге папка package будет сжата в файл package.deb, который тоже окажется на Рабочем столе.
Теперь пора переходить к созданию структуры репозитория. Сам репозиторий — тоже папка, внутри которого обязательно должна быть папка с DEB-пакетами (обычно она называется deb_files), файл с описанием репозитория Release и служебный файл Packages со списком пакетов в нормальном и запакованном состоянии. Выглядит это примерно так:
Допустим, репозиторий будет лежать в папке apt. Создайте её на Рабочем столе, сразу же создайте и подпапку deb_files. В эту папку переместите созданный ранее DEB-пакет. Затем нужно будет сгенерировать файл со списком пакетов Packages. Для этого снова потребуется Терминал:
[php]cp ~/Рабочий\ стол/apt
dpkg-scanpackages -m . /dev/null >Packages[/php]
В папке apt будет создан текстовый файл Packages. Имеет смысл открыть его и проверить правильность пути к файлу DEB-пакета в строке Filename. Путь должен начинаться с ./deb_files/, а затем должно следовать верное имя DEB-пакета. Если есть ошибка, удалите файл Packages и перезапустите последнюю команду в Терминале (нажмите стрелку вверх на клавиатуре и Enter).
Если всё в порядке, в контекстном меню файла Packages выберите пункт «Создать архив», поменяйте формат архива на bz2. Архив будет создан прямо в папке репозитория, это нам и нужно.
Остался финальный шаг — создание файла Release. Это визитная карточка вашего репозитория. Как и файл control, Release — тоже текстовый файл без расширения, который тоже заполняется по жёсткому шаблону. Вот пример:
Правила заполнения полей в файле Release такие:
- Origin — полное, развёрнутое название вашего репозитория
- Label — краткое название репозитория. Постарайтесь быть максимально лаконичными, иначе название не влезет на экран Cydia
- Version — версия репозитория. Если этот индекс увеличивается, Cydia перекачивает файл Packages и отображает обновления пакетов
- Codename — оставьте значение optional
- Architectures — либо iphoneos-arm, либо darwin-arm, лучше первое
- Components — обязательно main
- Description — небольшое описание вашего репозитория
Сохраните текстовый файл с подобным содержанием, удалите у него расширение и переименуйте его в Release. Положите файл в папку репозитория.
На этом всё. Остаётся залить всю папку репозитория на хостинг и попробовать добавить ваш репозиторий в Cydia. Если вы владеете не только сайтом, но и доменом, проще всего залить папку в корень сайта. Так поступили и мы — доступ к папке apt осуществляется по адресу https://appstudio.org/apt. Это и есть URL нашего репозитория, который нужно вводить в Cydia.
P.S. Все перечисленные процедуры придётся проводить при каждом изменении ассортимента вашего репозитория, например, при обновлении имеющихся пакетов или при добавлении новых.