Ja. Die Uebersichtstabelle in dem Link ist nett.
Soweit ich das verstehe entsprechen sich `apt upgrade' und `aptitude safe-upgrade'.
`apt-get upgrade' ist der Befehl, der am wenigsten macht.
(Und falls das bislang noch nicht klar geworden ist: `full-upgrade' und `dist-upgrade' ist das gleiche. Der Name `full-upgrade' ist neuer. Frueher gab es nur `dist-upgrade'. Es gibt aber keinen Unterschied zwischen den beiden.)
@tscott:
Das Entfernen von nicht mehr gebrauchten Abhaengigkeiten ist eine komplett separate Sache, die man mit `autoremove' oder separaten Programmen wie
deborphan oder
debfoster erledigen kann. Das hat nichts mit dem Upgrade zu tun (ausser, dass man bei den Upgrade-Befehlen optional zusaetzlich eine --autoremove Option angeben kann, die dann beides hintereinander macht).
Konflikte zu loesen ist letztlich ein Upgraden, Entfernen und Installieren von Paketen, um damit eine Kombination zu erreichen, die konfliktfrei ist. Konflikte basieren auf der control-Datei in den Debianpaketen, die unter `Conflicts:' oder aehnlichen Feldern andere Pakete in ggf. bestimmten Versionen nennen. Siehe dazu die Manpage deb-control(5).
Ein einfaches `apt-get upgrade' kann auch Konflikte loesen, naemlich in folgendem Fall.
Installiert ist:
- Paket A in Version 1
- Paket B in Version 1
Wenn nun Version 2 von Paket A einen Konflikt mit Paket B (< Version 2) hat, dann loest upgrade das indem es beide Pakete upgraded. Wenn du nur `apt-get install A' sagen wuerdest, dann wuerde das nicht gehen, weil das eben mit Paket B (< Version 2) kollidiert.
Was upgrade aber nicht loesen kann ist folgender Konflikt. Wieder sind diese Pakete installiert:
- Paket A in Version 1
- Paket B in Version 1
Version 2 von Paket A hat einen Eintrag, dass es kollidiert mit Paket B aber stattdessen haengt es von Paket C ab, das die gleiche Funktionalitaet wie B bereitstellt.
Ein upgrade scheitert hier, da zum Loesen B entfernt und C installiert werden muss wenn man A auf Version 2 bringt. Diese Konflikte kann full-upgrade loesen.
Dabei muss full-upgrade aber auch darauf schauen, ob noch irgendwelche anderen Pakete B benoetigen, weil es B sonst natuerlich nicht entfernen darf. Dazu versucht full-upgrade alle Moeglichkeiten, die Abhaengigkeiten zu erfuellen, durchzuprobieren und waehlt dann diejenige aus, die ihm am besten erscheint.
Upgrade-Mechanismen, die staerker eingeschraenkt sind, wie `apt-get upgrade', `aptitude safe-upgrade' und `apt upgrade', haben weniger Moeglichkeiten zur Verfuegung, den Konflikt zu loesen. Dadurch kann es passieren, dass ein komplizierter Loesungsweg rauskommt (z.B. sehr viel Pakete installieren), waehrend es auch moeglich waere den Konflikt zu loesen, indem man nur ein einziges Paket deinstalliert. Diese letzte Option haben die eingeschraenkteren Upgrade-Mechanismen halt nicht.
Andererseits stellen diese sicher, dass nie ein vorhandenes Paket deinstalliert wird, sondern nur Upgrade-Wege gesucht werden, die den Konflikt durch das Hinzufuegen loesen.
Aus meiner Sicht gibt es Faelle wo der eine und Faelle wo der andere besser waere -- also wenn ich das mal aus technischer Sicht betrachte und die Anwendersicht von Casual Usern aussen vor lasse. In einfachen Faellen ist das alles recht egal, weil es da oft nur einen Loesungsweg gibt. In komplizierteren Faellen (die aber wohl nur Nutzer von Unstable und Entwickler haben oder die man auf halb kaputten Systemen beim Reparieren antrifft) waere der beste Weg bei schlimmen Konflikten, die Vorschlaege der verschiedenen Upgrade-Mechanismen zu vergleichen, um dann selber entscheiden zu koennen, welchen man als den besseren Weg ansieht. Aber wie gesagt, das ist etwas fuer Profis, Entwickler und groessere Reparaturvorhaben.