[sisyphus] Re: [POLICY] Sisyphus
info
=?iso-8859-1?q?5740_=CE=C1_mail=2Eru?=
Пн Янв 26 18:48:22 MSK 2004
26 Январь 2004 17:20, Michael Shigorin написал:
> On Mon, Jan 26, 2004 at 12:39:41PM +0300, info wrote:
> > > > Вывод: нужен дискретный фиксаж по времени (понятие
> > > > "версия" все-таки не зря выдумано:-)).
> > >
> > > Он есть -- одни сутки. Вот только каналы не резиновые на
> > > всем пути от rsync.altlinux.ru до каждого пакаджера.
> >
> > Сутки - мало!
>
> Ну это "первая степень". "Вторая" -- пресловутая неделя.
Не должно быть этой "первой степени"!!! Мало кто успеет
обновиться, собраться и оттестироваться всего лишь за сутки.
Упаковщий должен иметь _достаточный_ и вдобавок заранее
известный ему период времени, относительно которого он уверен:
за этот период окружение не изменится.
>
> > Третий день - тестирование собранного, и слив собранных
> > пакетов. Получаем minimum minimorum для кванта времени -
> > трое суток.
>
> На самом деле и между ними могут быть задержки. Но в общем
> -- неделя :)
Да, оптимум - неделя.
>
> > Прежде всего, необходимо ранжирование пакетов по категориям
> > важности.
>
> Кстати, по крайней мере какая-то информация по этой части для
> mdk installer есть ("важно/неважно/прикольно").
Субъективный взгляд, сильно зависящий от предметной области, где
используется машина. Для кого-то apache важен, мне вот -
совершенно нет. А уже не раз поминавшийся qcad для меня -
основной рабочий инструмент, тогда как очень и очень многим он
совершенно без нужды.
Так что это деление не работает. Нужно делать новое, по
совершенно другому принципу. А вот чтобы понять, какой это
принцип, и нужна блок-схема пакетов вместе с зависимостями.
>
> > Строго говоря, кому-то из ALTа надо не пожалеть времени и
> > нарисовать здоровую, на всю стенку, иерархическую
> > блок-схему (дерево) пакетов и их зависимостей. тогда уровни
> > важности сами будут видны из топологии. Кстати же, эта
> > схема вообще поможет проектировать дистрибутив.
>
> Вообще это уже делалось:
>
> http://www.altlinux.ru/pipermail/community/2002-January/04003
>6.html
... графическое отображение зависимостей в минимальной
системе, построенной на базе ALT Linux Sisyphus (от 5
января)....
Судя по аннотации - первый маленький шажочек в правильном
направлении.
Теперь бы продолжить - для полного сизифа, да еще и постоянно
(или хотя бы периодически) обновляемый.
Получается же классическое дерево, сиречь - граф. В корне, на
нулевом уровне - kernel, и дальше от него пошло ветвиться.
>
> Для удобства положил тот .ps сюда:
>
> http://lrn.ru/~mike/rpmdeps.ps.gz
Чего-то он у меня не открылся, точнее - пустой лист...
>
> См. тж. apt-cache(1) по поводу dotty. Оно без учета
> важности, и не факт, что _из_ нее надо исходить -- а не
> считать ее как сумму зависимостей от данного пакета в
> каком-то виде.
Не знаю, можно ли оценивать важность алгебраическим методом, как
сумму зависимостей (если правильно понял)... Важность скорее
вытекает из топологии пакетов.
>
> > Для ранжирования удобно использовать механизм групп в rpm.
> > Сейчас пакеты делятся по группам как-то странно, вроде бы с
> > точки зрения их предназначения (функциональности), а с
> > другой стороны - и вроде как нет... Никаких четких пракил,
> > в какую группу какой пакет относить, нет. Следствие:
> > механизм групп не сильно используется.
>
> Эээ... да, было бы неплохо сделать "пояснение человеческим
> языком" групп как rpm, так и меню. Вероятно, заодно с
> причесыванием этих групп и их участников.
Полностью согласен. Нынешнее разбиение, мягко скажем, несколько
удивительно. Почему, к примеру, существуют отдельные группы
"Офис" и "Издательство" - когда "издательские средства" есть
часть офиса? А почему TeXmacs - вообще в "Редакторах", а LYX
вместе с самим Tex - в "Издательство"? Ну и так далее, и тому
подобное.
Результат - понятие "группы" на практике использовать крайне
затруднительно. Непонятно, где что искать. Это понятие и не
используется de-facto.
>
> > К ранжированию надо прикрутить автооповещение. То есть,
> > если обновился пакет какой-то категории важности, то
> > упаковщики пакетов низших категорий должны получить письма
> > с извещением о необходимости пересобрать пакет в новом
> > окружении.
>
> Вообще говоря,
По-моему, это можно сделать элементарным скриптом, проверяющим
даты сборки пакетов... Ну, и в сочетанием с той самой схемой
ранжирования, о которой мы говорим.
Причем - важный момент - та схема, о которой я говорю, вовсе не
означает, что между пакетами разных уровней непременно должна
быть прямая зависимость. Тот же KDE будет, в общем случае,
работать на самых разных версиях того же Xfree. Но если
обновился XFree - (а тем более glibc) - то полезно пересобрать
KDE. Так сказать, во избежание....
Так что речь не о зависимости в программистском смысле слова, а
о зависимости, так сказать, в административном.
>
> > И здесь же - оповещение о планируемом изменении пакетов. То
> > есть, как только упаковщики того же glibc определяют, когда
> > они по графику наметили выложить новую версию, то они
> > должны оповестить всех остальных, чтобы остальные не делали
> > лишнюю работу.
>
> Да.
>
> > Далее, четко разделить: сизиф А и сизиф Б.
>
> Это как-то тяжко. Лучшее, что пришло в голову по этому
> поводу -- изложил не так давно в devel@ :
>
> http://altlinux.ru/pipermail/devel/2003-November/033007.html
Не сказал бы, что очень тяжело, но в чем-то с Вами согласен.
Смотрим целевые аудитории пользователей Сизифа:
1. Разработчики и упаковщики;
2. Продвинутые пользователи вроде меня, равно как и "пионэры",
которые сами пакетов не собирают, но которые по каким-то
причинам не хотят пользоваться стабильными дистрибутивами.
Отсюда политика:
"сизиф А" - это тот сизиф, который есть на сегодняшний день,
только обновляемый жестко раз в неделю (скажем, в ночь с
пятницы на субботу).
"сизиф Б" - это тоже практически тот же самый сизиф, что и
сегодня, а который заливаются пакеты по мере поступления
поступления, но к которому имеют доступ _для_скачивания_ только
упаковщики; причем для упаковщиков особо оговаривается, дабы
они старались собирать свои пакеты на "сизифе А", а новые
пакеты из "сизифа Б" брали только если уж край и без них
никуда.
Иными словами, надо функционально разделить обновление системы
пользователями (в т.ч. упаковщиками) и обновление самого
сизифа.
В военном деле эта штука называется "перекат". Опишу, как это
делается - вдруг кого-то мысль, по аналогии, посетит? Итак,
работают тройки. Один лежит и прикрывает остальных огнем.
Второй делает перебежку. Третий в это время переползает от
места падения. Закончив переползание, он открывает огонь.
Строго в этот момент второй падает и начинает переползание, а
первый прекращает огонь и начинает перебежку. И так по
кругу....
Не знаю, может и здесь стоит подумать о "тройках"... Но пока
говоримс о "двойках"
Технически - я бы сделал как две отдельные директории на
сервере, одна под названием, например, sisyphusA, вторая
sisуphusB.
Далее, в момент обновления:
{стоп доступу на оба сизифа}
mv sisyphusA -> куда-нибудь в архив.
mv sisyphusB -> sisyphusA
{старт доступу на сизиф А}
cp sisyphusA -> sisyphusB
{старт доступу на сизиф Б}
Доступ к сизифу А прервется буквально на доли секунды, сизиф Б
будет недоступен чуть дольше - ровно на время копирования. Если
это делать ночью в пятницу, когда значительная часть народа
следует заветам Тимура Шаова (имеется в виду - "не хотел я
пить, но пятница" :-)))), то никаких особо фатальных
последствий не предвидится.
А если еще явно указывать пользователям - "до обновления
осталось столько-то времени" - то они и сами решат, стоит
запускать обновление из сизифа А за 5 минут до обновления
самаого сизифа, или нет :-)))
>
> т.е. отдельная компонента Sisyphus, которая:
>
> - принимает в себя свежезалитые пакеты наиболее оперативно;
> - рекомендована к применению разработчиками;
> - дополнительно тестируется опытными пользователями.
Вот это и есть сизиф Б, с той только поправкой, что сборка новых
пакетов идет, _как_правило_, не на нем, а на сизифе А.
>
> При этом цена перебрасывания пакета в e.g. contrib или base
> -- переброс симлинка, а не перетягивание пакета заново.
>
> > Далее, на входе в репозитарий нужна автопроверка
> > зависимостей.
>
> Она и есть.
>
> > В ALTе должна стоять машина с ПОЛНЫМ установленным текущим
> > сизифом.
>
> Это невозможно по очевидным причинам (Conflicts:).
Вы имеете в виду конфликты между файлами разных пакетов - как,
например, lesstiff и openmotif? Ну, надо подумать... Десяток
машин ставить негоже, дороговато будет, а вот несколько
chrooted вариантов сизифа на одной мощной машине - почему бы и
нет?
>
> > Если нет - заворачиваются, а сборщик получает
> > соответствующее письмо.
>
> Эээ... а Вам QA Team Robot не пишет душевные письма, да? :-)
Нет. Я не упаковщик :-))) Но с пакетами из сизифа, у которых
неразрешенные зависимости - дело при установке имел-с... :-(((
>
> > То есть получается, что имеем: "выходной репозитарий" с
> > сизифом А, потом "входной репозитарий" с сизифом Б, который
> > недоступен для скачивания до истечения кванта стабильности,
> > и параллельно - тестовая машина, плавно обновляемая
> > синхронно с сизифом Б. Вот пока что пришло в голову...
>
> Судя по тому, что эта мысль в той или иной форме посетила вот
> уже вторую голову при обдумывании вопроса -- шансы на то, что
> правильный ответ где-то там, растут.
Все правильно.
Цикл жизни сизифа:
- обновление упаковщиком своей машины из сизифа;
- компиляция своих пакетов;
- обновление самого репозитория.
По сути, ведь это та же последовательность, что и выполнение
команд процессором. Только там: загрузка данных в регистры,
выполнение команды, запись результатов. Представьте себе, что
бы было, если бы в середине выполнения, скажем, команды
сложения могло бы изменяться содержимое регистров данных,
хранящих слагаемые...
Как проблема решается в процессорах, всем известно: тактовая
частота. Вот ровно об этом и идет речь применительно к сизифу.
Должна быть задана некая тактовая частота... И определено,
когда что можно делать, а когда и что - нельзя.
>
> 2 inger: так как насчет RPMS.incoming? Со скриптом для
> перекладывания через неделю, для начала?
>
> 2 mithraen: руки до этих самых скриптов не дошли?
Подробная информация о списке рассылки Sisyphus