On Thu, Dec 20, 2007 at 02:51:18AM +0300, Dmitry V. Levin wrote: > On Thu, Dec 20, 2007 at 02:23:36AM +0300, Alexey Tourbin wrote: > > В чрут при сборке хочет ставиться altlinux-release-terminal. > > > > $ hsh --init > > touch: failed to get attributes of `.../Sisyphus/noarch/RPMS.classic/altlinux-release-terminal-20071215-alt1.noarch.rpm': No such file or directory > > ... > > $ > > > > Видимо в altlinux-release-sisyphus нужно дописать > > obsoletes altlinux-release-terminal > > или же просто попробовать пересобрать altlinux-release-sisyphus > > с версией больше чем у altlinux-release-terminal. > > Нет, apt всё равно вытягивает altlinux-release-terminal. > Он же сперва сравнивает имена пакетов, и "sisyphus" < "terminal". Ох. И что делать? apt это какой-то узел проблем. А если где-нибудь записать -Requires: altlinux-release +Requires: altlinux-release > 0 тогда по идее второй сценарий должен сработать. В апте есть ещё такая проблема, не знаю где о ней написать, так что с ходу напишу здесь. Там используется qsort(3), а qsort даёт нестабильную сортировку, то есть может переставлять местами "равные" элементы. Это например может проявляться если есть два репозитария (первый локальный) в котором лежат одинаковые пакеты %name-%version-%release, то нет гарантии что apt будет вытягивать локальный пакет, который по идее должен "перекрывать". То есть нужно использовать либо стабильную сортировку, либо исчерпывающее условие сортировки в qsort типа (attr1 <=> attr2) || ... || (name1 <=> name2) || (repo1 <=> repo2).