installer le dernier gcc sur rhel 6 x86_64

13

J'ai un serveur RHEL 6 avec gcc version 4.4.7. Je voulais mettre à jour la version gcc (je pense que la version actuelle est 4.8). La mise à jour Yum ne fonctionne pas. De plus, les réponses SO pour une question similaire sur CentOS ne fonctionnent pas. J'ai suivi les méthodes de la réponse acceptée, la sortie est "Erreur lors de l'obtention des données du référentiel pour testing-1.1-devtools-6, référentiel introuvable". Je ne sais pas non plus si je dois suivre les méthodes pour CentOs.

Quelqu'un at-il mis à jour gcc dans le serveur RHEL 6 x86_64?

Rivu
la source
Avez-vous essayé de l'installer à partir de ce dépôt? hop5.in/yum/el6/repoview/gcc.html . Ce sont des versions binaires de 4.8.2. Vous devrez probablement être à 6,4 CentOS pour les installer, ce qui pourrait être votre problème.
slm
L'installation depuis la source est-elle une option?
mkc
oui je peux installer depuis la source si besoin.
rivu
bonne question. Qui est le downvoter? :(
Otheus
hop5.in n'est plus un dépôt el6 valide de quoi que ce soit, apparemment. @slm
Otheus

Réponses:

4

La méthode la plus simple consiste de loin à utiliser une version binaire fournie via un référentiel YUM. Une telle option serait d'utiliser le référentiel hop5.in. Plus précisément cette page: gcc - Divers compilateurs (C, C ++, Objective-C, Java, ...) . Ils fournissent 4.8.2 qui devrait fonctionner avec CentOS 6.3 ou 6.4. Vous voudrez peut-être faire une mise à jour avant:

$ sudo yum update

L'autre option serait d'utiliser le Developer Toolset , en particulier la version fournie par Scientific Linux.

En suivant les instructions d'installation, vous effectuerez essentiellement les 2 étapes suivantes:

ajouter des référentiels
$ 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
installer devtoolset
$ sudo yum install devtoolset-2

Mise à jour # 1

Le référentiel hop5.in YUM semble avoir été supprimé, donc le seul recours est d'utiliser la méthode devtoolset décrite ci-dessus.

Des exemples supplémentaires pour l'installation via devtoolset sont mis en évidence dans ce GitHub Gist: Installation de gcc 4.8 et Linuxbrew sur CentOS 6 .

slm
la source
3
J'ai essayé d'installer le rpm téléchargé à partir du premier lien, dit "erreur: les dépendances ont échoué: cpp = 4.8.2-8.el6 est nécessaire à gcc-4.8.2-8.el6.x86_64 ...". Pour l'ensemble d'outils de développement, il indique " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] ERREUR PYCURL 22 -" L'URL demandée a renvoyé l'erreur: 404 introuvable ". Je pense que le problème est qu'il s'agit de 6Server au lieu de 6 dans le lien. Je ne sais pas comment résoudre ce problème.
Rivu
hop.in n'a plus ce que je pense que vous pensez qu'il a.
Otheus
1
Étape supplémentaire éventuellement nécessaire: téléchargement et importation de la clé cern à partir de http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. J'adore le fait que le site ne dispose pas de https. Bravo Scilinux. Après avoir téléchargé (répertoire tmp ou whever), importer avec rpm --import RPM-GPG-KEY-cernet puis faireyum install.
Otheus
@Otheus - merci, je déteste quand les dépôts mordent la poussière comme ça, détruit un tas de contenu sur les interwebs 8-).
slm
1
Il convient de mentionner que devtoolset-2-gcc(pour moi au moins) a installé une douzaine de packages et un téléchargement de 35 Mo, contre 280 packages et 575 Mo de téléchargement pour yum install devtoolset-2.
miken32
2

J'ai construit de nouvelles versions de gcc pour rhel6 pour plusieurs versions maintenant (depuis 4.7.x à 5.3.1).

