On Wed, Nov 07, 2007 at 04:50:56PM +0300, Alexey Shabalin wrote: > > Я взялся за сборку mono. Отчасти это вызвано необходимостью пересборки > > mono с новым rpm-build-mono. Я также изменю некоторые зависимости, но > > распил пакетов пока всерьез менять не собираюсь. Результат будет > > представлен на обсуждение. > > так может и распилим сразу совместными усилиями? > я тоже подключусь. Чтобы грамотно распилить mono, нужно сделать граф зависимостей по отношению частичного порядка между моновскими библиотеками. Идея тут в том, что нужно решить некую задачу оптимизации -- минимизировать число зависимостей между пакетами и, вместе с тем, минимизировать число пакетов, и, вместе с тем, минимизировать размеры пакетов. Мне кажется, что эта задача не решается через математику "в лоб" (типа записать какой-нибудь лагранжиан и т.п.). Вот как примерно можно построить граф зависимостей для случая с питоном. Я заметил, что несколько питоновских пакетов ставится в большинстве случаев одновременно. Я хочу понять, как перетасовать модули между этими пакетами, чтобы каждый из этих пакетов был более "подвижным" относительно python-base. Последовательность команд примерно такая: $ rpm -ql python-base python-modules python-modules-{xml,logging,compiler,email} |grep '\.py$' | while read f; do prov=`/usr/lib/rpm/python.prov $f`; [ -n "$prov" ] || continue; /usr/lib/rpm/python.req $f 2>/dev/null |sed "s/^/$prov /"; done >topo $ Здесь получился список вида python2.4(A) python2.4(B) питоновский модуль A требует питоновский модуль B. Дальше составляется *.dot файл и можно нарисовать граф. $ (echo 'Digraph G {'; awk 'NF=2{print$1" -> "$2";"}' topo |sed 's/python2\.4//g;s/[()]//g' ; echo '}') >topo.dot $ dot -Tgif topo.dot -o topo.gif В общем, более грамотный распил пакетов, будь то python или mono, тянет на некий research.