staging.inyokaproject.org

apt (Kommandozeilenprogramm)

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels apt/apt.

linux_joy

Anmeldungsdatum:
6. Februar 2008

Beiträge: 636

Hallo!

1) Als Ergänzung zum Befehl list hätte ich hier noch die Option --all-versions (Kurzform: -a) für "alle verfügbaren Versionen".

2) Als Ergänzung zum Abschnitt "Vergleiche apt-get/apt" (welchen man dann wohl auch entsprechend umbenennen bzw. erweitern sollte) hätte ich hier noch diese Gegenüberstellung aus Die Debian-Paketverwaltungswerkzeuge, Abschnitt "8.1.2 APT", welche zusätzlich apt-cache mit einbezieht:

(...)
Seit Debian Jessie gibt es für einige häufig verwendete apt-get- und apt-cache-Befehle ein entsprechendes Äquivalent, das neue Binärprogramm apt. Das bedeutet, dass bekannte Befehle wie apt-get update, apt-get install, apt-get remove, apt-cache search oder apt-cache show jetzt auch einfach über apt aufgerufen werden können, also mit Befehlen wie apt update, apt install, apt remove, apt search oder apt show. Hier ein Überblick über die alten und neuen Befehle:

apt-get update → apt update
apt-get upgrade → apt upgrade
apt-get dist-upgrade → apt full-upgrade
apt-get install package → apt install package
apt-get remove package → apt remove package
apt-get autoremove → apt autoremove
apt-cache search string → apt search string
apt-cache policy package → apt list -a package
apt-cache show package → apt show package
apt-cache showpkg package → apt show -a package


Das Werkzeug apt vereint Funktionalitäten von apt-get und apt-cache und hat eine nette farbige Ausgabedarstellung, somit ist es für den Benutzer angenehmer zu bedienen. Zur Verwendung in Skripten oder in fortgeschrittenen Anwendungsfällen könnte apt-get trotzdem noch empfehlenswert oder nötig sein.
(...)



3) Als neuen Befehl (ich weiß jetzt nicht, ob er hier hinein oder woandershin gehört), hätte ich hier noch auto-apt aus APT Howto, Abschnitt "5.3 Pakete nach Bedarf installieren ":

Sie kompilieren gerade ein Programm, und es gibt einen Fehler, da eine .h Datei gebraucht wird, die Sie nicht haben. Das Programm auto-apt kann Sie vor solchen Szenarios bewahren. Es fragt, ob es die benötigten Pakete installieren soll, nachdem es den betroffenden Prozess gestoppt hat und führt ihn fort, wenn die relevanten Pakete installiert sind.

Der Befehl sieht folgendermassen aus:
root@linux # auto-apt run Kommando

Wobei Kommando das Kommando ist, das ausgeführt werden soll und evtl. nicht vorhandene Dateien benötigt. Beispiel:
root@linux # auto-apt run ./configure

Es wird fragen, ob die benötigten Pakete installiert werden sollen, und apt-get automatisch aufrufen. Wenn X läuft, ersetzt eine grafische Oberfläche die übliche Text-Oberfläche.

Auto-apt funktioniert mit einer Datenbank welche aktuell gehalten werden muss, um effektiv zu funktionieren. Das erreicht man mit den Kommandos auto-apt update, auto-apt updatedb und auto-apt update-local.

seriousness

Anmeldungsdatum:
22. Juni 2009

Beiträge: 198

Hallo,

unter Ubuntu Studio 20.04 gibt es eine neue Option, die noch nicht in der Manpage dokumentiert ist.

Sie lautet apt autopurge und entspricht dem Aufruf apt autoremove --purge.

Rechtfertigt das eine Ergänzung des Wikis?

noisefloor Team-Icon

Ehemaliger
(Themenstarter)
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

die Frage ist eher, warum es nicht dokumentiert ist. Vergessen? Unwahrscheinlich, aber nicht unmöglich. "Inoffizieller" Befehl, der jederzeit wieder "weg" sein kann? Könnte sein.

