Содержание статьи
Ни для кого не секрет, что основным источником программ для взломанных iOS-устройств служат репозитории — особенным образом созданные сайты, откуда можно скачать исполняемые файлы. Нажав несколько кнопок в Cydia, можно получить доступ к тысячам платных и бесплатных твиков. Однако мало кто сможет точно сказать, как репозитории создавать, ведь и нужно это далеко не каждому. Кто-то хочет заработать деньги на рекламе, кто-то рассматривает репозиторий как добавочный элемент своего файлообменника, кто-то просто желает собрать самые полезные твики, дать им понятные описания и сделать доступными для пользователя. Как бы то ни было, репозиторий не очень сложен в создании.
Способ для ленивых
В Сети существуют тысячи репозиториев, и было бы очень странно, если бы не существовало ни одного сервиса для их автоматического создания и наполнения. Такие сервисы действительно есть, как в виде веб-сайтов, так и в виде отдельных приложений для iOS.
Ранее особенной популярностью пользовался портал MyRepoSpace. Несмотря на довольно медленную работу размещенных в нем репозиториев, он отличался понятным интерфейсом и бесплатностью. К сожалению, на данный момент сайт удален, а надпись It was fun вряд ли поможет пользователю в задуманном деле. Однако существует не менее функциональная альтернатива — YouRepo.
Здесь есть возможность сделать красочное описание, создать страницу оплаты твиков, загрузить пакеты. После незатейливой регистрации добавлять твики очень просто и удобно. Базовых возможностей здесь хватит практически всем: скриншоты, гибкие настройки параметров, аналитика и расширение при помощи встроенного магазина. Останавливает одно — слишком мало места для начала, слишком много придется докупать. Цены небольшие, но для эффективной работы с репозиторием понадобится совершать немало покупок.
Нужно ли использовать YouRepo для своего репозитория? Решение будет такое же, как и в случае с вопросом, использовать ли CMS для создания сайта или написать все вручную. Автоматизированность, многофункциональность — преимущества первого варианта, а количество потенциальных возможностей за меньшие деньги — второго. Если ты планируешь длительную поддержку репозитория, раскрутку и продвижение и в конечном счете получение дохода, стоит попробовать поднять репозиторий самостоятельно. Изначально он, конечно, очень неудобный, но намного более надежный, недорогой и расширяемый.
Репозиторий прямо в iOS
Создать репозиторий можно прямо на своем iOS-девайсе. Для этого разработан твик iRepo, стоящий всего 2 доллара (понятное дело, скачать его можно бесплатно из неофициальных источников). Управление пакетами очень простое, но здесь не найти многих возможностей полноценного сервиса. Для того чтобы пакеты появились в программе, необходимо добавить их в каталог /private/var/mobile/iRepo
. Можно добавить защиту репозитория паролем, описание для него и выполнять другие базовые операции.
Другие статьи в выпуске:
Xakep #205. Взлом Single Sign-On |
Не стоит использовать iRepo для серьезных проектов. Во-первых, программа нестабильна и часто «вылетает», лишь частично совместима с последними версиями iOS. Во-вторых, в ней мало возможностей, а доступа к коду нет. Поэтому создать репозиторий при помощи данной программы можно разве что интереса ради.
Правильный способ
Во многих статьях в Сети можно встретить мнение, что лучшая (а может, и единственная) система для создания репозиториев — Ubuntu или Debian (репозитории Cydia полностью базируются на технологиях этих дистрибутивов. — Прим. ред.). На самом деле Linux действительно во многом будет удобней, но в целом ничто не мешает попробовать и на любой другой платформе.
Структура репозитория проста и логична. Обязательны фактически лишь два файла: Release и Packages. В первом содержится информация о самом репозитории, а во втором — о пакетах, которые в него входят. Кроме того, в корне необходима заархивированная копия Packages, содержание которой должно полностью совпадать с первым файлом. В подавляющем большинстве случаев также создается каталог для пакетов, иногда в корне располагаются файлы с языковыми локализациями (хотя поддержка нескольких языков — редкость даже для известных репозиториев). Рассмотрим, каким образом следует заполнять файлы Packages и Release.
В файле Release данные, как правило, статичны. Они меняются только при смене базовых настроек репозитория. Структура файла следующая:
- Origin: полное название репозитория;
- Label: краткое название репозитория. При вставке длинного имени оно просто не влезет на экран Cydia;
- Version: версия репозитория;
- Architectures: правильным будет параметр iphoneos-arm;
- Components: должно быть установлено значение main;
- Description: развернутое описание репозитория.
Обрати внимание, что все поля должны быть заполнены правильно, иначе репозиторий не будет работать. Кроме того, желательно оставить пустую строку после последней строки. Не забывай и про установку правильной кодировки: кроме UTF-8, Cydia ничего не понимает. Файл не должен иметь расширения.
Packages, в отличие от Release, изменяется при добавлении каждого нового твика. Его функция описательная: показать, где находится пакет, дать возможность его отыскать, прикрепить к нему описание и данные. Packages может иметь немало опций, однако наиболее часто встречаются:
- Name: имя твика, которое будет отображаться в репозитории;
- Size: размер пакета в байтах. Необходимо указать точные данные;
- Maintainer: сборщик твика;
- Section: секция, в которой будет размещен твик. Наиболее часто используемые — Tweaks, Themes, Games, но можно указать любое значение. Необходимо для структурирования репозитория. Данное поле обязательно для заполнения, и при его отсутствии источник не установится;
- Author: автор пакета;
- Version: версия пакета;
- HomePage: домашняя страница с дополнительной информацией;
- Architecture: здесь единственно верным будет значение iphoneos-arm;
- Package: точное название пакета, которое будет использовано для того, чтобы найти его в папке с пакетами;
- Filename: каталог, где размещаются пакеты; / — корень репозитория, а /dir — произвольная папка;
- Description: полное описание твика;
- MD5Sum: уникальный код MD5, генерируемый индивидуально для каждого пакета. О его создании чуть ниже.
Параметры могут быть расставлены в произвольном порядке, однако должны быть заполнены для корректного отображения твика. Также можно заполнить другие поля: Depends (устанавливаемые зависимости), Pre-Depends (необходимые зависимости), Conflicts (конфликты с другими пакетами). При добавлении твиков с зависимостями желательно также загружать соответствующие утилиты в репозиторий. Файл не должен иметь расширения, кодировка должна соответствовать стандарту UTF-8.
Сумма MD5 должна обязательно присутствовать в файле. Для ее генерации есть приложения и для Mac, и для Windows. Например, для OS X оно называется MD5 и присутствует как в виде программы с графическим интерфейсом, так и в качестве терминальной утилиты. Для того чтобы вычислить значение, необходимо ввести команду md5
, а далее полный путь к файлу. Ответ можно вывести и в сокращенном формате, для этого используй параметр -r
.
Для вычисления суммы в среде Windows есть несколько терминальных утилит и WinMD5Free с графическим интерфейсом. Подробности об использовании программы можно узнать на официальном сайте разработчика.
После создания файлов Packages и Release необходимо заархивировать Packages. На Windows для создания gz-файла пригодится популярный 7-Zip. На Mac выручит терминал: необходимо ввести gzip -f -k
и далее указать путь к файлу Packages.
Таким образом, на данный момент имеется четыре файла: Packages, Packages.gz, Release и deb-пакет в папке, которая указана в Packages. Для того чтобы репозиторий стал доступен пользователям, его можно залить на хостинг, который поддерживает передачу данных по FTP и позволяет загрузить файлы в корень сайта.
Есть и другой способ — создать сервер на домашней машине. Для работы репозитория не нужны MySQL или PHP — достаточно будет установки веб-сервера Apache. На Mac Apache (2.4.16 в актуальной версии системы) входит в стандартный комплект поставки OS X. Для его активации необходимо выполнить команду sudo apachectl start
в терминале и ввести пароль администратора. После этого при вводе localhost в браузере появится надпись «It works!». Для того чтобы репозиторий был доступен по адресу «localhost/название папки репозитория», необходимо скопировать его в /Library/WebServer/Documents
.
Запуск Apache на Windows сложнее. Актуальный релиз не распространяется в виде установочного файла. Тем не менее некоторые версии в виде .msi можно найти в архивах сайта apache.org. При установке появится возможность задать имя сервера (стандартное — localhost). После установки по умолчанию пакет будет находиться в \Program Files
. В каталоге conf можно найти файл httpd.conf
, при помощи которого настраивается название сервера (параметр ServerName) и расположение папки с сайтами (параметр DocumentRoot). По умолчанию документы хранятся в папке htdocs установленной программы, где и следует расположить директорию репозитория.
Apache запускается автоматически после установки и при каждом включении компьютера, кроме того, в меню «Пуск» должен появиться ярлык для перезапуска сервера.
INFO
Во многих источниках есть указание, что поле Depiction должно присутствовать в файле
/DEBIAN/control
самого deb-пакета. Однако экспериментально было выяснено, что достаточно упоминания в Packages, отредактировать который значительно проще, чем сам пакет твика.
Поля Maintainer и Author в Packages-файле репозитория могут содержать ссылку в формате <ссылка>, например для указания почты разработчика.
Основной источник ошибок в репозитории — файл Packages. При его неправильном заполнении Cydia может не распознать репозиторий, отобразить его пустым или с пустыми категориями. Поэтому большую часть ошибок можно исправить, отредактировав данный файл и обновив источники в Cydia.
Нетрудно заметить, что после работы скрипта для автоматизации поле MD5Sum будет заполнено немного не так, как надо, — в нем будет указан также адрес файла, для которого вычислялась сумма. Однако это никак не повлияет на работоспособность репозитория.
Наполняем репозиторий
Разумеется, бессмысленно создавать репозиторий для одного твика, поэтому его необходимо постоянно наполнять. Для добавления нового пакета можно выполнить несколько простых шагов. Во-первых, удали файлы Packages и Packages.gz с сервера или отредактируй их, если имеется такая возможность.
Во-вторых, удали Packages.gz с компьютера и открой файл Packages. После пустой строки под последней строчкой описания первого твика заполни такую же форму для следующего. Сохрани файл, выполни команду gzip -f -k
в его отношении и залей оба файла на хостинг, а затем скачай туда сам deb-пакет. На этом процесс наполнения заканчивается, а чтобы увидеть внесенные изменения, необходимо обновить репозитории в Cydia.
Новички часто забывают о том, что необходимо обновлять файлы Packages из хостинга. Тем не менее именно этот файл — своего рода ключ ко всем твикам источника, и при отсутствии упоминания о файле в нем и в Cydia пакет также не будет виден.
INFO
В Linux есть команда
dpkg scanpackages -m
, которая формирует файл Packages автоматически, собирая данные о deb-пакетах на компьютере. Теоретически сходный функционал должна обеспечивать утилита Fink для Mac, для установки которой требуется XCode Command Line Tools и Java. Однако в качестве вывода данная команда создает лишь пустой файл Packages, соответственно, смысла в установке практически нет.Добавление дополнительных элементов
Большинство репозиториев имеют собственные иконки, и добавить свою не составит труда. Это должно быть изображение размером 59 х 59 или 72 х 72 пикселя в формате PNG и с названием CydiaIcon. Файл необходимо расположить в корне репозитория. Иконка появится в Cydia через некоторое время, возможно даже сразу после заливки.
Намного более трудоемкой процедурой станет добавление красочного описания к твикам, которое присутствует в большинстве крупных репозиториев. Здесь часто располагают скриншоты и дополнительные виджеты, например совместимость с конкретной версией прошивки. Сам блок расположен под разделом «Автор» и представляет собой не что иное, как HTML-страницу, называемую здесь Depiction.
Для добавления Depiction необходимо вписать в файл Packages строку Depiction: и указать ссылку на HTML-файл без расширения. После добавления Depiction строку с Description необходимо убрать. Особых рекомендаций по наполнению страницы нет, однако следует учесть, что в Cydia инструменты для масштабирования отсутствуют, а значит, ширину страницы необходимо подогнать под ширину дисплея. Также лучше не делать скриншоты длиной более 300 пикселей.
В остальном же работа с Depiction в Cydia такая же, как и с любой другой веб-страницей. Поддерживаются PHP, HTML, CSS, JavaScript, поэтому при наличии знаний в области веб-программирования сделать годное описание для пакета не составит труда. Таким же образом на страницу пакета добавляется реклама, которую можно встретить практически во всех репозиториях.
Многие разработчики задаются вопросом, как добавить в репозиторий платный твик. Однако на данный момент такую возможность имеют лишь крупнейшие репозитории. К тому же в них утилита наверняка будет более популярна, чем в собственном источнике, потому разработчикам, которые хотят получить награду за свой труд, лучше выложить созданный ими пакет в популярных BigBoss или ModMyi.
Возможности автоматизации
Регулярное наполнение Packages, добавление и удаление файлов грозят ошибками при работе с репозиторием, самые распространенные из которых — опечатки, незамененные архивированные копии файлов, отсутствие важных записей в Packages. Готовые решения по автоматизации процесса не найти в открытом доступе, хотя они могут предоставляться как часть сервисов по созданию источников.
Для того чтобы избежать существенного количества ошибок при добавлении, был написан небольшой скрипт для OS X, проводящий основную часть операций в автоматическом режиме. Ты найдешь его на странице GitHub журнала. Для работы скрипта необходимо установить программу MD5, а также терминальную утилиту cURL, если ее еще нет на твоем компьютере. Разумеется, понадобится также нативное приложение AppleScript Editor. Обрати внимание на формат ввода данных, который указан в default answer. Знаки / необходимо расставлять таким образом, как это указано в примере.
Скрипт совсем не идеален, при помощи его нет возможности обновить файл, к примеру. Однако при этом он выполняет свою основную функцию — добавление твиков в репозиторий.
Заключение
Стоит ли создавать репозиторий и поддерживать его в дальнейшем? Как и в ситуации с сайтами, создание окажется намного легче, чем раскрутка. Сейчас такие проекты выделяются количеством пакетов, в том числе и взломанных твиков из других популярных репозиториев, детальной информацией о твиках со скриншотами и поддержкой нескольких языков.