Neuinstallation aller Debian-Pakete

Ich habe versehentlich einen im Hintergrund ausgeführten dpkg-Prozess beendet und möchte alle Pakete neu installieren, um sicherzustellen, dass alles in Ordnung ist.

Zuerst habe ich versucht, eine Liste aller Pakete zu erhalten und sie neu zu installieren.

dpkg --get-selections | grep -v deinstall | awk "{print $1}" > list.log apt-get install --reinstall $(cat list.log) 

Es gibt jedoch Meldungen wie:

E: Couldn"t configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle. 

Ich habe apt-get -f install ohne Erfolg versucht.

Als letzten Ausweg habe ich alle Programme neu installiert, bei denen das fehlgeschlagen ist Prüfsummen:

dpkg -l | grep ^ii | awk "{ print $2 }" | xargs debsums -s -a 

Was soll ich tun, um alles neu zu installieren?

Bearbeiten: Problem gelöst. Das Problem war etwas anderes (siehe die Kommentare). Ich verstehe, dass es mit Debian etwas zu vermeiden ist.

Kommentare

  • Ich hatte kürzlich einen Absturz beim Versuch, ein Paket zu installieren. Beim Neustart und versuchte, dieses Paket neu zu installieren, erhielt ich die Nachricht, “ E: dpkg wurde unterbrochen, Sie müssen ‚ dpkg –configure manuell ausführen -a ‚, um das Problem zu beheben. „. Durch Ausführen dieses Befehls wurden das Paket und die Konfigurationsdateien entfernt. Ich konnte dann das installieren Paket von Grund auf neu. Versuchen Sie, diesen Befehl auszuprobieren.
  • ‚ hat nichts getan, daher ist vermutlich nichts kaputt. Ich werde später versuchen, zu überprüfen, ob Meine Treiberprobleme sind gelöst.
  • Neuinstallation aller Pakete == wirklich schlechte Idee. (a) Es ist fast immer unnötig (b) es wird wahrscheinlich fehlschlagen (()) ‚ c) Wenn Ihr System wirklich so stark durcheinander ist, installieren Sie es einfach neu. Beheben Sie einfach die Probleme, die Sie tatsächlich sehen.

Antwort

Versuchen Sie dies und denken Sie daran, dass ich nicht teste es:

dpkg --get-selections > selections sudo dpkg --clear-selections sudo dpkg --set-selections < selections sudo apt-get --reinstall dselect-upgrade 

Quellen:

Kommentare

  • Mein Problem war ganz anders: Ich habe nicht den richtigen Kernel gebootet (!). Ich werde Ihre Antwort akzeptieren, da sie zu tun scheint, was ich wollte (aber auch ungetestet).
  • Dies wird ‚ nicht funktionieren und das System vollständig beschädigen. In Zeile 3 wird apt deinstalliert, sodass ‚ anschließend nicht alles neu installiert werden kann.
  • @rkjnsn: Ich habe die Antwort aktualisiert und überprüft, ob sie funktioniert.
  • Wenn Sie versuchen, dies zu tun, wird nichts neu installiert, obwohl die Auswahldatei gefüllt ist: pi @ prodpi ~ $ sudo apt-get –reinstall dselect-upgrade Lesen von Paketlisten … Fertig Erstellen des Abhängigkeitsbaums Lesestatus Informationen … Fertig 0 aktualisiert, 0 neu installiert, 0 entfernt und 0 nicht aktualisiert. Irgendeine Idee?
  • Ein Grund, warum Ihr Code ‚ nicht funktioniert, ist, dass der Befehl dpkg --get-selections list auch deinstalliert Pakete.

Antwort

Bei Verwendung von Aptitude gibt es eine einfache und schnelle Möglichkeit:

sudo aptitude reinstall "~i"

, wodurch alle derzeit installierten Pakete neu installiert werden.

Kommentare

  • Schön und prägnant!

Antwort

Versuchen Sie für alle Fälle, jeweils neu zu installieren Paket :

for i in $(cat list.log); do apt-get install --reinstall "$i"; done 

Möglicherweise möchten Sie auch alle Fragen mit Ja beantworten.

Antwort

In einer der von Lucas Malor zitierten Ressourcen habe ich ein Skript namens populator gefunden, das zu sein scheint in der Nähe der Lösung. Wenn Sie die Paketauswahlvariable auf die Liste aller Ihrer Pakete setzen

PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)

, können Sie das Skript ausführen und alle Pakete neu installieren aber das System wird wahrscheinlich einige Probleme haben. Es ist besser, es zuerst in einer virtuellen Maschine zu testen.

Hier ist eine Variante des Skripts über den obigen Link:

