Frage Wie installiert man viele entfernte Pakete auf einmal?


ich benutzte sudo apt-get remove python Befehl und versehentlich entfernt eine Reihe von Paketen, die erforderlich waren. Ich loggte mich über die Befehlszeile ein und installierte ubuntu-desktop wieder, aber es gibt andere Pakete, die fehlen, und ich suche nach einer Möglichkeit, diese entfernten Pakete einfach neu zu installieren. Da es im Software-Center ein Protokoll gibt, wollte ich fragen, wie der einfachste Weg sein könnte, Änderungen rückgängig zu machen oder die Liste der entfernten Pakete aus dem Software-Center zu extrahieren ...

Hinweis: Ich habe getippt sudo apt-get install .... .... ... ... für ungefähr zwei Dutzend dieser entfernten Programme in dieser Liste, aber wenn ich Enter drücke, habe ich keine davon installiert, weil einige Paketnamen nicht gefunden werden konnten.

Die Programme wurden zum gleichen Zeitpunkt entfernt.


8
2018-06-26 12:22


Ursprung


Hinein sehen /var/log/apt/history.log - Lekensteyn


Antworten:


Zuallererst, lassen Sie mich das Entfernen sagen python kann dazu führen, dass viele grundlegende Befehle nicht mehr funktionieren. Ich weiß also nicht, ob das Folgende funktioniert.

Zweitens nehme ich an, dass die package names couldn't be found Der Fehler, den Sie haben, stammt von einem falsch eingegebenen Namen in der Befehlszeile oder von einem lokal installierten Paket, das in Repositories nicht verfügbar ist.

Dann, um ein Protokoll der entfernten Pakete zu erhalten, relativ zu den letzten dpkg Protokoll verfügbar (ich glaube nicht, dass Sie ältere Protokolle berücksichtigen müssen):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Bearbeiten Sie dann die list Datei, die im aktuellen Verzeichnis erstellt wurde, und nur die Zeilen, die sich auf die Pakete beziehen, die Sie neu installieren möchten, basierend auf dem Zeitstempel der Zeile. Angenommen, Sie speichern die geänderte Datei in list-mod.

Verwenden Sie den folgenden Befehl, um diese Pakete neu zu installieren:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Ich habe das eingefügt --simulate Option, um zu sehen, was der Befehl tun würde. Wenn alles in Ordnung ist, wiederholen Sie den Befehl mit dieser Option.

Wenn der Befehl sagt, dass einige Pakete nicht gefunden werden können, entfernen Sie sie einfach aus list-mod und versuche es erneut.


15
2018-06-26 12:49



danke, ich konnte die Pakete neu installieren, die ich brauchte! Eine Frage ist jedoch, dass mehr als 200 Pakete im Softwarecenter-Protokoll entfernt wurden, aber die Listendatei hatte ungefähr 150. Bedeutet dies, dass dpkg.log keine automatischen Installationen / abhängigen Pakete enthält? Nochmals vielen Dank für diese Lösung :) - Logan
Diese Protokolldatei enthält jedes installierte, aktualisierte, entfernte oder bereinigte Paket und mit jeder Anwendung von dpkg zu apt-get, aptitude, Synaptic, Softwarezentrum, gdebiusw. Sie können einen Blick auf ältere werfen dpkg.log Dateien, siehe ls -lrt /var/log/dpkg.log*. - enzotib
@enzotib Ich habe ein Skript zum Löschen alter Linux-Header ausgeführt, und ich denke, dass der reguläre Ausdruck mit vielen der Pakete übereinstimmt, die ich nicht löschen wollte (sehr wichtige !!). Deine Antwort hat mich vor einer gewissen Katastrophe bewahrt. - shivisuper
@enzotib Sie haben mich gerade daran gehindert, mein Betriebssystem nach dem Ausführen eines fehlerhaften Skripts neu zu installieren. Vielen Dank! - brndn2k


Also mache ich einen ähnlichen Fehler: sudo apt-get purge python3.6* Anstatt von sudo apt-get purge python3.6.*.

Ich konnte es ziemlich schnell beheben, mit den folgenden Schritten:

  1. Das Protokoll geöffnet vim /var/log/history.log.
  2. Nach meinem fehlerhaften Befehl mit dem Befehl vim gesucht /python3.6\*.
  3. Da war eine Schlange Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... mit einer langen Liste von bereinigten Paketen (im Falle des Entfernens beginnt es mit Remove:), die ich in eine andere Datei ohne die kopiert habe Purge: Teil damit zu arbeiten.
  4. In dieser Datei habe ich den Befehl vim ausgeführt: %s/:[^,]*,//g, die den Versionsteil entfernt hat und mir eine Liste mit Paketen hinterlassen hat unity-control-center-signon lxc ....
  5. Schließlich habe ich eine Zeile aus dem vorherigen Schritt kopiert und ausgeführt: sudo apt-get install unity-control-center-signon lxc ...und so wurde es behoben.

2
2018-03-29 13:29