web-dev-qa-db-fra.com

Installez le dernier GCC sur Rhel 6 x86_64

J'ai un serveur RHEL 6 avec GCC version 4.4.7. Je voulais mettre à jour la version GCC (je pense que l'actuel est de 4,8). Yum Mise à jour ne fonctionne pas. De plus, donc réponses pour une question similaire sur CENTOS ne fonctionne pas. J'ai suivi les méthodes de la réponse acceptée, la sortie est " Erreur lors de la création de données sur le référentiel pour tester-1.1-devtools-6, référentiel non trouvé ". Je ne sais pas non plus si je devrais suivre les méthodes de CENTOS.

Quelqu'un a-t-il mis à jour GCC dans RHEL 6 X86_64 Server?

13
rivu

J'ai construit de nouvelles versions GCC pour RHEL6 pour plusieurs versions maintenant (depuis 4,7.x à 5.3.1).

Le processus est assez facile grâce à Jakub Jelinek de Redhat Fedora GCC construit sur Koji

Saisissez simplement la dernière RPM SRC pour la version que vous avez besoin (par exemple 5.3.1 ).

Fondamentalement, vous commencerez par déterminer les exigences de construction en émettant rpm -qpR src.rpm À la recherche de toute version requise:

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 paquet qui a une version supérieure à celle fournie par Yum Fro Votre distro doit être téléchargée à 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 reconditionnement habituellement le RPM pour contenir un arbre de construction correct à l'aide de la facilité GNU à utiliser des exigences correctement placées et nommées, GMP/MPC/MPFR/ISL (COOG n'est plus nécessaire). Chemin et le nouveau goudron (gonflé) sont reconstruits dans une nouvelle teck SRC (avec des modifications mineures au fichier de spécifications) sans dépendance sur leurs versions emballées (RPM). Comme je ne connais que personne n'utilisant ADA, je supprimai simplement les portions relatives à Gnat à partir de la spécification, simplifiant davantage le processus de construction, me laissant simplement des binutils à craindre.
[.____] GCC peut réellement construire avec des binutils plus âgés, donc si vous êtes pressé, modifiez également le specibre pour exiger la version Binutils déjà présente sur votre système. Cela entraînera un CCG légèrement criblé, mais surtout, il fonctionnera assez bien.
[.____] Cela fonctionne assez bien principalement.

Mise à jour 1

La méthode la plus simple pour ouvrir un RPM SRC est probablement miam Installez le régime et accédez à 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 le préfixe de sorte que ce régime s'installera de manière côte à côte sans casser la distro RPM (mais nécessite de modifier le nom et certaines modifications des noms de packages internes). J'ajoute généralement un module d'environnement afin que je puisse charger et décharger cette GCC selon les besoins (similaire à la manière dont les collections fonctionnent) dans le cadre du RPM (donc j'ajoute une nouvelle dépendance).

Créez enfin l'arborescence RPMBuild et placez les fichiers où vous devriez aller et construire:

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 la dernière 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.

2
Dani_l

Hey les gars voici ce que j'ai fait (compiler de zéro). Aucune infraction à une autre réponse, je suis sûr que cela fonctionne, mais GCC est particulièrement grave pour la sécurité afin que je préfère compiler 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

0
Areeb Soo Yasir