Wie installiere ich GCC 5 auf Debian Jessie 8.1?

21

Ich habe viele Lösungen ausprobiert, um das Update für meinen gcc-Compiler auf dem Debian-Server zu installieren. Keiner von ihnen hat funktioniert. Ich benötige das Compiler-Update, um die neuen Funktionen von c ++ 11 nutzen zu können, da dies eine stabile libcxx11-ABI und eine stabile Unterstützung für C ++ 11 bietet (siehe hier ). Speziell die Version `GLIBCXX_3.4.21 ', die in meinem aktuellen Compiler gcc Version 4.9.2 (Debian 4.9.2-10) nicht enthalten ist.

Einige Lösungshinweise sind hilfreich. Danke im Voraus.

Einige Links zum Forum zu meinem Problem, das ich bereits ausprobiert habe:

1 2 3 (nicht ganz verwandte Lösung ist für Ubuntu, aber ich konnte gcc-5 auf dem FTP-Server von Debian noch nicht finden)

mluthra
quelle
Das wird in Debian / testing bereitgestellt und beinhaltet, wie Sie sehen, Änderungen an den Laufzeitbibliotheken. Jemand könnte Ihnen raten, wie dies als Debian-Paket zu tun ist, aber der Effekt würde sich aufgrund der großen Anzahl betroffener Pakete kaum vom Wechsel zur Testkonfiguration unterscheiden.
Thomas Dickey
Warum brauchen Sie speziell die neue ABI- Unterstützung? Sie können den meisten C ++ 11-Code mit Debian 8's gcc 4.9.2 erstellen. Sie müssen ihn nur neu kompilieren, wenn Debian 9 veröffentlicht wird. Wenn Sie nicht warten können, ist der Wechsel zu die einfachste Lösung. Auf einem Server testingist dies jedoch wahrscheinlich keine gute Idee (je nachdem, was Sie unter Server verstehen). Der Wechsel von gcc 4.9 zu gcc 5 war mit einem Bibliotheksübergang verbunden. Wenn Sie also versuchen, es selbst zu tun, werden Sie in eine Welt voller Schmerzen geraten!
Stephen Kitt
Ich bin damit einverstanden, was Thomas und Stephen sagen, außer ich mache mir weit weniger Sorgen über die Idee, Tests auf einem Server durchzuführen. Nicht alle Server erfordern eine langfristige Gleichheit von Binärdateien und Bibliotheken (was im Debian-Kontext "stabil" bedeutet). Für einige Server ist es sinnvoller, Tests nachzuverfolgen oder sogar instabil zu werden (wenn beispielsweise hochaktuelle Funktionen benötigt werden oder nur (um dem Drehbuch immer einen Schritt voraus zu sein). Das Ausführen von testing / unstable auf Produktionsservern erfordert jedoch unbedingt viel Erfahrung und Wissen über Debian, um den gelegentlichen Fehler zu beheben. Testen Sie zuerst Upgrades auf anderen Computern oder VMs.
cas
@cas Ich habe nicht an die Stabilität von Binärdateien gedacht, sondern an die beiden Hauptnachteile von testing(allein verwendeten): Pakete werden manchmal vorübergehend entfernt (daher ist das soeben in Ihrer Test-VM validierte Setup möglicherweise nicht mehr ohne weiteres verfügbar). , und Sicherheitsupdates können verzögert werden (manchmal für längere Zeit, wenn testingein großer Bibliotheksübergang stattfindet, obwohl dies in testing-securitysolchen Fällen der Fall ist).
Stephen Kitt
1
Wenn Sie Ihr Programm auf dem Debian-System neu kompilieren (anstatt es zu kopieren), sollte es einwandfrei funktionieren.
Stephen Kitt

Antworten:

13

Ich musste GCC 5+ auf debian jessie installieren und, wie es für Debian-Tests verfügbar ist (mindestens am 16. Juni), können Sie apt-pinning verwenden, um dort verfügbare Pakete zu installieren (siehe https://wiki.debian.org/AptPreferences ). .

So installieren Sie GCC 5+ von einem Debian-Jessie-Test mit apt-pinning:

  1. Fügen Sie Ihren apt-Quellen debian testing repo hinzu, indem Sie eine Datei in dem Verzeichnis erstellen, /etc/apt/sources.list.ddas die Zeile enthält

    deb http://ftp.us.debian.org/debian testing main contrib non-free

  2. Weisen Sie debian an, Testquellen für bestimmte Pakete zu verwenden, indem Sie eine Datei erstellen /etc/apt/preferences.d, die Folgendes enthält:

    Package: *
    Pin: release a=testing
    Pin-Priority: 100
    
  3. Apt-Datenbank aktualisieren: sudo apt-get update

  4. Installieren Sie gcc vom Testen: sudo apt-get install -t testing gcc

    Beachten -t testingSie, dass Sie mit apt-get anweisen, gcc von zuvor konfigurierten Testquellen zu installieren.

Ich empfehle dringend, alle Kompilierungen zu bereinigen und alle Abhängigkeiten neu zu kompilieren, bevor Sie Ihre Quellen erneut kompilieren.

Habe Spaß!

llekn
quelle
1
Ich habe es noch nie versucht (und ich möchte es auch nicht versuchen), aber Ihr Verfahren ist interessant. Nicht viele Software-Suiten sind so eng mit dem gesamten Debian-System verbunden und durchgehend wie GCC. Funktioniert Ihre Prozedur wirklich? Oder verursacht es mehr Probleme als es löst? Neugierig.
Donnerstag,
1
Ich habe es tatsächlich mit guten Ergebnissen versucht: Ich konnte erfolgreich kompilieren, was ich baute, und das System funktionierte ohne Probleme weiter. Trotzdem könnten Sie Recht haben: Das Ändern der GCC-Version könnte das Kompilieren anderer Pakete (dh das Kompilieren von Quellen beim Installieren von Paketen mit pip) unterbrechen. , aber ich denke, dass dieses Verfahren die am wenigsten invasive ist, weil aptverfolgen würde, welche Pakete von GCC abhängen und kompatible Versionen nach Bedarf installieren (soweit ich mich erinnern kann).
Llekn
2
Hinweis für Schritt 2: Die Datei in /etc/apt/preferences.d/ sollte entweder keinen Punkt "." Enthalten. im Dateinamen oder mit ".pref" enden. Andernfalls wird diese Datei ignoriert. Eine Erklärung der Bedeutung des Wertes 100 und warum er gewählt wurde, ist erwünscht.
Ludwig Schulze,
Soweit ich Pin-Priorityweiß, wird ein Paket, je mehr es erhält, anderen Paketen mit einer niedrigeren Nummer vorgezogen. Wie auf der AptPrefences-Seitetesting von Debian angegeben , werden Pin-Priority: 900alle Pakete testingstandardmäßig installiert. Also, dass die Angabe testingeine haben Pin-Priority: 100absenkt testingPakete Priorität sie nur machen installierbar , wenn angefordert , wenn auf das Ziel spezifiziertapt-get install -t testing ...
llekn
1
@ LeeK-B Durch die Verwendung von Package: gccUpgrades wird das gesamte System auf den Testbetrieb umgestellt. Die Dokumentation über apt-prefencesverwirrend ist , so ich das nehme ist , was geschieht: 1: Angeben Paket:: Wie Pakete von Test größere Versionen haben, standardmäßig sie Vorrang vor dem Standard derjenigediejenigedasjenige 2 haben gccmit Pin-priority: 100Marken alle Pakete von testing Standardpriorität zu haben (höher als Standard) außer gcc. Genau das Gegenteil wollten wir. Ich habe die Antwort aktualisiert, um diesen Fehler zu vermeiden
llekn
6

So kombinieren Sie die beiden vorherigen Antworten zu einer, die funktioniert:

echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" >> /etc/apt/sources.list.d/unstable.list
apt-get update
apt-get install -t unstable gcc-5

ABER!!! Verwenden Sie dies auf eigenes Risiko, wenn Sie Pakete von Unstable installieren. Möglicherweise möchten Sie auch entfernen, /etc/apt/sources.list.d/unstable.listsobald Sie die Pakete installiert haben.

Wenn möglich, installieren Sie es unter Docker, damit Sie Ihr Betriebssystem nicht durcheinander bringen. Ihr Kilometerstand kann variieren.

johndodo
quelle
4

Ab 2017.02.19, gcc-5 wurde entfernt aus dem Test:

https://tracker.debian.org/pkg/gcc-5

Sie können, apt-get install gcc-5wenn Sie diese Zeile zuerst als root ausführen:

echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" > /etc/apt/sources.list.d/unstable.list

Dann möchten Sie wahrscheinlich die Priorität dieser Quelle /etc/apt/preferences.dgemäß der Antwort von llekn ändern.

nachoparker
quelle
1

Ich hatte letzte Woche Probleme; es sieht so aus, als ob am 23.01.2019 gcc-5 vollständig aus den Repositories entfernt wurde. (Siehe https://tracker.debian.org/pkg/gcc-5 )

Wenn Sie es wirklich brauchen, können Sie es wahrscheinlich aus dem Quellcode kompilieren. Ich werde einen Weg finden, um die Abhängigkeit von meinem System zu löschen.

JDong
quelle