Re: Bug#201688: bibtex2html: build dependencies cannot be fulfilled
On Thu, Jul 17, 2003 at 05:40:33PM +0200, Sven Luther wrote:
> reassign 201688 apt
> severity 201688 normal
> thanks
>
> On Thu, Jul 17, 2003 at 11:53:15AM +0200, Laurent Bonnaud wrote:
> > Package: bibtex2html
> > Version: 1.61-1
> > Severity: serious
> >
> >
> > Hi,
> >
> > here is the problem:
> >
> > # apt-get build-dep bibtex2html
> > Reading Package Lists... Done
> > Building Dependency Tree... Done
> > E: Build-Depends-Indep dependency for bibtex2html cannot be satisfied because no available versions of package ocaml-3.06-1 can satisfy version requirements
> >
> > Shouldn't you use ocaml-base-3.06-1 instead of ocaml-3.06-1 ?
>
> After investigation, this definitively seems like an apt-get bug, which
> is perfectly capable of finding the real package providing the virtual
> ocaml-3.06-1 when you do an apt-get install, but this seems to be not
> true when one uses apt-get build-dep.
>
> Note to the apt maintainers :
>
> I am really willing to discuss this with you, as i am curious as to
> what the real problems are with apt/dpkg and the virtual packages.
> "You shall not use virtual dependencies" is _not_ a right why to start
> such a discussion though, i already got that from elmo some time ago :)
It seems to be a bug in apt, as we do the same thing as the perl-api
virtual package does. I discussed it with aj and he seems to think the
same thing. I am too busy right now to look at the apt code, i just know
that it fails at :
Line 2397 of apt-get.cc :
/*
* If this is a virtual package, we need to check the list
* of
* packages that provide it and see if any of those are
* installed
*/
pkgCache::PrvIterator Prv = Pkg.ProvidesList();
for (; Prv.end() != true; Prv++)
if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false)
break;
// Get installed version and version we are going to install
pkgCache::VerIterator IV = (*Cache)[Pkg].InstVerIter(*Cache);
pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache);
for (; CV.end() != true; CV++)
{
if (Cache->VS().CheckDep(CV.VerStr(),(*D).Op,(*D).Version.c_str()) == true)
break;
}
if (CV.end() == true)
return _error->Error(_("%s dependency for %s cannot be satisfied "
"because no available versions of package %s "
"can satisfy version requirements"),
Last->BuildDepType((*D).Type),Src.c_str(),
(*D).Package.c_str());
I will try to look at it later on, but as i am not familiar with the apt
code and it has been a long time since i have programmed in c++, ...
Friendly,
Sven Luther
Reply to: