[devel] Q: rpmi --chroot

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Пт Фев 29 01:16:02 MSK 2008


On Fri, Feb 29, 2008 at 12:38:24AM +0300, Alexey Gladkov wrote:
> Alexey Tourbin wrote:
> > От инсталлятора (в случае оптимизации зависимостей) требуется лишь,
> > чтобы он инсталлировал в два этапа: сначала установка rpm (или хотя
> > бы coreutils + /bin/sh); а потом установка всего остального.  То есть
> > инициализация минимального conforming чрута должна быть отделена
> 
> Есть репозиторий N как по нему вычислить состав conforming чрута ?
> Или это жёстко запитый список пакетов ? ... если второе, то это как-то
> некузяво.
> Предлагается ставить пакеты для conforming чрута через rpm2cpio ?

Conforming chroot -- это в котором заведомо есть /bin/sh и некоторые
команды из coreutils (в частности, /bin/rm, далее cat mv cp mkdir ln).
Такой чрут является "conforming", потому что он соответствует
спецификации SUSv3 -- в нём заведомо работают некоторые самые
базовые UNIX программы.  Если мы исходим из того, что установка
любого пакета происходит в conforming chroot, тогда некоторые
самые частые зависимости можно оптимизировать (удалить).  Если же
исходить из того, что установка любого сколь угодно сложно пакета
происходит в потеницально пустой чрут, то базовые зависимости удалять
нельзя, потому что это может дать неправильный порядок установки
пакетов (и соответственно падение в скриптлетах).

Допустим, мы ставим в *пустой* чрут пакет openoffice.org.  Если в нём
оптимизирована (удалена) зависимость на /bin/sh, то rpm имеет право
ставить пакет openoffice.org ВПЕРЁД пакет sh (и даже вообще не ставить
пакет sh, если все зависимости на /bin/sh были удалены).  При этом
%post-скрипт в openoffice.org обломится, потому что пакет sh с /bin/sh
ещё не успел поставиться (или вовсе не собирался ставиться).

Поэтому в инсталляторе желательно разделить стадию инициализации
conforming чрута и последующую стадию установки дополнительных пакетов.
Состав conforming чрута вычисляется как замыкание зависимостей пакета
rpm.  Впрочем, ldv не уверен, что пакет rpm должен в *любой* системе
присутствовать (иными словами, в принципе возможны мини-чруты, с которым
"внешний" rpm общается со своей базой rpmdb только посредством 'rpm --root').
В таком случае содержимое минимального conforming чрута можно вычислять
как замыкание coreutils и sh.  Всё что меньше этого заведомо не
conforming.

Более развязано (то есть менее строго), для инициализации conforming
чрута специально существует пакет basesystem.  То есть с натяжкой можно
считать, что в любой рабочей среде установлен пакет basesystem.
Конечно, так лучше не считать, когда мы находимся в "шаре" с диаметром
в пределах basesystem.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?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/20080229/e1367ffc/attachment-0002.bin>


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