Ich habe versehentlich einen dpkg-Prozess beendet, der im Hintergrund ausgeführt wird, und ich 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)
Aber es gibt Nachrichten wie:
E: Couldn't configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle.
Ich habe es versucht apt-get -f install
, ohne Erfolg.
Als letzten Ausweg habe ich alle Programme neu installiert, bei denen die Prüfsummen fehlgeschlagen sind:
dpkg -l | grep ^ii | awk '{ print $2 }' | xargs debsums -s -a
Was soll ich tun, um alles neu zu installieren?
Edit: Problem gelöst. Das Problem war etwas anderes (siehe die Kommentare). Ich verstehe, dass es etwas ist, das man mit Debian vermeiden sollte.
debian
package-management
apt
alex_reader
quelle
quelle
Antworten:
Probieren Sie es aus und denken Sie daran, dass ich es nicht getestet habe:
Quellen:
man apt-get
quelle
dpkg --get-selections
auch Pakete deinstalliert.Versuchen Sie für alle Fälle, jedes Paket neu zu installieren :
Sie können auch die Option "Ja" für alle Fragen hinzufügen.
quelle
dpkg --get-selections > list.log
zuerst.list.log
wird aus der Frage genommen.In einer der von Lucas Malor zitierten Quellen habe ich ein Skript namens populator gefunden, das der Lösung nahe zu sein scheint. Wenn Sie die Paketauswahlvariable auf die Liste aller Ihrer Pakete setzen
PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)
Sie können dann 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:
Wenn der Fehler angezeigt wird, dass bestimmte Pakete nicht erneut installiert werden können, führen Sie diesen Befehl aus, um es erneut zu versuchen:
quelle
Versuchen Sie dies stattdessen, da dies Ihre Ausgabe beansprucht und eine riesige Zeile mit Leerzeichen zwischen den Dateinamen ergibt.
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 parallel zur ersten erfolgen, um die gewünschte Datei zu erstellen.
Diese Änderung erzwingt, dass apt-get die Pakete und alle fehlenden Abhängigkeiten, die nicht zum ersten Mal installiert wurden, korrekt erneut herunterlädt und sie der Reihe nach neu installiert.
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
Und stellen Sie dann sicher, dass das System wirklich die richtigen Pakete (oder die neuesten) enthält, bereinigen Sie den apt-Cache, aktualisieren Sie ihn und laden Sie alle Dateien erneut herunter (Sie können die ersten beiden Schritte überspringen, wenn Sie nur das wollen, 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, auf dem ich ein Upgrade durchgeführt habe und das einen Hangup hatte. Mit dpkg --configure -a wurde die Installation abgeschlossen (es war in der letzten Phase). Ich habe dieses dann ausgeführt, um alles neu zu installieren.
Oder wie unter /superuser/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 zuerst ein "init 2" ausführen, bevor Sie eine Neuinstallation durchführen, da einige der Komponenten von X oder Ihrem bevorzugten Fenstermanager möglicherweise nicht neu installiert werden möchten.
quelle
$(cat file)
Token ohne Anführungszeichen in einem Leerzeichen eingefügt, und es wird genau das gleiche Ergebnis erzielt, unabhängig davon, ob die Datei durch Zeilenumbrüche oder Leerzeichen begrenzt ist.--reinstall
könnte helfen wurde aber schon zweimal vorher gegeben.Wenn Sie Aptitude verwenden, gibt es eine einfache und schnelle Möglichkeit:
sudo aptitude reinstall '~i'
Dadurch werden alle derzeit installierten Pakete neu installiert.
quelle
Wenn Sie mit RPM arbeiten und die Paketdatenbank beschädigt wird, besteht die Möglichkeit, diese Datenbank neu zu erstellen, sodass Sie im Grunde genommen keine Neuinstallation durchführen müssen. Wie ein Benutzer hier darauf hingewiesen hat, geschieht dies in Debian von
dpkg --configure -a
.quelle
dpkg --configure -a
ist es, alle entpackten und nicht konfigurierten Pakete zu konfigurieren. Siehe Manpages vondpkg
unddpkg-reconfigure
und auch debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html