Ich habe auf einem älteren Raspberry Pi 2B noch ein Raspbian/Wheezy laufen, auf dem einige spezielle Anwendungen ihren Dienst tun, deren Entwickler von Zeit zur Zeit ihre Updates als C++-Sourcen via Github veröffentlichen. Nun ist passiert, was irgendwann ja mal passieren musste: Der Compiler gab nach einem Update einige Fehler aus, weil einige benötigte Funktionen nicht verfügbar waren. Mit anderen Worten: GCC musste von der etwas betagten Version 4.6.3 auf (mindestens) 4.7 upgedated werden. Diese ist jedoch so ohne Weiteres nicht auf dem alten Raspian Wheezy per apt verfügbar. Und einfach mit „sudo apt-get install gcc-4.7“ eine neue Version drüberbügeln – damit allein ist es nicht getan. Was also tun?
Nach einigen Recherchen bin ich auf diese Anleitung gestoßen. Die habe ich Schritt für Schritt abgearbeitet. Und seitdem kann ich wieder neue Releases problemlos compilieren.
Zunächst öffnet man mit dem Editor seines Vertrauens (z. B. nano) die Datei /etc/apt/sources.list .
sudo nano /etc/apt/sources.list
Normalerweise steht dort seit Wheezy-Zeiten nur eine Zeile drin, nämlich „deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi“. Um Software aus neueren Jessie-Repositories installieren zu können, muss man die sources.list um folgenden Inhalt erweitern:
deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi # Quelltext-Repository aus Raspian Jessie hinzufügen deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi deb http://archive.raspbian.org/raspbian jessie main contrib non-free rpi deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free rpi
Nun die sources.list speichern und schließen. Jetzt fügt man im Verzeichnis /etc/apt/ eine Datei namens „preferences“ hinzu (sudo nano preferences) und schreibt dort Folgendes hinein:
Package: * Pin: release n=wheezy Pin-Priority: 900 Package: * Pin: release n=jessie Pin-Priority: 300 Package: * Pin: release o=Raspbian Pin-Priority: -10
Auch diese Datei speichern und schließen. Nun fährt man auf den eigenen Software-Stand ein Update mit „sudo apt-get update“. Nachdem das durchgelaufen ist, ist man in der Lage, GCC und G++ 4.8 aus den Jessie-Repositories zu installieren. Das geht mit
sudo apt-get install -t jessie gcc-4.8 g++-4.8
Das dauert nun etwas. Zwischendurch wird man gefragt, ob sämtliche noch laufende Dienste neu gestartet werden dürfen (u. a. Apache). Diese Abfrage bestätigt man mit „Yes“. Falls noch andere GCC-/G++Versionen auf dem Raspi vorhanden sein sollten, entfernt man diese mit
sudo update-alternatives --remove-all gcc sudo update-alternatives --remove-all g++
Wenn man will (oder muss, weil aus irgendwelchen Gründen noch ältere Versionen benötigt werden), kann man diese auch wieder hinzufügen:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 20 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
Soooooo – ab sofort ist GCC 4.8 der Standard-Compiler auf der Himbeere (Testen mit „gcc -v“). Falls man evtl. andere GCC-Versionen aktivieren möchte, so geht das mit
sudo update-alternatives --config gcc sudo update-alternatives --config g++