it-swarm.com.de

Wie installiere ich viele entfernte Pakete auf einmal?

Ich habe den Befehl Sudo apt-get remove python verwendet und versehentlich eine Reihe erforderlicher Pakete entfernt. Ich habe mich über die Befehlszeile angemeldet und ubuntu-desktop erneut installiert, aber es fehlen noch andere Pakete. Ich suche nach einer Möglichkeit, diese entfernten Pakete einfach neu zu installieren. Da es das Protokoll im Software-Center gibt, wollte ich fragen, wie man am einfachsten Änderungen rückgängig machen oder die Liste der entfernten Pakete aus dem Software-Center extrahieren kann ...

hinweis: Ich habe Sudo apt-get install .... .... ... ... für ungefähr zwei Dutzend dieser entfernten Programme in dieser Liste eingegeben, aber als ich die Eingabetaste drückte, wurden keine installiert, da einige Paketnamen nicht gefunden wurden.

Die Programme wurden zum gleichen Zeitpunkt entfernt.

8
Logan

Lassen Sie mich zunächst sagen, dass das Entfernen von python dazu führen kann, dass viele grundlegende Befehle nicht mehr funktionieren. Ich weiß also nicht, ob das, was folgt, funktionieren wird.

Zweitens gehe ich davon aus, dass der package names couldn't be found -Fehler, den Sie haben, von einem falsch geschriebenen Namen in der Befehlszeile oder von einem lokal installierten Paket stammt, das nicht in Repositorys verfügbar ist.

Dann, um ein Protokoll der entfernten Pakete zu erhalten, relativ zum letzten dpkg verfügbaren Protokoll (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 lassen Sie nur Zeilen im Verhältnis zu Paketen, die Sie neu installieren möchten, basierend auf dem Zeitstempel der Zeile. Angenommen, Sie speichern die geänderte Datei unter list-mod.

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

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

Ich habe die Option --simulate eingefügt, um zu sehen, was der Befehl bewirken würde. Wenn alles in Ordnung ist, führen Sie den Befehl mit entfernter Option erneut aus.

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

16
enzotib

Also mache ich zufällig einen ähnlichen Fehler: Sudo apt-get purge python3.6* anstelle von Sudo apt-get purge python3.6.*.

Mit den folgenden Schritten konnte ich das Problem schnell beheben:

  1. Öffnete das Protokoll vim /var/log/history.log.
  2. Ich habe mit dem vim-Befehl /python3.6\* nach meinem fehlerhaften Befehl gesucht.
  3. Es gab eine Zeile Purge: unity-control-center-signon:AMD64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... mit einer langen Liste gelöschter Pakete (im Falle des Entfernens beginnt sie mit Remove:), die ich in eine andere Datei kopiert habe, ohne den Teil Purge:, um damit zu arbeiten .
  4. In dieser Datei habe ich den Befehl vim ausgeführt: %s/:[^,]*,//g, wodurch der Versionsteil entfernt und eine Liste der Pakete unity-control-center-signon lxc ... hinterlassen wurde.
  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.
1
Nikita