2011-06-09 tdpkg

Материал из YourcmcWiki
Перейти к: навигация, поиск

Нашёл клёвую штуку для дебиановского dpkg — ускорятор его работы с базой данных пакетов tdpkg !

Просто каким-то дурацким образом dpkg хранит базу в тыщщах мелких файлов в /var/lib/dpkg/info/, без какого-либо индекса ВООБЩЕ. В итоге, когда установлено 4500 пакетов, как у меня, первый запуск сильно тупит, потому что читает все эти тыщщи файлов в кэш (секунд 30-40 занимает легко).

Так вот, некто придумал хак — засунуть в LD_PRELOAD библиотеку, которая лично обращения к /var/lib/dpkg/info/ будет подменять на чтения нормальной базы данных — SQLite или TokyoCabinet (последняя — это «правильный BDB»).

Ускоряет ситуацию это, надо сказать, просто в разы — база читается за 1-2 секунды. Вообще-то, конечно, dpkg это должен уметь сам, но раз пока никто не написал…

В общем ставим, прописываем в ~/.bashrc следующие строчки, и радуемся жизни:

alias dpkg="sudo LD_PRELOAD=<path_to_libtdpkg>/libtdpkg.so dpkg"
alias apt-get="sudo LD_PRELOAD=<path_to_libtdpkg>/libtdpkg.so apt-get"

UPD: ещё нужно применить мой патчик, убирает мусор с STDERR и добавляет плюс один хак, чтобы tdpkg работал с последними dpkg, которые любят делать ioctl(FIGETBSZ).

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.