On Fri, Dec 15, 2006 at 02:40:38AM +0300, Alexey Tourbin wrote: > Суть проблемы в том, что когда просят установить виртуальный пакет с > версией, apt берет первый попавшийся реальный пакет, который дает этот > виртуальный пакет с этой версией. > > apt-get.cc: > 2102 if (VerTag != 0) > 2103 // CNC:2003-11-05 > 2104 if (TryToChangeVer(Pkg,Cache,VerOp,VerTag,VerIsRel) == false) > 2105 return false; > 2106 if (TryToInstall(Pkg,Cache,Fix,Remove,BrokenFix,ExpectedInst) == false) > 2107 return false; > > Проблема в процедуре TryToChangeVer. Эта процедура пытается подыскать > реальный пакет (в данном случае для python-devel=2.4) и выбирает первое > что только можно выбрать. Если просто тупо отрубить TryToInstall, то всё начинает работать. --- apt-get.cc- 2006-12-14 23:36:02 +0000 +++ apt-get.cc 2006-12-14 23:44:10 +0000 @@ -2099,10 +2101,10 @@ bool DoInstall(CommandLine &CmdL) } else { - if (VerTag != 0) - // CNC:2003-11-05 - if (TryToChangeVer(Pkg,Cache,VerOp,VerTag,VerIsRel) == false) - return false; +// if (VerTag != 0) +// // CNC:2003-11-05 +// if (TryToChangeVer(Pkg,Cache,VerOp,VerTag,VerIsRel) == false) +// return false; if (TryToInstall(Pkg,Cache,Fix,Remove,BrokenFix,ExpectedInst) == false) return false; } > --- apt-get.cc- 2006-12-14 23:36:02 +0000 > +++ apt-get.cc 2006-12-14 23:38:04 +0000 > @@ -1537,6 +1537,8 @@ bool TryToChangeVer(pkgCache::PkgIterato > pkgVersionMatch::Version),VerOp); > > pkgCache::VerIterator Ver = Match.Find(Pkg); > + for (pkgCache::VerIterator i = Ver; i.end() == false; i++) > + fprintf(stderr, "Seen pkg %s ver %s\n", Pkg.Name(), i.VerStr()); > > if (Ver.end() == true) > {