Вступление

Уважаемый читатель!

Данный документ создан для облегчения прохождения процедуры принятия человека в ряды членов ALT Linux Team.

PDF Версия

Вы также можете скачать PDF версию данного документа.

Структура документации

Перед тем, как приступить к изучению, ознакомьтесь с тем, как примеры, ссылки и сноски будут обозначены в документе.

  • В дальнейшем вывод команд будет продемонстрирован следующим образом:

    $ ssh gitery ls
    total 16
    drwxr-s---  5 4096 May 30 21:27 etc
    drwxr-sr-x 14 4096 Aug 13 23:53 packages
    drwxr-s--x  2 4096 Feb 13  2007 private
    drwxr-sr-x  8 4096 Aug 13 23:57 public
    $
  • Темы, представляющие интерес, или словарные термины упоминаются либо как ссылки на соответствующую документацию или веб-сайт выделены жирным шрифтом, либо курсивом. Первые упоминания некоторых терминов ссылаются на соответствующую документацию.

  • Названия утилит, команд и других элементов, обычно встречающихся в коде, написаны моноширинным шрифтом.

Примечание
Для сокращения команд, встречающихся в тексте, будет использоваться нотация:
  • - команды без административных привилегий будут начинаться с символа “$”

  • - команды с административными привилегиями будут начинаться с символа “#”

Примечание
По умолчанию sudo может быть отключено. Для получения административных привилегий используется команда su. Для включения sudo в стандартном режиме можно использовать команду:
# control sudowheel enabled

Вклад в руководство

Вы можете внести свой вклад в это руководство, отправив запрос на принятие изменений (Pull Request) в репозиторий.

Join

Если Вы считаете, что какого-то пакета в Сизифе не хватает, или какой-то пакет заслуживает большего внимания и готовы заняться им — значит, настало время присоединиться к команде ALT Linux Team.

Процедура Join - это процесс вступления в ALT Linux Team, результатом которого является возможность непосредственно участвовать в разработке репозитория Сизиф. После прохождения Join Вы станете мейнтейнером.

Кто такой мейнтейнер? У каждого пакета в репозитории Сизиф есть один или несколько мейнтейнеров — это те участники ALT Linux Team, которые собирают новые версии пакета, следят за ошибками, которые заводят пользователи в багтрекере и общаются с upstream-разработчиками программы.

Процедура принятия в Team

Для принятия человека в Team создаётся небольшая команда заинтересованных в этом тимовцев:

  1. Секретарь команды. В его обязанность входит отслеживать стадии принятия и выполнять административные действия.

  2. Ментор вступающего. Он помогает кандидату со вступлением, отвечает на его вопросы и принимает решение о готовности кандидата.

  3. Рецензент работы вступающего. Он проводит независимую оценку готовности вступающего по результатам его работы и подтверждает его готовность.

  4. Сам кандидат.

Этапы принятия в ALT Linux Team

Ниже приведены этапы принятия в сообщество со стороны секретаря команды:

Обработка запросов на приём в команду

  1. По созданию бага в разделе «Development», продукте «Team accounts», на компонент «join»:

    1. Убедиться, что кандидат имеет активного ментора.

    2. Проверить SSH- и GPG-ключ кандидата, nickname и адрес пересылки почты.

    3. Ожидать решения ментора о готовности кандидата.

  2. По положительному решению ментора о том, что кандидат готов начать вступление:

    1. Создать email alias для кандидата (детали создания выясняются у текущего секретаря).

    2. Зарегистрировать SSH-ключ кандидата в gitery.alt.

    3. Ожидать решения ментора о готовности кандидата.

  3. По следующему положительному решению ментора о том, что его подопечный готов собирать пакеты:

    1. Поместить очищенный GPG-ключ кандидата в пакет alt-gpgkeys.

    2. Отправить новую сборку пакета alt-gpgkeys в Сизиф.

    3. Установить новую сборку пакета alt-gpgkeys на сервер.

    4. Зарегистрировать SSH-ключ кандидата в gyle.alt (без добавления в группу майнтейнеров).

    5. Ожидать решения ментора о готовности кандидата.

  4. По следующему положительному решению ментора о том, что его подопечный готов отправлять пакеты в Сизиф:

    1. Призвать рецензента для независимой оценки готовности кандидата.

    2. Ожидать решения рецензента о готовности кандидата.

    3. В случае отрицательного решения рецензента, требующего дополнительной работы кандидата и ментора, возможен переход на окончание предыдущего этапа (сейчас это 3.5)

  5. По положительному решению рецензента о том, что кандидат действительно готов отправлять пакеты в Сизиф:

    1. Подписать кандидата на рассылку devel@.

    2. Добавить кандидата в группу майнтейнеров на gyle.alt.

    3. Закрыть баг, тем самым завершив процедуру приёма кандидата в команду.

