[devel] пакеты копировать нельзя

Dmitriy M. Maslennikov =?iso-8859-1?q?maslennikovdm_=CE=C1_gmail=2Ecom?=
Пн Фев 16 23:52:55 MSK 2009


16 февраля 2009 г. 12:28 пользователь Alexey Tourbin <at на altlinux.ru> написал:
> ...
Такие рассуждения выглядят красиво. Но если оторваться от чистой
математики и вернуться к практике, то, на мой взгляд, все выглядит
несколько иначе.

Мне, как и большинству пользователей важен репозиторий в первую
очередь РАБОТАЮЩИЙ. То есть с работающими на практике пакетами.
Обеспечить это можно только полноценным тестированием пакетов ДО
помещения их в основной репозиторий. При этом полной гарантии дать,
конечно, нельзя, но в целом пакет, прошедший тестирование, гораздо
более надежен, чем тот, который не проверялся вообще. Все рассуждения
данные выше направлены не на это свойство, а на гарантию повторяемости
процесса сборки пакета. С точки зрения удобства ведения репозитория
это, конечно полезно, но для пользователя репозитория это совсем не
так важно. Так, для пользователя отлично пересобирающийся, но не
работающий новый пакет foo-0.1-alt1 гораздо хуже не способного
пересобраться, но РАБОТАЮЩЕГО пакета foo-0.1-alt1. Еще же интереснее
гарантировать и пересобираемость, и работоспособность пакетов.

Когда мы думали над похожей тематикой, мы решили пожертвовать
сериализацией сборки пакетов (сборка пакета A -> добавление пакета A в
репозитарий -> сборка пакета B), разрешив  прошедшим сборку пакетам
временно попадать в тестовый репозиторий. И только после этапа
тестирования пакеты попадают в основной репозиторий (если не порождают
unmet'ов и проходят прочие проверки). При этом таких тестовых
репозиториев можно создавать сколько угодно (для каждой задачи свой
отдельный репозиторий - box). В каждый можно собирать пакеты,
основываясь на текущем состоянии репозитория и состоянии самого box'а.
При этом принятие пакетов из box'а в репозитарий происходит по
завершению тестирования сериализованно (атомарно).

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

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

-- 
Dmitriy M. Maslennikov
rlz на etersoft.ru
rlz на altlinux.org
maslennikovdm на gmail.com
master на armory.ru


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