On Sat, Dec 16, 2006 at 01:27:48AM +0300, Dmitry V. Levin wrote: > On Fri, Dec 15, 2006 at 04:25:03AM +0300, Alexey Tourbin wrote: > > On Fri, Dec 15, 2006 at 02:40:38AM +0300, Alexey Tourbin wrote: > > > Т.е. 2.4.4-alt2.1 в этом месте не видно вообще. > > > Соответственно, дальше, вероятно, стоит ковырять pkgVersionMatch::Find. > > > > Вот фикс, с которым будет выбираться не первая попавшаяся, а последняя > > попавшаяся версия. > > Я правильно помню что они отсортированы и потому последняя попавшаяся > будет наибольшей? Нет, я в этом не уверен. > > install python-devel=2.4 теперь работает (в том > > смысле, что установить можно только 2.4.4-alt2.1). > > > > --- apt-pkg/versionmatch.cc- 2006-12-15 01:11:52 +0000 > > +++ apt-pkg/versionmatch.cc 2006-12-15 01:15:17 +0000 > > @@ -205,10 +205,10 @@ pkgCache::VerIterator pkgVersionMatch::F > > if (VerPrefixMatch || (HasRelease && strchr(PrvVerStr, '-') == NULL)) > > { > > if (MatchVer(PrvVerStr,VerStr,VerPrefixMatch) == true) > > - return Prv.OwnerVer(); > > + Ver = Prv.OwnerVer(); > > } else { > > if (VS->CheckDep(PrvVerStr,VerOp,VerStr.c_str()) == true) > > - return Prv.OwnerVer(); > > + Ver = Prv.OwnerVer(); > > } > > } > > } > > > > Впрочем install python-base=2.4.4-alt2 python-devel=2.4 > > не работает ни так ни сяк. > > Т.е. ни до патча ни после патча? Ни до ни после. Потому что апт что делает. Он ставит каждый пакет по очереди. До и после патча два варианта. Объясняю коротко, я уже вчера этой лихорадкой переболел, сами там разбирайтесь. 1) Ставим python-base=2.4.4-alt2, Пробуем ставить python-devel=2.4-alt2.1 => ОТСТОЙ ИЛИ 2) Ставим python-base=2.4.4-alt2, Ставим python-devel=2.4-alt2, по зависимостям вытягивается python-strict=2.4-alt2.1 => ОТСТОЙ В общем апт не должен ставить пакеты подряд. А для каждого пакета подряд он должен выделять подмножество пакетов удовлетворяющих условию. А на втором проходе из этих подмножеств выделять одно непротиворечивое множество которое подлежит установке. > Интересно, сломает этот патч что-нибудь или нет? Не сломает. Он только влияет на виртуальные пакеты с версией. А на пакеты без версии типа autoconf опять будет по алфавиту, а может pkgVersionMatch::Find в этом случае вообще не включается.