- PVSM.RU - https://www.pvsm.ru -

Помочь GNU/Linux — это просто!

Эта статья рассказывает о том, как я, внезапно для себя, перешел с уровня простого пользователя GNU/Linux на уровень контрибьютора в мир open source. Надеюсь что она сможет послужить еще кому-примером для собственного роста.

Начало

Все началось с того, что я, как всегда, перешел на новый релиз Ubuntu, на этот раз на 13.04. У меня оказалась не самая удачная материнка для линуксоида, так как в дистрибутивах из коробки редко есть дрова для ее сетевой карты (RLT8168E [1]). Но ведь это не большая беда, верно? Раздобыв сопутствующие для компилирования пакеты, скачал с офф сайта последние дрова на Linux [2]. Я уже делал так с Ubuntu 12.10 и ничто не предвещало подвоха.

Подвох

Внезапно эти «дрова» не компилируются [3]. Немного повтыкая в текст ошибок [3], я пошел просить совета на linux@conference.jabber.ru. Там мне рассказали, что брать дрова с сайта — не всегда хорошая идея и что для моей сетевой карты в репозитории есть пакет [4]. Приятный сюрприз. И действительно, стоило начать с поиска пакета с дровами в репозитории. Но, как оказалось, в нем код того же модуля и при компиляции он точно так же падает.

Поиск решения

Проблема в пакете из репозитория Ubuntu — это уже более серьезная ситуация, и я пошел знакомится с Ubuntu MOTU [5] (Masters of the Universe [6]). На их вики можно найти завлекательные инструкции о том, как помогать содержать пакеты в актуальном состоянии и вообще помогать проекту Ubuntu, что сразу меня заинтересовало. Присоединившись к IRC каналу #ubuntu-motu на freenode.net, начал спрашивать, как я могу помочь починке этого пакета из репозитория. Там мне объяснили, что лучшим вариантом будет решить проблему на этапе до Ubuntu, то есть в репозитории debian, откуда они и берут большинство deb пакетов.

Debian

Не зная, к кому и как обратиться, я решил написать сразу сопровождающему (maintainer) этого пакета (как я узнал потом, так советуют не делать). У каждого deb пакета есть поле maintainer (посмотреть можно, например, при помощи less file.deb), откуда я и взял контактный e-mail. Написал, что, мол, установка пакета падает с такими-то ошибками, что версия пакета такая-то и версия моей Ubuntu такая-то и что, как владелец этого оборудования, хотел бы помочь с фиксом. Не прошло и дня, как он ответил. Написал, что, да, проблема есть, и нагуглил ее на launchpad [7], и о том, как на самом деле стоит сообщать в debian о найденных багах [8]. Предполагает, что дело в исчезновении некоторых define в исходном коде новых ядер. Попросил, чтобы я нашел commit, который убирает эти define, или любую документацию по этому случаю. Внезапная просьба, но я нашел этот коммит [9].

Фиксаем

Сопровождающий пакета переслал мне ориентировочный патч, чтобы я опробовал его на своем железе. Чуть его подправив, отправил обратно сообщение об успехе! Таким образом был составлен патч [10] для модуля сетевой карты, в котором фигурирует мое имя как тестера патча. Для меня это был большой повод для гордости и для продолжения начатой работы :)
Далее я протестил у себя получившийся deb пакет и maintainer отправил его в репозиторий sid [11], на чем история этого пакета в debian пока заканчивается.

Назад в MOTU

Работоспособность для debian — это здорово, но я — пользователь Ubuntu, и этот пакет мне нужен именно там. Пошел обратно к MOTU с надеждой, что сейчас пакет попадет в их репозиторий. Но такая поспешность была слишком оптимистичной :) Оказывается, существует целый протоколированный процесс под названием SRU [12] о попадании пакета в текущий release и в TLS. Документ казался огромным и непрозрачным для меня, и я начал искать ответственных за SRU людей. Нашел их на канале #ubuntu-release. Они оказались весьма приятными людьми и, после недолгого разговора, решили принять пакет в release, так как он берется непосредственно из sid, хорошо документирован и переводит состояние пакета из «не собирается совсем» в «it works for me». Таким образом, к моменту написания статьи все пользователи сетевой карты RLT8168 и ядра любой актуальной версии смогут установить себе дрова прямо из репозитория.
О существовании проблемы и патча для нее я несколько раз сообщил разработчикам модуля в RealTek, но, увы, никакой реакции от них не последовало.

Что дальше?

Почитав уголок разработчика debian [13], я увидел отличную документацию, множество [14] осиротевших пакетов и пакетов, требующих оформление в deb. Учитывая, что debian сообщество «находится в постоянном поиске новых разработчиков, обладающих некоторыми техническими знаниями, заинтересованных в свободном программном обеспечении и имеющих некоторое свободное время», я начал изучать создание deb пакетов. И мне кажется, это отличная возможность сделать мир Linux чуточку лучше ;)

Зачем статья?

Я надеюсь, что статья поможет увидеть, что помочь любимому дистрибутиву реально даже будучи не супер-пупер программистом. Что сообществу нужна новая кровь и Вы на этом можете получить ценный опыт ;)

P.S.

Если на хабре найдется человек, который сможет стать моим наставником (mentor) и в перспективе адвокатом в становлении debian maintainer, я буду очень рад.

Автор: Sicness

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/35192

Ссылки в тексте:

[1] RLT8168E: http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&ProdID=287

[2] офф сайта последние дрова на Linux: http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false

[3] не компилируются: http://pastebin.com/q41tNFfc

[4] пакет: http://packages.ubuntu.com/raring/r8168-dkms

[5] Ubuntu MOTU: https://wiki.ubuntu.com/MOTU

[6] Universe: http://help.ubuntu.ru/wiki/%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9

[7] launchpad: https://bugs.launchpad.net/ubuntu/+source/r8168/+bug/1108068

[8] как на самом деле стоит сообщать в debian о найденных багах: http://www.debian.org/Bugs/Reporting

[9] коммит: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=63a29f744fe1c19742039ce7526663a98f172f7e

[10] патч: http://anonscm.debian.org/gitweb/?p=collab-maint/r8168.git;a=blob_plain;f=debian/patches/kernel-3.8.patch;h=b4cca8a4564eaa8c161f18266252458f47c84306;hb=5be56aa51bcb36e5b988cabb89ca1fe85807aef6

[11] sid: http://www.debian.org/releases/sid/

[12] SRU: https://wiki.ubuntu.com/StableReleaseUpdates

[13] уголок разработчика debian: http://www.debian.org/devel/

[14] множество: http://www.debian.org/devel/wnpp/

[15] Источник: http://habrahabr.ru/post/180181/