#!/bin/bash # # Script to pre-populate apt-get proxy for faster later downloads. # It uses apt-get and wget to pull all the specified packages. # # Make sure only root can run our script if [[ $EUID -ne 0 ]]; then echo "You"re not root, are you?" 1>&2 exit 1 fi # Specify wanted packages PKGLIST="exaile" # Clears out the local repository of retrieved package files apt-get clean # Resynchronize the package index files from their sources apt-get update # Re-install specified packages at the newest version. apt-get install --reinstall $PKGLIST 

Wenn der Fehler angezeigt wird, dass bestimmte Pakete nicht neu installiert werden können, führen Sie diesen Befehl aus, um es erneut zu versuchen:

sudo apt-get -y autoremove 

Antwort

Versuchen Sie dies stattdessen, da Ihre Ausgabe eine riesige Zeile mit Leerzeichen zwischen den Dateinamen erstellt.

dpkg --get-selections | grep -v deinstall | awk "{print $1}" > list.log awk "$1=$1" ORS=" " list.log > newlist.log apt-get install --reinstall $(cat newlist.log)

Die einzige Änderung an Ihrem ursprünglichen Beitrag ist das Hinzufügen der zweiten awk-Anweisung. Dies könnte wahrscheinlich in Übereinstimmung mit der ersten erfolgen, um die gewünschte Datei zu erstellen.

Diese Änderung erzwingt apt- Laden Sie die Pakete und alle fehlenden Abhängigkeiten, die nicht beim ersten Mal installiert wurden, erneut herunter und installieren Sie sie der Reihe nach neu.

Wenn wir es inline machen, würde es meiner Meinung nach dann so aussehen:

dpkg --get-selections | grep -v deinstall | awk "{print $1}" | awk "$1=$1" ORS=" " > list.log

Stellen Sie dann sicher, dass das System wirklich über die richtigen (oder neuesten) Pakete verfügt, bereinigen Sie den passenden Cache, aktualisieren Sie ihn und laden Sie dann alle Dateien erneut herunter (Sie können die ersten beiden Schritte überspringen, wenn Sie nur das möchten, was Sie im Cache haben neu installiert):

apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)

Ich hatte über 2k Pakete auf einem System installiert, das ich aktualisiert habe und das einen Hangup hatte. Mit dpkg –configure -a wurde die Installation abgeschlossen (sie befand sich in der letzten Phase). Ich habe dies dann ausgeführt, damit alles korrekt neu installiert wird.

Oder wie oben unter https://superuser.com/questions/298912/reinstall-debian-while-keeping-installed-packages-and-data angegeben :

sudo apt-get install --reinstall $(dpkg --get-selections | grep -w "install$" | cut -f1)

Stellen Sie einfach sicher, dass Sie vor jeder Neuinstallation zuerst „init 2“ ausführen, da einige der Komponenten von X oder Ihr bevorzugter Fenstermanager mag es möglicherweise nicht, neu installiert zu werden.

Kommentare

  • Es sei denn, Sie haben ‚ IFS geändert , unquoted $(cat file) tokenisiert auf einem beliebigen Leerzeichen und liefert genau das gleiche Ergebnis, unabhängig davon, ob die Datei durch Zeilenumbrüche oder Leerzeichen begrenzt ist. --reinstall könnte helfen, wurde aber bereits zweimal zuvor angegeben.

Antwort

Dies über apt zu tun ist ziemlich einfach:

apt list --installed | cut --delimiter=/ --fields=1 | xargs apt reinstall -y

Das apt list --installed Teil macht genau das, was man vermuten würde. Das Zeichen | leitet die Standardausgabe des Befehls apt an die Standardeingabe des Befehls cut Befehl. Der Teil cut --delimiter=/ weist den Befehl cut an, / als Trennzeichen und --fields=1 weist cut an, das erste Feld zu verwenden, dh den Text vor dem ersten / wird in der Ausgabe des Befehls apt list --installed angezeigt. In diesem Fall ist das Ergebnis des Befehls cut eine Liste aller installierten Pakete ohne alle zusätzlichen Informationen, die wir von apt list --installed.

Der nächste Befehl | leitet die Standardausgabe des Befehls cut weiter, die Liste aller installierten Pakete an die Standardeingabe des Befehls xargs, der wiederum apt reinstall -y für jedes der derzeit installierten Pakete aufruft .

Hinweis : Abhängig von Ihrer passenden Konfiguration wird die apt reinstall -y part installiert möglicherweise Updates für Ihre vorhandenen Pakete anstelle der genauen Versionen, die Sie derzeit installiert haben.

Antwort

Bei Verwendung RPM: Falls Sie eine Beschädigung in der Paketdatenbank verursachen, besteht die Möglichkeit, diese Datenbank neu zu erstellen, sodass Sie nicht b durchlaufen müssen asical eine Neuinstallation. Wie ein Benutzer hier betonte, geschieht dies in Debian durch dpkg --configure -a.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.