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:
- http://www.linuxquestions.org/questions/linux-software-2/force-apt-get-to-redownload-and-reinstall-dependencies-as-well-873038/
- https://kura.io/2010/07/02/using-dpkg-selections-to-backup-and-install-packages/?ModPagespeed=noscript
-
man apt-get
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
- Die Rolle von
dpkg --configure -a
dient zum Konfigurieren aller entpackten und nicht konfigurierten Pakete. Siehe Manpages vondpkg
unddpkg-reconfigure
sowie debian.org/doc/manuals /debian-faq/ch-pkg_basics.en.html