Hast du jemals apt gebrochen?? Für erfahrene Linux-Profis, es ist ziemlich üblich (etwa jedes halbe Jahr) Strampler. Wenn Sie einige Befehle in dpkg kennen, Sie können das Problem oft einfacher beheben! Finde heraus wie.
Welche sind fit und dpkg?
Wenn Sie eine Debian-basierte Distribution wie Ubuntu oder Mint verwenden, Ihr Computer verwendet fit Pakete bearbeiten. Passende Bedeutung Erweitertes Packwerkzeug, das ermöglicht Ihnen die Installation, deinstallieren, Debian-Pakete bereinigen und verwalten.
zur selben Zeit apt
(auf der Befehlszeile verwendet), Ihr Computer verfügt wahrscheinlich über einen Desktop-Paketmanager der obersten Ebene / Allgemeines, die einfach nutzt apt
, oder vielleicht dpkg
, im Hintergrund.
Der Debian-Paketmanager dpkg
ist eine Alternative zur Paketverwaltung auf Debian-basierten Installationen. Es ist ein viel niedrigeres Niveau als apt
, was gibt dir mehr freiheit, aber es birgt auch ein größeres Risiko, Dinge zu zerbrechen.
Deshalb (es sei denn, Sie sind ein erfahrener DevOps-Ingenieur) Ich empfehle, dass Sie verwenden apt
jederzeit, erhöhe es mit dpkg
sobald ich probleme habe.
Mit diesem schrittweisen Ansatz erhalten Sie das Beste aus beiden Welten.: die Stabilität und Benutzerfreundlichkeit des apt
Paket-Manager, mit der Kraft und Granularität von dpkg
Debian-Paketmanager, wenn du es brauchst.
Sagen wir, als Beispiel, Sie haben ein Paket, das Sie gerade installiert haben, das endete irgendwie damit, dass es kaputt ging apt
. Ö, kann sein, die Installation eines Pakets wurde versehentlich unterbrochen.
Was auch immer die Ursache ist, apt
gilt jetzt als kaputt, und du hast schon Dinge ausprobiert wie sudo apt update --fix-missing
und sudo apt install --fix-broken
vergeblich. Wenn ja, dann …
Willkommen zu dpkg
Wenn du apt
es ist kaputt, das ist kein Spaß. Ja, so ist es Wirklich Innerhalb, es macht noch weniger spaß. Auch wenn jemand weiß was er tut, manchmal braucht es ein gewisses Maß an Kunst, Und definitiv, Fähigkeit, um ein defektes Verpackungssystem zu reparieren.
Der Begriff “Kunst” ist durchaus anwendbar, da Sie eine Idee oder ein Gefühl haben, während Sie verschiedene Schritte zur Fehlerbehebung durchgehen, vor allem wenn du es schon oft gemacht hast, ob etwas während eines Neustarts funktioniert oder nicht.
Es besteht immer die Gefahr, dass das Verpackungssystem so beschädigt wird, dass, wenn du neu startest, Ihre Linux-Instanz wird möglicherweise nicht wieder angezeigt und es sind zusätzliche und möglicherweise noch komplexere Fehlerbehebungen erforderlich.
Ich möchte an dieser Stelle sagen, dass sich all dies leicht vermeiden lässt, indem Sie ein paar einfache Befehle ausführen, aber leider, Das ist nicht der Fall. Fakt ist, je mehr du weißt, desto einfacher ist es, das Problem zu beheben und desto sicherer müssen Sie wissen, ob Sie bereit sind, das System neu zu starten oder nicht.
Hier kommen wir an dpkg
. das dpkg
Das Programm ermöglicht uns eine viel genauere Kontrolle über alle installierten Pakete, Und selbst wenn die Gefahr größer ist, dass etwas schief geht, Außerdem gibt es viel mehr Möglichkeiten, ein System genau so zu ändern, wie wir es wollen. Lass uns tauchen.
Wenn Sie sich für Linux im Allgemeinen interessieren, Lesen Sie auch unsere 3-teilige Serie Bash Automation & Skripting.
Basic dpkg Verwenden
Wir können die Pakete heute im System sehen, indem wir einfach ausführen dpkg -l
. Da die Ausgabe wahrscheinlich sehr detailliert sein wird (auch wenn es regelmäßig paginiert wird), du kannst a . verwenden grep
Um die Ergebnisse einzuschränken.
dpkg -l | Kopf -n5 && dpkg -l | grep 'gnome-calculator'
dpkg -l | grep 'Gnome-Rechner'
Der erste Befehl ist eigentlich eine Kombination aus zwei Befehlen (getrennt durch &&
, was wörtlich bedeutet: Führen Sie den zweiten Befehl nur aus, wenn der erste Befehl erfolgreich ist).
Im ersten dieser beiden Befehle, wir nehmen die ersten fünf zeilen (mit einem Rohr |
und head -n5
), und folglich, im zweiten Befehl, Wir versuchen, die Ausgabe aufzulisten, nach der wir suchen. Für diesen Fall, wir suchen den text gnome-calculator
.
Die Linie / Der sekundäre Befehl unten zeigt eine Version, die wir regelmäßig verwenden würden. Sobald jemand mit der Syntax der dpkg
Ausgang, die ersten fünf Zeilen sind in der Regel unnötig. Beachten Sie, dass sich die erste Spalte auf . bezieht (visuell) Desired=
, wobei sich die zweite Spalte auf bezieht Status=
, und die dritte Spalte für Err?=
. Wenn du den Linien visuell folgst, Sie werden sehen, wie sie sich schnell verbinden.
Wie unseres gnome-calculator
erfolgreich ohne aktuelle Fehler installiert, Es gibt keinen dritten Spaltencode unten Err?=
. Außerdem stellen wir hier fest, dass uppercase=bad
steht in den Kurzinformationen zur dritten Spalte. Wie kürzlich bekannt gegeben, in unserem Fall, es ist leer.
Die erste Spalte zeigt den gewünschten Zustand und die zweite Spalte zeigt den aktuellen Zustand. Beide werden angezeigt als i
(Install[ed]
und Inst[alled]
bzw, und das (ii
) ist die häufigste Sequenz, die (werde wollen) sehen. Es bedeutet einfach, dass everything is fine, that the package is installed, and that there are no issues
.
Beachten Sie auch, dass, in den Spaltenbeschreibungen in Klammern, der Großbuchstabe weist auf die Verbindung zwischen jedem möglichen erkannten Buchstaben und dem entsprechenden Begriff hin. Als Beispiel, überlege wie f
bezieht sich auf halF-conf
, auf Großbuchstaben hinweisen F
im gleichen.
Schauen wir uns nun eine andere Ausgabe zum Vergleich an. Diesmal, wir lassen die ersten fünf Zeilen und Sie können sich auch ohne die Überschriften etwas daran gewöhnen, das Ergebnis zu lesen.
dpkg -l | grep 'minzwillkommen'
Hier sehen wir das interessante Ergebnis von rc
, wo ii
es war mal für ihn gnome-calculator
. Wenn Sie auf der Suche nach dem r
in der ersten Desired=
Beschreibung der Spalte, die wir oben gesehen haben, Sie können sehen, was es bedeutet Remove[d]
, werfen c
In der zweiten Spalte steht für Conf-files
.
Aha! Dies (mintwelcome
, ein Willkommenspaket auf Mint) ist ein Paket, das wir irgendwann deinstalliert haben, Die Konfigurationsdateien bleiben jedoch erhalten. Lass es uns bereinigen!!
dpkg --purge 'mintwelcome'
sudo dpkg --purge 'mintwelcome'
dpkg -l | grep 'minzwillkommen'
Beachten Sie, dass Sie auch die -P
kürze statt verwenden --purge
.
Im ersten Befehl, wir können versuchen zu säubern mintwelcome
ohne Verwendung sudo
. Trotz dieses, das wird nicht funktionieren. Sie benötigen Superuser-Rechte / Root-Ebene zum Deinstallieren (oder installieren oder bluten) Pakete. Wir können wieder laufen mit sudo
, und unser Paket wird bereinigt.
Beachten Sie, dass der Begriff säubern wird von beiden verwendet apt
sowie von dpkg
um anzuzeigen, dass wir ein Paket unbedingt löschen möchten, anstatt es nur zu deinstallieren, Was wird die Konfigurationsdateien verlassen?.
Sicherstellen, dass
Ich vertraue darauf, dass du anfängst, die Kraft zu schätzen, die Kontrolle und Granularität, die dpkg
kann Ihnen bei der Verwaltung von Paketen in Ihrer Debian-basierten Distribution zur Verfügung stehen, wie Ubuntu die, für diesen Fall, Minze. Es wäre einfach, als Beispiel, Suchen Sie nach Überresten zuvor deinstallierter Paketkonfigurationsdateien, indem Sie einfach ausführen:
dpkg -l | grep '^ rc'
Bevor Sie eine dieser Konfigurationsdateien entfernen, Sie sollten doppelt sicherstellen, dass keine Pakete mit einem gleichwertigen Namen installiert sind. Als Beispiel, für diesen Fall, wir können laufen:
dpkg -l | grep 'javascript'
Beachten Sie, wie wir den zweiten Teil von entfernen 'javascript-common'
suchen nach 'javascript'
.
Ist es sicher, es zu löschen oder nicht?? Sie können sehen, wie große Macht große Verantwortung bedeutet, wie immer im leben. Die Entscheidung, es zu entfernen oder nicht, liegt bei Ihnen. Im Allgemeinen, Drei Dinge sollten Sie bei der Arbeit immer beachten dpkg
:
zuerst, werde es verifizieren wollen, Doppel- und Dreifach-Check, um sicher zu gehen. Als Beispiel, im ersten Ausflug oben, Wir hätten weitermachen und nonchalant ausscheiden können javascript-common
ohne zu prüfen, ob andere Javascript-Pakete auf dem System vorhanden sind.
War es die beste Vorgehensweise? Vielleicht, aber das niveau der garantie / Das Selbstvertrauen hat sicherlich nachgelassen, sobald wir unseren ersten Check gemacht haben, da es definitiv andere Javascript-Pakete auf dem System gibt.
Zur selben Zeit, beachte, dass hier wirklich nichts kaputt ist. Es ist in Ordnung, die Konfigurationsdateien für dieses scheinbar entfernte Paket zu belassen. Das alte Sprichwort "Wenn es nicht kaputt ist, korrigiere es nicht "scheint sicherlich auf diesen Fall zuzutreffen". Gut zu beachten bei der Verwendung dpkg
.
an zweiter stelle, Es ist wichtig, sich daran zu erinnern apt
ist ein Paketmanager, der alle Verbindungen pflegt (Mit anderen Worten, Versionen und Abhängigkeiten) zwischen Paketen im Sinn bei der Installation, Pakete deinstallieren oder debuggen.
Dies ist nicht der Fall dpkg
, was viel mehr paketbasiert ist. Es gibt mehr Granularität, aber auch mehr Gefahr, Dinge zu zerbrechen. Ob ein Paket auf einem anderen basiert oder eine Bibliothek, jemand wird sicherlich Dinge kaputt machen, indem er einfach das Hauptpaket mit . deinstalliert dpkg
.
An dritter Stelle, die meisten Linux-Pakete haben Viele Abhängigkeiten. Weil, Es wird nicht empfohlen, einfach zu verwenden dpkg
für Standardpaketverwaltung, Wir wiederholen unsere ursprünglichen Ratschläge zur Verwendung apt
Standard und ändern auf dpkg
wenn nötig.
Zu entfernen / ein Paket deinstallieren, anstatt es zu löschen (Mit anderen Worten, Konfigurationsdateien hinterlassen), du kannst den ... benutzen --remove
(Ö -r
) Option a dpkg
. So überprüfen Sie ein Paket, verwenden --verify
(Ö -V
). das --audit
(Ö -C
) gegen ein Paket prüft die Datenbank auf Konsistenz und Integrität für das Paket (oder für alle Pakete, wenn kein Paket angegeben ist).
Für mehr Optionen, sehen man dpkg
von deinem Terminal laufen. Darüber hinaus gibt es spezifische und komplexere Befehle, die für verschiedene Verpackungssystemprobleme verwendet werden können.. Dafür, Im Allgemeinen ist es besser, Ihre bevorzugte Suchmaschine für das spezifische Problem oder die Situation zu verwenden, die zum Zeitpunkt des Auftretens beobachtet wird. Häufig, jemand anderes hat ihn schon kennengelernt und die Details dokumentiert. Wenn du etwas Neues entdeckst, Nehmen Sie sich ein paar Minuten Zeit, um Ihre Ergebnisse in einem relevanten Forum oder Diskussionsthread zu veröffentlichen.
Ende
In diesem Beitrag, wir haben angefangen zu erkunden dpkg
und wie Sie uns bei der granularen Paketverwaltung helfen können, nicht wie apt
, die Pakete und alle ihre Abhängigkeiten handhabt. Erinnern, in diesen komplexen Situationen das Debuggen von Paketverwaltungsproblemen, große Macht bedeutet große Verantwortung.
Wir haben auch gesehen, wie man einen risikoaverseren Ansatz verfolgt und gleichzeitig erkannt hat, dass ein tiefgehendes Debugging der Paketverwaltung mit Kunst gleichzusetzen ist, und je besser ein Maler ist, erfolgreicher ist malen; Hm, der Neustart wird sein.