Von daher würde ich es _nicht_ aufnehmen wollen. Zumal das ja jetzt auch nix ist, was neu ist. Man tippt halt nur ein paar Zeichen weniger.

Gruß, noisefloor

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6389

noisefloor schrieb:

Von daher würde ich es _nicht_ aufnehmen wollen.

+1

apt dist-upgrade

macht auch irgendwas , ist aber nicht dokumentiert und steht deshalb genau so auch im Artikel. Und wenn es nicht dokumentiert ist, sollte man in diesem Fall die Finger davon lassen. Denn das, was dokumentiert ist, reicht schon, um einem auf die Füße zu fallen.

wers nicht glaubt: 9277411 ff

Schöne Grüße!

HasserDesErfolges

Avatar von HasserDesErfolges

Anmeldungsdatum:
19. August 2010

Beiträge: 138

https://www.it-swarm.com.de/de/command-line/apt-full-upgrade-vs-apt-get-dist-upgrade/960928343/ finde ich historisch interessant.

"1) dist-upgrade wird in Debian (nicht Ubuntu) verwendet. Es ist Teil des Prozesses, von einer Version zur nächsten zu migrieren, z. B. von Stretch zu Buster. Der nächste Befehl in Ubuntu ist do-release-upgrade.

2) Zu Beginn der Ubuntu-Entwicklung vor einem Jahrzehnt tauchte ein zweiter Grund für die Verwendung von dist-upgrade auf: Kernel-Upgrades fielen nicht unter eine normale upgrade -Definition für die Zeit (den Paketnamen einer Abhängigkeit) Änderungen), so war es für viele Jahre üblich, dist-upgrade in Ubuntu zu verwenden, um Kernel-Pakete zu aktualisieren. Dieses Kernel-Workflow-Problem wurde vor Jahren mit der Einführung von full-upgrade behoben, aber viele ältere Benutzer haben immer noch die Angewohnheit, dist-upgrade zu verwenden, und geben den veralteten Rat an Ihre Kinder weiter.

Seit 2016 war dist-upgrade ein Anachronismus in Ubuntu, nur weil apt-Pakete ohne viel Patching von Debian nach Ubuntu synchronisiert werden - niemand hat einen guten Grund gefunden, den Befehl während der Synchronisierung zu entfernen."

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 2726

Im Artikel steht im Zusammenhang mit dist-upgrade und full-upgrade :

Bei nicht mehr benötigten Abhängigkeiten werden ge­ge­be­nen­falls auch Pakete entfernt.

Das ist nicht meine Erfahrung. Nicht mehr benötigte Abhängigkeiten werden lediglich aufgelistet und sudo apt autoremove empfohlen.

Vermutlich ist eher folgendes gemeint:

Bei Abhängigkeits-Konflikten werden ge­ge­be­nen­falls auch für weniger wichtig gehaltene Pakete entfernt.

In man apt steht dazu:

       full-upgrade (apt-get(8))
           full-upgrade verrichtet die Funktion von »upgrade«, wird aber auch installierte Pakete
           entfernen, falls dies erforderlich ist, um ein Upgrade des Systems als Ganzes
           durchzuführen.

In man apt-get jedoch:

       dist-upgrade
           dist-upgrade enthält zusätzlich zu der Funktion von upgrade einen intelligenten
           Mechanismus zur Auflösung von geänderten Paketabhängigkeiten in den neuen
           Paketversionen. apt-get hat ein »intelligentes« Konfliktauflösungssystem und es wird
           versuchen, Upgrades der wichtigsten Pakete, wenn nötig zu Lasten der weniger wichtigen,
           durchzuführen. Aufgrunddessen könnte der dist-upgrade-Befehl einige Pakete entfernen.
           Die /etc/apt/sources.list-Datei enthält eine Liste von Orten, von denen gewünschte
           Paketdateien abgerufen werden. Siehe auch apt_preferences(5) für einen Mechanismus zum
           Außerkraftsetzen der allgemeinen Einstellungen für einzelne Pakete.

