[devel] full list of unmets
Anton Farygin
=?iso-8859-1?q?rider_=CE=C1_altlinux=2Ecom?=
Вт Июн 20 11:38:35 MSD 2006
Alexey Tourbin wrote:
> On Tue, Jun 20, 2006 at 05:15:00AM +0400, Dmitry V. Levin wrote:
>> Что касается более сложной обработки, то тут надо вспомнить математику и
>> хорошенько подумать.
>
> Ну в общем да. Нужно осилить топологию и теорию графов. Потом нужно
> переписать apt на ocaml'е. :) Сейчас к апту очень серьезная претензия:
> библиотека libapt-pkg не дает доступа к основным алгоритмам. То есть
> например алгоритм 'apt-get --print-uris install' закоден непосредственно
> в apt-get. Чтобы попробовать узнать, можно установить отдельно взятый
> пакет или нет, приходится запускать apt-get и парсить его вывод.
> Каждый такой запуск стоит порядка секунды, а большая часть времени
> уходит на чтение/инициализацию кеша. То есть нельзя достаточно быстро
> проверить, какие пакеты в сизифе устанавливаемы, а какие нет. Нельзя
> загрузить кеш один раз и проверить все пакеты в пределах одного
> процесса.
Для этого есть apt-pipe, который вполне реально IMHO научить жить под
обычным пользователем (создавать сокет в заданном каталоге).
сейчас это выглядит вот так (тормозит только первый запуск):
[root на rider ~]# time apt-pipe ls >/dev/null
0.00user 0.00system 0:02.81elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (2major+615minor)pagefaults 0swaps
[root на rider ~]# time apt-pipe ls >/dev/null
0.00user 0.00system 0:00.03elapsed 43%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+567minor)pagefaults 0swaps
[root на rider ~]# time apt-pipe showpkg icewm >/dev/null
0.00user 0.00system 0:00.01elapsed 80%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+568minor)pagefaults 0swaps
>
> libapt-pkg дает доступ только ко внутренним структурам данных, но не
> к алгоритмам. Ни --print-uris, ни unmets из libapt-pkg извлечь нельзя.
> Чем думали авторы апта?
авторов apt'а было слишком много, что бы они могли чем-то думать ;)
Rgds,
Rider
Подробная информация о списке рассылки Devel