⌨ Labor omnia vincit ☮

FIXING HOWTO: make openSUSE better

Posted in SuSE [ru] by anaumov on 06.10.2010

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

К примеру, пользователь столкнулся с проблемой, связанной со загрузочным скриптом, который по ошибке перезаписывался после каждой перезагрузки компьютера. Пользователь разобрался с проблемой и смог ее пофиксить. Он проделал несколько несложных шагов, которые в последствии помогли всем остальным пользователям openSUSE.

Итак, что же он сделал?

Во-первых надо найти пакет, который мы будем фиксить.

> rpm -qf /etc/init.d/boot.clock
aaa_base-11.1-10007.5

(Да, на этой машинке у меня все еще 11.1)

После того как мы знаем название пакета, копируем себе его исходные коды. Для этого Novell предоставляет нам просто сказочную по возможностям платформу openSUSE buildservice, а так же консольный клиент для нее: osc_11.3 (osc_11.2, osc_11.1).

> osc branch openSUSE:Factory aaa_base

Так мы добавим его исходники в свой домашний проект. А вот так мы скопируем эти исходники к себе на компьютер:

> osc co home:your_name:branches:Base:System/aaa_base

Имея свою копию исходных кодов, мы можем поиграться с исходниками (дурачиться с ними как вздумается :)) и с легкостью протестировать свой патч, а так же добавить его в .spec-файл. Надо сказать, что добавление патча в .spec-файл, это наиболее предпочтительный метод для разработчиков. Так им намного легче отследить изменения, которые мы сделали. Для создания патча, как обычно используйте diff/patch или quilt. Кстати, информацию по OSC можно найти тут.

> cd home\:your_name\:branches\:Base\:System/aaa_base
> tar -xf aaa_base.tar.bz2
> cp -r aaa_base aaa_base2
> vi aaa_base/etc/init.d/boot.clock
> diff -uNr aaa_base2 aaa_base > clock_time.patch

Патч готов. Теперь добавляем его в .spec-файл:

Source: aaa_base.tar.bz2
Patch0: clock_time.patch
...
%prep
%setup -n aaa_base
%patch0 -p1

На всякий случай, чтобы лишний раз удостоверится, что с патч фиксит поблему, пересобираем пакет:

> osc build --no-verify

Если посте тестирования, мы не можем воспроизвести баг, значит цель достигнута, и мы все сделали как надо🙂

Что теперь? Теперь надо залить только что испеченный пакет к себе в домашний проект и отрпавить запрос о его добавлении (патча) в factory проекта openSUSE.

> osc commit -m "Added fix from bnc#570245."
> osc vc
> osc submitreq -m 'Added fix from bnc#570245'
created request id 1234567

Реквэст (запрос) создан. Разработчики будут оповещенны об этом и рассмотрят наш патч. Его состояние можно посмотреть так:

> osc request show 1234567

Если патч-таки будет добавлен, то… добро пожаловать в ряды разработчиков openSUSE. Мы не обязанны, но проект oS ожидает в таком случае, что мы будем майнтейнить (а может даже и разрабатывать дальше) этот пакет. Достаточно подробно процесс добавления нового пакета в factory описанно тут.

3 Responses

Subscribe to comments with RSS.

  1. Lazy_Kent said, on 06.10.2010 at 15:58

    Патч желательно назвать aaa_base-11.1-clock_time.patch.

    Порядок работы с osc немного не такой.

    Добавляем патч в список файлов:
    osc add aaa_base-11.1-clock_time.patch

    Пишем changelog пакета:
    osc vc

    В открывшемся редакторе:
    Added patch aaa_base-11.1-clock_time.patch (bnc#570245).

    Отправляем собираться в OBS:
    osc commit -m “fixed bnc#570245”

    Если нормально собралось, и работает, делаем реквест:
    osc submitrequest -m “fixed bnc#570245”

    • Alex said, on 06.10.2010 at 16:07

      Патч не обязательно так называть. Мы ведь работаем с factory-версией.

      Если этот баг только в 11.1, то можно добавить в spec что-то типа:
      %if %suse_version = 1110
      %patch0
      %endif

      А про команду добавления “add” я действительно забыл. Так же про команду добавления в репы текущих изменений – “ci”.
      🙂

  2. alexqwesa said, on 09.10.2010 at 19:33

    Еще было бы неплохо добавить стандартный комментарий к патчу
    http://ru.opensuse.org/Сборка_пакетов/Патчи


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: