# -*- mode: Text; tab-width: 8; fill-column: 70; -*- Обоснование =========== В сизифе внедрена система контроля прав доступа для поступающих в репозиторий пакетов. Только сопровождающий мантейнер или его группа могут публиковать новую или измененную версию пакета. Это позволяет мантейнерам сопровождать свои пакеты не мешая друг другу. Размещение ========== Текстовая база данных для управления правами представлена в текстовом виде и расположена в файлах: Sisyphus/files/list/list.nmu - список имён пакетов направленных на NMU; Sisyphus/files/list/list.groups - список групп мантейнеров; Sisyphus/files/list/list.src.classic - список отражает текущее состояние прав доступа. Формат ====== Все поля в этих файлах разделены табуляциями; списки элементов - одиночным пробелом. Формат файла list.nmu: := имя RPM-пакета; := мантейнер, которому дано разрешение сделать NMU; := время, когда было дано это разрешение. Например: firefox lakostis 1151066653 Формат файла list.groups: := имя группы мантейнеров (всегда начинается с '@'); := имя мантейнера, входящего в группу. Например: @kernel vsu lakostis @python ns cray Символ '@' был использован потому, что имена мантейнеров создаются на основе их e-mail адресов и не могут содержать этот символ. Вложенность групп недопустима, хотя формат файла это допускает. Формат файла list.src.classic: := имя RPM-пакета; := имя мантейнера, сопровождающего пакет; := имя группы мантейнеров (всегда начинается с '@'). Например: alt-gpgkeys ldv inger alterator inger Интерфейс управления ==================== Существует механизм для управления ACL'ми. Для каждого мантейнера создаётся отдельный файл (записную книжку), в котором он может оставлять команды для робота. Этот робот периодически(раз в 1 час) читает записки и вносит изменения в базу или даёт команды для других роботов. После обработки выполненные и удаленные команды игнорируются. "Записные книжки" для мантейниров находятся: incoming:Sisyphus/notes/ basalt:/raid/OUT/Sisyphus/notes/ Вносить изменения в базу могут только лидеры мантейнеров, люди которые координируют остальных мантейнеров. Лидеры являются ответственными лицами в BTS. Формат команд ============= Формат команд с "записках" следующий: где: := имя пакета или группы (имя группы должно начинаться с '@') := add|rem|nmu|leader|replace := дополнительные аргументы к команде. Значение этих команд следующее: add - добавить пользователя/группу к мантейнерам, сопровождающим пакет. Например, чтобы добавить lakostis к мантейнерам firefox: firefox add lakostis rem - удалить пользователя/группу из списка. Например, чтобы удалить lakostis из мантейнеров firefox: firefox rem lakostis ВНИМАНИЕ: если все пользователи будут удалены, то пакет будет закреплён за пользователем '@nobody'. Это значит что пакетом никто не занимается. Первый кто обновляет такой пакет автоматически становится его мантейнером. leader - сменить лидера в списке мантейнеров. При этом рекурсивный обход групп не производится. Например, что бы сделать lakostis лидером группы мантейнеров firefox: firefox leader lakostis ВНИМАНИЕ: если этого мантейнера нет среди мантейнеров, то робот вернёт ошибку. В этом случае следует сначала добавить мантейнера: firefox add lakostis firefox leader lakostis ВНИМАНИЕ: после смены лидера, старый лидер лишается всех привилегий. Таким образов в последовательности команд: firefox add lakostis firefox leader lakostis firefox rem legion будут выполнены только add и leader. replace - заменить одно значение в списке мантейнеров на другое. Например, чтобы заменить lakostis на legion: firefox replace lakostis legion nmu - разрешить _пользователю_ (или пользователям) сделать NMU пакету. Например, чтобы разрешить lakostis и inger сделать NMU firefox: firefox nmu lakostis inger Только для пакетов доступна команда: align - собрать _существующий_ в репозитории пакет под определённые архитектуры. В качестве аргументов её передаётся список архитектор. Это полезно когда произошла рассинхронизация пакета между разными архитектурами. ВНИМАНИЕ: эта операция выполняется в фоновом режиме, когда все сборочные сервера простаивают. Поэтому результат от этой команды будет получен не быстро. Например, чтобы пересобрать firefox для i586 и x86_64: firefox align i586 x86_64 Для привилегированного пользователя также доступны команды: create - создать новую запись о пакете/группе. delete - удалить запись о пакете/группе. Существует ряд сокращений для команд: #all - эквивалентно перечислению всего списка мантейнеров пакета (рекурсивный поиск по группам не производится). #nobody - эквивалентно мантейнеру @nobody. Это сокращение только для команды `add'. -- Author: Alexey Gladkov Date: 23/06/06