From: Alexey Tourbin <at@altlinux.ru> To: devel@lists.altlinux.org Subject: [devel] пакеты копировать нельзя Date: Mon, 16 Feb 2009 12:28:55 +0300 Message-ID: <20090216092855.GK31985@altlinux.org> (raw) [-- Attachment #1: Type: text/plain, Size: 2767 bytes --] Нельзя копировать собранные пакеты из одного репозитария в другой (напр. между sisyphus и 5.0). Сборку пакета можно (и нужно) рассматривать как процесс, который реализует функцию B(S,C)->P где B - процедура сборки (реализуется хешером), S - src.rpm пакет с исходным кодом, С - содержимое сборочной среды. Это означает, что есть два основных фактора, которые определяют результат сборки пакетов: исходный код и среда, в которой был собран пакет. Распишем подробнее C. Пусть U - полный набор пакетов в репозитарии (универсум пакетов). Тогда среда C для сборки пакета S - это C = C(S,U) = C0(U) + C1(S,U) где C0 - процедура инициализации базового сборочного чрута (и соответствующий список пакетов в базовом сборочном чруте), C1 - процедура установки в базовый сборочный чрут дополнительных зависимостей BuildRequires пакета S (и соответствующий список пакетов, который является замыканием зависимостей BuildRequires пакета S). Если один и тот же пакет с исходным кодом S был собран в разных средах Ca и Cb, то необходимо считать, что результат сборки отличается: B(S,Ca)->Pa B(S,Cb)->Pb Ca!=Cb => Pa!=Pb Принцип "B(S,C)->P" ложится в основу модели данных репозитария с условным названием "метерепозитарий". Метарепозитарий должен точно описывать историю развития репозитария и изменения всех его характеристик. История метарепозитария описывается в терминах "коммитов". Коммит описывает прохождение одного нового пакета в репозитарий, используя набор данных (S,C0,C1,P). (Если в задание добавлено несколько пакетов на сборку, а не один пакет, то будет несколько таких наборов данных; коммит соответствует транзакции, а задания проводятся транзакционно). То есть история изменения репозитария описывается в терминах коммитов, которые фиксируют характеристики исходного пакета для сборки, характеристики базовой сборочной среды C0 и дополнительных пакетов C1 из BuildReuires, и характеристики собранных пакетов. Целостная история репозитария -- это когда каждый вновь входящий пакет собирается на свежем, текущем состоянии репозитария. Тогда собранные пакеты добавляются/обновляются/замещаются в репозитарии: Ub = Ua + P. Если данный пакет был собран на универсуме Ua, то следующий пакет уже будет собран на другом универсуме - Ub. Короче, целостная история репозитария возможна только тогда, когда исходные пакеты собираются на том репозитарии, в который будут помещены собранные пакеты. Копирование пакетов из одного репозитария в другой грубо нарушает этот принцип, а история развития репозитария теряет смысл. Вообще, не существует пакетов в отрыве от той среды, в которой они были собраны, и, значит, в отрыве от истории репозитария. Нельзя войти в одну реку дважды. [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
next reply other threads:[~2009-02-16 9:28 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2009-02-16 9:28 Alexey Tourbin [this message] 2009-02-16 20:52 ` Dmitriy M. Maslennikov 2009-02-17 6:45 ` Evgeny Sinelnikov 2009-02-17 7:35 ` Alexey Tourbin 2009-02-17 8:03 ` Evgeny Sinelnikov 2009-02-17 8:40 ` Anton Farygin 2009-02-17 9:01 ` Alexey Tourbin 2009-02-17 10:43 ` Dmitry V. Levin 2009-02-17 23:49 ` Kirill A. Shutemov 2009-02-18 23:32 ` Dmitry V. Levin 2009-02-19 3:26 ` Денис Смирнов 2009-02-19 9:03 ` Kirill A. Shutemov 2009-02-17 11:24 ` Dmitriy M. Maslennikov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20090216092855.GK31985@altlinux.org \ --to=at@altlinux.ru \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git