Vor ein paar Tagen habe ich ja den Cinnamondesktop auf Fedora+Gnome nachinstalliert, und wollte das nun wieder entfernen. Leider entfernt „dnf erase @Cinnamon-Desktop“ einige wichtige Programme, die mit Gnome installiert wurden. Das führt natürlich zu dem Problem, daß man genau diese Pakete wieder installieren muß und dazu eine Liste braucht.
Wie macht man das ?
Abgleichen natürlich. Zunächst brauchen wir die Liste mit den RPMS, die installiert wurden:
grep -i -E „^Jul 01.*fc23“ /var/log/dnf.log-20160704 | grep install | awk ‚{print $7;}‘ | sort >/root/liste.install
Dazu muß man natürlich wissen, wann man Cinnamon installiert hat, in meinem Fall am „Jul 01“ .
Daran denken: An dem Tag können noch andere Pakete installiert worden sein, also ggf. den Grep um die Uhrzeit erweitern!
Jetzt brauchen wir noch die gleiche Liste für die entfernten Pakete:
grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log | grep erased | awk ‚{print $7;}‘ | sort >/root/liste.erased
Wie bei den Installdaten, könnten auch hier noch andere Pakete deinstalliert worden sein, also auch hier ggf. die Uhrzeit einbauen!
Wer nachvollziehen will, was die einzelnen Befehle machen, kann Sie auch einzeln aufrufen :
grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log | grep erased | awk ‚{print $7;}‘ | sort
grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log | grep erased | awk ‚{print $7;}‘
grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log | grep erased
grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log
Nun hat man zwei Listen mit Paketen. Alle die Pakete, die nicht in der Install-Liste sind, aber in der Erased-Liste, müssen wieder auf den Rechner drauf.
Jetzt könnte es soooo einfach sein :
grep -vf /root/liste.install /root/liste.erased
Ist es aber nicht, denn die Listen passen nicht zusammen. Wir müssen die Paketnamen erst normieren:
sed -e „s/\.x86_64//“ /root/liste.install > /root/liste.install2
sed -e „s/\.fc23.*//“ -e „s/:.*$//“ -e „s/-[0-9].*//“ /root/liste.erased > /root/liste.erased2
Jetzt können wir Sie vergleichen :
grep -vf /root/liste.install2 /root/liste.erased2
Das zeigt alle Tools an, die in der Install-Liste fehlen, also zuviel deinstalliert wurden.
Das sollte man jetzt von Hand nochmal aussortieren, aber zur Not ginge auch:
grep -vf /root/liste.install2 /root/liste.erased2 | awk ‚{print „dnf -y install „$1;}‘ | bash
und alles würde automatisch installiert werden.
ACHTUNG: Hinweis für spätere Zeiten :
Als dieser Artikel geschrieben wurde, war Fedora 23 aktuell auf einem 64Bit System installiert. Wer andere Versionen einsetzt, muß die ganzen Anweisungen selber sinnvoll anpassen.