Das Ubuntu-System ist kaputt, nachdem versehentlich viele Pakete deinstalliert wurden

20

Ich habe versehentlich alle Pakete entfernt, die mit dem Namen beginnen jpegmit:

sudo apt-get remove jpeg*

Dies hat eine Menge Dinge vermasselt, Unity, Firefox, Flash Player usw. entfernt.

Ich habe es irgendwie geschafft, den Desktop und die Einheit wiederherzustellen, aber dann sind noch viele Dinge fehlerhaft. Zum Beispiel .rpmDateien und lassen sich .tag.gzeinfach nicht öffnen.

Was ich will, ist eine Möglichkeit, alles zu beheben, was nicht stimmt. Dies entspricht einer Reparaturinstallation mit einer Windows-CD.

Irgendwelche Tipps?

Noob programmieren
quelle
1
Ich würde wirklich eine Neuinstallation empfehlen. Sichern Sie einfach Ihr / home / (einschließlich unsichtbarer Dateien) und fügen Sie es in die neue Installation ein.
Paul Woitaschek

Antworten:

35

Sie können die ubuntu-desktopAufgabe installieren :

sudo apt-get install ubuntu-desktop^

Dadurch werden alle Pakete des Standard-Ubuntu-Desktops installiert, die Sie entfernt haben. Von Ihnen installierte Pakete, die nicht zum Standard-Desktop gehören, werden nicht wiederhergestellt (dh Unity und Firefox werden neu installiert, Flash Player jedoch nicht).

Um diese Pakete zu installieren, können Sie genau nachsehen /var/log/apt/history.log, was Sie entfernt haben.

Hinweis: Die Installation des ubuntu-desktop^ Tasks entspricht nicht der Installation des ubuntu-desktop Pakets . Der erste gibt APT einige Hinweise zum Auflösen von Abhängigkeiten mit virtuellen Paketen, der zweite gibt APT die Freiheit, Pakete auszuwählen (und installiert am Ende nutzlose Dinge wie ubiquity).

Warum ist das Problem aufgetreten? apt-get remove jpeg*entfernt nicht alle Pakete, die mit beginnen jpeg. Stattdessen werden alle Pakete entfernt, die jpeim Namen enthalten sind. Dies liegt daran, dass apt-get mit regulären Ausdrücken arbeitet, sodass jpeg * bedeutet: alles, was jpe enthält, gefolgt von null oder mehr g .

Andrea Corbellini
quelle
1
Gute Idee, daran hatte ich nicht gedacht. Ich bin gespannt, ob es hier klappt!
Eliah Kagan
@EliahKagan: Ich habe in einer Chroot getestet. jpeg * -Pakete wirken sich nur auf einige grafische Anwendungen aus, daher befinden sich die erforderlichen Bestandteile (z. B. NetworkManager für Internetkonnektivität, APT, Terminalemulatoren usw.) noch auf dem OP-System.
Andrea Corbellini
@EliahKagan: Natürlich habe ich die (nicht offensichtliche) Annahme gemacht, dass das OP nichts anderes entfernt hat.
Andrea Corbellini
2
Bitte geben Sie eine Warnung nie verwenden , taskseleine Aufgabe zu entfernen - siehe böse tasksel-bug
guntbert
1
@Attilio: Ich habe den Unterschied in der Antwort erklärt. Siehe "Hinweis: Die Installation der Aufgabe ubuntu-desktop ^ entspricht nicht der Installation des Pakets ubuntu-desktop ..."
Andrea Corbellini,
8

Die beste Möglichkeit, dieses Problem zu beheben, ist möglicherweise die Neuinstallation von Ubuntu. (Sie sollten Ihre Dokumente zuerst sichern, auch wenn Sie eine Neuinstallation ohne Neuformatierung planen.)