Da könnte es also Unterschiede zu geben, oder die man-Dokumentation ist unvollständig.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 7816

UlfZibis schrieb:

[…] In man apt steht dazu: […] In man apt-get jedoch: […] Da könnte es also Unterschiede zu geben

Die beiden Programme apt und apt-get unterscheiden sich vor allem in den Voreinstellungen, mit denen die einzelnen Befehle aufgerufen werden. Will heißen:

apt X und apt-get X führen zwar beide denselben Code X aus, jedoch in unterschiedlichen Programmumgebungen und deshalb werden sich auch die Ergebnisse unterscheiden. Somit kann/darf man Erfahrungen, die man z.B. mit apt-get X gemacht hat, nicht auf apt X übertragen und umgekehrt! Was apt bzw apt-get machen, steht in der jeweiligen Manpage. Wenn dort etwas unterschiedliches steht, dann verhalten sich die beiden Befehle auch gewollt unterschiedlich. Wenn ein Befehl für apt nicht dokumentiert ist, kann es sein, dass er an apt-get (oder an ein anderes APT-Familienmitglied) weitergereicht wird, daraus folgt aber nicht, dass es zu selben Ergebnis führen wird als beim direkten Aufruf, sondern es geschieht – Überraschung! – etwas undokumentiertes.

Im Wiki bitte keine Vermutungen, sondern entweder durch offizielle Dokumentation belegte Aussagen oder Berichte über Ergebnisse eigener sorgfältiger Experimente.

von.wert

Anmeldungsdatum:
23. Dezember 2020

Beiträge: 7756

kB schrieb:

Im Wiki bitte keine Vermutungen

ACK

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 2726

kB schrieb:

Die beiden Programme apt und apt-get unterscheiden sich vor allem in den Voreinstellungen, mit denen die einzelnen Befehle aufgerufen werden. Will heißen: [.....]

Das ist mir alles bekannt, doch darum geht's mir nicht.
Im man steht zu beiden Befehlen nichts davon, dass bei nicht mehr benötigten Abhängigkeiten Pakete entfernt werden. Und in der praktischen Anwendung kann ich auch beobachten, dass die davon betroffenen Pakete, also die zu denen keine Abhängigkeiten mehr bestehen, tatsächlich auch nicht entfernt werden, sondern nur zum Entfernen vorgeschlagen werden.

Tatsächlich entfernen die beiden Befehle aber ggf. Pakete, die apt aufgrund "»intelligentem« Konfliktauflösungssystem" für weniger wichtig hält, egal, ob sie für den User wichtig und nötig sind. So habe ich z.B. schon gesehen, dass dist-upgrade eine ganze Latte von Paketen, die für mich wichtig und nötig sind, deinstallieren wollte, um FFMPEG zu aktualisieren.

In man apt-get jedoch: […] Da könnte es also Unterschiede zu geben.

Das sollte lediglich ein ergänzender Hinweis sein, dass apt full-upgrade und apt-get dist-upgrade möglicherweise was leicht verschiedenes machen, obwohl im Wiki beides so behandelt wird, als würden sie dasselbe machen. Genauso kann es aber auch sein, dass sie tatsächlich dasselbe machen, und nur die jeweiligen Erklärungen in man unterschiedlich detailliert sind.

noisefloor Team-Icon

Ehemaliger
(Themenstarter)
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

dass dist-upgrade eine ganze Latte von Paketen, die für mich wichtig und nötig sind, deinstallieren wollte, um FFMPEG zu aktualisieren.

Dann standen die Pakete ziemlich sicher im Konflikt. Dann entfernt die Paketverwaltung die, nach Rückfrage.

Gruß, noisefloor

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 2726

