[devel] apt virtual packages

Alexey Tourbin at на altlinux.ru
Сб Дек 16 01:42:59 MSK 2006


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 в этом случае вообще не включается.
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : http://lists.altlinux.org/pipermail/devel/attachments/20061216/21351a7a/attachment.bin 


Подробная информация о списке рассылки Devel