Как минимум одну вещь можно существенно ускорить в пользовательском плане.
Причём даже для 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

Ответить