Kann es zu Problemen beim Wechsel von apt-get zu aptitude kommen?

8

Ich habe überlegt, zu aptitude zu wechseln, aber ich habe Leute sagen hören: "Wenn Sie apt-get bereits verwenden, sollten Sie bis zur nächsten Installation warten, um zu wechseln." Warum sagen die Leute das? Welche Probleme (falls vorhanden) kann dies verursachen?

Matthew
quelle

Antworten:

8

apt-get und aptitude sind verschiedene Benutzeroberflächen, die Teil desselben Paketverwaltungssystems, APT, dem Advanced Packaging Tool, sind . Beispielsweise werden beide mit konfiguriert /etc/apt/apt.conf, beide verwenden denselben Dateibereich und dieselben Formate, um den Paketstatus darzustellen, und denselben Dateibereich, um heruntergeladene .debs zu speichern.

Wie sie sich unterscheiden, ist ihr internes Regelsystem, das potenzielle Konflikte zwischen Paketen darstellt, wie sie gelöst werden (z. B. während apt-get dist-upgradevs. aptitude full-upgrade) und wie diese bei der Interaktion mit dem Benutzer ausgedrückt werden. Im Allgemeinen können beide in schwierigen Situationen das Falsche tun, aber apt-get macht es viel wahrscheinlicher falsch als aptitude.

Charles Stewart
quelle
2
Eine gute, klare Antwort. Ein weiteres Detail ist, wie / wann automatisch installierte Abhängigkeiten entfernt werden. aptitudeentfernt sie sofort, apt-getfordert Sie jedoch nur durch Eingabe des Befehls auf, sie zu entfernen apt-get autoremove. Im Allgemeinen möchten sie dieselben Elemente entfernen. Siehe diesen Link für einen komplexen Fall, in dem sie sich nicht einig waren
Telemachus
5

Viele gute Ratschläge sind bereits hier, aber lassen Sie mich eine Sache hinzufügen, die niemand erwähnt hat. Wenn Sie sich für einen Wechsel entscheiden, möchten Sie diesen Befehl möglicherweise ausführen, je nachdem, was Sie bisher gemacht haben apt-get:

aptitude keep-all

Dieser Befehl setzt aptitudedie Wahrnehmung zurück , welche Pakete Waisen sind und entfernt werden sollten.

Hier ist der Grund , warum es manchmal nützlich: für eine Weile jetzt, beide apt-getund aptitudewerden Pakete verfolgen , die automatisch als Abhängigkeit von etwas anderem installiert wurden. Wenn Sie beispielsweise installieren mpd, erhalten Sie möglicherweise lib-so-and-soeine Abhängigkeit. Sie tun dies, damit, wenn Sie später entfernen mpd, auch lib-so-and-soentfernt wird. Aber aptitudeund apt-getdamit anders aufräumen. aptitudeversucht sofort, alle verwaisten Abhängigkeiten zu entfernen; aber apt-getschlägt nur vor, dass Sie laufen, apt-get autoremoveum aufzuräumen. (Die Logik dahinter ist, dass Sie die Bibliothek erst erhalten haben, seit Sie sie mpdbenötigt haben. Wenn Sie sie nicht behalten mpd, sollten Sie sie nicht mehr benötigen. Wenn noch ein anderes Paket davon abhängt, dann beide aptitudeundapt-get wird dies wissen und nicht versuchen, die Bibliothek zu entfernen.)

Was ist mein Punkt? Nun, wenn Sie ständige Anstöße gesehen haben apt-get autoremoveund zu wechseln, aptitudekönnen Sie beim ersten Versuch, etwas zu installieren, einen Schock erleben. aptitudeIch werde sofort versuchen, all diese Waisenkinder zu entfernen. Im Allgemeinen ist dies in Ordnung (sie sind schließlich Waisen und nicht notwendig), aber es gibt einen komplizierenden Fall. Die Desktop-Metapakete beinhalten alle eine komplexe Abhängigkeitskette, in der jedes einzelne Programm als Abhängigkeit eines virtuellen Paket-Wrappers abgerufen wird. Wenn Sie beispielsweise Gnome installiert haben, weil Sie das gnomePaket installiert haben , wurden alle Ihre normalen Desktop-Programme als Abhängigkeiten installiert. Wenn Sie eines dieser Programme (z. B. Ekiga oder Gedit) deinstalliert haben, dann in den Augen vonaptitudeDer Rest Ihres Desktops sollte ebenfalls entfernt werden. Beachten Sie, dass aptitude immer gefragt wird, bevor Dinge entfernt werden, aber die Leute oft 'Y' eingeben, ohne zu lesen. Nach meiner Erfahrung ist dies die häufigste Beschwerde / Verwirrung für Leute, die neu bei Debian sind.

Zwei allgemeine Ratschläge:

  1. Immer lesen Sie die Ausgabe von aptitudeoder apt-getsorgfältig, bevor ja zu etwas zu sagen.
  2. Denken Sie daran, dass Sie mit aptitude -s safe-upgradeoder immer einen Trockenlauf durchführen können aptitude -s install foo. Die -s|--simulateFlagge ist dein Freund.
Telemachos
quelle
4

Auf der Debian-Mailingliste wurde vor Jahren gesagt, dass der Wechsel von apt-get zu aptitude riskant sei. Dies ist zwei Debian-Versionen (sagen wir 10 Jahre) vor. All diese Probleme scheinen jetzt gelöst zu sein, und sicherlich habe ich weder unter Debian noch unter Ubuntu Probleme gesehen.