Сбор информации

Для принятия в ALT Linux Team необходима следующая информация:

  1. Имя ментора — участника команды, имеющего желание помогать в процессе приёма в Team. Менторов можно искать в списках рассылки, канале Telegram, или узнать у Ваших знакомых членов сообщества ALT Linux Team, если таковые есть, готовы ли они стать Вашим ментором.

  2. Псевдоним участника (имя пользователя). Выбирается им самим. Имя должно начинаться с буквы, содержать только строчные латинские буквы и цифры, быть не короче трёх символов.

Примечание
Псевдоним — это фактичеcки Ваше второе имя в команде. Так Вас будут называть в глаза и за глаза, по нему на Вас будут ссылаться. Поэтому псевдоним лучше выбирать короткий, запоминающийся и не отягощённый мусором. Например, yoda — удобный псевдоним, а travellingwilburys1998 — неудобный. Список уже занятых имён можно посмотреть в пакете alt-gpgkeys.
  1. Адрес почты, на который будет производиться пересылка с адреса псевдоним@altlinux.org;

  2. SSH-ключ (ED25519 или RSA >= 4096bit). Принимающему нужна публичная часть ключа. Этот ключ будет использоваться для SSH-доступа на ресурсы Sisyphus (git.alt и другие);

  3. GPG-ключ (RSA >= 4096bit). В ключе должны быть имя в формате "<First name> <Last name>" и uid вида псевдоним@altlinux.org. Принимающему нужна публичная часть ключа. Этот ключ будет использоваться для подписи пакетов и для удостоверения личности в почте.

Если у Вас ещё нет SSH- или GPG-ключа, прочтите статью Работа с ключами разработчика.

Этап 1. Создание заявки

Когда Вы нашли своего куратора процедуры join - ментора, Вам необходимо зафиксировать начало вашей работы. На этом этапе вам понадобится BugZilla. В данном случае bugzilla выступает площадкой для процедуры вступления в ALT Linux Team. Здесь ведётся официальный диалог с участниками, Вы можете посмотреть прогресс других кандидатов, узнать, какие задачи они взяли. Введите в поиске join и увидите список, относящийся к этой тематике.

Для начала необходимо пройти регистрацию на BugZilla.

После того, как Вы прошли регистрацию и нашли ментора, можно начинать регистрировать заявку. Регистрация заявки происходит следующим образом: на главной странице сайта ALT Bugzilla выберите "Зарегистрировать ошибку" или "Новая ошибка". Будущие участники ALT Linux Team регистрируются в разделе Team Accounts: ALT Linux Team: присоединение. При наведении мыши будут видны подсказки к заполнению полей формы. Клик по любому из пунктов формы приведёт Вас на страницу Поля ошибок с описанием терминов. Выберите компонент Join. Если Вы посмотрите другие компоненты, то убедитесь, что они не так популярны. При выборе уровня важности задачи учитывайте, что мейнтейнеры просматривают ошибки в том числе по этому фильтру. Также будет видно, к какому разделу относится ваша задача. (Важность определяете Вы сами, исходя из своих возможностей и целеполагания. Скорее, это параметр для Вас.) Поставим здесь средний приоритет Р3. Платформа определяется автоматически. Здесь же Вы можете изменить значения, в том числе поставить all, и научиться собирать пакеты для любых платформ.

