"Сделай сам"-Howto для желающих обновлять программы в РОСЕ

Материал из Rosalab Wiki
Перейти к: навигация, поиск

Запросов от пользователей на обновление тех или иных программ в дистрибутивах ROSA Desktop Fresh мы получаем не много, а очень много. Приходится закрывать слишком разросшиеся темы на форуме, разбивая их на более мелкие.

К сожалению, выполнить абсолютно все пожелания разработчики РОСЫ не в состоянии. Однако помочь нам может каждый — вопреки распространенному мнению, для обновления какой-либо программы вовсе не обязательно быть программистом, разбираться в сборке пакетов и прочих премудростях. Во многих случаях вам хватит веб-браузера и желания сделать нечто полезное.

Итак, вы узнали о выходе новой версии вашей любимой программы и хотите обновить соответствующий пакет в РОСЕ. Для примера, возьмем набирающий популярность редактор Atom — у него недавно вышла версия 1.3.2, а в репозиториях РОСЫ на момент написания этой статьи — все еще версия 1.2.0. Давайте исправим это досадное недоразумение.

Первым делом идем и регистрируемся в нашей среде сборки ABF, если вы этого до сих пор не сделали — на http://abf.io кликаем в правом верхнем углу на «Регистрацию», вводим логин/пароль и успешно заходим в систему (регистрация абсолютно свободна, происходит мгновенно и не требует никаких подтверждений).

Теперь находим с помощью поиска интересующий нас пакет atom, находящийся в группе import (обязательно используйте эту группу, именно из нее собираются пакеты в официальные репозитории!).

.png

Переходите в этот проект и жмите кнопку «Клонировать» («Fork»).

.png

В появившемся окне выберите опцию «Клонировать в <ваш_логин>/atom» («Fork to <your_login>/atom»). Этим действием вы склонируете проект в ваш персональный репозиторий, где вы сможете с ним играться в свое удовольствие. Клонирование происходит достаточно быстро, и вы сразу будете перенаправлены на страницу склонированного проекта. Если вы видите сообщение о том, что репозиторий пуст — просто обновите страницу.

.png

Следующим пунктом необходимо изменить используемую ветку Git-репозитория на rosa2014.1. Если эта фраза вам ни о чем не говорит, не пугайтесь — достаточно в выпадающем списке в правом верхнем углу выбрать значение «rosa2014.1» (мы используем эту ветку, начиная с релиза ROSA Desktop Fresh R4 и точно продолжим использовать в R7).

.png

Теперь вам необходимо в списке файлов проекта найти файл с расширением «spec» («atom.spec» в нашем случае) и кликнуть на него и затем кликнуть на «Edit» для его редактирования.

.png

Все, что вам надо изменить в этом файле — это значение тэга Version, который обычно находится где-то вверху файла. Как мы видим, сейчас здесь указана версия 1.2.0, и мы ее заменим на 1.3.2. После этого в окне «Commit message» оставьте некоторое разумное описание произведенных изменений — например, «Updated to version 1.3.2». На этом все — теперь файл можно сохранить соответствующей кнопкой внизу экрана.

.png

Если кто-то подумал, что этим мы и обновили программу в дистибутиве — спешим огорчить, мы всего лишь подготовились к попытке собрать новую версию, и теперь пора эту попытку произвести. Для этого кликаем на кнопку «New Build», и в появившемся окне выполняем два действия:

  • на всякий случай, отключите ваш персональный репозиторий — вдруг там уже есть что-то, что помешает чистоте сборки
  • если вы собираете пакет для репозитория Contrib (или просто не уверены, в какой репозиторий вы его собираете), то обязательно отметьте в левой колонке позицию «contrib» в секции «rosa2014.1»
.png

После этого можно нажать на кнопку «Start Build» и ждать результата. Если сборка завершится с ошибкой — что ж, «нахаляву» обновить пакет не получилось, надо либо разбираться с ошибками либо бежать за помощью к более осведомленным людям. Если же сборка завершилась успешно, то на страничке сборки вы сможет получить rpm-пакеты с новой версией программы, которые вы можете скачать, установить и попробовать в деле.

Если новая программ работает как положено, то надо поделиться своими достижениями с остальными членами сообщества (ведь вы помните, что до сих пор мы все действия производили в вашем персональном репозитории?), послав запрос на обновление в основной проект, находящийся в группе import. Делается это посредством нажатием на кнопку «Pull Request» на страничке вашего проекта.

.png

В появившемся окне убедитесь, что для исходного и целевого проектов выбрана ветка rosa2014.1, при необходимости нажмите кнопку «Update commits», оставьте некоторое вразумительное сообщение в поле Description и отправьте запрос, нажав на кнопку «Send Pull Request».

.png

Разработчики получат уведомление о предлагаемых вами изменениях, рассмотрят их, внесут в основной проект в группе import и соберут новую версию пакета в официальные репозитории.

Ложка дегтя

В описанном выше подходе к обновлению программ есть два нюанса, для осознания которых необходимо небольшое понимание того, что происходит при попытке собрать новую версию программы.

Когда ABF начинает сборку пакета, он в качестве одного из предварительных шагов извлекает все файлы, необходимые для сборки — например, архивы с исходным кодом. Все такие файлы указаны в тэгах Source spec-файла проекта. В этих тэгах можно указывать ссылки (URL) на внешние ресурсы, и если ABF не сможет найти нужные файлы в Git-репозитории либо в своем хранилище бинарных файлов, то он попробует скачать файл по ссылке.

Как следствие, изложенный выше подход сработает только для проектов, у которых правильно заполнены тэги Source. Если вы посмотрите в файл atom.spec из нашего примера, то увидите там такую строку:

Source0:        https://github.com/atom/atom/archive/v%{version}.zip

Здесь приведена ссылка на архив с исходным кодом на github, причем вместо фиксированной версии указан макрос version, который автоматически разворачивается в значение тэга Version. Именно поэтому для сборки новой версии вам достаточно обновить значение этого тэга — дальше система сборки сама отправится скачивать архив с новым исходным кодом. И именно поэтому мы стараемся поддерживать значения тэгов Source в актуальном состоянии.

Второй нюанс заключается в том, что скачивать исходный код из интернета при каждой сборке — идея не из лучших, и вообще-то мы ее не приветствуем. Мало ли что может случиться — ссылка перестанет работать или злоумышленник взломает сайт автора программы и подложит туда свои зловредные файлы. Поэтому официально практика скачивания исходного кода из интернета в РОСЕ запрещена, и по крайней мере в основном репозитории (main) мы за этим строго следим. Поэтому при принятии вашего запроса на изменение разработчик РОСЫ скорее всего сам скачает архив с исходным кодом и поместит его в файловое хранилище ABF. Если вы хотите избавить нас и от этой задачи, то, пожалуйста, скачайте нужные файлы самостоятельно и залейте их на http:///file-store.rosalinux.ru. После загрузки вы увидите страничку с именем загруженных файлов и их хэш-суммами:

.png

Имя каждого файла и его хэш-сумму, разделенные двоеточием, надо добавить в файл .abf.yml внутри проекта на ABF:

v1.3.2.zip: a23ab212c70ff02a03d1b7afb036593e36dd891a

Какие именно файлы нужно загрузить для каждого конкретного проекта — определяется его тэгами Source — все бинарные файлы, указанные в этих тэгах, нужно загружать на File Store.

[ Хронологический вид ]Комментарии

Подскажите, можно ли удалить ненужный проект из списка проектов?

Нашёл по аналогии с GitHub :) Открыть проект -> Настройки -> Кнопка "Удалить" (внизу страницы)

Войдите, чтобы комментировать.