08 May 2007

GCC-Update 3.4.6 -> 4.1.1

JUUUHHUUUUUUUUUUUUUUUUUUUUUUUUUUUU!

Es ist vollbracht:

Nach einer Woche Dauerbetrieb, unzähligen Abbrüchen des Scriptes „update-world -e && update-world -i“ und stundenlangen Fehlersuchen und Googling ist nun endgültig das Update meines Hauptrechners von GCC 3.4.6 auf GCC 4.1.1 durchgestanden.

Probleme hatte ich vor allem mit diversen Paketen, die darauf bestanden, dass in GCC 4.1.1 eine Datei libstdc++.la benötigt sei um sie compilieren zu können. Lösung dafür war das bootstrap-Script auszuführen, bevor ich mit „emerge -e system“ und „update-world -e && update-world -i“ fortfahren konnte.

Ein anderes Problem, welches das „update-world -i“ an bestimmten Punkten den falschen Kernel finden lies war, dass das USE-Flag „symlink“ standardmäßig aktiviert ist. Ausführen von „euse -D symlink“ half nicht. Erst „echo ‚gentoo-sources  -symlink‘ » /etc/portage/package.use“ brachte den gewünschten Erfolg.

Wer sich viel Ärger ersparen möchte führt diese Befehle gleich von Anfang an aus:

#  echo 'gentoo-sources  -symlink' >> /etc/portage/package.use
#  esync
#  emerge -uav gcc
#  gcc-config i686-pc-linux-gnu-4.1.1
#  env-update && source /etc/profile
#  fix_libtool_files.sh 3.4.6
#  fix_libtool_files.sh 3.3.6
#  emerge --oneshot -av libtool
#  /usr/portage/scripts/bootstrap.sh
#  emerge -eav system
#  rm -rf ~/.update-world
#  update-world -e && update-world -i

Während der Laufzeit solltet ihr es vermeiden den Portage-Tree zu updaten – es könnte eventuell (wie bei mir) vorkommen, dass im neuen Tree diverse Versionen nicht mehr vorhanden sind. Dies führt zum Abbruch von „update-world -i“. Danach habt ihr nur noch die Möglichkeiten entweder neu zu starten, oder den Rest der Pakete von Hand zu emergen.

Solltet ihr jedoch die alten GCC-Versionen dringend benötigen, habt ihr wohl ein kleines Problem, da das bootstrap-Script diese im Verlauf aus dem System entfernen wird. Ich habe aber irgendwo eine Anleitung gesehen, wie die alten GCC-Versionen VORHER zu Paketen gepackt werden können. Dann könnt ihr sie anschließend einfach wieder installieren.