Wie entferne ich veraltete Pakete nach einem fehlgeschlagenen Release-Upgrade über do-release-upgrade unter Ubuntu?

13

Wenn ich ein System über do-release-upgradeaktualisiere, schlägt der Aktualisierungsvorgang manchmal fehl und das Skript fordert mich auf, den Vorgang über manuell abzuschließen dpkg --configure -a. Dies ist kein ernstes Problem. Nachdem Sie das Abhängigkeitsproblem manuell gelöst haben und das Upgrade abgeschlossen ist, funktioniert alles einwandfrei.

do-release-upgradeNach Abschluss des Upgrades wird das Skript jedoch bereinigt:

Remove obsolete packages?  
XXX packages are going to be removed.  
Continue [yN]  Details [d]y

Dadurch werden einige veraltete Pakete aus der alten Systemversion entfernt.

Scheint, dass dieser Prozess nicht ausgeführt wird, wenn das automatische Upgrade fehlschlägt und ich das Upgrade manuell beende, sodass veraltete Pakete aus der alten Version im System installiert bleiben.

Wie kann ich den Prozess "Veraltete Pakete entfernen" manuell ausführen, nachdem das Upgrade manuell abgeschlossen wurde?

Murz
quelle

Antworten:

15

Testen Sie dies:

Öffne ein Terminal,

Drücken Sie Ctrl+ Alt+T

Starte es:

sudo -i

apt-get update

apt-get autoremove

apt-get clean

UNUSCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')

apt-get remove --purge $UNUSCONF

NEWKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')

ADDKERNEL="linux-(image|headers|ubuntu-modules|restricted-modules)"

METAKERNEL="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"

UNUSKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $ADDKERNEL |grep -vE $METAKERNEL|grep -v $NEWKERNEL)

apt-get remove --purge $UNUSKERNELS

update-grub
Kyodake
quelle
1
Vielen Dank, diese Befehle sind genau das, was ich will. Die wichtigste davon ist, dpkg -l|grep "^rc"|awk '{print $2}'dass Pakete angezeigt werden, die entfernt werden sollen. Das ist seltsam, dass apt-get oder aptitude es nicht zum Entfernen sehen wollen.
Murz
1
Einzeilige cli Befehl zum Entfernen veraltete Pakete nach do-release-Aktualisierung fehlgeschlagen basierend auf dem Beispiel: sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purge. Achtung, dieser Befehl entfernt Pakete ohne Bestätigung, ist aber nützlich, um Systeme schnell zu bereinigen.
Murz
Auf meinem System wurden die mit '^rc'-markierten Pakete noch nicht einmal installiert, aber das Upgrade schlug kurz vor der Suche nach veralteten Paketen fehl. Diese Antwort scheint also unvollständig zu sein. Dadurch werden nicht alle Pakete entfernt, die von stammen würden do-release-upgrade, falls dies erfolgreich sein sollte.
Ruslan
2

Ich glaube das "Veraltete Pakete entfernen" läuft eigentlich nur ein sudo apt-get autoremove. Probieren Sie es aus, ob es hilft.

Dan Johansen
quelle
2
sudo apt-get autoremoveEntfernen Sie nur einen kleinen Teil der Pakete, das entfernt do-release-upgrade, zum Beispiel do-release-upgradeauf dem gleichen System entfernt etwa 150 Pakete, aber apt-get autoremove- entfernen Sie nur etwa 5-10 Pakete.
Murz