Le processus est assez facile grâce aux versions de Jakub Jelinek fedora gcc de Redhat trouvées sur les koji

Prenez simplement le dernier rpm src pour la version dont vous avez besoin (par exemple 5.3.1 ).

Fondamentalement, vous commenceriez par déterminer les exigences de génération en émettant la rpm -qpR src.rpmrecherche des exigences de version:

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

Vient maintenant la partie fastidieuse - tout package qui a une version supérieure à celle fournie par yum fro votre distribution doit être téléchargé à partir de koji , et répéter récursivement le processus jusqu'à ce que toutes les exigences de dépendance soient remplies.

Je triche, btw.
Je reconditionne habituellement le rpm pour contenir un arbre de construction correct en utilisant la fonction gnu pour utiliser des exigences correctement placées et nommées, de sorte que gmp / mpc / mpfr / isl (cloog n'est plus requis) sont téléchargés et déplacés vers le chemin correct, et le nouveau (gonflé) tar est reconstruit dans un nouveau rpm src (avec des modifications mineures au fichier spec) sans aucune dépendance sur leurs versions packagées (rpm). Comme je ne connais personne utilisant ADA, je supprime simplement les parties relatives à gnat du fichier de spécifications, simplifiant davantage le processus de construction, me laissant avec seulement des binutils à craindre.
Gcc peut réellement construire avec des binutils plus anciens, donc si vous êtes pressé, éditez davantage le fichier de spécifications pour exiger la version de binutils déjà présente sur votre système. Cela se traduira par un gcc légèrement paralysé, mais surtout il fonctionnera assez bien.
Cela fonctionne assez bien la plupart du temps.

MISE À JOUR 1

La méthode la plus simple pour ouvrir un rpm src est probablement yum installer le rpm et accéder à tout sous ~ / rpmbuild, mais je préfère

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

Vous avez également le choix de définir un préfixe afin que ce rpm s'installe côte à côte sans casser le rpm de distribution (mais nécessite un changement de nom et quelques modifications des noms de packages internes). J'ajoute généralement un module d'environnement afin de pouvoir charger et décharger ce gcc comme requis (similaire au fonctionnement des collections) dans le cadre du rpm (donc j'ajoute une nouvelle dépendance).

Enfin, créez l'arborescence rpmbuild et placez les fichiers là où ils devraient aller et construisez:

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

MISE À JOUR 2

Normalement, il ne faut pas utiliser un système d'exploitation "serveur" pour le développement - c'est pourquoi vous avez fedora qui est déjà livré avec le dernier gcc. J'ai des exigences particulières, mais vous devriez vraiment envisager d'utiliser le bon outil pour la tâche - rhel / centos pour exécuter des applications de production, fedora pour développer ces applications, etc.

Dani_l
la source
Il est poli de voter pour donner une raison.
Dani_l
0

Hé les gars, voici ce que j'ai fait (compiler à partir de zéro). Aucune infraction à une autre réponse, je suis sûr que cela fonctionne, mais GCC est particulièrement important pour la sécurité, je préfère donc compiler à partir de la source originale et officielle:

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

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

Areeb Soo Yasir
la source
La sécurité est un gros problème, mais vous installez à partir d'un emplacement non HTTPS :)?
dhag
À l'époque, il n'y avait pas de SSL activé sur le site mirrors.kernel.org mais je pense que si nous ne pouvons pas faire confiance à kernel.org, nous avons de plus gros problèmes :).
Areeb Soo Yasir
-1

vous pouvez essayer gcc source buid.GCC requiert MPC, MPFR et GMP comme pré-requis.Pour GCC 4.8, les dépendances de version sont MPC 0.8 GMP 6.0 MPFR 2.4.2.Téléchargez les packages source et installez tous les packages sous / usr / lib .L'ordre d'installation est gmp, mpfr, mpc

Biju G
la source