Wenn Sie versuchen möchten, das System zu reparieren, überprüfen Sie die Protokolldateien des Paketmanagers, um festzustellen, welche Pakete entfernt wurden, und installieren Sie sie erneut:

  • /var/log/dpkg.log (vollständige Informationen, aber schwer zu lesen)
  • /var/log/apt/history.log (abgekürzt mit wird Ihnen mitteilen, dass jedes Paket entfernt oder anderweitig geändert wurde - wahrscheinlich die beste Wahl)
  • /var/log/apt/term.log(Wenn Sie die Pakete mit apt-getim Terminal entfernt haben, sollte dies anzeigen, was Sie damals gesehen haben, einschließlich Listen, welche Pakete entfernt werden sollten - dies ist also möglicherweise der beste Weg.)

Das erneute Installieren von Paketen, deren Namen mit "" beginnen jpeg, funktioniert nicht, da viele (mit ziemlicher Sicherheit die meisten) der entfernten Pakete entfernt wurden, weil sie sich auf diese Pakete stützten .

In Zukunft empfehle ich, die Folgen der Deinstallation eines Pakets sorgfältig zu prüfen. Wenn Sie über die Befehlszeile arbeiten, werden Sie immer benachrichtigt. (Es sei denn, Sie verwenden die -yOption. In diesem Fall normalerweise nicht. Ich empfehle, diese Option nicht zu verwenden, es sei denn, Sie wissen, was Sie tun, insbesondere bei Umzügen.)

Eine Möglichkeit, die Konsequenzen einer Paketverwaltungsoperation zu überprüfen, mit der sie ausgeführt wird apt-get, ohne das Risiko einzugehen, besteht darin, apt-get -sstatt auszuführen sudo apt-get. Dies simuliert lediglich die angegebene Aktion und gibt an, welche Pakete davon betroffen sind und wie.

Eliah Kagan
quelle
1

Ich laufe sudo apt-get purge wine*auf Ubuntu 15.10, also keine grafische Oberfläche beim Booten nur Terminal Login Option.

Wie Eliah Kagan vorschlug, verwendete ich Informationen von /var/log/apt/history.log nano in history.log und erstellte ein einfaches Skript, das sudo apt-get installalle gelöschten Pakete enthielt, die ich in der Zeile:

Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc

Aber zuerst musste ich manuell Text zwischen all: und entfernen, einschließlich:,

In diesem Schritt wäre ein neues Skript hilfreich, da es sich um Hunderte von Paketen handelt. Danach habe ich das Skript ausgeführt und einige entfernt Unable to locate packages(die ich manuell installiert hatte). Führen Sie das Skript erneut aus und fertig. Alles funktioniert gut ... zum Glück

kominato
quelle
0

Installieren Sie das Ubuntu-Desktop-Installieren Sie Ubuntu-Desktop Paket

sudo apt-get update && sudo apt-get install ubuntu-desktop

Es werden die erforderlichen Pakete für Ihr System installiert.

Tachyonen
quelle
dies schlägt für mich fehl, da die abhängigkeiten von ubuntu-desktop nicht installiert sind.
Kevinkayaks
0

Ich habe versehentlich entfernt libssl1.0.0 und meine Maschine war verkrüppelt. Zum Wiederherstellen habe ich Folgendes getan:

  1. Sichern Sie die Protokolle dessen, was entfernt wurde cp /var/log/apt/term.log ~/libssl.term.log
  2. Löschen Sie die Zeilen, die nichts mit der libssl-Aktion zu tun haben vi ~/libssl.term.log
  3. Wenn die Vernetzung fehlt (kann nicht ping google.com ), starten Sie es im Wiederherstellungsmodus neu und aktivieren Sie das Netzwerk
  4. Entfernte Pakete erneut installieren cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install
Eric Landry
quelle
0

Hier ist ein kleines Python-Skript, in das Sie den (nicht verwendbaren) Paket-String aus Ihrer Massen-Deinstallation schreiben können /var/log/apt/history.log. Es wird eine Zeichenfolge ausgegeben, die Sie kopieren und in den Befehl apt-get install einfügen können, um alle entfernten Pakete einfach zu installieren.

import re

apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES"

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)
joaoroque
quelle
Kommas? Meinen Sie Zitate?
Wjandrea
@ Wjandrea Ja, ich meine Zitate
Joaoroque