Как минимум одну вещь можно существенно ускорить в пользовательском плане. Причём даже для Compact3.0 .
apt-shell/pipe стартует так долго не только по тому-что он считывает кеш, сколько потому что он ,пользуясь данными sourcelist'ами, переделывает их _заново_ . apt-cache обладает в отличие от apt-shell нужным интелектом и (как было подсказано в своё время voins) не перегенерит кеш, когда в этом нет необходимости. Если этот кеш создать в firsttime.d скажем при помощи "apt-cache gencaches", а apt-shell отучить от перегенерации при старте, то при переходе между шагами инсталлера (то есть когда поднимается apt-pipe) получим выигрыш 4с и более. В коде это дело обстоит примерно так. Сам pkgCache использует для работы некий MMap, этот MMap либо as-is уже имеющийся файл - либо созданная заново (перегенерённая) область памяти. apt-shell использует не pkgCache, а pkgCacheFile в котором метод Open всегда вызывает buildCaches. То бишь хачить надо будет в libapt-pkg непосредственно отучая pkgCache:open когда не надо вызывать pkgMakeStatusCache, а юзать напрямую MMap от существующего файла. Как это делать правильно честное слово не знаю, может быть через какие-то параметры конфига? Пусть спецы по apt подскажут. P.S. Кеш кажется перегенерится ещё разок при выполнении установки, но там уже сложнее понять нужно это или нет, в любом случае там пользователь и так ждёт окончания более длительного процесса установки. P.P.S. Есть там ещё одна мистика, pkgCache сохраняется, а pkgDepCache ,несмотря на кеширующее название, каждый раз перегенеряется заново ... вот если бы и его отхачить, то старт apt-pipe был бы вообще практически мгновенным ;) -- Стас. _______________________________________________ Devel-conf mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/devel-conf
