[[Vorlage(getestet, general)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal verwenden] [:sudo: Root-Rechte] [:Editor: Einen Editor verwenden] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] '''apt''' ist ein Kommandozeilen-Programm für das [:APT:Advanced Packaging Tool], der Paketverwaltung, die bei Debian, Ubuntu und damit auch allen offiziellen Ubuntu-Varianten zum Einsatz kommt. apt kann Pakete installieren, deinstallieren oder auch nur Informationen zu Paketen anzeigen. Außerdem besitzt der Befehl sowohl eine farbige Ausgabe als auch eine Fortschrittsanzeige. Das Programm ist gegenüber apt-get stärker für das interaktive Arbeiten auf der Kommandozeile optimiert und kann wie [:dpkg:] auch einzelne .deb-Pakete installieren. = Installation = Das Advanced Package Tool ist grundlegender Bestandteil von Ubuntu. Damit ist auch der Befehl apt auf jedem System verfügbar. = Benutzung = apt verwendet eine Reihe von Optionen zum Verwalten von Paketen, zum Suchen und Durchsuchen von Paketen und deren Beschreibung sowie zum Editieren der Datei mit den Paketquellen. Die allgemeine Syntax des Befehls lautet[1]: {{{#!vorlage Befehl apt [OPTIONEN] BEFEHL }}} Alle Befehle zum Verwalten von Paketen (also Installieren, Deinstallieren etc.) und Editieren benötigen Root-Rechte[2]. Die Befehle zum (Durch-)Suchen können mit normalen Nutzerrechten ausgeführt werden. == Pakete verwalten == Die Befehle zur Verwaltung von Paketen lauten: {{{#!vorlage Tabelle <-2 rowclass="titel">apt Befehle zur Paketverwaltung +++ Befehl Beschreibung +++ `update` Neueinlesen der Paketlisten +++ `upgrade` Installierte Pakete auf eine höhere Version aktualisieren. Um geänderte Abhängigkeiten zu erfüllen, werden ge­ge­be­nen­falls auch neue Pakete installiert. +++ `full-upgrade` Wie `upgrade` und zusätzlich können bei dem Vorgang auch Pakete entfernt werden. [[BR]] __Dieser Befehl sollte nur mit besonderer Vorsicht eingesetzt werden!__ [[BR]] Die Option `dist-upgrade` ist ein in der Hilfe und der Manpage von `apt` undokumentierter interner Alias. +++ `install PAKETNAME` installiert das Paket `PAKETNAME` +++ `install /PFAD/ZUM/PAKET` installiert ein lokales Paket und dessen Abhängigkeiten (siehe auch [#Problembehebung Problembehebung]) +++ `reinstall PAKETNAME` Installiert das Paket `PAKETNAME` neu. Alias für `install --reinstall` +++ `remove PAKETNAME` deinstalliert das Paket `PAKETNAME` +++ `purge PAKETNAME` wie `remove`, es werden aber zusätzlich auch die zugehörigen Konfigurationsdateien - nicht des Users - gelöscht +++ `autoremove` Deinstalliert alle als Abhängigkeit mitinstallierten Pakete, die jetzt keine Abhängigkeiten mehr zu anderen Paketen haben und deshalb nicht mehr verwendet werden. In Kombination mit `--purge` werden auch die zugehörigen Konfigurationsdateien - nicht des Users - gelöscht. }}} == Suchen/Durchsuchen == Die Befehle zum Suchen und Durchsuchen von Paketen lauten: {{{#!vorlage Tabelle <-2 rowclass="titel">apt Befehle zur Suche +++ Befehl Beschreibung +++ `search SUCHBEGRIFF` Zeigt alle Pakete an, in deren Namen oder Beschreibung der Begriff `SUCHBEGRIFF` vorkommt. Als Suchbegriff kann auch ein regulärer Ausdruck verwendet werden. +++ `show PAKETNAME` zeigt Informationen zum Paket `PAKETNAME` an +++ `list SUCHMUSTER [OPTION]` Listet alle Paketnamen auf, die auf das Suchmuster `SUCHMUSTER` passen. Das Suchmuster kann dabei auch ein [wikipedia_en:Glob_(programming):Glob-Pattern] sein. Als Optionen stehen z.B. `--installed` (listet nur Pakete auf, die auch installiert sind) und `--upgradeable` (listet nur Pakete auf, für die eine aktualisierte Version in den Paketquellen bereit steht) zur Verfügung. }}} == sources.list editieren == Mit dem Befehl {{{#!vorlage Befehl sudo apt edit-sources }}} wird die Datei [:sources.list:/etc/apt/sources.list] mit einem Editor[3] geöffnet, so dass die Paketquellen editiert werden können. Sind auf dem System mehrere Editoren installiert, wird vor dem Öffnen gefragt, welcher Editor verwendet werden soll. (Da apt im Terminal ausgeführt wird, werden nur reine Texteditoren zum Editieren angeboten, keine grafischen.) = Hinweise = == Verwendung in Skripten == Die Hilfeseiten empfehlen, apt nicht in Skripten zu benutzen, da es nicht zwingend abwärtskompatibel und nicht als Entwicklerwerkzeug konzipiert worden ist. Dies wird auch in der [:man:Manpage] zu apt explizit hervorgehoben: >"Die apt(8)-Befehlszeile wurde als Endanwenderwerkzeug entworfen und kann bei Versionswechseln die Ausgabe ändern. Obwohl es versucht, nicht die Abwärtskompatibilität zu unterbrechen, kann sie nicht garantiert werden. Alle Funktionalitäten von apt(8) sind in apt-cache(8) und apt-get(8) über APT-Optionen verfügbar. Bitte benutzen Sie vorzugsweise diese Befehle in Ihren Skripten." == Vergleiche apt-get/apt == {{{#!vorlage Tabelle <-7 rowclass="titel">Vergleich apt/apt-get +++ apt install apt-get install apt upgrade apt-get upgrade apt full-upgrade apt-get dist-upgrade +++ installierte Pakete auf eine neuere Version aktualisieren ja ja ja ja ja ja +++ ggf. Installation neuer Pakete ja ja ja nein ja ja +++ ggf. Entfernen installierter Pakete nein nein nein nein ja ja (s. Hinweis) +++ installiert auch Abhängigkeiten der angeforderten Pakete ja nein -- -- -- -- }}} {{{#!vorlage Hinweis Die Befehle `apt full-upgrade` und `apt-get dist-upgrade` sind keine Synonyme! Die beiden Operationen erfüllen zwar ähnliche Aufgaben, verwenden aber unterschiedliche Strategien und führen daher __nicht__ zwangsläufig zu selben Ergebnis. Zu den Unterschieden lese man die Manpages. Beide Befehle sind bei Ubuntu bei Beschränkung auf die offiziellen Paketquellen nicht erforderlich. Bei der Verwendung von manchen Fremdquellen können sie erforderlich werden, aber auch Chaos im Ubuntu-System anrichten. }}} {{{#!vorlage Tabelle <-4 rowclass="titel">Unterschiede apt/apt-get +++ <:>apt <:>apt-get +++ `update` <-2:>Neueinlesen der Paketlisten +++ `upgrade` • Installierte Pakete auf eine neuere Version aktualisieren. [[BR]] • __Um geänderte Abhängigkeiten zu erfüllen, werden ge­ge­be­nen­falls auch neue Pakete installiert.__ • Installierte Pakete auf eine neuere Version aktualisieren. [[BR]] • __Es werden keine neuen Pakete installiert.__ +++ `full-upgrade` • Installierte Pakete auf eine neuere Version aktualisieren. [[BR]] • Um geänderte Abhängigkeiten zu erfüllen, werden ge­ge­be­nen­falls auch neue Pakete installiert. [[BR]] • __Vorsicht: Es werden ggf. Pakete – auch manuell installierte – entfernt, wenn dies zur Erfüllung des beauftragten Upgrades erforderlich ist.__ <:> - nicht dokumentiert - +++ `dist-upgrade` <:> - nicht dokumentiert - • Installierte Pakete auf eine neuere Version aktualisieren. [[BR]] • Um geänderte Abhängigkeiten zu erfüllen, werden ge­ge­be­nen­falls auch neue Pakete installiert. [[BR]] • __Vorsicht: Es werden ggf. Pakete – auch manuell installierte – entfernt, wenn sich Paketabhängigkeiten im Zuge des beauftragten Upgrades ändern werden.__ +++ `install PAKETNAME` <:-2>installiert das Paket `PAKETNAME` +++ `install /PFAD/ZUM/PAKET` <:-2>installiert ein lokales Paket und dessen Abhängigkeiten (siehe auch [#Problembehebung Problembehebung]) +++ `reinstall PAKETNAME` <:-2>Installiert das Paket `PAKETNAME` neu. Alias für `install --reinstall` +++ `remove PAKETNAME` <:-2>deinstalliert das Paket `PAKETNAME` +++ `purge PAKETNAME` <:-2>wie `remove`, es werden aber zusätzlich auch die zugehörigen Konfigurationsdateien - nicht des Users - gelöscht +++ `autoremove` <:-2>Deinstalliert alle automatisch installierten Pakete, die keine Abhängigkeiten mehr zu anderen Paketen haben und deshalb nicht mehr benötigt werden. In Kombination mit `--purge` werden auch die zugehörigen Konfigurationsdateien - nicht des Users - gelöscht. }}} = Problembehebung = == Ein einzelnes Paket installieren == Apt kann auch ein lokal gespeichertes Einzelpaket installieren, wobei es im Gegensatz zu [:dpkg:] Abhängigkeiten automatisch auflösen und installieren kann. Allerdings ist zwingend eine Pfadangabe erforderlich. Das folgende Beispiel soll dies verdeutlichen, wenn man ein im aktuellen Ordner gespeichertes Paket mit dem Namen '''foo_1.0_all.deb''' installieren möchte: * ''falsch'': {{{#!vorlage Befehl sudo apt install foo_1.0_all.deb # falsch }}}{{{ Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig E: Paket foo_1.0_all.deb kann nicht gefunden werden. E: Mittels des Musters »foo_1.0_all.deb« konnte kein Paket gefunden werden. E: Mittels regulärem Ausdruck »foo_1.0_all.deb« konnte kein Paket gefunden werden. }}} * '''richtig''': {{{#!vorlage Befehl sudo apt install ./foo_1.0_all.deb }}}{{{ Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Hinweis: »foo« wird an Stelle von »./foo_1.0_all.deb« gewählt. Die folgenden zusätzlichen Pakete werden Installiert bar Die folgenden NEUEN Pakete werden installiert: foo bar 0 aktualisiert, 2 neu installiert, 0 zu entfernen Es müssen noch 1.272 kB von 1.365 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 13,2 MB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n] }}} = Links = * [:APT:] {Übersicht} - Übersichtsseite zum Advanced Package Tool * [man:apt:Manpage] {en} * [https://linuxundich.de/gnu-linux/apt-get-apt-cache-laesst-sich-schon-lange-mit-apt-abkuerzen/ Blogbeitrag] {de} zu apt auf Linuxundich.de (von März 2016) * [https://www.howtogeek.com/234583/simplify-command-line-package-management-with-apt-instead-of-apt-get/ Simplify Command-Line Package Management with APT instead of apt-get] {en} - Blogbeitrag, 11/2015 #tag: Shell, Paketverwaltung