installa l'ultimo gcc su rhel 6 x86_64


13

Ho un server RHEL 6 con gcc versione 4.4.7. Volevo aggiornare la versione di gcc (penso che quella attuale sia 4.8). L'aggiornamento di Yum non funziona. Inoltre, le risposte SO per una domanda simile su CentOS non funzionano. Ho seguito i metodi nella risposta accettata, l'output è "Errore nell'acquisizione dei dati del repository per testing-1.1-devtools-6, repository non trovato". Inoltre non sono sicuro che dovrei seguire i metodi per CentOs.

Qualcuno ha aggiornato gcc nel server RHEL 6 x86_64?


Hai provato a installarlo da questo repository? hop5.in/yum/el6/repoview/gcc.html . Queste sono build binarie di 4.8.2. Probabilmente dovrai installarlo su 6.4 CentOS per installarli, il che potrebbe essere il tuo problema.
slm

L'installazione dall'origine è un'opzione?
mkc,

Sì, posso installarlo dalla fonte, se necessario.
rivu,

buona domanda. Chi è il downvoter? :(
Otheus,

hop5.in non è più un repository el6 valido di nulla, a quanto pare. @slm
Otheus,

Risposte:


4

Il metodo più semplice è di gran lunga utilizzare una build binaria fornita tramite un repository YUM. Una di queste opzioni sarebbe usare il repository hop5.in. Nello specifico questa pagina: gcc - Vari compilatori (C, C ++, Objective-C, Java, ...) . Stanno fornendo 4.8.2 che dovrebbe funzionare con CentOS 6.3 o 6.4. Potresti voler fare un aggiornamento prima:

$ sudo yum update

L'altra opzione sarebbe quella di utilizzare il Developer Toolset , in particolare la versione in bundle fornita da Scientific Linux.

Seguendo le istruzioni di installazione eseguirai sostanzialmente i seguenti 2 passaggi:

aggiungere repository
$ 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
installa devtoolset
$ sudo yum install devtoolset-2

Aggiornamento n. 1

Il repository YUM hop5.in sembra essere stato rimosso, quindi l'unica soluzione è quella di utilizzare il metodo devtoolset evidenziato sopra.

Ulteriori esempi per l'installazione tramite devtoolset sono evidenziati in questo GitHub Gist: installazione di gcc 4.8 e Linuxbrew su CentOS 6 .


3
Ho provato a installare l'rpm scaricato dal primo link, dice "errore: dipendenze fallite: cpp = 4.8.2-8.el6 è necessario per gcc-4.8.2-8.el6.x86_64 ...". Per il set di strumenti per sviluppatori, dice " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] PYCURL ERROR 22 -" L'URL richiesto ha restituito l'errore: 404 non trovato ". Penso che il problema sia 6Server anziché 6 nel link. Non so come risolverlo.
Rivu,

hop.in non ha più quello che penso tu pensi che abbia.
Otheus,

1
Eventualmente è necessario un ulteriore passaggio: download e importazione della chiave cern da http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Adoro che il sito non abbia https. Modo di andare su Scilinux. Dopo averlo scaricato (directory tmp o whever), importalo con rpm --import RPM-GPG-KEY-cerne poi falloyum install.
Otheus,

@Otheus - grazie, odio quando i repository mordono la polvere in questo modo, distruggono un sacco di contenuti sulle interwebs Cool.
slm

1
Vale la pena ricordare che devtoolset-2-gcc(almeno per me) ha installato una dozzina di pacchetti e un download di 35 MB, rispetto a 280 pacchetti e 575 MB di download per yum install devtoolset-2.
miken32


2

Ho sviluppato versioni più recenti di gcc per rhel6 per diverse versioni (da 4.7.xa 5.3.1).

Il processo è abbastanza semplice grazie alle build di Fedora gcc di Redhat Jakub Jelinek trovate su koji

Basta prendere l'ultimo rpm src per qualsiasi versione richiesta (es. 5.3.1 ).

Fondamentalmente inizieresti determinando i requisiti di build emettendo la rpm -qpR src.rpmricerca di eventuali requisiti di versione:

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

Ora arriva la parte noiosa: qualsiasi pacchetto che ha una versione superiore a quella fornita da yum per la tua distribuzione deve essere scaricato da Koji e ripetere in modo ricorsivo il processo fino a quando tutti i requisiti di dipendenza sono soddisfatti.

Io baro, tra l'altro.
Di solito riconfezionamento rpm per contenere un albero di compilazione corretto utilizzando la funzione gnu per utilizzare i requisiti correttamente posizionati e denominati, quindi gmp / mpc / mpfr / isl (non è più richiesto il cloog) e scaricato nel percorso corretto, e il nuovo (gonfio) tar viene ricostruito in un nuovo rpm src (con piccole modifiche al file spec) senza alcuna dipendenza dalle loro versioni pacchettizzate (rpm). Dato che non conosco nessuno che usi ADA, rimuovo semplicemente le porzioni relative a moscerino dallo specfile, semplificando ulteriormente il processo di compilazione, lasciandomi solo con binutils di cui preoccuparmi.
Gcc può effettivamente compilare con binutils più vecchi, quindi se hai fretta, modifica ulteriormente il file specfile per richiedere la versione binutils già presente sul tuo sistema. Ciò si tradurrà in un gcc leggermente paralizzato, ma soprattutto funzionerà abbastanza bene.
Questo funziona abbastanza bene per lo più.

AGGIORNAMENTO 1

Il metodo più semplice per aprire un rpm src è probabilmente yum installa rpm e accedi a tutto sotto ~ / rpmbuild, ma preferisco

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

Hai anche la possibilità di impostare il prefisso in modo che questo rpm si installi fianco a fianco senza interrompere la distribuzione rpm (ma richiede la modifica del nome e alcune modifiche ai nomi dei pacchetti interni). Di solito aggiungo un modulo ambiente in modo da poter caricare e scaricare questo gcc come richiesto (simile a come funzionano le raccolte) come parte del rpm (quindi aggiungo una nuova dipendenza).

Infine, crea l'albero rpmbuild e posiziona i file dove dovrebbero andare e costruisci:

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

AGGIORNAMENTO 2

Normalmente non si dovrebbe usare un sistema operativo "server" per lo sviluppo - ecco perché hai fedora che è già dotato dell'ultimo gcc. Ho alcuni requisiti particolari, ma dovresti davvero prendere in considerazione l'uso dello strumento giusto per l'attività: rhel / centos per eseguire app di produzione, fedora per sviluppare quelle app ecc.


È educato quando si vota verso il basso dare una ragione.
Dani_l,

0

Ehi ragazzi, ecco cosa ho fatto (compilando da zero). Senza offesa per un'altra risposta, sono sicuro che funzioni, ma GCC è particolarmente importante per la sicurezza, quindi preferisco compilare dalla fonte originale e ufficiale:

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

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


La sicurezza è un grosso problema, ma installi da una posizione non HTTPS :)?
Dhag,

Al momento non era abilitato SSL sul sito mirrors.kernel.org ma penso che se non possiamo fidarci di kernel.org abbiamo problemi maggiori :).
Areeb Soo Yasir,

-1

puoi provare a usare gcc source buid.GCC richiede MPC, MPFR e GMP come prerequisiti.Per GCC 4.8, le dipendenze della versione sono MPC 0.8 GMP 6.0 MPFR 2.4.2. Scarica i pacchetti sorgente e installa tutti i pacchetti in / usr / lib L'ordine di installazione è gmp, mpfr, mpc

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.