installiere das neueste gcc auf rhel 6 x86_64

13

Ich habe einen RHEL 6 Server mit gcc Version 4.4.7. Ich wollte die gcc-Version aktualisieren (ich denke, die aktuelle ist 4.8). Yum Update funktioniert nicht. Auch SO-Antworten auf eine ähnliche Frage unter CentOS funktionieren nicht. Ich habe die Methoden in der akzeptierten Antwort befolgt. Die Ausgabe lautet "Fehler beim Abrufen der Repository-Daten zum Testen von 1.1-devtools-6, Repository nicht gefunden". Ich bin mir auch nicht sicher, ob ich die Methoden für CentOs befolgen soll.

Hat jemand gcc in RHEL 6 x86_64 Server aktualisiert?

Rivu
quelle
Haben Sie versucht, es von diesem Repo zu installieren? hop5.in/yum/el6/repoview/gcc.html . Dies sind binäre Builds von 4.8.2. Sie müssen wahrscheinlich bei 6.4 CentOS sein, um sie zu installieren, was möglicherweise Ihr Problem ist.
slm
Ist die Installation von der Quelle eine Option?
mkc
Ja, ich kann bei Bedarf von der Quelle installieren.
Rivu
gute Frage. Wer ist der Downvoter? :(
Otheus
hop5.in ist anscheinend kein gültiges el6-repo mehr. @slm
Otheus

Antworten:

4

Die mit Abstand einfachste Methode besteht darin, einen binären Build zu verwenden, der über ein YUM-Repository bereitgestellt wird. Eine solche Option wäre die Verwendung des Repositorys hop5.in. Speziell diese Seite: gcc - Verschiedene Compiler (C, C ++, Objective-C, Java, ...) . Sie bieten 4.8.2, das mit CentOS 6.3 oder 6.4 funktionieren sollte. Möglicherweise möchten Sie vorher ein Update durchführen:

$ sudo yum update

Die andere Möglichkeit besteht darin, das Developer Toolset zu verwenden , insbesondere die von Scientific Linux bereitgestellte gebündelte Version.

Befolgen Sie die Installationsanweisungen, um die folgenden 2 Schritte auszuführen:

Repositorys hinzufügen
$ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
$ wget -O /etc/yum.repos.d/slc5-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc5-devtoolset.repo
installiere devtoolset
$ sudo yum install devtoolset-2

Update Nr. 1

Das hop5.in YUM-Repository scheint entfernt worden zu sein, daher besteht die einzige Möglichkeit darin, die oben hervorgehobene devtoolset-Methode zu verwenden.

Weitere Beispiele für die Installation über devtoolset finden Sie in diesem GitHub-Gist: Installieren von gcc 4.8 und Linuxbrew unter CentOS 6 .

slm
quelle
3
Ich habe versucht, die vom ersten Link heruntergeladene Drehzahl zu installieren. "Fehler: Fehlgeschlagene Abhängigkeiten: cpp = 4.8.2-8.el6 wird von gcc-4.8.2-8.el6.x86_64 ... benötigt." Für das Entwickler-Toolset heißt es " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] PYCURL ERROR 22 -" Die angeforderte URL hat den Fehler zurückgegeben: 404 Not Found ". Ich denke, das Problem ist, dass es 6Server statt 6 im Link ist. Ich weiß nicht, wie ich das beheben soll.
Rivu
hop.in hat nicht mehr das, was ich denke du denkst es hat.
Otheus
1
Möglicherweise ist ein zusätzlicher Schritt erforderlich: Herunterladen und Importieren des Cern-Schlüssels von http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Ich finde es toll, dass die Seite kein https hat. Weiter so, Scilinux. Nachdem Sie es (tmp - Verzeichnis oder whever) herunterladen, importieren Sie sie mit rpm --import RPM-GPG-KEY-cernund dann tunyum install.
Otheus
@Otheus - danke, ich hasse es, wenn Repos den Staub so beißen, eine Menge Inhalt in den Interwebs zerstören 8-).
slm
1
Erwähnenswert ist, dass devtoolset-2-gcc(zumindest für mich) ein Dutzend Pakete und ein Download von 35 MB installiert wurden, gegenüber 280 Paketen und einem Download von 575 MB für yum install devtoolset-2.
miken32
2

Ich habe jetzt für mehrere Versionen neuere gcc-Versionen für rhel6 erstellt (seit 4.7.x bis 5.3.1).

Der Prozess ist dank Redhats Jakub Jelinek Fedora Gcc Builds auf Koji ziemlich einfach

Holen Sie sich einfach die neueste src-Drehzahl für die gewünschte Version (z . B. 5.3.1 ).

Grundsätzlich würden Sie zunächst die Build-Anforderungen ermitteln, indem Sie rpm -qpR src.rpmnach Versionsanforderungen suchen:

rpm -qpR gcc-5.3.1-4.fc23.src.rpm | grep -E '= [[:digit:]]'
binutils >= 2.24
doxygen >= 1.7.1
elfutils-devel >= 0.147
elfutils-libelf-devel >= 0.147
gcc-gnat >= 3.1
glibc-devel >= 2.4.90-13
gmp-devel >= 4.1.2-8
isl = 0.14
isl-devel = 0.14
libgnat >= 3.1
libmpc-devel >= 0.8.1
mpfr-devel >= 2.2.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
systemtap-sdt-devel >= 1.3

Jetzt kommt der mühsame Teil - jedes Paket, dessen Version höher ist als die von yum für Ihre Distribution bereitgestellte, muss von Koji heruntergeladen werden und den Vorgang rekursiv wiederholen, bis alle Abhängigkeitsanforderungen erfüllt sind.

