instale o gcc mais recente no rhel 6 x86_64

13

Eu tenho um servidor RHEL 6 com a versão 4.4.7 do gcc. Eu queria atualizar a versão do gcc (acho que a atual é 4.8). A atualização do Yum não funciona. Além disso, o SO responde a uma pergunta semelhante no CentOS não funciona. Segui os métodos na resposta aceita, a saída é "Erro ao obter dados do repositório para testing-1.1-devtools-6, repositório não encontrado". Também não tenho certeza se devo seguir os métodos do CentOs.

Alguém atualizou o gcc no servidor RHEL 6 x86_64?

Rivu
fonte
Você tentou instalá-lo neste repositório? hop5.in/yum/el6/repoview/gcc.html . Essas são compilações binárias do 4.8.2. Você provavelmente precisará estar no 6.4 CentOS para instalá-los, o que pode ser o seu problema.
Slm
A instalação a partir da fonte é uma opção?
mkc
Sim, eu posso instalar a partir da fonte, se necessário.
Rivu
boa pergunta. Quem é o downvoter? :(
Otheus 23/02
aparentemente, o hop5.in não é mais um repositório válido de nada. @slm
Otheus

Respostas:

4

O método mais fácil, de longe, é fazer uso de uma compilação binária fornecida por meio de um repositório YUM. Uma dessas opções seria usar o repositório hop5.in. Especificamente nesta página: gcc - Vários compiladores (C, C ++, Objective-C, Java, ...) . Eles estão fornecendo o 4.8.2, que deve funcionar com o CentOS 6.3 ou 6.4. Você pode querer fazer uma atualização antes:

$ sudo yum update

A outra opção seria usar o Developer Toolset , especificamente a versão em pacote fornecida pela Scientific Linux.

Seguindo as instruções de instalação, você basicamente realizará as 2 etapas a seguir:

adicionar repositórios
$ 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

Atualização # 1

O repositório hop5.in YUM parece ter sido removido, portanto, o único recurso é usar o método devtoolset destacado acima.

Exemplos adicionais para instalação via devtoolset são destacados neste GitHub Gist: Instalando gcc 4.8 e Linuxbrew no CentOS 6 .

slm
fonte
3
Eu tentei instalar o rpm baixado do primeiro link, diz "erro: Dependências com falha: cpp = 4.8.2-8.el6 é necessário pelo gcc-4.8.2-8.el6.x86_64 ...". Para o conjunto de ferramentas do desenvolvedor, diz " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] PYCURL ERRO 22 -" O URL solicitado retornou o erro: 404 não encontrado ". acho que o problema é que é 6Server em vez de 6 no link que eu não sei como corrigir isso..
rivu
hop.in não tem mais o que eu acho que você acha que tem.
Otheus 23/02
1
Etapa adicional possivelmente necessária: Fazendo o download e importando a chave cern de http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Eu amo que o site não tem https. Muito bem o scilinux. Depois de baixá-lo (diretório tmp ou qualquer outro local), importe-o rpm --import RPM-GPG-KEY-cerne, em seguida, faça #yum install.
Otheus
@Otheus - obrigado, eu odeio quando os repositórios mordem o pó assim, destrói um monte de conteúdo nas interwebs 8-).
slm
1
Vale ressaltar que devtoolset-2-gcc(pelo menos para mim) instalou uma dúzia de pacotes e um download de 35 MB, contra 280 pacotes e 575 MB de download yum install devtoolset-2.
miken32
2

Eu criei versões mais recentes do gcc para rhel6 para várias versões agora (desde 4.7.x a 5.3.1).

O processo é bastante fácil graças às versões do Redhat Jakub Jelinek fedora gcc encontradas no koji

Basta pegar o src rpm mais recente para a versão que você precisar (por exemplo, 5.3.1 ).

Basicamente, você começaria determinando os requisitos de construção emitindo a rpm -qpR src.rpmprocura de quaisquer requisitos de versão:

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

Agora vem a parte tediosa - qualquer pacote com uma versão superior à fornecida pelo yum para a sua distro precisa ser baixado do koji e repita recursivamente o processo até que todos os requisitos de dependência sejam atendidos.

Eu trapaceio.
Eu costumo reembalar o rpm para conter uma árvore de construção correta, usando o recurso gnu para usar os requisitos corretamente colocados e nomeados, para que gmp / mpc / mpfr / isl (o cloog não seja mais necessário) sejam baixados e desagradáveis ​​no caminho correto, e o novo O tar (inchado) é reconstruído em um novo src rpm (com pequenas alterações no arquivo spec) sem dependência de suas versões compactadas (rpm). Como não conheço ninguém usando o ADA, simplesmente removo as partes referentes ao gnat do arquivo de especificações, simplificando ainda mais o processo de compilação, deixando-me apenas com binutils com os quais me preocupar.
O Gcc pode realmente construir com binutils mais antigos; portanto, se você estiver com pressa, edite ainda mais o arquivo de especificações para exigir a versão do binutils já presente no seu sistema. Isso resultará em um gcc um pouco aleijado, mas, na maioria das vezes, terá um desempenho suficiente.
Isso funciona muito bem principalmente.

ATUALIZAÇÃO 1

O método mais simples para abrir um src rpm é provavelmente yum instalar o rpm e acessar tudo em ~ / rpmbuild, mas eu prefiro

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

Você também tem a opção de definir o prefixo para que este rpm seja instalado lado a lado sem interromper o distro rpm (mas requer mudança de nome e algumas modificações nos nomes dos pacotes internos). Normalmente, adiciono um módulo de ambiente para poder carregar e descarregar esse gcc conforme necessário (semelhante ao modo como as coleções funcionam) como parte do rpm (para adicionar uma nova dependência).

Por fim, crie a árvore rpmbuild e coloque os arquivos para onde o hey deve ir e construir:

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

ATUALIZAÇÃO 2

Normalmente não se deve usar um sistema operacional "server" para desenvolvimento - é por isso que você tem o fedora que já vem com o gcc mais recente. Eu tenho alguns requisitos específicos, mas você deve realmente considerar o uso da ferramenta certa para a tarefa - rhel / centos para executar aplicativos de produção, fedora para desenvolvê-los etc.

Dani_l
fonte
É educado quando há uma votação baixa para dar uma razão.
23416 Dani_l
0

Ei pessoal, aqui está o que eu fiz (compilando do zero). Sem ofensa a outra resposta, tenho certeza de que funciona, mas o GCC é especialmente importante para segurança, por isso prefiro compilar a partir da fonte original e 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

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

Areeb Soo Yasir
fonte
A segurança é importante, mas você instala a partir de um local não HTTPS :)?
dhag
Na época, não havia SSL ativado no site mirrors.kernel.org, mas acho que se não podemos confiar no kernel.org, temos problemas maiores :).
Areeb Soo Yasir
-1

você pode tentar o buid de origem do gcc.GCC requer MPC, MPFR e GMP como pré-requisitos.Para o GCC 4.8, as dependências de versão são MPC 0.8 GMP 6.0 MPFR 2.4.2. A ordem de instalação é gmp, mpfr, mpc

Biju G
fonte