Отметим новое состояние нашей заявки.

Поля Исполнитель и Приёмка заполнятся автоматически. В пункте Подписчики укажем всех, кто заинтересован в решении этой задачи. В случае join - это ментор.

В стандартной форме bugzilla есть поле для заполнения адреса URL, с которым может быть связана ошибка. Так как мы регистрируем по сути наше участие в прохождении Join, отметьте страницу на вики Join

Поле Аннотация предназначено для краткого описания сути ошибки. Так как мы заводим эту ошибку в рамках вступления в ALT Linux Team, напишем join с указанием предполагаемой почты: join user@.

Пример комментария к открытой заявке на вступление в ALT Linux Team.

Псевдоним: sova
Почта: Valentin Sokolov <sova@altlinux.org>
Адрес пересылки почты: sokolovvaly.158@gmail.com
Имя ментора: Grigory Ustinov
Почта ментора: grenka@altlinux.org

Хочу научиться собирать пакеты.

На данном этапе необходимо прикрепить SSH и GPG ключи. О том, как их создать и прикрепить к заявке - читайте ниже.

Создание SSH и GPG ключей

SSH Key

Для того, чтобы создать SSH ключ, можно воспользоваться командой:

$ ssh keygen -t ed25519

На вопрос о файле сохранения ключа можно ничего не отвечать, а просто нажать Enter, чтобы принять путь файла ключа по умолчанию. Далее будет задан вопрос о пароле к ключу. Укажите придуманный пароль для защиты ключа.

В каталоге ~/.ssh появятся файлы:

  • id_ed25519 - секретный ключ

  • id_ed25519.pub - публичный ключ

Внимание
НИКОГДА И НИКОМУ НЕ ПЕРЕСЫЛАЙТЕ СЕКРЕТНЫЙ КЛЮЧ

GPG Key

Для того, чтобы создать GPG-ключ, можно воспользоваться командой:

$ gpg --gen-key

В процессе ответа на вопросы выберете тип ключа RSA и RSA, длина ключа должна быть не менее 4096 bit, поэтому впишем 4096. Срок действия ключа - без ограничения срока действия. Для идентификации Вашего ключа необходим ID пользователя. Программа создаст его из Вашего имени, комментария и адреса электронной почты в виде: ` (developer) ivan@altlinux.org`.

Теперь экспортируем публичную часть ключа для отправки, используя команду:

$ gpg --armor --export псевдоним@altlinux.org

Для копирования публичного ключа в файл Вы можете использовать следующую команду:

$ gpg --armor --export псевдоним@altlinux.org >>public.key

Экспортировать приватную часть ключа можно с помощью команды:

$ gpg --armor --export-secret-keys псевдоним@altlinux.org >>private.key
Внимание
Никогда и ни при каких условиях никому не сообщайте и не присылайте Ваши ПРИВАТНЫЕ ключи. Сохраните Ваши приватные и публичные ключи на отдельном носителе для лучшей сохранности.

Для более подробного изучения темы создания и редактирования ключей рекомендуется перейти по ссылке: Работа с ключами разработчика.

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

Поздравляем! Вы создали заявку на вступление в ALT Linux Team. Её закрытие будет означать либо успешное прохождение процедуры и получение доступов к работе с Сизифом и вступление в Team, либо отказ в нём.

При успешном выполнении всех вышеописанных пунктов, Вы будете переведены на этап. 1.3

Аннотация: [1.1] join sova@ → [1.3] join sova@.

После того, как ментор примет решение о Вашей готовности собирать пакеты, Вы будете переведены на этап 2.0.

Этап 2. Доступ к gitery.alt

Ваш ментор подтвердил Вашу готовность к началу сборки пакетов, Вас перевели на этап 2.0:

Аннотация: [1.3] join sova@ → [2.0] join sova@.

