[buildd-tools-devel] Bug#606278: Bug#606278: Bug#606278: aptitude resolver is completely broken in 0.60.6

Modestas Vainius modax at debian.org
Wed Dec 8 19:19:44 UTC 2010


Hello,

On trečiadienis 08 Gruodis 2010 13:06:23 Roger Leigh wrote:
> > > Ok, the latter is because you removed a key option (that I added some
> > > time ago) from aptitude command line in
> > > 80f811184d7c7b06a6a5ec8d646b1eac015dffa2. That's:
> > > 
> > > '-o', "Aptitude::ProblemResolver::Hints::KeepDummy=reject
> > > $dummy_pkg_name
> > > 
> > > :UNINST",
> > 
> > I removed this because it no longer seemed necessary when installing
> > the package directly from a local archive.  It shouldn't be a
> > candidate for removal if we explicitly asked for its installation?
> 
> The patch I attached in my other mail should solve all the other
> issues.
> 
> - dummy packages are created correctly
> - local archive created correctly
> - archive signing key created correctly
> - archive signed correctly
> - dummy packages install from archive correctly
> 
> I'll add back the above aptitude option if it's still required, but if
> you could test the attached patch and let me know if there are any
> remaining problems, that would be great.

/tmp is fixed and sbuild now tells me when it is generating a key (which is 
good). But now I have another nitpick. The new way of installing dependencies 
means that `apt-get update` is run twice (once for core-dummy and once for 
package-dummy). This might not be always desirable (e.g. when rebuilding the 
package repeatedly from the same aptcache). Also, --apt-update option became 
redundant, didn't it?

> If you still find this option
> is required for correct functioning, I'll add it back.

It is necessary, see below.

> It shouldn't be a
> candidate for removal if we explicitly asked for its installation?

No, that's not the case. A mere fact that a package is a candidate for 
installation does not mean that it will end up being installed, e.g. it might 
be impossible to install the package due to conflicts. All needed info can be 
found in [1] and [2] (from aptitude-doc-en package).

I will explain current approach in AptitudeResolver. As you can see from 
aptitude docs, by default Non-Default-Level is very unsafe. So aptitude will 
always prefer to remove the package we want to install if it depends on  
packages from non-default repositories. Bumping safety of Non-Default-Level is 
dangerous because aptitude may start installing packages from non-default 
repos (experimental) when there is a good enough version in the default repo 
(unstable). So keeping Safe-Level, Remove-Level etc. at their safe defaults is 
desirable. All we need is to tell aptitude to ignore/exclude all solutions 
which involve removal of the dummy package even if they were "safer" because 
they definitely won't satisfy us. That's what that KeepDummy hint does. So 
aptitude ends up giving us the *safest* solution which does exactly what we 
want (i.e. installs dummy package).

[1] file:///usr/share/doc/aptitude/html/en/ch02s03s04.html
[2] file:///usr/share/doc/aptitude/html/en/ch02s03s05.html

P.S. As I see now, aptitude 0.6.3 dependency resolver is even more 
configurable than the one from aptitude 0.6 when I originally wrote the first 
patch. So it might be possible to think of better SolutionCost algorithm for 
sbuild needs. On the other hand, current one has not disappointed me yet.


-- 
Modestas Vainius <modax at debian.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.alioth.debian.org/pipermail/buildd-tools-devel/attachments/20101208/c7b22f3f/attachment-0001.pgp>


More information about the Buildd-tools-devel mailing list