Im konkreten Fall ging es ja um i686 - Was mich irgendwie stört, ist grade das Verhalten von apt, das imho gleich sein sollte. Das ist jetzt nur so aus Interesse - kann man diese Entscheidungskriterien irgendwo einsehen oder auf "ein wenig konservativer" stellen?
$ apt-get dist-upgrade -o Debug::pkgProblemResolver=1 -s
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Statusinformationen werden eingelesen... Fertig
Paketaktualisierung (Upgrade) wird berechnet... Starting
Starting 2
Investigating (0) python-qt4 [ i386 ] < 4.7.3-1+b1 > ( python )
Broken python-qt4:i386 Hängt ab von on sip-api-7.1 [ i386 ] < none > ( none )
Considering python-sip:i386 1 as a solution to python-qt4:i386 3
Added python-sip:i386 to the remove list
Fixing python-qt4:i386 via keep of python-sip:i386
Try to Re-Instate (0) python-sip:i386
Done
…
Wie man sieht versucht APT Probleme zu lösen in dem es erstmal die Wichtigkeit von Paketen berechnet (Debug::pkgProblemResolver::ShowScores) und dann mit dem wichtigsten beginnend nachsieht welches Probleme hat. In dem Falle hat python-qt4 (3 Punkte) ein Problem mit python-sip (1 Punkt) -- also muss sich python-sip unterordnen, was in diesem Falle bedeutet es wird zurückgehalten um das Problem aufzulösen.
Würden jetzt mehr Pakete von python-sip abhängen (was offensichtlich davon abhängt was man so installiert hat, also vom System), dann kommt es vielleicht irgendwann zur Situation das python-sip wichtiger wird als python-qt4, womit dann die Entscheidung anders ausfallen wird (vermutlich Entfernung von python-qt4).
Rumspielen kann man sehr begrenzt damit, aber wirklich empfehlen würde ich das eh nicht den die Einstellungen sind über Jahre gereift, das wird man kaum auf die schnelle besser machen können.
Man muss bedenken, das dist-upgrade eben nicht für die Zartbeseiteten gedacht ist: Upgrade alles was irgendmöglich ist und versuch hinterher zu retten was zu retten ist. Die Strategie hört sich richtig doof an - ist sie auch - funktioniert aber ausgesprochen gut. Intelligentere Strategien haben die Angewohnheit mehr Probleme zu bereiten, da die Gegebenheiten in unstable eben ziemlich rau sind. Da ist doof sehr praktisch weil in den wenigen Momenten wo es zu doof ist weiß man wenigstens sicher warum.
Immer getreu dem Motto: Wenn ein Programmierer ein Programm schreibt, was so intelligent ist wie er selbst, dann ist es ihm unmöglich dieses Programm jemals zu warten - den um Fehler darin zu entdecken, müsste er schlauer sein…