noisefloor schrieb:

Dann standen die Pakete ziemlich sicher im Konflikt. Dann entfernt die Paketverwaltung die,

Genau so war es. Genau diese Bedingung für das Entfernen von Paketen steht aber nicht im Wiki. Da steht stattdessen "nicht benötigt", was ich aus oben näher erläuterten Gründen 1. für falsch und 2. für nicht zutreffend erachte. Deshalb mein Korrekturvorschlag:

Bei Abhängigkeits-Konflikten werden ge­ge­be­nen­falls auch für weniger wichtig gehaltene Pakete entfernt.

Oder:

Bei Abhängigkeits-Konflikten werden ge­ge­be­nen­falls auch Pakete entfernt, die für weniger wichtig gehalten werden.

nach Rückfrage.

Das ist richtig. Bei der GUI habe ich das aber eben schon anders erlebt (konnte ich dann nur in den APT logs unter /var/log nachträglich erkennen). Die komplette Installation war dann verhunzt und ließ sich trotz Mühen auch nicht mehr in den vorigen Stand versetzen.

tomtomtom Team-Icon

Supporter
Avatar von tomtomtom

Anmeldungsdatum:
22. August 2008

Beiträge: 52312

UlfZibis schrieb:

Genau so war es. Genau diese Bedingung für das Entfernen von Paketen steht aber nicht im Wiki.

Das gehört imho auch nicht zur Aktualisierung, Konflikte werden bei der Installation von Paketen an sich aufgelöst. Hier liegt das nunmal daran, dass der Anbieter der Fremdquelle (der für die weitere Nutzung ja bezahlt werden möchte) offenbar Abhängigkeiten geändert hat.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 2726

tomtomtom schrieb:

UlfZibis schrieb:

Genau so war es. Genau diese Bedingung für das Entfernen von Paketen steht aber nicht im Wiki.

Das gehört imho auch nicht zur Aktualisierung,

Steht aber so in man von apt und apt-get.

Konflikte werden bei der Installation von Paketen an sich aufgelöst.

... was aber nicht immer möglich ist.

Hier liegt das nunmal daran, dass der Anbieter der Fremdquelle (der für die weitere Nutzung ja bezahlt werden möchte) offenbar Abhängigkeiten geändert hat.

Der Grund für die Nichtauflösbarkeit von Konflikten dürfte APT ziemlich schnurz sein.

apt-get hat ein »intelligentes« Konfliktauflösungssystem und es wird versuchen, Upgrades der wichtigsten Pakete, wenn nötig zu Lasten der weniger wichtigen, durchzuführen. Aufgrunddessen könnte der dist-upgrade-Befehl einige Pakete entfernen.

tomtomtom Team-Icon

Supporter
Avatar von tomtomtom

Anmeldungsdatum:
22. August 2008

Beiträge: 52312

Nochmal: Das hat nichts damit zu tun, ob apt/apt-get etwas für "weniger wichtig" halten. Konflikte stehen exakt als solche in der debian/control und werden als solche ausgewertet. Da gibt es keine "intelligenz" dahinter. Nur ja oder nein.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 2726

tomtomtom schrieb:

Nochmal: Das hat nichts damit zu tun, ob apt/apt-get etwas für "weniger wichtig" halten. Konflikte stehen exakt als solche in der debian/control und werden als solche ausgewertet. Da gibt es keine "intelligenz" dahinter. Nur ja oder nein.

Dann muss aber alternativ das, was in man steht, falsch sein. Da steht nun mal:

apt-get hat ein »intelligentes« Konfliktauflösungssystem und es wird versuchen, Upgrades der wichtigsten Pakete, wenn nötig zu Lasten der weniger wichtigen, durchzuführen. Aufgrunddessen könnte der dist-upgrade-Befehl einige Pakete entfernen.

Und dass APT das so macht, konnte ich hautnah erleben, und nicht nur im Fall des vermuksten PPA.