План такой: создаем окружение нужного дистрибутива:
Код: Выделить всё
rpm --initdb --root /var/tmp/buildenvКод: Выделить всё
rpm -i списокбазовыхпакетов --root /var/tmp/buildenvт.е. короче ставим базовые пакеты в /var/tmp/buildenv, из список ограничивается gcc, glibc, aaa_base, binutils + еще пару десятков, по весу много не выйдет, я думаю не больше 200 мегов. Дальше берем и делаем из /var/tmp/buildenv образ файловой системы с компрессией типа CramFS или SquashFS. Все стираем, образ куда-нить ныкаем, например можно на болванку кинуть. Повторяем вышеописанное много раз с кучей разных дистрибутивов.
Далее берем образ окружения дистрибутива для которого хотим сделать пакет и монтируем его куда-нибудь применяя UnionFS понятным образом. И делаем chroot в это куда-нибудь, попадая в изолированное окружение нужного дистрибутива, в нем мы можем собрать пакет, даже можем доставить нужные для сборки пакеты, если таковых не оказалось. После сборки мы выходим из изолированного окружения, отмонтируем образ и видим, что все наши изменения, в том числе и свежесобранные пакеты лежат там, что мы указали UnionFS как rw. Повторям вышеописанное много раз с кучей образов ( можно скрипт написать простейший )
p.s. Это мне почти во сне приснилось, думаю что это дешевле чем содержать кучу машин под разными дистрами, или кучу дистров на одной машине, или кучу дистров под виртуальной машиной.