Mal eine kleine Ankündigung für alle Nutzer von Arch Linux oder Arch-Derivaten wie Antergos oder Manjaro, die nicht die Arch Linux News lesen oder die Arch Linux Announcements als Mailingliste abonniert haben und daher nicht mitbekommen, dass viele Arch-Nutzer eventuell ein wenig Hand ans System anlegen müssen. Der Hintergrund ist das Update von GCC 5.2 auf die Version 5.3. Dieses Update macht es aufgrund der Umstellung auf eine „Dual-ABI“ erforderlich, dass sämtliche C++-Anwendung neu gebaut werden müssen. Bei aus den normalen Paketquellen installierten Programmen und Bibliotheken erledigen dies die Arch-Entwickler, sodass aktuell viele Updates bei Arch anstehen. Habt ihr allerdings Programme aus dem AUR oder manuell installiert, dann müsst ihr diese nochmal neu bauen.

Wer aktuell auf seinem Arch- oder Antergos-System anstehenden Updates installiert, dem wird mit Sicherheit auffallen, dass derzeit die Pakete zahlreicher Anwendungen ein Update bekommen, auch wenn diese Upstream gar keine Aktualisierung erfahren haben. Der Grund dafür liegt in dem eingangs angesprochenen Update auf GCC-5.3.0 mitsamt einer Dual-ABI libstdc++, das das Rekompilieren sämtlicher C++-Anwendungen erforderlich macht. Auf diesen Umstand weisen die Arch Linux News sowie aber auch das Antergos-Blog hin, entsprechende Arbeiten stehen auch bei anderen Arch-Derivaten wie etwa Manjaro an.

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://antergos.com/blog/c-abi-rebuild/
$ sudo pacman -Syyu
[...]
            frei0r-plugins-1.4-3  gcc-libs-multilib-5.3.0-2
            gcc-multilib-5.3.0-2  gimp-ufraw-0.22-4  git-2.6.4-1
[...]
            wireshark-gtk-2.0.0-2  zeromq-4.1.3-4

Gesamtgröße des Downloads:                 303,05 MiB
Gesamtgröße der zu installierenden Pakete:  1102,65 MiB
Größendifferenz der Aktualisierung:          1,19 MiB

Üblicherweise reicht die Installation der ganz normalen Arch-Updates aus, um das System auf die neue ABI umzustellen — Ihr müsst also keine Angst haben, euer System kaputtzumachen. Allerdings gibt es viele Arch-Nutzer, die auf Pakete aus den Arch-User-Repositories (kurz AUR) zurückgreifen. Damit diese weiter ohne Komplikationen funktionieren, müsst ihr diejenigen AUR-Pakete, die aus den C++-Quellcode gebaut wurden, noch einmal neu kompilieren. Nun könntet ihr sämtliche AUR-Pakete identifizieren und neu einspielen, mit folgendem Skript erspart ihr euch allerdings etwas Arbeit.

#!/bin/bash

while read pkg; do
    mapfile -t files < <(pacman -Qlq $pkg | grep -v /$) grep -Fq libstdc++.so.6 "${files[@]}" 2>/dev/null && echo $pkg
done < <(pacman -Qmq)

Übertragt den Inhalt des Skripts in einen Editor und speichert die Datei beispielsweise als /tmp/abi ab. Anschließend führt ihr das Skript mit bash /tmp/abi aus. Als Ergebnis erhaltet ihr eine Liste mit sämtlichen aus dem AUR installierten Anwendungen, die mit C++ gebaut wurden und somit nun aktualisiert werden müssen. Hier nutze ich pacaur als AUR-Helper, selbstverständlich funktioniert dies auch mit yaourt und Co. Bevor ihr mit dem Bauen beginnt, achtet bitte darauf, dass ihr sämtliche Pacman-Updates installiert habt, sonst macht die Aktion keinen Sinn.

$ bash /tmp/abi
aftershotpro
fritzing
google-chrome
[...]
obs-studio
$ pacaur -S aftershotpro fritzing google-chrome [...] obs-studio

//PS: Führt ihr das Skript nach dem Rekompilieren noch einmal neu aus, dann wird es wieder dasselbe Ergebnis ausspucken. Lasst euch davon nicht verwirren: Das Skript prüft nur, welche AUR-Pakete die libstdc++ nutzen, das ändern sich durch das erneute Bauen der Pakete nicht.

Vorheriger ArtikelDer Tux zum Sonntag (XXIV)
Nächster ArtikelDer HTML5-Player von Netflix unterstützt nun auch Firefox
Hallo, ich bin Christoph - Linux-User, Blogger und pragmatischer Fan freier Software. Wie ihr ohne Zweifel bemerkt haben solltet, schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Twitter oder natürlich dem Blog folgen.

2 Kommentare

Schreibe einen Kommentar zu Johannes Antwort abbrechen

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein