Erster Fall: Neuinstallation. Es sollten nach einer Neuinstallation alle Pakete noch mal gebaut werden, welche noch nicht mit dem aktuellen gcc und den aktuellen Flags gebaut wurden und die auch mit dem gcc erzeugt wurden. Nur wie findet man heraus, welche das sind? Oft wurde da emerge -e world gemacht, weil man sonst keine Idee hatte. Ganz einfache Lösung:
Code: Select all
find /var/db/pkg/ -type d -printf '%T+ %p\n' | sort -rWenn dann tatsächlich mal ein emerge -e world nötig ist, dann stört mich daran, dass sinnlos alles gebaut wird, in einer absolut schlechten Reihenfolge und man es schlecht in Schritten durchführen kann, weil sich portage für ein emerge --resume nicht ändern sollte. Also habe ich ein Script geschrieben, welches im Prinzip das oben beschriebene automatisiert.
Code: Select all
#! /bin/bash
declare a=0
find /var/db/pkg/ -mindepth 2 -type d -printf '%T+ %p\n' | sort | cut -d/ -f4- | sed 's:pkg/:=:' > /tmp/world
nano /tmp/world
while read ebuild
do
let a++
echo ebuild Nr. $a $ebuild
emerge -1 $ebuild
done < /tmp/worldMit diesem Script schaffe ich es, mein KDE am Leben zu erhalten. Da ich ja nicht der Einzige bin, der von diesem Problem betroffen ist, kann es anderen vielleicht etwas helfen. Ich bin in diesem Bereich jetzt nicht so der Experte, wenn da jemand Verbesserungsvorschläge hat. Des weiteren ist keine Abfrage zum Beenden eingebaut. Z.B. könnte man für eine Neuinstallation abfragen, ob $ebuild der aktuelle gcc ist und dann das Script beenden.
Des weiteren habe ich noch nichts gefunden, wie man dieses Skript beenden kann außer mit kill. Mit Ctrl+C killt man nur emerge, das Skript läuft weiter. Könnte man eventuell über den Rückgabewert von emerge lösen. Aber da hatte ich noch keine Zeit zu, mich drum zu kümmern.



