[devel] symlinks.req: semi-unmets
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Пт Авг 10 12:21:34 MSD 2007
On Tue, Aug 07, 2007 at 03:34:49AM +0400, Alexey Tourbin wrote:
> On Tue, Aug 07, 2007 at 02:20:48AM +0400, Alexey Tourbin wrote:
> > ЗАОСТРЯЮ ПРОБЛЕМУ "ПОЛУ-АНМЕТОВ".
> >
> >
> > Это проблема проявляется тогда, когда зависимость имеет вид /ПУТЬ,
> > но у соответствующего пакета не стоит Provides: /ПУТЬ. На уровне
> > rpm это не является unmet'ом: если при установке пакета с такой
> > зависимостью имеется какой-либо другой пакет с файлом /ПУТЬ,
> > то для rpm это "канает".
> >
> > С другой стороны, apt видит такую зависимость именно как unmet.
> > Вообще-то у апта к каждому пакету есть файловые листы, и он использует
> > их для разрешения такого рода зависимостей. Но при изготовлении
> > репозитария аптовые листы у нас насильно "оптимизируются".
> >
> > Два простых варианта решения это проблемы:
> >
> > 1) Генерировать более полный content_index для hasher, чтобы любой путь
> > более гарантированно трансформировался в название пакета (насколько
> > более полный/гарантированно?).
> >
> > 2) Восстановить файловые листы для апт. Насколько потяжелеет
> > pkglist.classic.bz2?
>
> Если мыслей нет, то утро вечера мудренее. Пока есть только идея
> захачить hsh-sh-cache-contents-functions, чтобы он изготовлял
> contents_index_all.gz.
Предварительная реализация и тестирование contents_index_all.gz
выявило вот какую проблему. При сборке startup:
shell.req: /usr/src/tmp/startup-buildroot/etc/rc.d/init.d/clock: checking contents_index_all for /etc/init.d/functions
shell.req: /usr/src/tmp/startup-buildroot/etc/rc.d/init.d/clock: /etc/init.d/functions -> service (via rpmdb)
Здесь проблема в том, что вместо ". /etc/rc.d/init.d/functions" там
используется ". /etc/init.d/functions", и поиск сначала обламывается
по contens_index_bin, потому что "нельзя понять", что /etc/init.d
это симлинк на /etc/rc.d/init.d. Потом, соответственно, запускается
"дорогой" поиск по contents_index_all, и опять обламывается. В конечном
счёте происходит fallback на текущий rpmdb, который и дает результат.
Если бы поиск по rpmdb ничего не дал, то получился бы "полу-анмет"
на /etc/init.d/functions.
В общем, идея contents_index довольно примитивна, она в принципе не
учитывает симлинки при разрешении путей. А менее примитивные идеи
с неизбежностью будут более сложными...
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20070810/e0d9f5d9/attachment-0001.bin>
Подробная информация о списке рассылки Devel