Ich betrüge übrigens.
Normalerweise packe ich die Drehzahl neu, um einen korrekten Build-Baum zu verwenden, indem ich die gnu-Funktion verwende, um korrekt platzierte und benannte Anforderungen zu verwenden. Daher werden gmp / mpc / mpfr / isl (Cloog ist nicht mehr erforderlich) heruntergeladen und in den richtigen Pfad verschoben, und der neue (aufgeblähter) Teer wird in eine neue src-Drehzahl (mit geringfügigen Änderungen an der Spezifikationsdatei) ohne Abhängigkeit von den gepackten (RPM-) Versionen umgebaut. Da ich weiß, dass niemand ADA verwendet, entferne ich einfach die Teile, die sich auf Mücken beziehen, aus der Spezifikationsdatei, was den Erstellungsprozess weiter vereinfacht und mir nur Binutils übrig lässt, über die ich mir Sorgen machen muss.
Gcc kann tatsächlich mit älteren Binutils erstellen. Wenn Sie es also eilig haben, bearbeiten Sie die Spezifikationsdatei weiter, um die Binutils-Version zu benötigen, die bereits auf Ihrem System vorhanden ist. Dies führt zu einem leicht verkrüppelten gcc, aber meistens funktioniert es gut genug.
Das funktioniert meistens ganz gut.

UPDATE 1

Die einfachste Methode zum Öffnen einer src-Drehzahl ist wahrscheinlich, die Drehzahl zu installieren und auf alles unter ~ / rpmbuild zuzugreifen, aber ich bevorzuge

mkdir gcc-5.3.1-4.fc23
cd gcc-5.3.1-4.fc23
rpm2cpio ../gcc-5.3.1-4.fc23.src.rpm | cpio -id
tar xf gcc-5.3.1-20160212.tar.bz2
cd gcc-5.3.1-20160212
contrib/download_prerequisites
cd ..
tar caf gcc-5.3.1-20160212.tar.bz2 gcc-5.3.1-20160212
rm -rf gcc-5.3.1-20160212
# remove gnat
sed -i '/%global build_ada 1/ s/1/0/' gcc.spec
sed -i '/%if !%{build_ada}/,/%endif/ s/^/#/' gcc.spec
# remove gmp/mpfr/mpc dependencies
sed -i '/BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1/ s/.*//' gcc.spec
# remove isl dependency
sed -i '/BuildRequires: isl = %{isl_version}/,/Requires: isl-devel = %{isl_version}/ s/^/#/' gcc.spec
# Either build binutils as I do, or lower requirements
sed -i '/Requires: binutils/ s/2.24/2.20/' gcc.spec
# Make sure you don't break on gcc-java
sed -i '/gcc-java/ s/^/#/' gcc.spec

Sie haben auch die Wahl, das Präfix festzulegen, damit diese Drehzahl nebeneinander installiert wird, ohne die Drehzahl der Distribution zu unterbrechen (erfordert jedoch eine Namensänderung und einige Änderungen an den internen Paketnamen). Normalerweise füge ich ein Umgebungsmodul hinzu, damit ich diesen gcc nach Bedarf (ähnlich wie Sammlungen funktionieren) als Teil der Drehzahl laden und entladen kann (also füge ich eine neue Abhängigkeit hinzu).

Erstellen Sie schließlich den RPM-Build-Baum und platzieren Sie die Dateien dort, wo sie erstellt werden sollen:

yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec

UPDATE 2

Normalerweise sollte man kein "Server" -OS für die Entwicklung verwenden - deshalb haben Sie Fedora, das bereits mit dem neuesten gcc geliefert wird. Ich habe einige spezielle Anforderungen, aber Sie sollten wirklich in Betracht ziehen, das richtige Tool für die Aufgabe zu verwenden - rhel / centos, um Produktions-Apps auszuführen, fedora, um diese Apps zu entwickeln usw.

Dani_l
quelle
Es ist höflich, wenn man abstimmt, um einen Grund anzugeben.
Dani_l
0

Hey Leute, hier ist was ich getan habe (von Grund auf neu kompiliert). Keine Beleidigung für eine andere Antwort Ich bin sicher, dass es funktioniert, aber GCC ist besonders wichtig für die Sicherheit, daher ziehe ich es vor, aus der ursprünglichen und offiziellen Quelle zu kompilieren:

yum -y install gmp-devel mpfr-devel libmpc-devel glibc-devel glibc-devel.i686 zip unzip jar
wget http://mirrors.kernel.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz
tar -zxvf gcc-5.5.0.tar.gz
cd gcc-5.5.0
./configure
make
make install
yum remove gcc
rm -rf /usr/bin/gcc
rm -rf /usr/bin/c++
rm -rf /usr/bin/cc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.5.0 /usr/bin/gcc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-c++ /usr/bin/c++
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc /usr/bin/cc

Quelle: http://realtechtalk.com/GCC_5_on_Centos_6_How_To_Install-1965-articles

Areeb Soo Yasir
quelle
Sicherheit ist eine große Sache, aber Sie installieren von einem Nicht-HTTPS-Standort :)?
Dhag
Zu der Zeit war auf der Website mirror.kernel.org kein SSL aktiviert, aber ich denke, wenn wir kernel.org nicht vertrauen können, haben wir größere Probleme :).
Areeb Soo Yasir
-1

Sie können versuchen, gcc source buid.GCC benötigt MPC, MPFR und GMP als Voraussetzungen. Für GCC 4.8 sind die Versionsabhängigkeiten MPC 0.8 GMP 6.0 MPFR 2.4.2. Laden Sie die Quellpakete herunter und installieren Sie alle Pakete unter / usr / lib Die Reihenfolge der Installation ist gmp, mpfr, mpc

Biju G.
quelle