On Sun, May 18, 2008 at 01:26:20PM +0400, Alexey Gladkov wrote: > Alexey Tourbin wrote: > >Я сделал предварительную реализацию > >сортировки по %{SOURCERPM}. > >Результаты теперь такие: > > У меня вопрос: изменив сортировку по > алфавиту на сортировку по %{SOURCERPM} ты не > ухудшил скорость поиска `apt-cache search` ? А как могла скорость ухудшиться? Однако появилась особенность: в выдаче 'apt-cache search' найденные пакеты отсортированы не по названию, а по %{SOURCERPM}. (Старое поведение) $ apt-cache search apt |awk '$1~/apt\>/' apt - Debian's Advanced Packaging Tool with RPM support apt-conf-desktop - A set of apt configuration files for ALT Linux Desktop apt-conf-server - A set of apt configuration files for ALT Linux Server apt-conf-sisyphus - A set of apt configuration files for ALT Linux Sisyphus apt-rsync - rsync method support for APT apt-utils - Utilities to create APT repositaries (the indices) capt - CAPT Linux driver kio-apt - An apt:/ protocol in konqueror libapt - APT's core libraries libapt-devel - Development files and documentation for APT's core libs apt-log - Log support for APT apt-scripts - Lua scripts for APT docs-alterator_apt-kirill - Extra packages docs-packages_apt - Install and remove programs (packages) $ (Новое поведение) $ ./build/aptbox/apt-cache search apt |awk '$1~/apt\>/' apt - Debian's Advanced Packaging Tool with RPM support apt-rsync - rsync method support for APT apt-utils - Utilities to create APT repositaries (the indices) libapt - APT's core libraries libapt-devel - Development files and documentation for APT's core libs apt-conf-desktop - A set of apt configuration files for ALT Linux Desktop apt-conf-server - A set of apt configuration files for ALT Linux Server apt-conf-sisyphus - A set of apt configuration files for ALT Linux Sisyphus capt - CAPT Linux driver kio-apt - An apt:/ protocol in konqueror apt-log - Log support for APT apt-scripts - Lua scripts for APT docs-alterator_apt-kirill - Extra packages docs-packages_apt - Install and remove programs (packages) $ Теперь libapt* "примыкает" к пакетам apt*. В принципе это изменение нельзя однозначно квалифицировать как нежелательное или неправильное, потому что нарушение алфавитного порядка позволяет нам догадаться, что речь идёт о подпакетах, собранных из одного src.rpm пакета (группировку по src.rpm при поиске можно даже считать интересной фичей, просто это информация здесь не выражена явно). К тому же на самом деле сортировка действует только в пределах репозитария, так что при переходе к noarch пакеты опять начинаются с буквы "a". > Не нужно ли ввести корректировку > алгоритма поиска (apt-cache search), чтобы он > искал только в первом changelog'е при условии > что поле %{SOURCERPM} у нескольких пакетов в > pkglist совпадает? Наверное, нужно. То есть при совпадении по changelog'у следовало бы игнорировать все последующие (adjacent) пакеты с совпадающим SOURCERPM. Но я боюсь что жесткая структурная декомпозиция снизу вверх, то есть поиск идёт per header, и протощить нужную информацию будет сложновато. Точнее, не знаю, нужно или не нужно. Я пока ещё не добавил поиск по changelog'ам. > Вообще, очень неприятно что changelog'и > дублируются в этой реализации. Но если дубли сгруппировать, то они очень хорошо сжимаются. Если же выносить дублирующуюся информацию в отдельное место, то, прежде всего, придётся распустить Header как структуру; а это дополнительный оверхед на bookkeeping + проверка целостности. Попробуй распустить хедер на два "подхедера", сразу встанет вопрос, соответствует ли первый подхедер второму или нет.