Für Debian GNU/Linux bezieht sich dies auf die Tools APT, APT-Get, Eignung, APT-Cache, APT-Abhängigkeit, APT-RDepends, DPKG-DEB und APT-Marke.
Verfügbarkeit von Softwarepaketen
Wie oben bereits erwähnt, besteht eine Linux -Verteilung aus Tonnen verschiedener Softwarepakete. Bis heute ist Software ziemlich komplex, und deshalb ist es üblich, Software in mehrere einzelne Pakete zu teilen. Diese Pakete können nach Funktionen oder Rolle wie binären Pakete, Bibliotheken, Dokumentation, Verwendungsbeispiele sowie sprachspezifische Sammlungen kategorisiert werden und bieten nur einen ausgewählten Teil der Software, nur. Es gibt keine feste Regel dafür, und die Abteilung wird entweder vom Entwicklungsteam eines Tools oder des Paketwarters erstellt, der sich um das Softwarepaket für Ihre Linux -Verteilung kümmert. In Abbildung 1 werden die Pakete aufgeführt, die die Übersetzungen für die verschiedenen Sprachen für den Webbrowser Mozilla Firefox enthalten.
Abbildung 1: Aptitude-Firefox.png
Diese Arbeitsweise ermöglicht es, dass jedes Paket von einem anderen Entwickler oder als ganzes Team aufrechterhalten werden kann. Darüber hinaus ermöglicht die Aufteilung in einzelne Komponenten auch andere Softwarepakete, sie auch für ihre eigenen Zwecke zu verwenden. Eine erforderliche Funktionalität kann angewendet werden und muss nicht neu erfunden werden.
Paketorganisation
Die Paket -Management -Tools in der Debian GNU/Linux -Distribution kümmern sich ständig darum, dass die Abhängigkeiten der installierten Pakete vollständig erfüllt sind. Dies ist insbesondere dann der Fall, wenn ein Softwarepaket in oder von Ihrem System installiert, aktualisiert oder gelöscht werden soll. Das System werden fehlende Pakete hinzugefügt, oder installierte Pakete werden aus dem System entfernt, falls sie nicht mehr benötigt werden. Abbildung 2 zeigt dies für die Entfernung des Pakets 'mc-data' mit 'apt-get'. Das Paket 'mc-data' empfiehlt, auch das Paket 'MC' automatisch zu entfernen, da es nicht mehr sinnvoll ist, ohne 'MC-DATA' zu installieren.
Abbildung 2: APT-Get-Remove-MC.png
Verpackungsmarken und Flaggen
Während ihrer Arbeit respektieren die Paketmanagement -Tools die festgelegten Paketflags und -marken. Sie werden entweder automatisch eingestellt oder vom Systemadministrator manuell eingestellt. Insbesondere dieses Verhalten bezieht sich auf das „Essential Package“, das für Pakete festgelegt ist, die nicht entfernt werden sollten. Bevor Sie dies tun, wird eine klare Warnung ausgegeben (siehe Abbildung 3).
Abbildung 3: APT-Get-Remove.png
Auch die drei Markierungen "automatisch", "Handbuch" und "Halten" werden berücksichtigt. Sie markieren ein Paket als automatisch installiert, manuell installiert oder dürfen nicht aktualisiert werden (halten Sie die aktuelle Version). Ein Softwarepaket ist entweder "automatisch" oder "manuell" markiert, aber nicht beides.
Der Befehl "APT-Mark" übernimmt unter anderem die Markierungen und Flaggen mit den folgenden Unterbewohnern:
Um alle manuell installierten Pakete aufzulisten, geben Sie diesen Befehl aus:
$ APT-Mark Showmanual
AbiWord
ABS-Guide
ack-w-Groß
ACL
ACPI
…
$
Um eine Paketversion zu halten, verwenden Sie den Unterbefehl "Hold". Das folgende Beispiel zeigt dies für das Paket 'MC'.
# APT-Marke Hold MC
MC in der Warteschlange
#
Der Unterbefehl 'Showhold' listet die in der Warteschleife befindlichen Pakete auf (in unserem Fall ist es nur das Paket 'MC'):
# APT-Mark-Showhold
MC
#
Unter Verwendung einer alternativen Methode mit dem Titel "Apt Pinning" werden Pakete nach Prioritäten klassifiziert. APT wendet sie an, um zu entscheiden, wie dieses Softwarepaket umgegangen ist, und die Versionen, die im Software -Repository verfügbar sind.
Paketbeschreibung
Unter Verwendung einer alternativen Methode mit dem Titel "Apt Pinning" werden Pakete nach Prioritäten klassifiziert. APT wendet sie an, um zu entscheiden, wie dieses Softwarepaket umgegangen ist, und die Versionen, die im Software -Repository verfügbar sind.
Jedes Softwarepaket ist mit einer eigenen Paketbeschreibung ausgestattet, die standardisiert ist. Unter anderem gibt diese Beschreibung ausdrücklich an, auf welchen weiteren Paket (en) sie abhängt. Verteilungsspezifische Tools extrahieren diese Informationen aus der Paketbeschreibung und berechnen und visualisieren Sie die Abhängigkeiten für Sie dann. Das nächste Beispiel verwendet den Befehl 'APT-Cache Show', um die Paketbeschreibung des Pakets 'Poppler-Utils' anzuzeigen (siehe Abbildung 4).
Abbildung 4: Paket-Decription-PPOPLER-UTILS.png
Die Paketbeschreibung enthält einen Abschnitt mit dem Namen "Abhängig". In diesem Abschnitt werden die anderen Softwarepakete Plus -Versionsnummer aufgeführt, von der das aktuelle Paket abhängt. In Abbildung 4 ist dieser Abschnitt rot umrahmt und zeigt, dass 'poppler-utils' von den Paketen 'libpoppler64', 'libc6', 'libcairo2', 'libfreetype6', 'libcms2', 'libstdc ++ 6' und 6 'und abhängt 'Zlib1g'.
Zeigen Sie die Paketabhängigkeiten
Das Lesen der Paketbeschreibung ist der schwierige Weg, um die Paketabhängigkeiten herauszufinden. Als nächstes zeigen wir Ihnen, wie Sie dies vereinfachen können.
Es gibt verschiedene Möglichkeiten, die Paketabhängigkeiten in der Befehlszeile anzuzeigen. Für ein DEB -Paket als lokale Datei verwenden Sie den Befehl 'DPKG -Deb' mit zwei Parametern - den Dateinamen des Pakets und das Schlüsselwort 'hängt ab' ab '. Das folgende Beispiel zeigt dies für das Paket 'Skypeforlinux-64.Deb ':
$ dpkg-deb -f downloads/Skypeforlinux-64.Deb kommt darauf ab
gconf-service, libasound2 (> = 1.0.16), libatk1.0-0 (> = 1.12.4), libc6 (> = 2.17),
libcairo2 (> = 1.2.4), libcups2 (> = 1.4.0), libexpat1 (> = 2.0.1),
libfreetype6 (> = 2.4.2), libgcc1 (> = 1: 4.1.1), libgconf-2-4 (> = 3.2.5),
libgdk-pixbuf2.0-0 (> = 2.22.0), libglib2.0-0 (> = 2.31.8), libgtk2.0-0 (> = 2.24.0),
libnspr4 (> = 2: 4.9-2 ~), libnss3 (> = 2: 3.13.4-2 ~), libpango-1.0-0 (> = 1.14.0),
libpangocairo-1.0-0 (> = 1.14.0), libscret-1-0 (> = 0.7), libv4l-0 (> = 0.5.0),
libx11-6 (> = 2: 1.4.99.1), libx11-xcb1, libxcb1 (> = 1.6), libxComposite1 (> = 1: 0.3-1),
libxCursor1 (>> 1.1.2), libxDamage1 (> = 1: 1.1), libxext6, libxfixes3,
libxi6 (> = 2: 1.2.99.4), libxrandr2 (> = 2: 1.2.99.3), libxrender1, libxss1,
libxtst6, APT-transport-https, libfontconfig1 (> = 2.11.0), libdbus-1-3 (> = 1.6.18),
libstdc ++ 6 (> = 4.8.1)
$
Um dasselbe für ein installiertes Paket zu tun, verwenden Sie "Apt-Cache". Das erste Beispiel kombiniert die Subcomand 'Show', gefolgt vom Namen des Pakets. Die Ausgabe wird an den Befehl "Grep" gesendet, der die Zeile "abhängig" filtert:
$ apt-cache Show XPDF | Grep hängt davon ab
Kommt darauf an: libc6 (> = 2.4), libgcc1 (> = 1: 4.1.1), libpoppler46 (> = 0.26.2),
libstdc ++ 6 (> = 4.1.1), libx11-6, libxm4 (> = 2.3.4), libxt6
$
Der Befehl 'grep -status -f -Paket -S hängt von XPDF' ab '.
Spezifischer, das zweite Beispiel verwendet erneut "Apt-Cache", aber mit dem Unterbefehl "hängt stattdessen" ab, statt. Auf dem Unterbefehl folgt der Name des Pakets:
$ apt-cache hängt xpdf ab
XPDF
Kommt darauf an: libc6
Kommt darauf an: libgcc1
Hängt davon ab: libpoppler46
Hängt davon ab: libstdc ++ 6
Kommt darauf an: libx11-6
Kommt darauf an: libxm4
Kommt darauf an: libxt6
Empfohlen: Poppler-Utils
Poppler-Utils: i386
Empfohlen: poppler-data
Empfohlen: GSFONTS-X11
Empfohlen: Cups-BSD
Cups-BSD: i386
Kollidiert mit:
Kollidiert mit:
Kollidiert mit:
Kollidiert mit:
Ersetzt:
Ersetzt:
Ersetzt:
Ersetzt:
Kollidiert mit: XPDF: i386
$
Die obige Liste ist ziemlich lang und kann mit dem Switch '-i' verkürzt werden (kurz für '-wichtig'):
$ apt -cache hängt ab -i xpdf ab
XPDF
Kommt darauf an: libc6
Kommt darauf an: libgcc1
Hängt davon ab: libpoppler46
Hängt davon ab: libstdc ++ 6
Kommt darauf an: libx11-6
Kommt darauf an: libxm4
Kommt darauf an: libxt6
$
Der Befehl 'APT-RDepends' erledigt dasselbe, aber mit Versionsinformationen, falls in der Beschreibung angegeben:
$ APT-RDepends XPDF
Paketlisten lesen… erledigt
Bauen von Abhängigkeitsbaum
Lesen staatliche Informationen… erledigt
XPDF
Kommt darauf an: libc6 (> = 2.4)
Hängt davon ab: libgcc1 (> = 1: 4.1.1)
Hängt davon ab: libpoppler46 (> = 0.26.2)
Hängt davon ab: libstdc ++ 6 (> = 4.1.1)
Kommt darauf ab: libx11-6
Kommt darauf ab: libxm4 (> = 2.3.4)
Kommt darauf an: libxt6
libc6
Kommt darauf an: libgcc1
…
$
Der Befehl 'Eignung' funktioniert auch mit Schalter. Verwenden Sie für Abhängigkeiten den Switch '~ r', gefolgt vom Namen des Pakets. Abbildung 5 zeigt dies für das Paket 'XPDF'. Der Buchstaben 'a' in der zweiten Spalte der Ausgabe von 'Eignung' identifiziert das Paket als automatisch installiert.
Abbildung 5: Aptitude-RDepends.png
Paketabhängigkeiten können etwas schwierig sein. Es kann dazu beitragen, Paketabhängigkeiten grafisch anzuzeigen. Verwenden Sie den Befehl 'Debtree', gefolgt vom Namen des Pakets, um eine grafische Darstellung der Paketabhängigkeiten zu erstellen. Das Tool "Punkt" aus dem GraphViz -Paket verwandelt die Beschreibung in ein Bild wie folgt:
$ debree xpdf | DOT -TPNG> Graph.png
In Abbildung 6 sehen Sie das erstellte PNG -Bild, das die Abhängigkeitsgrafik enthält.
Abbildung 6: Punkt.png
Zeigen Sie die umgekehrten Abhängigkeiten
Bis jetzt haben wir angezeigt, dass wir die Frage beantwortet haben, welche Pakete für ein Paket erforderlich sind. Es gibt auch umgekehrt - sogenannte umgekehrte Abhängigkeiten. Die nächsten Beispiele befassen sich sowohl mit dem Paket als auch den Paketen, die davon abhängen. Beispiel Nummer eins verwendet 'apt-cache' mit dem Unterbefehl 'rDepends' wie folgt:
$ apt-cache rdepends xpdf
XPDF
Reverse hängt davon ab:
| Octave-Doc
XPDF: i386
libfontconfig1: i386
| xmds-doc
xfe
wiipdf
| vim-latexsuite
Python-Scapy
| Ruby-Tioga
| Python-Tabellen-Doc
| Page-Crunch
| Octave-Doc
| Muttprint-Manual
Mozplugger
mlpost
libmlpost-ocaml-dev
…
$
Pakete, die von anderen Paketen abhängen, sind mit einem Rohrsymbol markiert. Dieses Paket muss nicht in Ihrem System installiert werden, sondern müssen in der Paketdatenbank aufgeführt werden.
Das nächste Beispiel verwendet 'Eignung', um die Pakete aufzulisten, die einen harten Verweis auf das Paket 'XPDF' haben (siehe Abbildung 7).
Abbildung 7: Fähigkeitssuche.png
Validieren Sie die Installation für fehlende Pakete
"APT-GET" bietet den Unterbefehls-Check an, mit dem die Installation validiert werden kann. Wenn Sie die folgende Ausgabe sehen, fehlen keine Pakete:
# APT-GET-Überprüfung
Paketlisten lesen… erledigt
Bauen von Abhängigkeitsbaum
Lesen staatliche Informationen… erledigt
#
Abschluss
Das Finden von Paketabhängigkeiten funktioniert gut mit den richtigen Tools. Wenn Sie sie richtig verwenden, können Sie verstehen, warum Pakete installiert sind und welche möglicherweise fehlt.