|
|
(37 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| == Advanced Packaging Tool ==
| | '''Advanced Packaging Tool''' - (APT) |
| APT ist ein Paketmanagement-System, das im Bereich des Betriebssystems Debian GNU/Linux entstanden ist. | |
|
| |
|
| Mittels APT ist es sehr einfach, Programmpakete zu suchen, zu installieren oder auch das ganze System auf den neuesten Stand zu bringen.
| | == Beschreibung == |
| | APT ist ein Paketmanagement-System, das im Bereich des Betriebssystems Debian GNU/Linux entstanden ist |
|
| |
|
| Das Advanced Packaging Tool (APT) ist ein Paketverwaltungssystem, das im Bereich des Betriebssystems Debian GNU/Linux entstanden ist und dpkg zur eigentlichen Paketverwaltung benutzt. Ziel ist es, eine einfache Möglichkeit zur Suche, Installation und Aktualisierung von Programmpaketen zur Verfügung zu stellen.
| | Mittels APT ist es sehr einfach Programmpakete |
| | * zu suchen |
| | * zu installieren |
| | * das ganze System auf den neuesten Stand zu bringen |
|
| |
|
| APT besteht aus einer Programmbibliothek und mehreren diese Bibliothek nutzenden Kommandozeilen-Programmen, von denen <tt>apt-get</tt> und <tt>apt-cache</tt> zentral sind. Seit Debian 3.1 wird die Benutzung von aptitude als konsolenbasierendes Paketverwaltungssystem empfohlen. | | Das Advanced Packaging Tool (APT) ist ein Paketverwaltungssystem, das im Bereich des Betriebssystems Debian GNU/Linux entstanden ist und dpkg zur eigentlichen Paketverwaltung benutzt |
|
| |
|
| APT steht auch in OpenSolaris zur Verfügung (es wurde in die Distribution Nexenta OS aufgenommen) und wurde auch auf Mac OS X portiert, wo es im Rahmen des Fink-Projektes zur Installation von Debian-Softwarepaketen genutzt wird.
| | * Ziel ist es, eine einfache Möglichkeit zur Suche, Installation und Aktualisierung von Programmpaketen zur Verfügung zu stellen |
|
| |
|
| Basierend auf der Idee von APT wurde Win-Get erschaffen, welches eine ähnliche Paketverwaltung für MS Windows zur Verfügung stellt.
| | APT besteht aus einer Programmbibliothek und mehreren diese Bibliothek nutzenden Kommandozeilen-Programmen, von denen <tt>apt-get</tt> und <tt>apt-cache</tt> zentral sind |
|
| |
|
| == Interna ==
| | APT steht auch in OpenSolaris zur Verfügung (es wurde in die Distribution Nexenta OS aufgenommen) und wurde auch auf Mac OS X portiert, wo es im Rahmen des Fink-Projektes zur Installation von Debian-Softwarepaketen genutzt wird |
| In der Datei <tt>/etc/apt/sources.list</tt> stehen die sogenannten Repositories, also Quellen für Pakete. Dies können entweder CDs oder DVDs, Verzeichnisse auf der Festplatte oder, öfter, Verzeichnisse auf HTTP- oder FTP-Servern sein. Befindet sich das gesuchte Paket auf einem Server (oder einem lokalen Datenträger), so wird dieses automatisch heruntergeladen und installiert.
| |
|
| |
|
| Die Pakete liegen im Debian-Paketformat (.deb) vor, in dem auch die jeweiligen Abhängigkeiten der Programmpakete untereinander abgelegt sind. So werden automatisch für ein Programm auch eventuell erforderliche Programmbibliotheken mit heruntergeladen und installiert.
| | Basierend auf der Idee von APT wurde Win-Get erschaffen, welches eine ähnliche Paketverwaltung für MS Windows zur Verfügung stellt |
|
| |
|
| APT setzt auf dpkg auf. APT beschäftigt sich in erster Linie mit der Beschaffung von Paketen, dem Vergleich von verfügbaren Versionen der Pakete und der Verwaltung von Paket-Archiven.
| | == Themen == |
| | | {| class="wikitable options big" |
| == Frontends == | |
| Außer der oben erwähnten Kommandozeilenschnittstelle gibt es weitere Frontends für die Paketverwaltung, die APT verwenden. Aptitude bietet eine zeichenorientierte Benutzerschnittstelle. Synaptic ist ein GUI-Frontend für die Desktop-Umgebung.
| |
| | |
| Unter KDE stehen außerdem die Programme Adept oder KPackageKit zur Verfügung. Letzteres unterstützt neben APT zusätzlich weitere Systeme wie RPM. Mit der auf der Abstraktionsschicht QApt aufbauenden Muon Package Management Suite sind daneben auch weitere GUI-Frontends in der Entwicklung.
| |
| | |
| Smart Package Manager kann ebenfalls auf Repositories zugreifen, die für APT erstellt wurden. Er nutzt dabei aber nicht APT, sondern eigene Routinen.
| |
| | |
| Mit Fink und Cydia stehen Frontends für Mac OS X und dessen Derivate zur Verfügung.
| |
| | |
| == APT-RPM ==
| |
| Obwohl ursprünglich für Debian-Programmpakete geschrieben, wurde APT später auch auf RPM-Systeme portiert.
| |
| | |
| Gustavo Niemeyer führte die Portierung für die Linux-Distribution Conectiva durch und pflegte diese geraume Zeit als Maintainer. Inzwischen arbeitet er aber hauptsächlich an seinem neuen Projekt Smart Package Manager, und APT-RPM wird von anderen Entwicklern gepflegt und weiterentwickelt.
| |
| | |
| == Apt-cacher und apt-proxy ==
| |
| Wer mehrere Rechner mit einer APT-basierten Paketverwaltung im Netz hat, kann sein Netz und die Server, die die Pakete zur Verfügung stellen, erheblich entlasten, indem er eines dieser Programme einsetzt.
| |
| | |
| Im Gegensatz zu weniger spezifischen Proxyservern wie etwa Squid, die nur die in den Übertragungsprotokollen enthaltenen Informationen verwenden können, kennen und verwerten diese Proxies die Paket-Struktur und sichern die Aktualität ihrer gespeicherten Daten entsprechend. Apt-cacher kann so eingestellt werden, dass er sich in regelmäßigen Abständen automatisch aktualisiert.
| |
| | |
| == apt-get ==
| |
| [[apt-get]]
| |
| | |
| == apt-Kommandos ==
| |
| [[APT/Kommandos]]
| |
| | |
| == Paketquellen ==
| |
| [[APT/Paketquellen]]
| |
| | |
| == Apt-Pinning ==
| |
| [[APT/Pinning]]
| |
| | |
| == apt-cache ==
| |
| '''apt-cache''' führt keine Änderungen am System aus. Es dient allein der Anzeige und Manipulation der Daten im Paketcache bzw. der Paket-Metadaten.
| |
| | |
| Der Paketcache ist die interne Datenbank, in der Informationen zu allen verfügbaren Paketen gespeichert werden.
| |
| | |
| === Kommandos ===
| |
| Ein apt-cache Befehl besteht aus den ''Optionen'', dem ''Kommando'' und eventuell der Angabe eines ''Paket''namens. Generell kann man apt-cache als normaler Benutzer ausführen , vereinzelte Optionen können Root-Rechte erfordern.
| |
| | |
| apt-cache [Option(en)] Kommando [Paket]
| |
| | |
| {| | |
| |-
| |
| | colspan="2" | '''Kommandos zu apt-cache '''
| |
| |-
| |
| | | '''add '''
| |
| | | Fügt eine Datei mit Paketindizes dem Paketcache hinzu.
| |
| |-
| |
| | | '''gencaches '''
| |
| | | Baut den Paketcache auf.
| |
| |- | | |- |
| | | '''showpkg ''' | | | [[apt-get]] || |
| | | Zeigt die Meta-Informationen an. | |
| |- | | |- |
| | | '''stats ''' | | | [[APT/Kommandos]] || |
| | | Zeigt Statistiken zum Paketcache an. | |
| |- | | |- |
| | | '''showsrc ''' | | | [[APT/Paketquellen]] || |
| | | Zeigt Informationen zum Quelltext eines ''Paket''s an. | |
| |- | | |- |
| | | '''dump ''' | | | [[APT/Pinning]] || |
| | | Zeigt eine Liste aller laut Paketcache verfügbaren Pakete an. | |
| |- | | |- |
| | | '''dumpavail ''' | | | [[Apt-cache]] || |
| | | Zeigt eine ausführliche Liste aller laut Paketcache verfügbaren Pakete an. | |
| |- | | |- |
| | | '''unmet ''' | | | [[apt-file]] || |
| | | Zeigt eine Liste aller nicht erfüllten Abhängigkeiten an. | |
| |- | | |- |
| | | '''show ''' | | | [[apt-key]] || |
| | | Zeigt die Paketinformationen zu einem oder mehreren Paketen an. | |
| |- | | |- |
| | | '''search ''' | | | [[Advanced Packaging Tool/Tipps|Tipps]] || |
| | | Durchsucht die Paketinformationen nach einem oder mehreren Suchbegriffen. | |
| |- | | |- |
| | | '''depends ''' | | | [[dpkg]] || APT setzt auf dpkg auf |
| | | Zeigt eine Liste der Abhängigkeiten der ''Paket''e. | |
| |- | | |- |
| | | '''rdepends ''' | | | [[aptitude]] || |
| | | Zeigt eine Liste der Pakete, die vom eingegebenen ''Paket'' abhängen. | |
| |- | | |- |
| | | '''pkgnames ''' | | | [[Advanced Packaging Tool/Problembehebung|Problembehebung]] || |
| | | Zeigt eine Liste von ''Paket''namen, die mit dem Suchbegriff anfangen. | |
| |- | | |- |
| | | '''dotty ''' | | | [[debconf]] || |
| | | Erstellt einen Graphen der Abhängigkeiten des ''Paket''s, der mit '''dotty''' verarbeitet werden kann. | |
| |- | | |- |
| | | '''xvcg ''' | | | [[apt-proxy]] || Apt-cacher und apt-proxy |
| | | Erstellt einen Graphen der Abhängigkeiten des ''Paket''s, der mit '''xvcg''' verarbeitet werden kann. | |
| |- | | |- |
| | | '''policy ''' | | | [[Advanced Packaging Tool/APT-RPM|APT-RPM]] || |
| | | Zeigt die Prioritäten der Quellen oder eines ''Paket''s an. | |
| |- | | |- |
| | | '''madison ''' | | | [[Advanced Packaging Tool/Frontends|Frontends]] || |
| | | Zeigt die verfügbaren Versionen eines ''Paket''s in den verschiedenen Quellen an. | |
| | |
| |- | | |- |
| | | [[/etc/apt/sources.list]] || |
| |} | | |} |
| ==== apt-cache add ====
| |
| <tt>add</tt> fügt einen in einer ''Datei'' gespeicherten Paketindex dem Paketcache hinzu. add fehlt in der deutschen Übersetzung der Manpage.
| |
|
| |
|
| apt-cache add DATEI
| | <noinclude> |
|
| |
|
| ==== apt-cache gencaches ==== | | == Anhang == |
| <tt>gencache</tt> baut den Paketcache sowie die Liste der installierten Programme neu auf und prüft auf fehlende Abhängigkeiten. | | === Siehe auch === |
| | <div style="column-count:2"> |
| | <categorytree hideroot=on mode="pages">APT</categorytree> |
| | </div> |
| | ---- |
| | {{Special:PrefixIndex/{{BASEPAGENAME}}/}} |
|
| |
|
| Diese Aktion wird nach dem Download der Quellen durch apt-get update angestoßen. Der selbe Vorgang wird von apt-get check angestoßen. Erfordert Rootrechte.
| | === Links === |
| | ==== Weblinks ==== |
|
| |
|
| sudo apt-cache gencaches
| | [[Kategorie:APT]] |
| | |
| ==== apt-cache showpkg ====
| |
| <tt>showpkg</tt> zeigt detaillierte Informationen zu einem ''Paket'' an. Sie bestehen aus den verschiedenen verfügbaren Versionen in allen Quellen sowie den eigentlichen Paketinformationen inklusive der Abhängigkeiten.
| |
| | |
| showpkg benötigt die Angabe mindestens eines ''Paket''namens, mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden. In diesem Fall werden die Informationen nacheinander ausgegeben.
| |
| | |
| apt-cache showpkg PAKET1 [PAKET2]
| |
| | |
| ==== apt-cache stats ====
| |
| <tt>stats</tt> zeigt eine ausführliche Übersicht der Statistiken zum Paketcache an, unter anderem die Anzahl der gelisteten ''Paket''e und die Größe im Dateisystem. Es sind keine weiteren Optionen erforderlich.
| |
| | |
| apt-cache stats
| |
| | |
| ==== apt-cache showsrc ====
| |
| <tt>showsrc</tt> zeigt detaillierte Informationen zum verfügbaren Quelltext eines ''Paket''s an.
| |
| | |
| Diese bestehen aus den Prüfsummen der Quelltextarchive und den Abhängigkeiten, die zum Kompilieren des Quelltexts benötigt werden. showsrc benötigt die Angabe mindestens eines ''Paket''namens, mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden. In diesem Fall werden die Informationen nacheinander ausgegeben.
| |
| | |
| apt-cache showsrc PAKET1 [PAKET2]
| |
| | |
| ==== apt-cache dump ====
| |
| <tt>dump</tt> zeigt eine Liste aller verfügbaren ''Paket''e im Paketcache an, inklusive der Abhängigkeiten und weiteren Informationen zum Paketcache. Diese Informationen werden nur im Fehlerfall benötigt.
| |
| | |
| apt-cache dump
| |
| | |
| ==== apt-cache dumpavail ====
| |
| <tt>dumpavail</tt> zeigt eine Liste aller verfügbaren ''Paket''e im Paketcache, der Programmversionen und der zugehörigen Paketbeschreibungen an.
| |
| | |
| apt-cache dumpavail
| |
| | |
| ==== apt-cache unmet ====
| |
| <tt>unmet</tt> zeigt eine Liste der nicht erfüllten Abhängigkeiten an. Diese Liste beinhaltet auch die nicht installierten ''Vorschläge'' der ''Paket''e. unmet kann mit und ohne Angabe von Paketnamen aufgerufen werden.
| |
| | |
| Wird unmet ohne ''Paket''namen aufgerufen, werden die Informationen für alle installierten Paket(e) ausgegeben.
| |
| | |
| Gibt man bestimmte ''Paket''namen an, müssen diese durch Leerzeichen getrennt angegeben werden.
| |
| | |
| apt-cache unmet
| |
| apt-cache unmet PAKET1 [PAKET2]
| |
| | |
| ==== apt-cache show ====
| |
| <tt>show</tt> zeigt detaillierte Informationen zu einem oder mehreren ''Paket''en an.
| |
| | |
| Diese Informationen beinhalten eine Liste der Abhängigkeiten, eine Beschreibung und die angebotene Version. show benötigt die Angabe mindestens eines ''Paket''namens, mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden.
| |
| | |
| In diesem Fall werden die Informationen nacheinander ausgegeben.
| |
| | |
| apt-cache show PAKET1 [PAKET2]
| |
| | |
| ==== apt-cache search ====
| |
| <tt>search</tt> durchsucht den Paketcache in den Namen und Beschreibungsfeldern nach dem ''Suchbegriff'' und gibt die entsprechenden ''Paketnamen'' aus.
| |
| | |
| Der ''Suchbegriff'' kann auch ein Regulärer Ausdruck sein. Werden mehrere ''Suchbegriff''e angegeben, werden ausschließlich Pakete angeben, in deren Beschreibung alle Begriffe gefunden wurden.
| |
| | |
| apt-cache search SUCHBEGRIFF
| |
| | |
| ==== apt-cache depends ====
| |
| <tt>depends</tt> gibt eine Liste der Pakete an, von denen das genannte ''Paket'' abhängt. depends benötigt die Angabe mindestens eines ''Paket''namens, mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden. In diesem Fall werden die Informationen nacheinander ausgegeben.
| |
| | |
| apt-cache depends PAKET1 [PAKET2]
| |
| | |
| ==== apt-cache rdepends ====
| |
| <tt>rdepends</tt> gibt eine Liste der Pakete an, die vom genannten ''Paket'' abhängen, die Reverse Depends (Rückwärtsabhängigkeiten).
| |
| | |
| rdepends benötigt die Angabe mindestens eines ''Paket''namens, mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden.
| |
| | |
| In diesem Fall werden die Informationen nacheinander ausgegeben.
| |
| | |
| apt-cache rdepends PAKET1 [PAKET2]
| |
| | |
| ==== apt-cache pkgnames ====
| |
| <tt>pkgnames</tt> gibt zu einem ''Suchbegriff'' eine Liste von ''Paket''en aus, deren Namen mit dem ''Suchbegriff'' anfangen. Der ''Suchbegriff'' darf kein Regulärer Ausdruck sein.
| |
| | |
| Wird pkgnames ohne Suchbegriff aufgerufen, gibt es alle verfügbaren Pakete inklusive der Metapakete aus.
| |
| | |
| apt-cache pkgnames SUCHBEGRIFF
| |
| | |
| ==== apt-cache dotty ====
| |
| <tt>dotty</tt> erstellt aus den Abhängigkeiten der genannten ''Paket''e eine Vorlage, die mit '''dot''' zu einem Graph weiterverarbeitet werden kann.
| |
| | |
| Die Nutzung ist mit einer Ausgabeumleitung sinnvoll. dotty benötigt die Angabe mindestens eines ''Paket''namens, mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden.
| |
| | |
| apt-cache dotty PAKET1 [PAKET2]
| |
| | |
| ===== Auswertung von dotty =====
| |
| Zur Umwandlung der Ausgabe wird <tt>dot</tt> aus dem Paket Graphviz - Graph Visualization Software genutzt:
| |
| | |
| sudo apt-get install graphviz
| |
| | |
| Dotty kann keine größeren Zusammenhänge darstellen. Um die Berechnung in Grenzen zu halten, hilft folgende APT-Einstellung:
| |
| | |
| APT::Cache::GivenOnly "true";
| |
| | |
| in der APT-Konfiguration.
| |
| | |
| Die Option kann aber auch direkt beim Aufruf übergeben werden.
| |
| | |
| ==== apt-cache xvcg ====
| |
| <tt>xvcg</tt> erstellt aus den Abhängigkeiten der genannten ''Paket''e eine Vorlage, die mit '''xvcg''' zu einem Graph weiterverarbeitet werden kann.
| |
| | |
| Die Nutzung ist mit einer Ausgabeumleitung sinnvoll. xvcg benötigt die Angabe mindestens eines ''Paket''namens, mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden. Die Weiterverarbeitung benötigt die VCG Tools.
| |
| | |
| apt-cache xvcg PAKET1 [PAKET2]
| |
| | |
| ==== apt-cache policy ====
| |
| <tt>policy</tt> zeigt ohne Angabe eines ''Paket''namens eine Übersicht der Prioritäten der einzelnen Paketquellen an, mit Angabe von ''Paket''namen eine Übersicht der verfügbaren Versionen und der Prioritäten ihrer Quellen.
| |
| | |
| Mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden. In diesem Fall werden die Informationen nacheinander ausgegeben.
| |
| | |
| apt-cache policy
| |
| | |
| oder
| |
| | |
| apt-cache policy PAKET1 [PAKET2]
| |
| | |
| ==== apt-cache madison ====
| |
| <tt>madison</tt> zeigt eine tabellarische Übersicht, der in den Paketquellen verfügbaren Versionen eines Programms, an. madison benötigt die Angabe mindestens eines ''Paket''namens, mehrere ''Paket''namen müssen durch Leerzeichen voneinander getrennt angegeben werden.
| |
| | |
| In diesem Fall werden die Informationen nacheinander ausgegeben.
| |
| | |
| apt-cache madison PAKET1 [PAKET2]
| |
| | |
| === Optionen ===
| |
| {|
| |
| |-
| |
| | colspan="3" | '''Kommandozeilenoptionen zu apt-cache '''
| |
| |-
| |
| | | '''Lange Option '''
| |
| | | Kürzel
| |
| | | Beschreibung
| |
| |-
| |
| | | <tt>'''--pkg-cache</tt> '''
| |
| | | <tt>-p</tt>
| |
| | | Angabe der Datei, in der der Paketcache gespeichert wird.
| |
| |-
| |
| | | <tt>'''--src-cache</tt> '''
| |
| | | <tt>-s</tt>
| |
| | | Angabe der Datei, in der der Paketcache beim Herunterladen zwischengespeichert wird.
| |
| |-
| |
| | | <tt>'''--quiet</tt> '''
| |
| | | <tt>-q</tt>
| |
| | | Ausgabe erzeugen, die weiterverarbeitet werden kann, beispielsweise Unterdrückung des Fortschrittsbalkens. <tt>-qq</tt> unterdrückt mehr Meldungen als <tt>-q</tt>.
| |
| |-
| |
| | | <tt>'''--important</tt> '''
| |
| | | <tt>-i</tt>
| |
| | | Nur Abhängigkeiten und deren Abhängigkeiten in '''unmet''' und '''depends''' anzeigen.
| |
| |-
| |
| | | <tt>'''--no-pre-depends</tt> <tt>--no-depends</tt> <tt>--no-recommends</tt> <tt>--no-suggests</tt> <tt>--no-conflicts</tt> <tt>--no-breaks</tt> <tt>--no-replaces</tt> <tt>--no-enhances</tt> '''
| |
| | |
| |
| | | Beeinflussen die Ausgabe von '''depends''' und '''rdepends'''
| |
| |-
| |
| | | <tt>'''--full</tt> '''
| |
| | | <tt>-f</tt>
| |
| | | Ausgabe der kompletten Paketeinträge bei der Suche.
| |
| |-
| |
| | | <tt>'''--all-versions</tt> '''
| |
| | | <tt>-a</tt>
| |
| | | Ausgabe aller verfügbaren Versionen (Kandidaten) bei der Suche nach einem ''Paket''.
| |
| |-
| |
| | | <tt>'''--no-all-versions</tt> '''
| |
| | |
| |
| | | Ausgabe der neuesten verfügbaren Version (Kandidat) bei der Suche nach einem ''Paket''.
| |
| |-
| |
| | | <tt>'''--generate</tt> '''
| |
| | | <tt>-g</tt>
| |
| | | Cache wird bei jedem Aufruf regeneriert. (Standard)
| |
| |-
| |
| | | <tt>'''--no-generate</tt> '''
| |
| | |
| |
| | | Cache wird ohne automatische Regeneration benutzt.
| |
| |-
| |
| | | <tt>'''--names-only</tt> '''
| |
| | | <tt>-n</tt>
| |
| | | Beschränkt die Suche auf die ''Paket''namen. Standard: Suche in ''Paket''namen und -beschreibung.
| |
| |-
| |
| | | <tt>'''--all-names</tt> '''
| |
| | |
| |
| | | Zwingt '''pkgnames''', auch virtuelle ''Paket''e und fehlende Abhängigkeiten auszugeben.
| |
| |-
| |
| | | <tt>'''--recurse</tt> '''
| |
| | |
| |
| | | Ermöglicht '''depends''' und '''rdepends''' eine rekursive Ausgabe, so dass alle Abhängigkeiten in einer Ausgabe erscheinen.
| |
| |-
| |
| | | <tt>'''--installed</tt> '''
| |
| | |
| |
| | | Beschränkt die Ausgabe von '''depends''' und '''rdepends''' auf installierte ''Paket''e.
| |
| |-
| |
| | | <tt>'''--help</tt> '''
| |
| | | <tt>-h</tt>
| |
| | | Gibt einen kurzen Hilfetext aus und beendet das Programm.
| |
| |-
| |
| | | <tt>'''--version</tt> '''
| |
| | | <tt>-v</tt>
| |
| | | Gibt die Version aus und beendet das Programm.
| |
| |-
| |
| | | <tt>'''--config-file</tt> '''
| |
| | | <tt>-c</tt>
| |
| | | Ermöglicht die Angabe einer alternativen Konfigurationsdatei, die von der Standardkonfiguration abweicht.
| |
| |-
| |
| | | <tt>'''--option</tt> '''
| |
| | | <tt>-o</tt>
| |
| | | Ermöglicht die Angabe einzelner abweichender Optionen bei Benutzung der Standardkonfiguration.
| |
| | |
| |-
| |
| |}
| |
| === Beispiele ===
| |
| ===== Bezug zu einem Paket =====
| |
| Steht ein ''Paket'' im Bezug zu einem anderen Paket, wird dies im Beschreibungstext erwähnt.
| |
| | |
| apt-cache -f search PROGRAMM
| |
| | |
| sucht nach ''Programm'' in allen ''Paket''namen und -beschreibungen und gibt anschließend die kompletten Informationen aus.
| |
| | |
| ===== Erweiterungspakete =====
| |
| Durch konsequente Namensgebung ''Programm-Erweiterung'' können verfügbare Erweiterungen mit pkgnames gefunden werden:
| |
| | |
| apt-cache pkgnames PROGRAMM
| |
| | |
| gibt alle Paketnamen aus, die mit ''Programm'' anfangen, somit auch die verfügbaren Erweiterungen.
| |
| | |
| ===== Ausgabe der Abhängigkeiten eines Pakets =====
| |
| apt-cache depends PAKET
| |
| | |
| ===== Ausgabe der Paketstruktur mit dotty =====
| |
| Im Beispiel wird das Paket <tt>xterm</tt> untersucht und der Graph als PNG ausgegeben.
| |
| | |
| apt-cache -o APT::Cache::GivenOnly=true dotty xterm | dot -Tpng > beispiel.png
| |
| | |
| Die Ausgabe von <tt>apt-cache</tt> wird mit einer Umleitung an das Graphviz-Werkzeug <tt>dot</tt> übergeben, um eine Grafik (hier im PNG-Format, andere Formate sind möglich, siehe Manpage von <tt>dot</tt>) zu erzeugen.
| |
| | |
| Oder auch mit rekursiven Abhängigkeiten:
| |
| | |
| export PACKAGE=xterm && apt-cache -o APT::Cache::GivenOnly=true dotty $PACKAGE `apt-cache depends $PACKAGE --installed| grep "Hängt ab von:" | cut -d " " -f6` | dot -Tpng > beispiel.png
| |
| | |
| == apt-file ==
| |
| apt-file ist ein Kommandozeilenwerkzeug, mit dem man alle Pakete nach einer Datei durchsuchen und die Dateien in einem Paket auflisten kann.
| |
| | |
| Grundlage sind die offiziellen Paketlisten, die dazu lokal gespeichert werden.
| |
| | |
| === Installation ===
| |
| Das Programm ist nicht in der Standardinstallation enthalten und kann mit dem Paket
| |
| | |
| sudo apt-get install apt-file
| |
| | |
| zum System hinzugefügt werden.
| |
| | |
| === Bedienung ===
| |
| Nach der Installation müssen zunächst die Paketinhalte neu synchronisiert werden. Dies geschieht mit
| |
| | |
| apt-file update
| |
| | |
| Sollen die Inhalte für alle Benutzer geladen werden, muss der Befehl als Administrator ausgeführt werden.
| |
| | |
| apt-file wird im Terminal ausgeführt . Die Grundsyntax sieht folgendermaßen aus:
| |
| | |
| apt-file OPTION BEFEHL
| |
| | |
| ==== Kommandos ====
| |
| {|
| |
| |-
| |
| | | '''BEFEHL '''
| |
| | | '''Bedeutung '''
| |
| |-
| |
| | | '''update '''
| |
| | | Synchronisiert die Paketinhalte mit den Quellen. Empfohlen nach Änderung an den Paketquellen.
| |
| |-
| |
| | | '''search SUCHMUSTER '''
| |
| | | Sucht in allen bekannten Paketen nach <tt>SUCHMUSTER</tt>. Sucht nur nach Dateinamen, nicht nach Verzeichnissen.
| |
| |-
| |
| | | '''list SUCHMUSTER '''
| |
| | | Listet die Dateien aller Pakete auf, die auf <tt>SUCHMUSTER</tt> passen.
| |
| |-
| |
| | | '''purge '''
| |
| | | Löscht den Cache
| |
| | |
| |-
| |
| |}
| |
| ==== Optionen ====
| |
| {|
| |
| |-
| |
| | | '''Option '''
| |
| | | '''Bedeutung '''
| |
| |-
| |
| | | '''-s DATEI '''
| |
| | | Andere sources.list-Datei nutzen
| |
| |-
| |
| | | '''-c CACHE-VERZEICHNIS '''
| |
| | | Anderes Verzeichnis als Cache nutzen
| |
| |-
| |
| | | '''-a ARCHITEKTUR '''
| |
| | | Spezifische Architektur benutzen
| |
| |-
| |
| | | '''-l '''
| |
| | | Nur Paketnamen anzeigen
| |
| |-
| |
| | | '''-x '''
| |
| | | SUCHMUSTER als regulären Ausdruck interpretieren
| |
| |-
| |
| | | '''-v '''
| |
| | | Mehr Informationen anzeigen
| |
| |-
| |
| | | '''-y '''
| |
| | | Nur simulieren
| |
| |-
| |
| | | '''-h '''
| |
| | | Hilfe anzeigen
| |
| | |
| |-
| |
| |}
| |
| === Beispiele ===
| |
| * Auflistung aller Dateien, die zu elinks gehören: <br/>apt-file list elinks
| |
| * Suche nach der Datei '''/usr/include/c++/4.6/vector''': <br/>apt-file search /usr/include/c++/4.6/vector
| |
| | |
| == apt-key ==
| |
| '''apt-key''' kennt verschiedene Kommandos , die exakt die Aktion angeben, welche mit dem Schlüsselbund ausgeführt wird.
| |
| | |
| {|
| |
| |-
| |
| | colspan="2" | '''Kommandos zu apt-key '''
| |
| |-
| |
| | | '''add '''
| |
| | | Hinzufügen eines neuen Schlüssels.
| |
| |-
| |
| | | '''del '''
| |
| | | Löschen eines Schlüssels.
| |
| |-
| |
| | | '''export '''
| |
| | | Export eines Schlüssels.
| |
| |-
| |
| | | '''exportall '''
| |
| | | Export aller bekannten Schlüssel.
| |
| |-
| |
| | | '''list '''
| |
| | | Ausgabe der bekannten Schlüssel.
| |
| |-
| |
| | | '''finger '''
| |
| | | Ausgabe der Fingerabdrücke der bekannten Schlüssel.
| |
| |-
| |
| | | '''adv '''
| |
| | | Angabe von erweiterten gpg-Optionen.
| |
| |-
| |
| | | '''update '''
| |
| | | Neuladen des Hauptschlüssels der aktuellen Version und Löschen abgelaufener Schlüssel.
| |
| | |
| |-
| |
| |}
| |
| === Kommandos ===
| |
| ==== apt-key add ====
| |
| <tt>add</tt> fügt dem Schlüsselbund einen neuen Schlüssel hinzu.
| |
| | |
| Dieser kann entweder in einer ''Datei'' gespeichert sein oder aus dem ''stdin'' - einer Weiterleitung der Ausgabe eines vorherigen Befehls - kommen, was dann durch ein <tt>-</tt> angezeigt wird.
| |
| | |
| sudo apt-key add DATEI
| |
| | |
| oder
| |
| | |
| sudo apt-key add -
| |
| | |
| ==== apt-key del ====
| |
| <tt>del</tt> löscht einen vorhanden Schlüssel aus dem Schlüsselbund. Der zu löschende Schlüssel muss mit seiner ''ID'' angegeben werden.
| |
| | |
| sudo apt-key del ID
| |
| | |
| ==== apt-key export ====
| |
| <tt>export</tt> gibt einen Schlüssel, der durch seine ''ID'' bezeichnet wird, auf ''stdout'' zur Weiterverabeitung aus.
| |
| | |
| apt-key export ID
| |
| | |
| ==== apt-key exportall ====
| |
| <tt>exportall</tt> gibt alle derzeit bekannten Schlüssel auf ''stdout'' aus.
| |
| | |
| apt-key exportall
| |
| | |
| ==== apt-key list ====
| |
| <tt>list</tt> zeigt alle im Schlüsselbund vorhandenen Schlüssel mit Namen und ID an. Optional kann ein spezieller Schlüssel mit der ID ''ID'' angezeigt werden.
| |
| | |
| apt-key list ID
| |
| | |
| ==== apt-key finger ====
| |
| <tt>finger</tt> zeigt den Fingerabdruck aller derzeit bekannten Schlüssel auf ''stdout'' an.
| |
| | |
| apt-key finger
| |
| | |
| ==== apt-key adv ====
| |
| <tt>adv</tt> erlaubt die Angabe spezieller Parameter für das im Hintergrund arbeitende GnuPG (gpg). Alle aus gpg bekannten Parameter können angegeben werden. <tt>adv</tt> benötigt die Angabe der zu verarbeitenden Schlüssel''ID''
| |
| | |
| sudo apt-key adv gpg-option ID
| |
| | |
| ==== apt-key update ====
| |
| <tt>update</tt> lädt die Signaturschlüssel für die zum jeweiligen Release gehörenden Hauptrepositories neu und löscht abgelaufene Schlüssel aus dem Schlüsselbund.
| |
| | |
| sudo apt-key update
| |
| | |
| === Optionen ===
| |
| apt-key kennt nur einen Konsolenschalter: <tt>--keyring</tt>, mit dem ein alternativer Schlüsselbund zur Bearbeitung übergeben werden kann.
| |
| | |
| === Beispiele ===
| |
| ==== add mit wget ====
| |
| Schlüssel zu Fremdquellen werden manchmal mit der Fremdquelle zusammen auf dem Webserver des Projekts veröffentlicht.
| |
| | |
| Dann kann man den Schlüssel mit <tt>wget</tt> herunterladen und sofort an die Schlüsselverwaltung übergeben.
| |
| | |
| Im Beispiel wird der Schlüssel für die Paketquelle des Browsers Opera heruntergeladen:
| |
| | |
| wget -O - https://deb.opera.com/archive.key | sudo apt-key add -
| |
| | |
| ==== adv im Einsatz ====
| |
| Nutzt man <tt>adv</tt>, kann man alle Optionen, die GnuPG im Hintergrund benutzt, selbst angeben statt Standardwerte zu benutzen.
| |
| | |
| sudo apt-key adv --keyserver PGP_KEY_SERVER --recv-keys ID
| |
| | |
| lädt den Schlüssel ID vom angegeben Server herunter.
| |
| | |
| == Tipps ==
| |
| === Paketlisten ===
| |
| ==== Übersicht der installierten Pakete ====
| |
| ===== Reine Informationsliste erzeugen =====
| |
| Um eine Liste zu erstellen, die alle installierten Pakete und deren Beschreibungen enthält, führt man den Befehl
| |
| | |
| COLUMNS=200 dpkg-query -l > packages_list.list
| |
| | |
| aus. Die Paketliste befindet sich danach in der Datei '''packages_list.list'''.
| |
| | |
| ===== Hinweis =====
| |
| Diese Liste ist rein informativ und lässt sich nicht (d.h. nur schwer) zum Wiederherstellen nach einer Neuinstallation verwenden!
| |
| | |
| ====== Paketliste zur Wiederherstellung erzeugen ======
| |
| Um beispielsweise einen zweiten Ubunturechner mit der gleichen Paketkonfiguration zu erstellen oder bei einer Neuinstallation des Systems schnell alle zuvor installierten Pakete zu übernehmen, kann man mit dem Befehl
| |
| | |
| dpkg --get-selections | awk '!/deinstall|purge|hold/ {print $1}' > packages.list
| |
| | |
| eine Liste '''packages.list''' zur Wiederherstellung der Pakete erzeugen.
| |
| | |
| Außerdem empfiehlt es sich, den erweiterten Paketstatus (automatisch oder manuell installiert) zu sichern (Dateien '''package-states-auto''' und '''package-states-manual'''):
| |
| | |
| apt-mark showauto > package-states-auto
| |
| apt-mark showmanual > package-states-manual
| |
| | |
| Möchte man diese Liste zur Installation in einer Ubuntu-Neuinstallation verwenden, ist außerdem ein Sichern bzw. Kopieren der Paketquellen, sowie das Exportieren der vertrauenswürdigen Signierungsschlüssel nötig, damit auch Pakete aus nachträglich hinzugefügten Quellen ohne Probleme installiert werden können.
| |
| | |
| Der folgende Befehl sichert diese Informationen in die Datei '''sources.list.sav''':
| |
| | |
| <nowiki>find /etc/apt/sources.list* -type f -name '*.list' -exec bash -c 'echo -e "\n## $1 ";grep "^[[:space:]]*[^#[:space:]]" ${1}' _ {} \; > sources.list.save </nowiki>
| |
| | |
| Das Ergebnis enthält eine kommentierte Liste aller eingetragenen Paketquellen.
| |
| | |
| Folgender Befehl kopiert den Schlüsselbund aller manuell hinzugefügten vertrauenswürdigen Schlüssel in die Datei '''trusted-keys.gpg''':
| |
| | |
| sudo cp /etc/apt/trusted.gpg trusted-keys.gpg
| |
| | |
| Extra installierte Schlüsselbunde unter '''/etc/apt/trusted.gpg.d''' werden dabei nicht gesichert, sollten aber über die jeweiligen Pakete nachinstalliert werden.
| |
| | |
| ====== Installation von Paketen aus einer Liste ======
| |
| Nachdem die sources.list synchronisiert wurde, sollten die Paketlisten aktualisiert werden. Ein zuvor gesicherter Schlüsselbund sollte ebenfalls vorher importiert werden:
| |
| | |
| sudo apt-key add trusted-keys.gpg <nowiki># Schlüsselbund importieren</nowiki>
| |
| sudo apt-get update
| |
| | |
| Um alle auf der Liste gespeicherten Pakete zu installieren, gibt man folgenden Befehl ein:
| |
| | |
| xargs -a "packages.list" sudo apt-get install
| |
| | |
| Wurden die erweiterten Paketstatus gesichert, können die Statuslisten für das neue System eingelesen werden:
| |
| | |
| xargs -a "package-states-auto" sudo apt-mark auto
| |
| xargs -a "package-states-manual" sudo apt-mark manual
| |
| | |
| Der zweite Befehl kann auch ausgelassen werden, da die über die Paketliste nachinstallierten Pakete automatisch als "manuell installiert" gekennzeichnet wurden.
| |
| | |
| ==== URL-Liste zu installierender Pakete ====
| |
| Die Option ''--print-uris'' von apt-get liefert eine URL für alle zu installierenden Pakete.
| |
| | |
| Dies kann man auf einem Rechner mit schlechter Internetanbindung zur Erzeugung einer Liste benutzen, um diese Pakete dann auf einem anderen Rechner herunterzuladen. Der Befehl
| |
| | |
| sudo apt-get -q -y --print-uris install PAKETNAME | grep ^\' | awk '{print $1}' | tr -d "'" > wget.list
| |
| | |
| schreibt die Adressen in eine Liste '''wget.list'''. Der Inhalt dieser kann dann mittels wget
| |
| | |
| wget -i wget.list
| |
| | |
| heruntergeladen werden. Wget steht auch für die Windows-Plattform zur Verfügung , so dass man die Liste auch auf einem Windows-Rechner herunterladen kann.
| |
| | |
| Anschließend können die so heruntergeladenen Pakete über die Synaptic-Paketverwaltung oder mit dpkg installiert werden.
| |
| | |
| ==== Verlaufslisten ====
| |
| Eine Liste der in der letzten Zeit installierten Pakete kann durch Auswerten der dpkg-Log-Dateien mit grep ausgegeben werden:
| |
| | |
| grep 'install ' /var/log/dpkg.log
| |
| | |
| Diese Log-Dateien werden regelmäßig durch logrotate archiviert ('''/var/log/dpkg.log.NUMMER.gz'''). Liegt die Änderung also schon weiter zurück, können diese Dateien durchsucht werden.
| |
| | |
| Man braucht die mit gzip komprimierten Dateien nicht erst zu entpacken, sondern benutzt einfach zgrep:
| |
| | |
| zgrep 'install ' /var/log/dpkg.log.NUMMER.gz
| |
| | |
| Alternativ kann mit find eine Liste, der in den letzten drei Tagen installierten Pakete, angezeigt werden:
| |
| | |
| find /var/lib/dpkg/info -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' | sort
| |
| | |
| ===== apt-history =====
| |
| Eine andere Möglichkeit ist die Erstellung eines eigenen Befehls <tt>apt-history</tt>.
| |
| | |
| Dieser beruht auf den Log-Dateien '''/var/log/dpkg.log''' und '''/var/log/dpkg.log.1'''. Dazu wird die Datei '''~/.bashrc''' editiert und folgendes am Ende angefügt:
| |
| | |
| {|
| |
| |-
| |
| || function apt-history(){
| |
| case "$1" in
| |
| install)
| |
| cat /var/log/{dpkg.log,dpkg.log.1} | grep 'install '
| |
| <nowiki>;;</nowiki>
| |
| upgrade|remove)
| |
| cat /var/log/{dpkg.log,dpkg.log.1} | grep $1
| |
| <nowiki>;;</nowiki>
| |
| rollback)
| |
| cat /var/log/{dpkg.log,dpkg.log.1} | grep upgrade | \
| |
| grep "$2" -A10000000 | \
| |
| grep "$3" -B10000000 | \
| |
| awk '{print $4"="$5}'
| |
| <nowiki>;;</nowiki>
| |
| <nowiki>*)</nowiki>
| |
| cat /var/log/{dpkg.log,dpkg.log.1}
| |
| <nowiki>;;</nowiki>
| |
| esac
| |
| }
| |
| |-
| |
| |}
| |
| Anschließend neu einloggen (oder ein neues Terminalfenster öffnen), damit der Befehl verfügbar ist. Mittels
| |
| | |
| apt-history upgrade
| |
| | |
| lassen sich nun beispielsweise die zuletzt aktualisierten Pakete inkl. Datum und Uhrzeit ermitteln. Andere Möglichkeiten sind <tt>install</tt>, <tt>remove</tt> oder <tt>rollback</tt>.
| |
| | |
| === Konfigurationsdateien entfernen ===
| |
| Deinstalliert man Pakete nur mit dem remove-Befehl, werden nich die Konfigurationsdateien unter '''/etc''' entfernt.
| |
| | |
| Um dies manuell für alle nicht vollständig deinstallierten Pakete nachzuholen, kann folgender Befehl genutzt werden:
| |
| | |
| dpkg -l | grep '^rc ' | cut -d" " -f3 | xargs dpkg --purge
| |
| | |
| === Sonstiges ===
| |
| ==== Anzahl zu aktualisierender Pakete beim Anmelden an der Konsole falsch ====
| |
| Durch einen Bug im "Update-Notifier" wird manchmal die Meldung über zur Verfügung stehende Aktualisierungen in der Konsole und beim SSH-Login nicht auf den neuesten Stand gebracht.
| |
| | |
| Das behebt folgender Ablauf:
| |
| | |
| sudo mv /etc/motd.tail /etc/motd.tail.backup
| |
| sudo touch /etc/motd.tail
| |
| sudo /usr/lib/update-notifier/update-motd-updates-available --force
| |
| | |
| Dabei wird zuerst die aktuelle Datei nach '''motd.tail.backup''' umbenannt, dann eine neue leere Datei '''motd.tail''' erstellt und anschließend der Update-Notifier zur Korrektur der Angabe gezwungen.
| |
| | |
| == dpkg ==
| |
| dpkg (Debian Package) dient zum Installieren einzelner '''.deb'''-Pakete. Es stellt die Funktionen zur Verfügung (Backend), die von den Programmen apt-get und aptitude benutzt werden.
| |
| | |
| === Optionen ===
| |
| Für die meisten Operationen sind Rootrechte nötig.
| |
| | |
| ==== Normale Optionen ====
| |
| dpkg erfordert die Angabe der Option, was die auszuführende Operation angibt, sowie abhängig von der Option die Angabe eines Paketnamens oder des Pfades zu einem '''.deb'''-Paket.
| |
| | |
| {|
| |
| |-
| |
| | colspan="3" | '''Kommandozeilenoptionen zu dpkg '''
| |
| |-
| |
| | | '''Kürzel '''
| |
| | | '''Lange Option '''
| |
| | | '''Beschreibung '''
| |
| |-
| |
| | | <tt>'''-i</tt> '''
| |
| | | <tt>'''--install</tt> '''
| |
| | | Installiert das als Argument übergebene '''.deb'''-Paket (Dateiname oder mit Option <tt>-R</tt> Ordnername).
| |
| |-
| |
| | |
| |
| | | <tt>'''--configure</tt> '''
| |
| | | Versucht die Installation von noch nicht fertig konfigurierten Paketen zu beenden. Entweder können die Paketnamen als Argumente übergeben werden oder es wird die Option <tt>-a</tt> bzw. <tt>--pending</tt> angegeben, um alle noch zu konfigurierenden Pakete zu verarbeiten.Soll ein bereits korrekt installiertes Paket erneut konfiguriert werden, muss dpkg-reconfigure genutzt werden.
| |
| |-
| |
| | | <tt>'''-r</tt> '''
| |
| | | <tt>'''--remove</tt> '''
| |
| | | Entfernt das als Argument übergebene genannte Paket. Wichtig: Der Name des Pakets, nicht der Dateiname muss angegeben werden. Eventuell vom Programm angelegt Konfigurationsdateien bleiben erhalten.
| |
| |-
| |
| | | <tt>'''-l</tt> '''
| |
| | | <tt>'''--list</tt> '''
| |
| | | Ruft dpkg-query auf und gibt eine Liste mit Status, Version und einer Beschreibung des Pakets aus. Statt des Namens kann auch ein regulärer Ausdruck angegeben werden. Wird kein Argument übergeben, werden alle Paketstatus aufgelistet. Diese Option ist auch für unprivilegierte Nutzer verfügbar.
| |
| |-
| |
| | | <tt>'''-P</tt> '''
| |
| | | <tt>'''--purge</tt> '''
| |
| | | Entfernt das genannte Paket inklusive der Konfigurationsdateien.
| |
| |-
| |
| | | <tt>'''-R</tt> '''
| |
| | | <tt>'''--recursive</tt> '''
| |
| | | Statt eines Pfades zu einer '''.deb''' kann mit <tt>-R</tt> auch ein Verzeichnis angegeben werden, die gewählte Operation wird dann auf alle Pakete im Verzeichnis angewandt.
| |
| |-
| |
| | | <tt>'''-L</tt> '''
| |
| | | <tt>'''--listfiles</tt> '''
| |
| | | Ruft dpkg-query auf und gibt eine Liste der im Paket enthaltenen Dateien aus.
| |
| |-
| |
| | | <tt>'''-S</tt> '''
| |
| | | <tt>'''--search</tt> '''
| |
| | | Ruft dpkg-query auf, um auszugeben in welchen Paketen sich Dateien befinden, die zum angegeben Suchmuster passen.
| |
| |-
| |
| |}
| |
| Eine vollständige Liste der Optionen findet sich in der '''dpkg'''(1) Manpage im Abschnitt <tt>ACTIONS</tt> bzw. <tt>AKTIONEN</tt>.
| |
| | |
| ==== force Optionen ====
| |
| ==== Achtung! ====
| |
| Diese Optionen können die Paketverwaltung und das System irreparabel beschädigen. Deswegen sollten diese Optionen nur mit äußerster Vorsicht und ausreichendem Verständnis angewandt werden.
| |
| | |
| In Ausnahmefällen kann es nötig sein, die Fehler zu übergehen, die dpkg zum Anhalten zwingen. Force-Optionen lassen sich mit den gewöhnlichen Optionen kombinieren, wo es sinnvoll ist.
| |
| | |
| {|
| |
| |-
| |
| | colspan="2" | '''Kommandozeilenoptionen mit force '''
| |
| |-
| |
| | | '''Lange Option '''
| |
| | | '''Beschreibung '''
| |
| |-
| |
| | | <tt>'''--force-help</tt> '''
| |
| | | Gibt eine Liste der force-Optionen mit einer Beschreibung aus.
| |
| |-
| |
| | | <tt>'''--force-depends</tt> '''
| |
| | | Ändert Abhängigkeitsfehler zu Warnungen. Ein Paket kann so trotz fehlender Abhängigkeiten installiert werden. <tt>apt-get -f</tt> wird eventuell zur Korrektur benötigt.
| |
| |-
| |
| | | <tt>'''--force-architecture</tt> '''
| |
| | | Erlaubt die Installation eines Pakets, das nicht zur Architektur passt. Nützlich, um reine 32-Bit-Pakete auf einem 64-Bit-System zu installieren. Allerdings ist meist die Multiarch-Integration des Paketes fehlerhaft und die für das Paket Verantwortlichen sollten darüber informiert werden.
| |
| |-
| |
| | | <tt>'''--force-remove-reinstreq</tt> '''
| |
| | | Erlaubt das Entfernen eines Pakets, dessen Reinstallation nötig ist. Teile des Paketes können nach dem Entfernen auf dem System verbleiben.
| |
| |-
| |
| |}
| |
| Eine vollständige Liste der force-Optionen findet sich in der '''dpkg'''(1) Manpage im Abschnitt <tt>OPTIONS</tt> bzw. <tt>OPTIONEN</tt>.
| |
| | |
| === Hilfsprogramme ===
| |
| ==== dpkg-query ====
| |
| dpkg-query erlaubt Zugriff auf die Paketverwaltungsdatenbank, also auf Metainformationen (Paketstatus, Kontrollfelder, ...).
| |
| | |
| Die Abfrage von Informationen über Paketdateien wird stattdessen über dpkg-deb geregelt. Einige Optionen können auch direkt mit dem <tt>dpkg</tt>-Befehl angesteuert werden.
| |
| | |
| dpkg-query OPTION PAKET/SUCHMUSTER
| |
| | |
| {|
| |
| |-
| |
| | colspan="3" | '''Kommandozeilenoptionen zu dpkg-query '''
| |
| |-
| |
| | | '''Kürzel '''
| |
| | | '''Lange Option '''
| |
| | | '''Beschreibung '''
| |
| |-
| |
| | | <tt>'''-l</tt> '''
| |
| | | <tt>'''--list</tt> '''
| |
| | | Gibt eine Liste der zum Suchmuster passenden Pakete und deren Informationen aus.
| |
| |-
| |
| | | <tt>'''-S</tt> '''
| |
| | | <tt>'''--search</tt> '''
| |
| | | Gibt aus, in welchen Paketen sich Dateien befinden, die zum angegeben Suchmuster (beispielsweise Pfad) passen.
| |
| |-
| |
| | | <tt>'''-L</tt> '''
| |
| | | <tt>'''--listfiles</tt> '''
| |
| | | Gibt die im Paket enthaltenen Dateien aus. Das Paket wird über den Paketnamen als Argument übergeben und muss installiert (oder nicht vollständig entfernt) sein.
| |
| |-
| |
| |}
| |
| Eine vollständige Liste der Optionen findet sich in der '''dpkg-query'''(1) Manpage im Abschnitt <tt>COMMANDS</tt> bzw. <tt>BEFEHLE</tt>.
| |
| | |
| ==== Paketstatus ====
| |
| Zusätzlich zur Beschreibung des Pakets gibt <tt>--list</tt>/<tt>-l</tt> eine Statusangabe zum jeweiligen Paket aus. Diese besteht aus 3 Stellen: # Gewünschter Paketstatus
| |
| | |
| *
| |
| ** <tt>u</tt> für unbekannt
| |
| ** <tt>i</tt> für installieren
| |
| ** <tt>h</tt> für halten
| |
| ** <tt>r</tt> für entfernen (Konfigurationsdateien behalten)
| |
| ** <tt>p</tt> für vollständig (inkl. Konfigurationsdateien) entfernen
| |
| | |
| # Aktueller Paketstatus
| |
| | |
| *
| |
| ** <tt>n</tt> für nicht installiert
| |
| ** <tt>c</tt> für Konfigurationsdateien verbleibend
| |
| ** <tt>H</tt> für nicht vollständig installiert (nicht alle Dateien konnten installiert werden)
| |
| ** <tt>U</tt> für entpackt (vor dem eigentlichen Installieren)
| |
| ** <tt>F</tt> für nicht vollständig konfiguriert (Fehler in Konfigurationsskripten)
| |
| ** <tt>W</tt> für Trigger-Verarbeitung (durch anderes Paket) wird erwartet (Trigger sind beispielsweise das Aktualisieren des Manpageindexes oder das Aktualisieren der durch .desktop Dateien bereitgestellten MIME-Typen, also Vorgänge, die für mehrere Pakete interessant sind. Anstatt diese Vorgänge nach der Installation jedes einzelnen Paketes auszuführen, wird der Vorgang erst am Ende der Installation aller Pakete ausgeführt.)
| |
| ** <tt>t</tt> für Trigger-Verabeitung steht bevor
| |
| ** <tt>i</tt> für installiert
| |
| | |
| # Fehler (Leerzeichen für keine Fehler)
| |
| | |
| *
| |
| ** <tt>R</tt> für Reinstallation erforderlich
| |
| | |
| So bezeichnet <tt>ii</tt> ein vollständig installiertes Paket, <tt>rc</tt> ein entferntes Paket von dem noch Konfigurationsdateien vorliegen und <tt>un</tt> ein nicht (mehr) installiertes Paket.
| |
| | |
| Eine vollständige Liste der Statusangaben findet sich in der '''dpkg-query'''(1) Manpage im Abschnitt <tt>PACKAGE STATES</tt> bzw. <tt>PAKETZUSTÄNDE</tt>.
| |
| | |
| ==== dpkg-deb ====
| |
| dpkg-deb stellt grundlegende Möglichkeiten zum Packen und Entpacken, sowie die Abfrage von Metainformationen (enthaltene Dateien, Kontrollfelder, ...) von '''.deb'''-Paketen bereit.
| |
| | |
| Einige Optionen können auch direkt mit dem <tt>dpkg</tt>-Befehl angesteuert werden.
| |
| | |
| dpkg-deb OPTION VERZEICHNIS/PAKET
| |
| | |
| {|
| |
| |-
| |
| | colspan="3" | '''Kommandozeilenoptionen zu dpkg-deb '''
| |
| |-
| |
| | | '''Kürzel '''
| |
| | | '''Lange Option '''
| |
| | | '''Beschreibung '''
| |
| |-
| |
| | | <tt>'''-I</tt> '''
| |
| | | <tt>'''--info</tt> '''
| |
| | | Zeigt Informationen des als Argument übergenenen '''.deb'''-Paketen an. Als optionales zweites Argument kann der Name einer (vorhandenen) Kontrolldatei übergeben werden, deren Inhalt dann in der Standardausgabe angezeigt wird.
| |
| |-
| |
| | | <tt>'''-b</tt> '''
| |
| | | <tt>'''--build</tt> '''
| |
| | | Erstellt ein '''.deb'''-Paket aus einem angegebenen Verzeichnis.
| |
| |-
| |
| | | <tt>'''-c</tt> '''
| |
| | | <tt>'''--contents</tt> '''
| |
| | | Zeigt den Inhalt eines '''.deb'''-Pakets an.
| |
| |-
| |
| | | <tt>'''-x</tt> '''
| |
| | | <tt>'''--extract</tt> '''
| |
| | | Entpackt das angegebene '''.deb'''-Paket in das angegebene Zielverzeichnis.
| |
| |-
| |
| |}
| |
| Eine vollständige Liste der Optionen findet sich in der '''dpkg-deb'''(1) Manpage im Abschnitt <tt>COMMANDS</tt> bzw. <tt>BEFEHLE</tt>.
| |
| | |
| ==== dpkg-divert ====
| |
| Mit dpkg-divert können Umleitungen eingerichtet werden, sodass beispielsweise Dateien, die von einem Paket bereitgestellt werden, beim Paketupgrade nicht verändert werden.
| |
| | |
| So kann man nicht nur lokale Änderungen (ohne Verlust) vornehmen, sondern auch Pakete, die Dateien an exakt der selben Stelle installieren, trotzdem parallel installieren (vorausgesetzt die Pakete sind nicht explizit als gegenseitiger Konflikt markiert).
| |
| | |
| dpkg-divert (OPTION) BEFEHL DATEI/MUSTER
| |
| | |
| {|
| |
| |-
| |
| | colspan="2" | '''Kommandozeilenoptionen zu dpkg-divert '''
| |
| |-
| |
| | | '''Befehl '''
| |
| | | '''Beschreibung '''
| |
| |-
| |
| | | <tt>'''--add</tt> '''
| |
| | | Fügt eine Umleitung für die als Argument übergebene Datei hinzu. Die Angabe von <tt>--add</tt> als Kommando ist optional. Wenn kein Kommando angegeben wurde, wird immer dieses Kommando gewählt.
| |
| |-
| |
| | | <tt>'''--remove</tt> '''
| |
| | | Entfernt die Umleitung für die als Argument übergebene Datei. Wenn bei der Umleitung umbenannt wurde, muss trotzdem die ursprüngliche Name übergeben werden.
| |
| |-
| |
| | | <tt>'''--list</tt> '''
| |
| | | Listet alle aktuell eingerichteten Umleitungen, die auf das als Argument übergebene Suchmuster passen, auf. Ohne Argument werden alle Umleitungen aufgelistet.
| |
| |-
| |
| | colspan="2" |
| |
| |-
| |
| | | '''Option '''
| |
| | | '''Beschreibung '''
| |
| |-
| |
| | | <tt>--local</tt>
| |
| | | Richtet die Umleitung so ein, dass die Datei durch kein Paketupgrade und durch keine Paketinstallation verändert wird.
| |
| |-
| |
| | | <tt>--package</tt>
| |
| | | Das als Argument übergebene Paket ist als einziges Paket nicht von der Umleitung betroffen.
| |
| |-
| |
| | | <tt>--rename</tt>
| |
| | | Beim Einrichten (bzw. Entfernen) wird die Datei umbenannt. Standardmäßig wird die Endung '''.distrib''' hinzugefügt (bzw. entfernt). Existierende Dateien werden nicht überschrieben, eher bricht die Umbenennung ab.
| |
| |-
| |
| | | <tt>--test</tt>
| |
| | | Es werden keine Änderungen vorgenommen.
| |
| |-
| |
| |}
| |
| Eine vollständige Liste der Befehle und Optionen findet sich in der '''dpkg-divert'''(8) Manpage im Abschnitt <tt>COMMANDS</tt> und <tt>OPTIONS</tt> bzw. <tt>BEFEHLE</tt> und <tt>OPTIONEN</tt>.
| |
| | |
| === Beispiele ===
| |
| ==== Installation ====
| |
| sudo dpkg -i /PFAD/ZUM/PAKET/PAKET.deb
| |
| | |
| Installiert das <tt>PAKET</tt> im genannten Pfad.
| |
| | |
| ==== Entfernen ====
| |
| sudo dpkg -r vim
| |
| | |
| Entfernt das Paket '''vim'''.
| |
| | |
| sudo dpkg -r vim*
| |
| | |
| Entfernt alle Pakete, deren Name mit <tt>vim</tt> beginnt.
| |
| | |
| ==== Anzeige ====
| |
| dpkg -l vim*
| |
| | |
| Gibt die Informationen zum allen Paketen aus, deren Name mit <tt>vim</tt> beginnt. Oft macht es Sinn die Ausgaben beispielsweise mit grep nach den Paketstatus zu filtern.
| |
| | |
| ==== Konfiguration beenden ====
| |
| sudo dpkg --configure -a
| |
| | |
| Führt alle noch ausstehenden Konfigurationsskripte aus und kann so einen abgebrochenen Installationsvorgang fortsetzen.
| |
| | |
| ==== Konfiguration erneut durchführen ====
| |
| sudo dpkg-reconfigure locales
| |
| | |
| Führt die debconf Konfigurationsskripte des Pakets '''locales''' erneut aus (und generiert damit die Sprachpakete neu).
| |
| | |
| ==== Umleitung einrichten ====
| |
| sudo dpkg-divert --local --rename /usr/bin/apt-build
| |
| | |
| Die Datei '''/usr/bin/apt-build''' wird für alle Pakete ohne Ausnahme auf die Datei '''/usr/bin/apt-build.distrib''' umgeleitet. Beim Erstellen der Umleitung wird die Datei direkt umbenannt.
| |
| | |
| ==== Umleitung entfernen ====
| |
| sudo dpkg-divert --rename --remove /usr/bin/apt-build
| |
| | |
| Die im vorherigen Beispiel angelegte Umleitung wird wieder entfernt. Das <tt>--rename</tt> stellt sicher, dass die Datei wieder zurückumbenannt wird.
| |
| | |
| Vergisst man dies, kann man die Datei einfach manuell beispielsweise mit mv umbenennen.
| |
| | |
| == aptitude ==
| |
| aptitude ist eine Erweiterung der Paketverwaltung APT (Advanced Packaging Tool) welche auf allen Debian-basierten Systemen, und damit auch Ubuntu, zum Einsatz kommt. Es handelt sich, wie bei apt-get, um eine reine Konsolenanwendung, bietet aber eine grafische Oberfläche auf ncurses Basis.
| |
| | |
| Im Gegensatz zu apt-get führt aptitude über Änderungen der installierten Pakete "genauer" Buch, so dass nicht mehr benötigte Pakete automatisch erkannt und deinstalliert werden. Die Installationsgeschichte wird in ein Log geschrieben, wodurch später angezeigt werden kann, wann oder warum ein Paket installiert wurde.
| |
| | |
| Bei Ubuntu gehört aptitude bis zur Version 10.10 zur Standardinstallation, wurde aber aus platztechnischen Gründen von der Installations-CD genommen. In der Server-Variante ist aptitude nach wie vor installiert.
| |
| | |
| ===== Achtung! =====
| |
| aptitude hat bis zur Version 0.6.8.1 Probleme mit der Multiarch-Unterstützung (siehe 831768) (dies betrifft in erster Linie 64-bit-Systeme) und ist bis dahin auf Multiarch-Systemen (ab 11.04, beispielsweise 64-Bit) unter Umständen nicht sinnvoll einsetzbar.
| |
| | |
| Für Ubuntu 12.04 wurde die Unterstützung zurückportiert und ist in den ''precise-updates''-Quellen verfügbar. Diese sollten deswegen unbedingt aktiviert werden. Bei späteren Ubuntu-Versionen ist das Problem wegen einer neueren aptitude-Version nicht mehr relevant.
| |
| | |
| === Installation ===
| |
| aptitude kann über das Paket
| |
| | |
| sudo apt-get install aptitude
| |
| | |
| installiert werden.
| |
| | |
| Des Weiteren kann man noch das (englische) Handbuch zu aptitude installieren. Dies ist über das Paket
| |
| | |
| sudo apt-get install aptitude-doc-en
| |
| | |
| verfügbar.
| |
| | |
| === Bedienung ===
| |
| Wie oben bereits erwähnt, kann man aptitude entweder über die Kommandozeile oder die grafische Oberfläche in der Konsole bedienen. Wie bei der Paketverwaltung üblich, werden Root-Rechte für Schreibvorgänge, wie Paketinstallationen zwingend benötigt. Die allgemeine Syntax lautet:
| |
| | |
| sudo aptitude BEFEHL PAKET
| |
| | |
| Ruft man das Programm ohne Befehl und Paket auf, erscheint automatisch die grafische Version.
| |
| | |
| Die grafische Version startet zwar auch ohne Root-Rechte, allerdings kann man dann nur suchen bzw. die Liste der installierten Pakete anschauen; man kann aber keine Pakete entfernen, installieren und weitere .
| |
| | |
| ==== Grafische Oberfläche ====
| |
| [[Image:Grafik64.png|top]]
| |
| | |
| Die Pakete werden vorsortiert und hierarchisch in Form einer aufklappbaren Ordnerstruktur dargestellt.
| |
| | |
| In der grafischen Oberfläche werden die Pakete je nach "Zustand" verschiedenfarbig dargestellt:* '''schwarz''' : Paket wird nicht verändert
| |
| * '''rot''' : Paket ist kaputt oder kann nicht installiert werden
| |
| * '''blau''' : Paket wird aktualisiert
| |
| * '''weiß''' : Paketversion bleibt erhalten, kann aber aktualisiert werden
| |
| * '''grün''' : Paket wird installiert
| |
| * '''magenta''' : Paket wird gelöscht
| |
| | |
| aptitude kann komplett über die Tastatur gesteuert werden. Alle Funktionen sind aber auch über die entsprechenden Pull-Down Menüs erreichbar, zu denen man mittels Strg + T gelangt. Im Folgenden sind einige Tasten erklärt:
| |
| | |
| {|
| |
| |-
| |
| | colspan="2" | '''Übersicht Tasten '''
| |
| |-
| |
| | | '''Taste '''
| |
| | | '''Funktion'''
| |
| |-
| |
| | | '''↓ + ↑ '''
| |
| | | Auswahlbalken bewegen
| |
| |-
| |
| | | '''⏎ '''
| |
| | | Verzeichnis auf- und zuklappen
| |
| |-
| |
| | | '''/ '''
| |
| | | Suchen
| |
| |-
| |
| | | '''N '''
| |
| | | Weitersuchen
| |
| |-
| |
| | | '''L '''
| |
| | | Suchen, alle Pakete, auf die das Suchkriterium nicht zutrifft werden aber ausgeblendet
| |
| |-
| |
| | | '''I '''
| |
| | | Paketinformationen anzeigen
| |
| |-
| |
| | | '''D '''
| |
| | | Abhängigkeiten anzeigen
| |
| |-
| |
| | | '''U '''
| |
| | | Paketquellen updaten
| |
| |-
| |
| | | '''⇧ + U '''
| |
| | | alle verfügbaren Updates installieren
| |
| |-
| |
| | | '''+ '''
| |
| | | Paket zur Installation vormerken
| |
| |-
| |
| | | '''- '''
| |
| | | Paket zum Löschen vormerken
| |
| |-
| |
| | | '''<nowiki>= </nowiki>'''
| |
| | | Paketversion halten
| |
| |-
| |
| | | '''G '''
| |
| | | Start der Installation/Deinstallation
| |
| |-
| |
| | | '''? '''
| |
| | | Hilfe anzeigen, d.h. alle verfügbaren Tasten und deren Funktion
| |
| |-
| |
| | | '''⇧ + Q '''
| |
| | | aptitude beenden
| |
| |-
| |
| |}
| |
| Die Suche von aptitude kennt auch weiterführende Suchfunktionen wie Verknüpfungen, Suche in der Beschreibung und weitere . Dazu ein paar Beispiele:* <tt>?name(linux)</tt> - sucht nach allen Paketen, die Linux im Namen haben
| |
| * <tt>?description(python)</tt> - sucht nach allen Paketen, die Python in der Beschreibung haben
| |
| * <tt>?and(?name(linux),?description(python)</tt> - sucht nach allen Paketen, die Linux im Namen und Python in der Beschreibung haben
| |
| * <tt>?installed</tt> - sucht nach allen installierten Paketen
| |
| * <tt>?installed(?not(?automatic))</tt> - sucht nach allen installierten Paketen ohne ''markauto'' Tag
| |
| | |
| Eine komplette Übersicht bietet das aptitude-Handbuch.
| |
| | |
| ==== Konsole ====
| |
| Ruft man aptitude mit einer Option bzw. Paketnamen auf, so wird die Aktion ohne Start der grafischen Oberfläche direkt ausgeführt. Die allgemeine Syntax lautet
| |
| | |
| sudo aptitude BEFEHL OPTION PAKETNAME(N)
| |
| | |
| Wichtig ist, dass der Befehl vor dem/den Paketnamen steht. Eine Option ist in vielen Fällen nicht notwendig. Wird mehr als ein Paketname angegeben, wird die entsprechende Aktion auf alle genannten Pakete angewendet.
| |
| | |
| Im Folgenden sind einige gängige Befehle aufgeführt. Teilweise sind diese identisch mit denen von apt-get und haben i.d.R. auch den gleichen Effekt.
| |
| | |
| {|
| |
| |-
| |
| | colspan="2" | '''Übersicht Befehle Kommandozeile '''
| |
| |-
| |
| | | '''Befehl '''
| |
| | | '''Funktion '''
| |
| |-
| |
| | | <tt>'''install</tt> '''
| |
| | | installiert das Paket, die Abhängigkeiten werden direkt mit aufgelöst
| |
| |-
| |
| | | <tt>'''remove</tt> '''
| |
| | | löscht das Paket, die Konfigurationsdateien bleiben aber erhalten
| |
| |-
| |
| | | <tt>'''purge</tt> '''
| |
| | | löscht das Paket inklusive aller Konfigurationsdateien
| |
| |-
| |
| | | <tt>'''hold</tt> '''
| |
| | | erzwingt, dass das Paket in der aktuell installierten Version gehalten wird, d.h. es werden keine Updates dafür installiert
| |
| |-
| |
| | | <tt>'''forbid-version</tt> '''
| |
| | | verbietet die Installation einer bestimmten Paketversion, diese muss hinter dem Paketnamen mittels <tt><nowiki>=</nowiki></tt> angehängt werden, also beispielsweise <tt>xserver-xorg=1.7.7+2~broken-4</tt>
| |
| |-
| |
| | | <tt>'''safe-upgrade</tt> '''
| |
| | | Es wird ein Update der Pakete durchgeführt, die aktualisiert werden können, ohne dass andere Pakete hinzugefügt oder entfernt werden müssen. Dies ist der "normale" Befehl, um innerhalb eines Releases ein Update durchzuführen.
| |
| |-
| |
| | | <tt>'''full-upgrade</tt> '''
| |
| | | aktualisiert alle Pakete, installiert neue und entfernt ggf. nicht mehr benötigte; dies ist der Befehl für ein Upgrade zwischen zwei Ubuntu-Versionen (entspricht bei <tt>apt-get</tt> dem <tt>dist-upgrade</tt>)
| |
| |-
| |
| | | <tt>'''show</tt> '''
| |
| | | zeigt Informationen zum Paket an
| |
| |-
| |
| | | <tt>'''why</tt> '''
| |
| | | zeigt an, welche Pakete von diesem abhängen
| |
| |-
| |
| | | <tt>'''why-not</tt> '''
| |
| | | zeigt an, warum ein Paket nicht installiert werden kann, also welche Konflikte existieren
| |
| |-
| |
| | | <tt>'''clean</tt> '''
| |
| | | leert den Paketcache, kann u.U. sehr viel Festplattenplatz frei machen
| |
| |-
| |
| | | <tt>'''autoclean</tt> '''
| |
| | | leert den Paketcache für alle Pakete aus den eingetragenen Quellen, kann u.U. sehr viel Festplattenplatz frei machen
| |
| |-
| |
| | | <tt>'''build-dep</tt> '''
| |
| | | installiert die nötigen Quellpakete um das spezifizierte Paket kompilieren zu können (verfügbar seit Ubuntu 8.10)
| |
| |-
| |
| |}
| |
| Eine Option, die hier für <tt>install</tt> erwähnt werden soll, ist <tt>-R</tt>. Dadurch werden nur die direkten Abhängigkeiten mit installiert und nicht auch die Empfehlung, was unter Ubuntu per Voreinstellung passiert, aber Global über den Schlüssel <tt>APT::Install-Recommends</tt> bestimmt werden kann.
| |
| | |
| ==== Pakete suchen ====
| |
| Pakete können mit dem folgenden Befehl gesucht werden:
| |
| | |
| aptitude search SUCHBEGRIFF1 SUCHBEGRIFF2 ...
| |
| | |
| Wird bei einem Installationsbefehl ein nicht existierender Paketname angegeben, werden Alternativen aufgelistet. Die Eingabe von Paketnamen lässt sich außerdem durch Aktivierung der Shell-Autovervollständigung wesentlich erleichtern.
| |
| | |
| Es kann auch nach bestimmten Eigenschaften gesucht werden. Alle Suchmöglichkeiten werden in '''/usr/share/doc/aptitude/README''' gelistet. So sucht
| |
| | |
| aptitude search ~Ddepends:gtk~dscanner'!~dvirus'
| |
| | |
| zum Beispiel nach Paketen, die von '''gtk''' abhängen und in deren Beschreibung "scanner", aber nicht "virus" vorkommt. Es können also auch Reguläre Ausdrücke zur Suche genutzt werden.
| |
| | |
| ==== Defekte Pakete reparieren ====
| |
| Wenn ein Paket, das nicht zur separaten Installation gedacht ist, eigentlich weitere Pakete benötigt oder in anderer Weise nicht in die bestehende Installation passt, werden bei der nächsten Verwendung "kaputte Pakete" gemeldet. Diese muss man reparieren lassen. Der Befehl
| |
| | |
| sudo aptitude -f install
| |
| | |
| führt entweder zur Installation weiterer Pakete oder zur Entfernung des installierten Pakets. aptitude macht dabei Vorschläge zur Lösung des Problems, die man akzeptieren oder ablehnen kann.
| |
| | |
| Falls die defekten Pakete bekannt sind, kann auch folgender Befehl das Problem lösen:
| |
| | |
| sudo aptitude -f install PAKETNAME1 PAKETNAME2
| |
| | |
| Wobei PAKETNAME1 bzw. PAKETNAME2 und weitere durch die Namen der bekannten defekten Pakete ersetzt wird.
| |
| | |
| ===== Achtung! =====
| |
| Auch wenn aptitude eine gewisse Intelligenz besitzt, so ist die erste vorgeschlagene Lösung nicht immer die beste. D.h. man sollte die Vorschläge immer sorgsam lesen und dann entscheiden, ob diese sinnvoll sind oder nicht!
| |
| | |
| ==== Paketverwaltung unbrauchbar ====
| |
| Sollte die Paketverwaltung nach einem <tt>upgrade</tt> bzw. <tt>dist-upgrade</tt> unbrauchbar werden, so kann einer der folgenden Befehle helfen:
| |
| | |
| Nach einem Update der bestehenden Installation:
| |
| | |
| sudo aptitude safe-upgrade -f
| |
| | |
| Nach einem Versions-Upgrade auf eine neue Ubuntu-Version:
| |
| | |
| sudo aptitude full-upgrade -f
| |
| | |
| Nach beiden Befehlen sollte auf jeden Fall noch
| |
| | |
| sudo dpkg --configure -a
| |
| | |
| aufgerufen werden.
| |
| | |
| ==== Konfigurationsdaten nachträglich löschen ====
| |
| sudo aptitude purge '~c'
| |
| | |
| löscht die Konfigurationsdaten von bereits deinstallierten Paketen.
| |
| | |
| ==== Tags vergeben ====
| |
| Tags sind zusätzliche Eigenschaften für lokal installierte Pakete. Zum Kompilieren eines Programms werden beispielsweise viele "-dev"-Pakete benötigt. Viele sind anschließend als manuell installiert markiert, werden aber nach erfolgreicher Kompilierung nicht mehr benötigt, allerdings auch nicht automatisch wieder entfernt. Wenn man den Installationszeitraum noch weiß, kann der Blick ins Log helfen, aber das ist nicht sehr praktisch.
| |
| | |
| Vergibt man aber schon bei der Installation beispielsweise das Tag "<programmname>kompilierung" an die betreffenden Pakete, so sieht man auch im Nachhinein leicht, warum ein bestimmtes Paket installiert wurde, und kann gegebenenfalls alle Pakete mit dem Tag entfernen.
| |
| | |
| Beispiel:
| |
| | |
| sudo aptitude install --add-user-tag freeorionkompilierung graphviz-dev libalut-dev libboost1.35-dev libdevil-dev liblog4cpp5-dev libsdl-mixer1.2-dev libsdl1.2-dev python2.5-dev
| |
| sudo aptitude remove '?user-tag(freeorionkompilierung)'
| |
| | |
| === Paketzustand speichern ===
| |
| Will man den Zustand aller installierten Pakete, der Caches, der Paketlisten und APT-, sowie aptitude-Einstellungen zu einem Zeitpunkt speichern oder wiederherstellen, kann man dazu den Mechanismus, der eigentlich für reproduzierbare Bugreports gedacht ist, nutzen:* Backup anlegen:
| |
| | |
| sudo aptitude-create-state-bundle DATEINAME * Backup direkt ins System einspielen:
| |
| | |
| sudo tar xvf DATEINAME -C /
| |
| | |
| === Überflüssige Pakete ===
| |
| aptitude entfernt nicht benötigte Pakete automatisch. Wenn aber nicht nur aptitude zur Paketinstallation verwendet wurde, helfen die Pakete debfoster und deborphan , deren Gebrauch im Debian Anwenderhandbuch beschrieben ist. Das Paket '''deborphan''' enthält eine Benutzerschnittstelle (orphaner), die die Bedienung vereinfacht.
| |
| | |
| === Automatische Sicherheitsupdates ===
| |
| Hier empfiehlt es sich, mit einem Editor folgende neue Textdatei anzulegen:
| |
| | |
| {|
| |
| |-
| |
| || <nowiki>#!/bin/sh</nowiki>
| |
| date >> /var/log/aptitude-security-updates
| |
| aptitude update >> /var/log/aptitude-security-updates
| |
| aptitude safe-upgrade -y -t $(lsb_release --short --codename)-security >> /var/log/aptitude-security-updates
| |
| |-
| |
| |}
| |
| und diese unter dem Namen '''aptitude-security-updates''' im Verzeichnis '''/etc/cron.daily''' abzuspeichern. Danach muss man die Ausführrechte mit
| |
| | |
| chmod 775 aptitude-security-updates
| |
| | |
| im Terminal setzen. Zukünftig wird dadurch täglich automatisch auf Sicherheitsupdates überprüft und - falls vorhanden - diese ohne Nachfrage installiert. Protokolliert wird dies in der Datei '''/var/log/aptitude-security-updates'''.
| |
| | |
| Ein ausgeklügelter Mechanismus wird von unattended-upgrades bereitgestellt.
| |
| | |
| == Problembehebung ==
| |
| {|
| |
| |-
| |
| || Durch fehlerhafte oder unpassende Paketquellen, durch die Installation mangelhaft erstellter Pakete oder durch Abstürze bei aktiver Verwendung kann es zu Problemen mit der Paketverwaltung kommen.
| |
| | |
| Das Schaubild verdeutlicht, dass die Fehler an unterschiedlichen Stellen und in verschiedenen Programmen auftreten können.
| |
| ||
| |
| | |
| |-
| |
| |}
| |
| ==== Abhängigkeiten ====
| |
| ===== verhindern die Installation eines Pakets =====
| |
| Die folgenden Pakete besitzen unerfüllte Abhängigkeiten:
| |
| kdelibs3-devel: Hängt ab von: libxslt-devel aber es wird nicht installiert werden
| |
| Hängt ab von: libxml2-devel aber es wird nicht installiert werden
| |
| | |
| Gefährlicher ist es, wenn die Installation zwar möglich ist, aber nur um den Preis der Deinstallation zahlreicher anderer Komponenten, die man möglicherweise benötigt.
| |
| | |
| Wenn gewarnt wird, dass Pakete deinstalliert werden, ohne dass man damit gerechnet hat, sollte man die Aktion im Zweifelsfall abbrechen.
| |
| | |
| Dieses Problem tritt vor allem dann auf, wenn man Paketquellen verwendet, die nicht für Ubuntu geeignet sind.
| |
| | |
| ===== Lösung =====
| |
| Nur speziell für Ubuntu ausgewiesene Paketquellen verwenden (siehe auch Fremdquellen).
| |
| | |
| ==== Konfiguration zurücksetzen ====
| |
| Wurde an den systemweiten Konfigurationsdateien Änderungen vorgenommen, die zu Fehlern führen, ist aber eine funktionierende Form nicht mehr rekonstruierbar, so kann mit folgendem Befehl das Paket reinstalliert werden, sodass alle Paketdateien inkl. der Konfigurationsdateien durch den Standard ersetzt werden:
| |
| | |
| sudo apt-get -o dpkg::options::="--force-confnew" -o dpkg::options::="--force-confmiss" --reinstall install PAKET
| |
| | |
| ===== Zurücksetzen von proposed-Aktualisierungen =====
| |
| Wurden versehentlicherweise Pakete aus den ''proposed''-Quellen installiert, können nach dem unter Apt-Pinning beschriebenen Verfahren die Pakete wieder auf eine stabile Version gedowngradet (herabgesetzt) werden.
| |
| | |
| ==== Defekte Pakete ====
| |
| Die folgenden Pakete besitzen unerfüllte Abhängigkeiten:
| |
| z600cups: Hängt ab von: cups (>= 1:1.1.15-10) aber 1.1.20-103 ist installiert
| |
| E: Unerfüllte Abhängigkeiten. Versuche -f zu benutzen.
| |
| | |
| Dieses Problem tritt dann auf, wenn man ein Paket "von Hand" installiert hat, ohne dessen Abhängigkeiten zu erfüllen.
| |
| | |
| ===== Lösung =====
| |
| Im Terminal ist der vorgeschlagene Konsolenbefehl einzugeben :
| |
| | |
| sudo apt-get -f install
| |
|
| |
|
| ==== Installation wurde unterbrochen ====
| | </noinclude> |
| E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem.
| |
| | |
| Wenn während der Installation von Paketen die Stromzufuhr des Rechners unterbrochen wird, kann das auch für die Paketverwaltung Folgen haben.
| |
| | |
| Fand der Ausfall während des Downloads und somit vor der eigentlichen Installation statt, kann der Installationsvorgang wiederholt werden, sodass dieser automatisch an passender Stelle fortgesetzt wird.
| |
| | |
| Wenn aber bereits Dateien eines Pakets installiert wurden, ohne dass die Installation oder Konfiguration zu Ende geführt wurde, gibt es eine entsprechende Fehlermeldung.
| |
| | |
| ===== Lösung =====
| |
| Wie in der Meldung angegeben ist im Terminal der entsprechende Befehl auszuführen:
| |
| | |
| sudo dpkg --configure -a
| |
| | |
| ==== Fehle bei Installation ====
| |
| dpkg: Fehler beim Bearbeiten von gettext (--configure):
| |
| Unterprozess post-installation script gab den Fehlerwert 1 zurück
| |
| dpkg: Fehler beim Bearbeiten von magicolor2530dl (--remove):
| |
| Unterprozess post-removal script gab den Fehlerwert 2 zurück
| |
| | |
| Bei der Abarbeitung von '''postinst'''/'''preinst'''- bzw. '''postrm'''/'''prerm'''-Maintainer Skripten kommt es zu Fehlern.
| |
| | |
| ===== Lösung =====
| |
| Eine nicht ganz saubere Lösung ist es, diese entsprechenden Skripte umzubenennen. Diese Scripte befinden sich in '''/var/lib/dpkg/info/'''.
| |
| | |
| ====== Achtung! ======
| |
| Nur die zum entsprechenden Paket gehörigen Skripte umbenennen.
| |
| | |
| Besser (aber schwieriger) ist es, beim entsprechende Skript zu überprüfen, welche Bedingung nicht stimmt und es deswegen zu der Fehlermeldung kommt.
| |
| | |
| ==== Probleme mit Paketquellen ====
| |
| ===== Ungültige Signatur von Paketquellen =====
| |
| W: GPG-Fehler: https://de.archive.ubuntu.com maverick Release:
| |
| Die folgenden Signaturen waren ungültig: BADSIG 40976EAF237D05B5 Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
| |
| W: Fehlschlag beim Holen von https://extras.ubuntu.com/ubuntu/dists/maverick/Release
| |
| | |
| Dieses Problem kann nach einer Systemaktualisierung auftreten.
| |
| | |
| ====== Lösung ======
| |
| sudo rm /var/lib/apt/lists/* -rf
| |
| sudo mkdir /var/lib/apt/lists/partial <nowiki># Für Versionen bis Ubuntu 10.04 Lucid Lynx</nowiki>
| |
| sudo apt-get update
| |
| | |
| Den Speicherbereich für Statusinformationen jeder in der sources.list angegebenen Paketquelle zurücksetzen und neu laden.
| |
| | |
| ===== Fehler beim Einlesen der Paketliste =====
| |
| E: Encountered a section with no Package: header
| |
| E: Problem with MergeList /var/lib/apt/lists/archive.canonical.com_ubuntu_dists_natty_partner_i18n_Translation-de
| |
| E: Die Paketliste oder die Statusdatei konnte nicht eingelesen oder geöffnet werden.
| |
| Failed to exec method /usr/lib/apt/methods/
| |
| E: Method has died unexpectedly!
| |
| E: Unterprozess hat Fehlercode zurückgegeben (100)
| |
| E: Methode /usr/lib/apt/methods/ ist nicht korrekt gestartet
| |
| | |
| Diese Probleme können nach einer Systemaktualisierung auftreten.
| |
| | |
| ====== Lösung ======
| |
| Es ist der selbe Lösungsansatz wie bei Ungültige Signatur von Paketquellen anzuwenden.
| |
| | |
| ===== Öffentlicher Schlüssel von extras.ubuntu.com fehlt =====
| |
| W: GPG-Fehler: https://extras.ubuntu.com oneiric Release: Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY 16126D3A3E5C1192
| |
| | |
| Dieses Problem kann nach einer Systemaktualisierung auftreten.
| |
| | |
| ====== Lösung ======
| |
| Kann der Schlüssel nicht mit apt/apt-key importiert werden, hilft eine Neuinstallation des Pakets '''ubuntu-extras-keyring''':
| |
| | |
| sudo apt-get --reinstall install ubuntu-extras-keyring
| |
| | |
| ===== Aktualisieren schlägt mit GPG-Fehler fehl =====
| |
| W: GPG error: https://ppa.launchpad.net jaunty Release: The following signatures couldn't be
| |
| verified because the public key is not available: NO_PUBKEY 632D16BB0C7135A6
| |
| | |
| Ggf. funktioniert das Aktualisieren eines aufgenommenen PPAs nicht reibungslos, weil der Schlüssel trotz ordnungsgemäßen Vorgehens nicht installiert wurde (insbesondere unter Ubuntu 11.10 vermehrt beobachtet).
| |
| | |
| ====== Lösung ======
| |
| Diese Meldung besagt, dass der Authentifizierungsschlüssel nicht importiert wurde. Gelöst werden kann das Problem in diesem Beispiel mit dem Befehl
| |
| | |
| sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 632D16BB0C715DA6
| |
| | |
| Die Schlüsselnummer muss natürlich entsprechend der Fehlermeldung angepasst werden, siehe ggf. auch auf launchpad.net .
| |
| | |
| ==== Fehler beim Reaktivieren ====
| |
| ===== gelöschter PPAs =====
| |
| Falls beim Wiederaktivieren eines zuvor deaktivierten oder gelöschten PPAs Probleme beim Importieren des Signierungsschlüssels auftreten, muss dieser zuerst komplett aus den APT-Schlüsseldatenbanken entfernt werden.
| |
| | |
| Um den Name (ID) des richtigen Schlüssels zu erfahren, kann man direkt in der Datenbank nachschauen:
| |
| | |
| sudo apt-key list --keyring /etc/apt/trusted.gpg
| |
| sudo apt-key list --keyring /etc/apt/trusted.gpg~
| |
| | |
| Ein Ausschnitt könnte folgendermaßen aussehen:
| |
| | |
| [...]
| |
| | |
| pub 1024R/'''12DE56F8''' 2011-01-01
| |
| uid Launchpad PPA for Ubuntu User
| |
| | |
| pub 1024R/5753AA42 2010-11-23
| |
| uid Launchpad PPA for Edubuntu Developers
| |
| | |
| [...]
| |
| | |
| Soll nun der Schlüssel des PPAs von "Ubuntu User" entfernt werden, werden die folgenden zwei Befehle ausgeführt:
| |
| | |
| sudo apt-key --keyring /etc/apt/trusted.gpg del 12DE56F8
| |
| sudo apt-key --keyring /etc/apt/trusted.gpg~ del 12DE56F8
| |
| | |
| Abschließend muss noch der Speicherbereich für Statusinformationen nach Paketverwaltung/Problembehebung zurückgesetzt werden.
| |
| | |
| ====== Hinweis ======
| |
| Das Entferen eines PPAs mit ppa-purge reicht nicht aus, da die Schlüssel nicht entfernt werden, sondern lediglich die Quelle deaktiviert wird (und das Paket auf die nächstniedrigere Version zurückgesetzt wird).
| |
| | |
| ==== Fehler mit Berechtigungen ====
| |
| dpkg: Fehler beim Bearbeiten von /var/cache/apt/archives/linux-image-3.0.0-12-generic_3.0.0-12.20_i386.deb (--unpack):
| |
| Fehler beim Setzen des Eigentümers von ''./boot/vmlinuz-3.0.0-12-generic'': Die Operation ist nicht erlaubt
| |
| dpkg-deb: Fehler: Unterprozess einfügen wurde durch Signal (Datenübergabe unterbrochen (broken pipe)) getötet
| |
| Examining /etc/kernel/postrm.d .
| |
| run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.0.0-12-generic /boot/vmlinuz-3.0.0-12-generic
| |
| run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.0.0-12-generic /boot/vmlinuz-3.0.0-12-generic
| |
| Fehler traten auf beim Bearbeiten von:
| |
| /var/cache/apt/archives/linux-image-3.0.0-12-generic_3.0.0-12.20_i386.deb
| |
| E: Sub-process /usr/bin/dpkg returned an error code (1)
| |
| | |
| Dieser Fehler tritt auf, wenn Systemverzeichnisse sich nicht auf einem Linux-Dateisystem befinden.
| |
| | |
| ===== Lösung =====
| |
| Systemordner über fstab in Dateisystem mit ausreichender Rechteverwaltung einbinden. U.U. muss eine entsprechende Partition erst angelegt werden: Manuelle Partitionierung
| |
| | |
| ==== Probleme mit Lockdateien ====
| |
| ===== 2: Datei oder Verzeichnis nicht gefunden =====
| |
| E: Lockdatei /var/lib/apt/lists/lock konnte nicht geöffnet werden - open (2: Datei oder Verzeichnis nicht gefunden)
| |
| E: Das Listenverzeichnis kann nicht gesperrt werden
| |
| E: Lockdatei /var/cache/apt/archives/lock konnte nicht geöffnet werden - open (2: No such file or directory)
| |
| E: Das Downloadverzeichnis konnte nicht gesperrt werden.
| |
| | |
| ====== Lösung ======
| |
| Die Lockdatei und das zugrunde liegende Verzeichnis manuell anlegen. Für das erste Beispiel also:
| |
| | |
| sudo mkdir -p /var/cache/apt/archives
| |
| sudo touch /var/cache/apt/archives/lock
| |
| | |
| ===== 11: Ressource ist zur Zeit nicht verfügbar =====
| |
| E: Konnte Sperre /var/cache/apt/archives/lock nicht bekommen - open (11: Die Ressource ist zur Zeit nicht verfügbar)
| |
| E: Das Verzeichnis /var/cache/apt/archives/ kann nicht gesperrt werden
| |
| | |
| oder
| |
| | |
| E: Konnte Sperre /var/lib/dpkg/lock nicht bekommen - open (11: Die Ressource ist zur Zeit nicht verfügbar)
| |
| E: Das Verzeichnis /var/lib/dpkg/ kann nicht gesperrt werden
| |
| | |
| ====== Lösung ======
| |
| Arbeitet bereits ein anderes Programm zur Paketverwaltung im Hintergrund? Dies kontrolliert man zuerst mit
| |
| | |
| sudo lsof /var/cache/apt/archives/lock
| |
| | |
| um dann gegebenenfalls mit ps herauszufinden, welcher Prozess die Paketverwaltung blockiert. Warten auf das Terminieren des Prozesses löst das Problem meist.
| |
| | |
| Sollte der Prozess hängen, kann er mit kill zum Beenden gezwungen werden. Sollte der Lock danach immer noch nicht freigegeben sein, kann man als letzte Möglichkeit den Lock mit Rootrechten löschen.
| |
| | |
| Nach dem Löschen muss die Lockdatei erneut angelegt werden, zum Beispiel mit
| |
| | |
| sudo touch /var/cache/apt/archives/lock
| |
| | |
| ===== 13: Keine Berechtigung =====
| |
| E: Lockdatei /var/lib/apt/lists/lock konnte nicht geöffnet werden - open (13: Keine Berechtigung)
| |
| | |
| ====== Lösung ======
| |
| Man sollte das eingegebene Kommando nochmal mit Rootrechten ausführen.
| |
| | |
| ==== Archivverzeichnis fehlt ====
| |
| E: Archivverzeichnis /var/cache/apt/archives/partial fehlt.
| |
| | |
| ===== Lösung =====
| |
| Bis Ubuntu 10.04 wird ein fehlendes Verzeichnis für Statusinformationen während der Aktualisierung der Paketindexdateien nicht automatisch angelegt. Durch Neuanlegen des Verzeichnisses wird das Problem behoben:
| |
| | |
| sudo mkdir -p /var/lib/apt/lists/partial
| |
| | |
| ==== Fehler in /var/lib/dpkg/available ====
| |
| Vorkonfiguration der Pakete ...
| |
| dpkg: Fehler: Parsen der Datei ''/var/lib/dpkg/available'', nahe Zeile 0:
| |
| nach Feldname ''../../../../share/pyshared/UpdateManager/check-meta-release.py'' muss ein Doppelpunkt folgen
| |
| E: Sub-process /usr/bin/dpkg returned an error code (2)
| |
| | |
| Durch Verletzen der Policy von Versionsbezeichnung von Maintainern, kann es zu Meldungen bezüglich fehlender oder nicht erlaubter Zeichen kommen.
| |
| | |
| ===== Lösung =====
| |
| Durch Entfernen der Datei '''/var/lib/dpkg/available''' wird das Problem behoben:
| |
| | |
| sudo dpkg --clear-avail
| |
| | |
| Soll die Datei aus den verfügbaren Paketversionen aus den Paketquellen neu generiert werden, wird folgender Befehl verwendet:
| |
| | |
| sudo dselect update
| |
| | |
| ==== Fehlerhafte Paketquellen ====
| |
| ===== Zu Hostnamen gehört keine Adresse =====
| |
| W: Fehlschlag beim Holen von https://archieve.ubuntu.com/dists/oneiric-security/restricted/i18n/Translation-de Beim Auflösen von ''archieve.ubuntu.com:http'' ist etwas Schlimmes passiert (-5 - Zu diesem Hostnamen gehört keine Adresse)
| |
| | |
| Bei fehlerhaft eingetragenen oder nicht mehr vorhandenen Paketquellen bzw. fehlerhaften Netzwerkeinstellungen kann es zu dieser Fehlermeldung kommen.
| |
| | |
| ===== Lösung =====
| |
| Manuell die Paketquellen in der Datei /etc/apt/sources.list korrigieren. Dabei auf Rechtschreibfehler und nicht mehr vorhandene Paketquellen achten. Sollten diese Angaben korrekt sein, muss der Netzwerkzugang auf statische bzw. dynamische IP-Zuweisung untersucht werden.
| |
| | |
| ====== Hinweis ======
| |
| Bei neueren Ubuntu-Versionen sollten auch Einträge im Ordner '''/etc/apt/sources.list.d/''' überprüft werden.
| |
| | |
| ==== Paketverwaltung unbrauchbar ====
| |
| ====== Segfault ======
| |
| Es kann vorkommen, dass die Paketverwaltung aufgrund einer Beschädigung des Zwischenspeichers zum Speichern von "verfügbaren" Informationen nicht mehr funktioniert und beispielsweise ein
| |
| | |
| sudo apt-get check
| |
| | |
| mit folgender Fehlermeldung abbricht:
| |
| | |
| Segmentation faulty Tree
| |
| | |
| ===== Lösung =====
| |
| Dieser Missstand kann durch das Löschen der beiden Zwischenspeicherdateien '''/var/cache/apt/pkgcache.bin''' und '''/var/cache/apt/srcpkgcache.bin''' mit Root-Rechten behoben werden.
| |
| | |
| ==== Dateilisten-Datei ====
| |
| ====== beschädigt ======
| |
| Extrahiere Vorlagen aus Paketen: 100%
| |
| Vorkonfiguration der Pakete ...
| |
| (Lese Datenbank ... 55%dpkg: nicht behebbarer fataler Fehler, Abbruch:
| |
| Abschließender Zeilenvorschub fehlt in Dateilisten-Datei des Paketes ''pulseaudio-module-bluetooth''
| |
| E: Sub-process /usr/bin/dpkg returned an error code (2)
| |
| | |
| Nach einem Festplatten- oder Speicherfehler, bzw. wenn der Paket-Entpackprozess unterbrochen wurde, kann die entsprechende Datei unter '''/var/lib/dpkg/info/PAKET.list''' beschädigt sein.
| |
| | |
| ===== Lösung =====
| |
| Mit folgendem Vorgehen wird die entsprechend beschädigte Datei unter '''/var/lib/dpkg/info/PAKET.list''' neu generiert.
| |
| | |
| Dazu wird zuerst das entsprechende Paket heruntergeladen (sollte sich das Paket noch im Cache unter '''/var/cache/apt/archives/''' befinden, kann dieser Schritt übersprungen werden):
| |
| | |
| sudo apt-get --download-only --reinstall install PAKET
| |
| | |
| Abschließend wird die Dateilisten-Datei generiert und am entsprechenden Ort mit dem an 4 Stellen anzupassenden Befehl gespeichert (anzupassen sind zweimal <tt>PAKET</tt> und einmal jeweils <tt>VERSION</tt> und <tt>ARCHITEKTUR</tt>):
| |
| | |
| dpkg -c /var/cache/apt/archives/PAKET_VERSION_ARCHITEKTUR.deb | awk '{if ($6 == "./") { print "/."; } else if (substr($6, length($6), 1) == "/") {print substr($6, 2, length($6) - 2); } else { print substr($6, 2, length($6) - 1);}}' | sudo tee /var/lib/dpkg/info/PAKET.list
| |
| | |
| ===== Achtung! =====
| |
| Die Umleitung in die Datei '''/var/lib/dpkg/info/PAKET.list''' muss korrekt angepasst werden, da bei falscher Bezeichnung die Paketverwaltung weiter beschädigt werden könnte, indem andere Dateilistendateien überschrieben werden.
| |
| | |
| ==== Alle Pakete neu installieren ====
| |
| Sind sehr viele Pakete in schlechtem Zustand, lohnt es sich eventuell, alle installierten Programme neu aus den Quellen herunterzuladen und zu installieren:
| |
| | |
| dpkg --get-selections | grep "\binstall" | awk '{print $1}' > /tmp/dpkg.log
| |
| | |
| sucht alle installierten Pakete und speichert diese in der Datei '''/tmp/dpkg.log'''.
| |
| | |
| sudo xargs -n1 apt-get --reinstall install -y < /tmp/dpkg.log
| |
| | |
| nimmt einen Eintrag aus '''/tmp/dpkg.log''' und installiert diese Pakete erneut.
| |
| | |
| ==== Probelme mit status-Datei ====
| |
| In der Datei '''/var/lib/dpkg/status''' werden alle wichtigen Informationen für dpkg gespeichert. Ist diese Datei beschädigt, ist die Paketverwaltung unbrauchbar.
| |
| | |
| Helfen auch die Backupdateien im gleichen Verzeichnis '''/var/lib/dpkg/''' nicht weiter, kann die Datei mithilfe Informationen aus '''/var/lib/dpkg/available''' und Infodateien aus '''/var/lib/dpkg/info/''' rekonstruiert werden.
| |
| | |
| Die Qualität der Rekonstruktion hängt entscheidend von der Aktualität von '''/var/lib/dpkg/available''' ab. Diese Datei sollte zuerst (mit apt-get) erneuert werden.
| |
| | |
| Anschließend kann folgendes Perl-Skript beispielsweise als '''dpkg-rebuild''' gespeichert werden:
| |
| | |
| {|
| |
| |-
| |
| || <nowiki>#!/usr/bin/perl -w</nowiki>
| |
| | |
| <nowiki># Rebuild the Debian '/var/lib/dpkg/status' file from information in</nowiki>
| |
| <nowiki># '/var/lib/dpkg/available' and '/var/lib/dpkg/info/*.(list|conffiles)'.</nowiki>
| |
| <nowiki># This is useful if your 'status' file got corrupted if the system crashed</nowiki>
| |
| <nowiki># during package maintenance, for example.</nowiki>
| |
| <nowiki>#</nowiki>
| |
| <nowiki># Copyright 2002 by Patrick Reynolds (reynolds .at. cs duke edu)</nowiki>
| |
| <nowiki># </nowiki> 2012 by Dominique Lasserre (lasserre.d at gmail com)
| |
| <nowiki># Distributed under the terms of the GNU General Public License (GPL).</nowiki>
| |
| <nowiki>#</nowiki>
| |
| <nowiki># Usage:</nowiki>
| |
| <nowiki># </nowiki> dpkg-rebuild
| |
| <nowiki># It takes no arguments and generates output in /tmp/status.</nowiki>
| |
| <nowiki># Move /tmp/status to /var/lib/dpkg if it looks acceptable.</nowiki>
| |
| <nowiki># With multiarch support!</nowiki>
| |
| <nowiki>#</nowiki>
| |
| <nowiki># Limitations:</nowiki>
| |
| <nowiki># </nowiki> 1) Packages that are no longer available will not show up in the
| |
| <nowiki># </nowiki> rebuilt 'status' file. This means installed-but-obsolete packages
| |
| <nowiki># </nowiki> can't be managed after a rebuild.
| |
| <nowiki># </nowiki> Only packages listed in /var/lib/dpkg/available are processed. So update
| |
| <nowiki># </nowiki> it before dpkg-rebuild operation.
| |
| <nowiki>#</nowiki>
| |
| <nowiki># </nowiki> 2) The 'Conffiles:' keys in the 'status' file doesn't have checksums.
| |
| <nowiki># </nowiki> It is not possible to detect if config file was modified or not, so do
| |
| <nowiki># </nowiki> not generate checksums at all.
| |
| <nowiki># </nowiki> If a package has config files but not listed in .conffiles they aren't
| |
| <nowiki># </nowiki> tracked (and probably package state is guessed false).
| |
| <nowiki># </nowiki> 'Config-Version' will not created because it is impossible to detect from
| |
| <nowiki># </nowiki> which version config files are from.
| |
| <nowiki># </nowiki> Configuration files may not be completely removed when you purge
| |
| <nowiki># </nowiki> packages, and package upgrades may clobber existing configuration
| |
| <nowiki># </nowiki> files without asking.
| |
| <nowiki>#</nowiki>
| |
| <nowiki># </nowiki> 3) Packages in transitional or error states will be misreported.
| |
| | |
| use strict;
| |
| use warnings;
| |
| | |
| my $available = "/var/lib/dpkg/available";
| |
| my $status = "/tmp/status";
| |
| my $info_dir = "/var/lib/dpkg/info";
| |
| my %installed;
| |
| | |
| <nowiki># Multiarch supported architectures.</nowiki>
| |
| my @archs;
| |
| open(ARCHS, "dpkg --print-architecture |") || die "no native architecture\n";
| |
| while (<ARCHS>) {
| |
| chomp;
| |
| push(@archs, $_);
| |
| }
| |
| close(ARCHS);
| |
| open(ARCHS, "dpkg --print-foreign-architectures |");
| |
| while (<ARCHS>) {
| |
| chomp;
| |
| push(@archs, $_);
| |
| }
| |
| close(ARCHS);
| |
| | |
| <nowiki># Fill %installed with status information of installed packages.</nowiki>
| |
| <nowiki># installed{package} => {</nowiki>
| |
| <nowiki># </nowiki> "status" => 1, (installed with files -> installed)
| |
| <nowiki># </nowiki> "status" => 2, (installed without files -> deinstalled)
| |
| <nowiki># </nowiki> <nowiki>## not implemented:</nowiki>
| |
| <nowiki># </nowiki> <nowiki>## </nowiki> "status" => 3, (installed with files but no md5sums file -> purged)
| |
| <nowiki># </nowiki> "conffiles" => array of conffiles
| |
| <nowiki># }</nowiki>
| |
| foreach (<$info_dir/*.list>) {
| |
| my $package = $_ if (s#.*/([^/]+)\.list$#$1#);
| |
| my $pkgfile_st = "$info_dir/$package";
| |
| $installed{$package}{"status"} = 2;
| |
| open(LISTFILE, "<$pkgfile_st.list") || die "no $pkgfile_st.list\n";
| |
| while (<LISTFILE>) {
| |
| chomp;
| |
| $installed{$package}{"status"} = 1;
| |
| last;
| |
| }
| |
| if (-e "$pkgfile_st.conffiles") {
| |
| open(CONFFILE, "<$pkgfile_st.conffiles") || die "no $pkgfile_st.conffiles\n";
| |
| my @files;
| |
| while (<CONFFILE>) {
| |
| chomp;
| |
| push(@files, $_);
| |
| }
| |
| $installed{$package}{conffiles} = \@files if @files;
| |
| }
| |
| }
| |
| | |
| <nowiki># 0=between, 1=essential-searching 2=copying-installed, 3=copying-not-installed</nowiki>
| |
| my $state = 0;
| |
| my $package;
| |
| my @conffiles = undef;
| |
| open(AVAILABLE, "<$available") || die "no $available\n";
| |
| open(STATUS, ">$status") || die "no $status\n";
| |
| while (<AVAILABLE>) {
| |
| chomp;
| |
| my $line = $_;
| |
| if ($state == 0) {
| |
| if (/^Package: (\S+)$/) {
| |
| $package = $1;
| |
| unless ($installed{$1}) {
| |
| foreach (@archs) {
| |
| $package = "$1:$_" if ($installed{"$1:$_"});
| |
| }
| |
| }
| |
| if ($installed{$package}) {
| |
| print STATUS "$line\n";
| |
| $state = 1;
| |
| }
| |
| else {
| |
| $state = 3;
| |
| }
| |
| }
| |
| else {
| |
| die "Expected 'Package:' at $.\n";
| |
| }
| |
| }
| |
| elsif ($state == 1) {
| |
| my $ess_pkg = 1 if ($line =~ m/^Essential: /);
| |
| print STATUS "$_\n" if $ess;
| |
| $state = 2;
| |
| if ($installed{$package}{"status"} == 1) {
| |
| print STATUS "Status: install ok installed\n";
| |
| }
| |
| elsif ($installed{$package}{"status"} == 2) {
| |
| print STATUS "Status: deinstall ok config-files\n";
| |
| }
| |
| elsif ($installed{$package}{"status"} == 3) {
| |
| print STATUS "Status: purge ok config-files\n";
| |
| }
| |
| if ($installed{$package}{"conffiles"}) {
| |
| @conffiles = @{$installed{$package}{"conffiles"}};
| |
| }
| |
| else {
| |
| @conffiles = undef;
| |
| }
| |
| delete $installed{$package};
| |
| print STATUS "$_\n" unless $ess_pkg;
| |
| }
| |
| elsif ($state == 2) {
| |
| if ($line eq "") {
| |
| print STATUS "\n";
| |
| $state = 0;
| |
| }
| |
| elsif (/^Description: / && $conffiles[0]) {
| |
| print STATUS "Conffiles:\n";
| |
| print STATUS " $_\n" foreach (@conffiles);
| |
| print STATUS "$line\n";
| |
| }
| |
| elsif (!/^Filename: / && !/^Size: / && !/^MD5sum: /) {
| |
| print STATUS "$line\n";
| |
| }
| |
| }
| |
| elsif ($state == 3){
| |
| $state = 0 if ($line eq "");
| |
| }
| |
| }
| |
| | |
| printf "Installed packages not found in $available:\n";
| |
| foreach (sort keys %installed) {
| |
| print " $_\n";
| |
| }
| |
| |-
| |
| |}
| |
| Nun wird das Skript ausgeführt:
| |
| | |
| perl dpkg-rebuild
| |
| | |
| Anschließend wurde bei Erfolg in '''/tmp/status''' eine Rekonstruktion erstellt. Diese sollte mit den Backupdateien abgeglichen werden und kann anschließend verwendet werden. Je nach Aktualität der '''available'''-Datei wurde eine mehr oder weniger gute Rekonstruktion erstellt. Diese kann allerdings niemals ein externes Backup ersetzen.
| |
| | |
| == debconf ==
| |
| Manche Pakete sind mit dem debconf-Konfigurationssystem ausgestattet. Dadurch wird eine Intervention des Benutzers möglich, sodass diesem bestimmte Elemente wie beispielsweise Fragen oder Hinweise aus s.g. "Vorlagen" (eng. "templates") präsentiert werden, worauf der Benutzer bestimmte Entscheidungsmöglichkeiten hat.
| |
| | |
| Dadurch kann beispielsweise direkt die standardmäßige Sprache festgelegt werden, ohne dass der Benutzer diese Änderung selbst in den Konfigurationsdateien vornehmen muss.
| |
| | |
| Dieses Konfigurationssystem ist nicht auf einzelne Pakete beschränkt, sondern es können auch paketüberfreifende Konfigurationseinstellungen (anhand s.g. "shared templates") vorgenommen werden. Somit kann beispielsweise der aktuelle Displaymanager von einem anderen Loginmanager als Standard abgelöst werden.
| |
| | |
| Debconf wird dabei über die Maintainerskripte '''preinst''' (vor der eigentlichen Installation) und '''postinst''' (nach der Installation) bzw. '''postrm''' (zum abschließenden Entfernen der Datenbankeinträge nach Deinstallation des Paketes) aufgerufen.
| |
| | |
| Anhand der durch den Benutzer oder durch die Standardwerte gegebenen Rückgabewerte werden mit diesen Skripten bestimmte Einstellungen am System vorgenommen.
| |
| | |
| Nachdem ein Benutzer die erste Programminstallation eines mit debconf ausgestatteten Paketes durchgeführt und somit eine gewisse Konfiguration vorgenommen hat, kann das Paket mit dem Befehl <tt>dpkg-reconfigure</tt> "neu konfiguriert" bzw. "rekonfiguriert" werden.
| |
| | |
| Das heißt, dass nun eine Benutzerinteraktion wie bei der Erstinstallation stattfindet.
| |
| | |
| Vorlagen und die Ergebnisse der Elemente werden in die debconf-Datenbanken unter '''/var/cache/debconf''' gespeichert.
| |
| | |
| Ergebnisse und der Status (gesehen oder nicht) von Vorlagen, werden in die Datenbank '''config.dat''' geschrieben, die Vorlagen selbst sind unter '''templates.dat''' zu finden.
| |
| | |
| In Ausnahmefällen wird ein Passwort abgefragt, welches dann nur unter Schutz der Rootrechte in '''passwords.dat''' gesichert wird.
| |
| | |
| === Konfigurierbaren Pakete anzeigen ===
| |
| Eine Liste der unter debconf registrierten "Besitzer von Konfigurationsdateien" (welche idR. den Paketnamen entsprechen) erhält man im Terminal mit:
| |
| | |
| debconf-show --listowners
| |
| | |
| Soll zusätzlich noch die Passwortdatenbank nach entsprechenden Besitzern durchsucht werden, sind Rootrechte vonnöten .
| |
| | |
| === Konfiguration abfragen ===
| |
| Die Einträge in der debconf-Datenbank lassen sich mit folgendem Befehl abfragen:
| |
| | |
| debconf-show PAKET
| |
| | |
| Soll zusätzlich noch die Passwortdatenbank nach entsprechenden Einstellungen durchsucht werden, sind Rootrechte vonnöten .
| |
| | |
| === Paket neu konfigurieren ===
| |
| Die Elemente wie Fragen oder Hinweise werden nach ihrer Priorität gefiltert. Die automatische Filterung hängt in erster Linie von der in der Vorlage festgelegten Priorität ab.
| |
| | |
| Aber auch die von der Paketverwaltung abhängige Schnittstellenoberfläche oder der Status "bereits gesehen" (s.g. "seen") spielen eine Rolle.
| |
| | |
| Mit der Option ''--priority'' können mit <tt>dpkg-reconfigure</tt> die Vorlagen bereits installierte Pakete mit festgelegter Filterung dargestellt werden:
| |
| | |
| {|
| |
| |-
| |
| | colspan="2" | '''Anzeigefilter manuell vorgeben '''
| |
| |-
| |
| | | '''Option + Parameter '''
| |
| | | '''Beschreibung '''
| |
| |-
| |
| | | '''''--priority=low'' '''
| |
| | | Alle Elemente wie Fragen oder Hinweise werden dem Benutzer vorgelegt.
| |
| |-
| |
| | | '''''--priority=medium'' '''
| |
| | | Normale Elemente, die allgemein vernünftige Vorgaben haben, werden gezeigt.
| |
| |-
| |
| | | '''''--priority=high'' '''
| |
| | | Elemente, die keine allgemein vernünftigen Vorgaben haben, werden gezeigt.
| |
| |-
| |
| | | '''''--priority=critical'' '''
| |
| | | Fast alles wird auf die Vorgabewerte gesetzt, nur Elemente (idR. Fragen), die ohne Intervention des Benutzers die Systemintegrität stören könnten, werden gezeigt.
| |
| |-
| |
| |}
| |
| Der folgende Befehl konfiguriert zum Beispiel das Paket '''ssh''' neu, wobei alle durch das Paket bereitgestellte Vorlagen durchgearbeitet werden:
| |
| | |
| sudo dpkg-reconfigure --priority=low ssh
| |
| | |
| Analog gibt es den Befehl <tt>dpkg-preconfigure</tt>, mit welchem die debconf-Vorlagen, welche ''vor'' einer Paketinstallation durchzuführen waren, abgearbeitet werden.
| |
| | |
| ===== Hinweis =====
| |
| Standardmäßig wird bei dpkg-reconfigure und dpkg-preconfigure (unabhängig von der systemweiten debconf-Priorität) die Priorität "low" verwendet.
| |
| | |
| === Schnittstellenoberflächen ===
| |
| debconf kann auf mehrere Wege mit dem Benutzer kommunizieren. Es werden folgende Schnittstellenoberflächen (s.g. "frontends") unterstützt, wobei diese unterschiedlich funktional sind.
| |
| | |
| {|
| |
| |-
| |
| | colspan="3" | '''Schnittstellenoberflächen '''
| |
| |-
| |
| | | '''Typ '''
| |
| | | '''Beschreibung '''
| |
| | | '''Funktionalität '''
| |
| |-
| |
| | | Dialog
| |
| | | konsolenbasierte Vollbilddarstellung mit dialog
| |
| | | vollständige Interaktion möglich
| |
| |-
| |
| | | Readline
| |
| | | traditionelle, einfache Textschnittstelle
| |
| | | um Momentanwert zu sehen, muss '''libterm-readline-gnu-perl''' installiert sein
| |
| |-
| |
| | | Gnome
| |
| | | in Gnomeumgebung eingepasste X-Schnittstelle, ist nicht an GNOME gebunden
| |
| | | vollständige Interaktion möglich
| |
| |-
| |
| | | Kde
| |
| | | in KDE-Umgebung eingepasste X-Schnittstelle, ist nicht an KDE gebunden
| |
| | | vollständige Interaktion möglich
| |
| |-
| |
| | | Editor
| |
| | | Bearbeitung der Konfiguration über standardmäßigen (mit $EDITOR festgelegten) Texteditor
| |
| | | vollständige Interaktion möglich
| |
| |-
| |
| | | Web
| |
| | | Konfiguration über Browser, standardmäßig: https://localhost:8001/
| |
| | | vollständige Interaktion möglich
| |
| |-
| |
| | | Nicht-interaktiv
| |
| | | Es findet keine Interaktion statt (nicht empfohlen!).
| |
| | | keine Interaktion möglich
| |
| |-
| |
| |}
| |
| Je nach benutztem Paketverwaltungsprogramm wird automatisch eine Schnittstellenoberfläche davon ausgewählt. Man kann den Standard aber durch Rekonfigurieren des Paketes '''debconf''' festsetzen.
| |
| | |
| === Gezielte Konfiguration ===
| |
| Die Datenbank kann nach folgendem Muster (am Beispiel einer einfachen Auswahl) direkt geändert werden. ''"BESITZER"'' ist dabei meist der entsprechende Paketname.
| |
| | |
| echo "set BESITZER/VORLAGE WERT" | sudo debconf-communicate
| |
| | |
| ===== Hinweis =====
| |
| Es wird ausschließlich der Datenbankeintrag geändert. Eine Änderung an Konfigurationsdateien wird nicht vorgenommen (dies ist den Maintainerskripten '''preinst''', '''postinst''', ... vorbehalten).
| |
| | |
| Deswegen ist ein solches Eingreifen nur in Ausnahmefällen sinnvoll.
| |
| | |
| Durch manuelles Ausführen der entsprechenden Maintainerskripte unter '''/var/cache/dpkg/info''' kann aber <tt>dpkg-preconfigure</tt> und analog <tt>dpkg-reconfigure</tt> "nachgestellt" werden.
| |
| | |
| Wie dieser Befehl sinnvoll einsetzbar ist, zeigt folgendes sehr spezielles Beispiel an dem Paket '''ttf-mscorefonts-installer''':
| |
| | |
| Nach einem "Abwürgen" der Schnittstellenoberfläche mit der Frage ob die EULA akzeptiert werden soll, ist die debconf-Datenbank nicht konsistent.
| |
| | |
| Nun kann die EULA nachträglich akzeptiert werden, sodass das Paket ohne Fehler reinstalliert werden kann:
| |
| | |
| echo "set msttcorefonts/accepted-mscorefonts-eula true" | sudo debconf-communicate
| |
| | |
| === Grafische Konfiguration ===
| |
| ==== configure-debian ====
| |
| configure-debian ist ein konsolenbasiertes Rekonfigurationsprogramm, welches die Besitzer von Paketen, in ihren Bereich (s.g. "Section") eingeordnet, darstellt.
| |
| | |
| sudo apt-get install configure-debian
| |
| | |
| ==== gkdebconf ====
| |
| gkdebconf ist ein grafisches Rekonfigurationsprogramm, welches ebenfalls die Pakete in die Unterbereiche einteilt, aber auch alle auf einmal darstellen kann. Das Programm besitzt darüber hinaus die Fähigkeit, die Schnittstellenoberfläche frei zu wählen.
| |
| | |
| sudo apt-get install gkdebconf
| |
| | |
| === Dateien und Paketen ===
| |
| Der folgende Befehl in einem Terminal zeigt an, zu welchem Paket eine Datei gehört:
| |
| | |
| dpkg -S DATEINAME
| |
| | |
| Das gefundene Paket kann dann, sofern ein Eintrag in der debconf-Datenbank besteht, mit <tt>dpkg-reconfigure</tt> neu konfiguriert werden. Existiert kein solcher Eintrag, wird bei Ausführung des Befehls nichts gemacht.
| |
| [[Kategorie:APT]]
| |