CarlF
quelle
1
Haben Sie einen Link zum Mailinglistenbeitrag?
Matthew
Matthew, stellst du dir vor, dass ich hier ein perfekt indiziertes Archiv der gesamten Mailingliste für Debian-Benutzer habe? Wenn aus dem Obigen hervorgeht, dass ich mich nicht einmal an das Jahr erinnere?
CarlF
@Matthew: eine Weile zurück (Sarge oder Anfang Etch), gab es viele Leute über einen Wechsel besorgt aus apt-getzu aptitude. Damals haben sie viele wesentliche Funktionen sehr unterschiedlich gehandhabt. Im Laufe der Zeit sind sie sich viel ähnlicher geworden und aptitudeeine Tonne gereift. In 90% der Fälle sollte es jetzt keine Probleme geben, wenn Sie wechseln. Siehe meinen Beitrag für einen Randfall.
Telemachos
2

Ich würde auch sagen, mach weiter und benutze aptitude.
Aptitudehat ein besseres Abhängigkeitsmanagement als apt-get. Dies hilft dabei, die Anzahl verwaister Pakete niedrig zu halten.
Ich habe vor einiger Zeit gelesen, dass aptitudeder Algorithmus zum besseren dist-Upgrade im Vergleich zu apt-get. Aber das ist kaum ein Killer-Feature, da es in der Lebensdauer eines Systems nicht so oft verwendet wird.

Außerdem haben Sie mehr Dinge in einem Tool vereint. Anstatt mich daran zu erinnern, wann oder mit welchen Schaltern ich anrufen soll apt-get, benutze ich einfach die Fähigkeit und erledige die meisten Dinge.apt-cachedpkg

Was die Komplikationen beim Wechsel "in der Mitte" betrifft: Ich kann mich nicht erinnern, welche gehabt zu haben, als ich es getan habe.

foraidt
quelle
1

Sind sie nicht nur eine andere Schnittstelle zum selben Backend?

Svish
quelle
2
aptitudeist eine funktionsfähigere Oberfläche ...
Quacksalber Quijote
Das könnte sein. Eine Schnittstelle mit mehr Funktionen bedeutet jedoch nicht unbedingt ein anderes Backend.
Svish
2
Nein, du hast recht, beide sind Frontends dpkg. dpkginstalliert aber nur die Pakete; Es sind die Frontends, die für die Suche, die Auflösung von Abhängigkeiten und das Herunterladen zuständig sind.
Quacksalber Quijote
Das Suchen, Herunterladen und Auflösen von Abhängigkeiten wird jedoch nichts bewirken. oder wenn es das tut, wäre das meiner Meinung nach sehr seltsam ...
Svish
2
habe gerade deinen letzten Kommentar bemerkt. Denken Sie daran, dass die Frontends entscheiden, was installiert werden soll. dpkg führt nur die Installation durch. Wenn etwas kaputt geht, liegt dies normalerweise daran, dass die Abhängigkeitsauflösung fehlgeschlagen ist oder dass der Benutzer die Abhängigkeitsauflösung deaktiviert hat (z. B. mit der Option --force ).
Quacksalber Quijote
1

Nach meiner Erfahrung haben sie eine andere Art, Paketversionen zu fixieren. In meinem Fall habe ich aptitude angewiesen, bestimmte Pakete zu sperren, vorausgesetzt, ich bin vor zukünftigen Updates sicher. Ich lag falsch; Der von Cron geplante Update-Manager, der apt-get verwendet, aktualisiert es zu meiner Bestürzung.

Drats, als ich dies schrieb, googelte ich und fand heraus, dass der Fehler ( # 557580 Eignung gehorcht nicht den Pins in den Einstellungen.d / *) bereits behoben wurde!

Syockit
quelle
-1

Ich benutze sowohl apt-get als auch aptitude ohne Probleme: Ich habe die gleiche Frage ... Warum sagen die Leute das ??? : D.

Gehen Sie weiter, und keine Sorge: Eignung ist nur ein Text-gui für apt-get, dass Sie auch als Kommandozeilen - Anwendung verwenden, zum Beispiel könnten apt-get install foodie gleiche ist wie aptitude install foo.

Grüße

dag729
quelle
Ich glaube nicht, dass sie gleich sind. Sofern sich nichts geändert hat, führt aptitude eine stärkere Abhängigkeitsverfolgung durch und entfernt alle Pakete, die automatisch installiert wurden, während apt-get dies nicht tut. Das heißt, wenn foo von bar abhängt und Sie foo mit apt-get installieren und entfernen, bleibt bar auf Ihrem System. Wenn Sie dasselbe mit Eignung tun, wird es nicht.
William Pursell
Du hast recht: siehe die Kommentare des ~ Quacksalbers unten.
dag729
@William, @ dag729: Aktuelle Versionen von apt-getbieten auch das automatische Entfernen von Paketen, die nur als Abhängigkeiten installiert sind. Der verbleibende Unterschied in dieser Hinsicht besteht darin, dass aptitudedie Abhängigkeiten (je nach Bedarf) sofort entfernt werden, Sie jedoch apt-getnur aufgefordert werden, den Befehl auszuführen apt-get autoremove. Aber beide verfolgen Abhängigkeiten jetzt auf die gleiche Weise. Sie unterscheiden sich jedoch immer noch in der Behandlung komplexer Abhängigkeiten und Randfälle (sehr komplizierte Installationen oder Entfernungen), aber für die Mehrheit der Menschen und die meisten Situationen funktionieren sie jetzt gleich.
Telemachos