instale el último gcc en rhel 6 x86_64

13

Tengo un servidor RHEL 6 con gcc versión 4.4.7. Quería actualizar la versión de gcc (creo que la actual es 4.8). La actualización de Yum no funciona. Además, SO responde a una pregunta similar sobre CentOS que no funciona. Seguí los métodos en la respuesta aceptada, el resultado es "Error al obtener datos del repositorio para testing-1.1-devtools-6, no se encontró el repositorio". Además, no estoy seguro de si debo seguir los métodos para CentOs.

¿Alguien ha actualizado gcc en el servidor RHEL 6 x86_64?

rivu
fuente
¿Intentaste instalarlo desde este repositorio? hop5.in/yum/el6/repoview/gcc.html . Estas son versiones binarias de 4.8.2. Es probable que tengas que estar a 6.4 CentOS para instalarlos, lo que podría ser tu problema.
slm
¿Instalar desde el origen es una opción?
mkc
Sí, puedo instalar desde la fuente si es necesario.
rivu
buena pregunta. ¿Quién es el downvoter? :(
Oteo
hop5.in ya no es un repositorio válido de el6 de nada, aparentemente. @slm
Otheus

Respuestas:

4

El método más fácil con diferencia es utilizar una compilación binaria que se proporciona a través de un repositorio YUM. Una de esas opciones sería usar el repositorio hop5.in. Específicamente esta página: gcc - Varios compiladores (C, C ++, Objective-C, Java, ...) . Están proporcionando 4.8.2 que debería funcionar con CentOS 6.3 o 6.4. Es posible que desee hacer una actualización antes:

$ sudo yum update

La otra opción sería utilizar Developer Toolset , específicamente la versión incluida proporcionada por Scientific Linux.

Siguiendo las instrucciones de instalación , básicamente realizará los siguientes 2 pasos:

agregar repositorios
$ 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
instalar devtoolset
$ sudo yum install devtoolset-2

Actualización n. ° 1

Parece que el repositorio hop5.in YUM se ha eliminado, por lo que el único recurso es utilizar el método devtoolset resaltado anteriormente.

En GitHub Gist se destacan ejemplos adicionales para la instalación a través de devtoolset: Instalación de gcc 4.8 y Linuxbrew en CentOS 6 .

slm
fuente
3
Intenté instalar las rpm descargadas desde el primer enlace, dice "error: dependencias fallidas: gpp-4.8.2-8.el6.x86_64 ... necesita cpp = 4.8.2-8.el6". Para el conjunto de herramientas del desarrollador, dice " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] PYCURL ERROR 22 -" El URL solicitado devolvió el error: 404 no encontrado ". Creo que el problema es que es 6Server en lugar de 6 en el enlace. No sé cómo solucionarlo.
rivu
hop.in ya no tiene lo que creo que crees que tiene.
Oteo
1
Paso adicional posiblemente necesario: Descarga e importar la clave CERN de http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Me encanta que el sitio no tenga https. Así se hace scilinux. Después de descargarlo (directorio tmp o donde sea), impórtalo con rpm --import RPM-GPG-KEY-cerny luego hazloyum install.
Otheus
@Otheus: gracias, odio cuando los repositorios muerden el polvo de esta manera, destruye un montón de contenido en las interwebs 8-).
slm
1
Vale la pena mencionar que devtoolset-2-gcc(al menos para mí) instaló una docena de paquetes y una descarga de 35 MB, frente a 280 paquetes y 575 MB de descarga yum install devtoolset-2.
miken32
2

He construido versiones más nuevas de gcc para rhel6 para varias versiones ahora (desde 4.7.x hasta 5.3.1).

El proceso es bastante fácil gracias a las compilaciones de ghat de Redhat Jakub Jelinek fedora que se encuentran en koji

Simplemente tome las últimas rpm src para la versión que necesite (por ejemplo, 5.3.1 ).

Básicamente, comenzaría determinando los requisitos de compilación al rpm -qpR src.rpmbuscar cualquier requisito de versión:

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

Ahora viene la parte tediosa: cualquier paquete que tenga una versión superior a la proporcionada por yum fro su distribución debe descargarse de koji y repetir el proceso de forma recursiva hasta que se cumplan todos los requisitos de dependencia.

Hago trampa, por cierto.
Por lo general, vuelvo a empaquetar las rpm para contener un árbol de compilación correcto usando la función gnu para usar los requisitos correctamente colocados y nombrados, por lo que gmp / mpc / mpfr / isl (ya no se requiere cloog) se descargan y se desatrancan en la ruta correcta, y el nuevo (hinchado) tar se reconstruye en un nuevo src rpm (con pequeños cambios en el archivo de especificaciones) sin dependencia de sus versiones empaquetadas (rpm). Como no conozco a nadie que use ADA, simplemente elimino las porciones pertenecientes al mosquito del archivo de especificaciones, simplificando aún más el proceso de compilación, dejándome con solo binutils de los que preocuparme.
Gcc en realidad puede compilarse con binutils anteriores, por lo que si tiene prisa, edite más el archivo de especificaciones para requerir la versión binutils ya presente en su sistema. Esto dará como resultado un gcc ligeramente lisiado, pero sobre todo funcionará lo suficientemente bien.
Esto funciona bastante bien en su mayoría.

ACTUALIZACIÓN 1

El método más simple para abrir un src rpm es probablemente instalar las rpm y acceder a todo en ~ / rpmbuild, pero prefiero

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

También tiene la opción de establecer el prefijo para que este rpm se instale lado a lado sin romper las rpm de la distribución (pero requiere cambiar el nombre y algunas modificaciones a los nombres internos del paquete). Por lo general, agrego un módulo de entorno para poder cargar y descargar este gcc según sea necesario (similar a cómo funcionan las colecciones) como parte de las rpm (así que agrego una nueva dependencia).

Finalmente, cree el árbol rpmbuild y coloque los archivos donde debería ir y compile:

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

ACTUALIZACIÓN 2

Normalmente, uno no debe usar un sistema operativo "servidor" para el desarrollo, es por eso que tiene Fedora, que ya viene con el último gcc. Tengo algunos requisitos particulares, pero realmente debería considerar usar la herramienta adecuada para la tarea: rhel / centos para ejecutar aplicaciones de producción, fedora para desarrollar esas aplicaciones, etc.

Dani_l
fuente
Es cortés cuando se baja la votación para dar una razón.
Dani_l
0

Hola chicos, esto es lo que hice (compilando desde cero). Sin ofender a otra respuesta, estoy seguro de que funciona, pero GCC es especialmente importante para la seguridad, así que prefiero compilar a partir de la fuente original y oficial:

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

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

Areeb Soo Yasir
fuente
La seguridad es un gran problema, pero se instala desde una ubicación que no es HTTPS :)?
dhag
En ese momento no había SSL habilitado en el sitio mirrors.kernel.org pero creo que si no podemos confiar en kernel.org tenemos mayores problemas :).
Areeb Soo Yasir
-1

puede intentar gcc source buid. GCC requiere MPC, MPFR y GMP como requisitos previos. Para GCC 4.8, las dependencias de la versión son MPC 0.8 GMP 6.0 MPFR 2.4.2. Descargue los paquetes fuente e instale todos los paquetes en / usr / lib El orden de instalación es gmp, mpfr, mpc

Biju G
fuente