На данном этапе секретарь команды заведёт Вам почту, которую Вы указали на этапе формирования заявки, а так же зарегистрирует приложенный Вами SSH ключ на gitery.alt.

Что такое gitery.alt или "Гитовница"? Это часть сервера совместной разработки ALT Linux Team - в ней сконцентрированы инструменты для хранения git-репозиториев. Во время прохождения Join Вы будете загружать собранные пакеты на "гитовницу".

Настройка доступа

gitery.altlinux.org доступен по SSH по адресу gitery.altlinux.org:222 и gitery.altlinux.org:443

Для ssh доступа, надо отредактировать файл $HOME/.ssh/config

Пример настройки файла ~/.ssh/config:

   Host gitery
     HostName gitery.altlinux.org
     User alt_USERNAME # а не просто USERNAME!
     Port 222
     # Через прокси
     #ProxyCommand netcat -X connect -x proxy:3128 %h %p
     #Port 443
     # if stored separately
     #IdentityFile ~/.ssh/id_ed25519.alt
     # и если openssh-7.* или новее + ключ dsa, непременно
     #PubkeyAcceptedKeyTypes ssh-dss
     # иначе будет ошибка not in PubkeyAcceptedKeyTypes
 # Сборочница
   Host gyle
     HostName gyle.altlinux.org
     User alt_USERNAME # а не просто USERNAME!
     Port 222
     # Через прокси
     #ProxyCommand netcat -X connect -x proxy:3128 %h %p
     #Port 443

Для работы с gitery необходимо настроить свой git — параметры user.name, user.email, user.signingkey:

$ git config --global user.signingkey "<ID ключа GPG для подписи тэгов>"
$ git config --global user.email "<ваш email, как мантейнера>"
$ git config --global user.name "FirstName LastName"

Пример настройки git:

$ git config --global user.signingkey 0xA26F54C8
$ git config --global user.email dottedmag@altlinux.org
$ git config --global user.name "Mikhail Gusarov"

Чтобы узнать свой user.signingkey, выполните команду:

$ gpg --list-secret-keys

Искомое значение находится в секции sec вывода команды. Его следует прописать в переменную user.signingkey, предварительно добавив в начало символы 0x.

Работа с Gitery. Управление git-репозиториями

Список команд выдаётся при ssh-логине с командой help:

$ ssh gitery help
Available commands:
help
charset <path to git repository> [<charset>]
clone <path to git repository> [<path to directory>]
default-branch <path to git repository> [<branch>]
find-package <pattern>
init-db <path to directory>
ls [<path to directory>]
mv-db <path to source directory> <path to destination directory>
quota
repack <path to git repository> [<value>]
rm-db <path to git repository>

Просмотр содержимого:

С помощью команды ssh gitery ls можно просмотреть содержимое /people/$USERNAME:

$ ssh gitery ls
total 16
drwxr-x--- 5 4096 May 26 09:59 etc
drwxr-xr-x 4 4096 Jun 28 12:20 packages
drwxr-x--x 2 4096 May 26 09:59 private
drwxr-xr-x 2 4096 May 26 09:59 public

Команда ssh gitery ls [<path to directory>] позволяет просмотреть содержимое различных директорий на gitery:

$ ssh gitery ls /people/sova/packages
total 8
drwxr-xr-x 5 4096 Jun  9 14:39 python3-module-mingus.git
drwxr-xr-x 5 4096 Jun 28 13:13 samba.git

Создание нового репозитория:

Для создания нового репозитория используйте:

$ ssh gitery init-db test
girar-init-db:        /people/dottedmag/packages/test.git

Поскольку в созданном репозитории нет ни одного коммита, то при попытке его склонировать git clone выдаст отрицательный результат. Необходимо создать пустой локальный репозиторий, заполнить его содержимым и только после отправить на gitery.

$ mkdir test; cd test; git init
Initialized empty Git repository in /home/dottedmag/test/.git/
$ touch README
$ git add README
$ git commit -m 'first commit'
$ git remote add origin gitery:packages/test.git
$ git push origin master
...
$