Изменения

Блог:Виталий Филиппов/2011-06-09 tdpkg

13 байтов убрано, 19:57, 8 сентября 2011
м
Нет описания правки
Нашёл клёвую штуку для дебиановского dpkg — ускорятор его работы с базой данных пакетов '''<a href="[http://lethalman.hostei.com/tdpkg.html">tdpkg</a>]''' !
Просто каким-то дурацким образом dpkg хранит базу в тыщщах мелких файлов в <tt>/var/lib/dpkg/info/</tt>, без какого-либо индекса ВООБЩЕ. В итоге, когда установлено 4500 пакетов, как у меня, первый запуск сильно тупит, потому что читает все эти тыщщи файлов в кэш (секунд 30-40 занимает легко).
Так вот, некто придумал хак — засунуть в LD_PRELOAD библиотеку, которая лично обращения к /var/lib/dpkg/info/ будет подменять на чтения нормальной базы данных — SQLite или <a href="[http://fallabs.com/tokyocabinet/">TokyoCabinet</a> ] (последняя — это «правильный BDB»).
Ускоряет ситуацию это, надо сказать, просто в разы — база читается за 1-2 секунды. Вообще-то, конечно, dpkg это должен делать уметь сам, но раз пока этого никто не написал…
В общем ставим, прописываем {{cmd|в <tt>~/.bashrc</tt> следующие строчки, и радуемся жизни:<pre>alias dpkg="sudo LD_PRELOAD=...<path_to_libtdpkg>/libtdpkg.so dpkg"}} и {{cmd|alias apt-get="sudo LD_PRELOAD=...<path_to_libtdpkg>/libtdpkg.so dpkgapt-get"}} аналогично, и радуемся жизни.</pre>
UPD: ещё желателен <a href="http://svn.yourcmc.ru/viewvc.py/нужно применить [{{SVN|vitalif/trunk/scripts/tdpkg.c.diff?revision=1268&amp;view=|co">}} мой патчик</a>], убирает мусор с STDERR и добавляет плюс один хак, чтобы tdpkg работал с последними dpkg, которые любят делать <tt>ioctl(FIGETBSZ)</tt>.{{wl-publish: 2011-0906-08 2309 00:5029:40 00 +0400 | VitaliyFilippov }}