[devel] поддержка пакетов в git

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вт Сен 30 19:50:01 MSD 2008


On Tue, Sep 30, 2008 at 05:55:11PM +0400, Ivan A. Melnikov wrote:
> > У меня теория и модель несколько более размыты.  Рассмотрим постулат
> > теории B(S,C)->P, который описывает некий базовый способ преобразования
> > символов.  Интерпретация состоит в том, что функция B осуществляет
> > сборку пакета S в среде C, а на выходе даёт собранные пакеты P.

> > Короче, почти все соображения о том, чтобы "варить" пакеты и вообще
> > о "стабилизации" и "перекладывании" являются неправильными, потому
> > что они пытаются игнорировать базовый принцип действительности
> > (преобразования исходников в собранные пакеты, с фиксацией параметров
> > преобразования).
> 
> Попробую возразить,  а то такая дискуссия заглохла...
> 
> Пакеты собираются для того, чтобы ими можно было пользоваться. К сожалению, 
> достаточно сложно формализовать набор условий, при выполнении которых пакет 
> может считаться полезным с этой точки зрения. Наиболее достоверным 
> свидетельством того, что пакетом можно пользоваться, на данный момент, на мой 
> взгляд, приходится считать тот факт, что им кто-то пользуется.
> 
> С этой точки зрения пакет, пролежавший месяц в Сизифе, в среднем лучше, чем 
> пакет, только что собраный туда, несмотря на то, что последний собран в более 
> актуальной среде.
> 
> Безусловно, такая точка зрения игнорирует Базовый принцип действительности, 
> однако не противоречит ему. Более того, становится ясно, что для формирования 
> бранчей перекладывание предпочтительнее пересборки. 

Был по крайней мере один серьёзный прокол с перекладыванием пакетов
(где-то год назад): пакет amarok при перекладывании из Сизифа в 4.0
стал вываливаться с undefined символами.  И этот случай мог бы стать
далеко не едиственным, потому что Си+плюс ABI -- вещь особенно хрупакая.
Для просто Си ABI отслеживать несколько легче, но это всё ещё требует
ручной работы, а надёжной гарантии на уровне зависимостям не даёт.

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

Собранный пакет P неявно ссылается на ту среду C (чрут), в которой он
был собран.  Принцип обратной совместимости можно формализовать через
частичное упорядочение: в новой среде C1>C пакет P будет работать в силу
обратной совместимости (что фактически и происходит при поступлении
новых пакетов в сизиф; мы же не делаем полную замещающую пересборку всех
пакетов, у которых обновилась сборочная среда).  А перекладывание в
бранчи означает прямо противоположную ситуацию: в более старой среде
C0<C никакой обратной совместимости быть не может (само понятие обратной
совместимости здесь неприменимо).

Короче, с точки зрения модели мы можем надяться на обратную
совместимость (что позволяет не делать полной замещающей пересборки
пакетов), но не можем надеяться на "прямую" совместимость, которая
позволяла бы перекладывать пакеты в более старую среду.

Требование можно расслабить для noarch пакетов, потому что для них
невозможны проколы на уровне ABI вроде случая с amarok.  Правда, можно
придумать нежелательные ситуации и для noarch пакетов (напр. lzma сжатие,
и вообще какие-либо предварительные требования к среде).

> Мне показалось, что Вы придаете очень большое значение тому, чтобы пакет 
> использовался в именно той среде, в которой он был собран. Я хотел бы 
> спросить, почему Вы так считаете, а также каким образом внедрение описанного 
> Вами в [ftp://ftp.altlinux.org/pub/people/at/protva-2008.pdf] метарепозитария 
> может изменить текущую ситуацию.

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

Я говорю о базовом принципе формирования целостного репозитария.
Нужно учитывать, какой пакет после какого собрался, и как это повлияло
на всё остальное.  Тогда мы имеем "историю коммитов" в репозитарии
(вполне по аналогии с git) и можем отслеживать взаимное влияние между
пакетами на очень тонком уровне.  Сейчас репозитарий формируется лишь
с довольно слабыми проверками целостности, а о взаимном влиянии между
пакетами мы узнаем при еженедельной пересборке пакетов.  Так что если
пакет перестал собираться, а в его сборочной среде изменилось более
одного пакета, тогда возникает двусмысленность: какой из обновившихся
пакетов сломал сборку?  А при правильном подходе разлом по сборке будет
автоматически отслеживаться с минимальной возможной грануляностью (то
есть на уровне пакета, если только не была затребована транзакция пачки
пакетов).

Идея метарепозитария (и соответствия его настоящему репозитарию)
несколько сурова, но она правдива, и она даёт гарантию и полную
настоящую картину развития репозитария.  По-видимому, эта идея должна
относиться только к базовому "репозитарию"/"бранчу" (напр.  как сейчас
4.0).  На основе базового репозитария можно сделать другие "пост-фактум
репозитарии" (как school-4.0), где метарепозитарий не играет роли, а
пакеты туда перекладывает вручную мистер Икс.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20080930/cb77e3da/attachment-0002.bin>


Подробная информация о списке рассылки Devel