Como atualizar o glibc para 2.14 no CentOS 6.5

47

Quero instalar o Android NDK na minha máquina CentOS 6.5. Mas quando eu executei o programa, ele diz que precisa do glibc 2.14 para poder executar. Meu CentOS 6.5 possui apenas o Glibc 2.12 instalado. Então, tentei atualizar o glibc:

$ sudo yum update glibc

Mas depois disso eu achei a versão glibc ainda 2.12, não 2.14.

$ ldd --version
ldd (GNU libc) 2.12

Acho que o glibc 2.14 pode não estar disponível nos repositórios do CentOS. Então, como posso atualizá-lo para o glibc 2.14 no CentOS 6.5?

tonga
fonte
2
É mais fácil atualizar para o CentOS7, que contém o GLibC 2.14, do que atualizar o GLibC de 2.12 para 2.14. Veja o Skype Call Recorder
eyoung100
@ eyoung100 Ainda preciso do CentOS 6.5 em vez de 7. Existe uma maneira fácil de atualizar o Glibc para 2.14? Valeu!
tonga
3
Não, veja uma das minhas outras respostas para saber o porquê .
eyoung100
Com base nas suas respostas, parece que a melhor solução será atualizar para o CentOS 7 ou usar uma versão mais antiga do NDK que requer o glibc 2.12. Obrigado por seus comentários.
tonga
11
Você também pode instalar um chroot do CentOS7 para executar o NDK.
derobert

Respostas:

68

Você não pode atualizar glibccom Centos 6segurança. No entanto, você pode instalar 2.14com 2.12facilidade e usá-lo para compilar projetos etc. Aqui está como:

mkdir ~/glibc_install; cd ~/glibc_install 

wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

tar zxvf glibc-2.14.tar.gz

cd glibc-2.14

mkdir build

cd build

../configure --prefix=/opt/glibc-2.14

make -j4

sudo make install

export LD_LIBRARY_PATH="/opt/glibc-2.14/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
UnitasBrooks
fonte
3
Quero mencionar que esse processo de construção leva 2,5 horas na AWS lenta. Talvez útil para alguém a próxima informações: instruções acima correções psycopg2questão ImportError: /lib/libc.so.6: version 'GLIBC_2.14'(eu uso Centos 6.5 e PostgreSQL v 9.6)
TitanFighter
11
Resposta brilhante! Eu segui exatamente essa resposta e funcionou como um encanto. Obrigado
thonnor
2
Também pode ser usado para versões posteriores; simplesmente altere "2.14" para "2.23" ou qualquer versão que você precise, conforme destacado por coisas como: /usr/local/lib/somlelib.so: undefined reference to 'somefunction@GLIBC_2.23'(os últimos dígitos são a versão). Para acelerar a compilação, use make -j8 se você tiver 8 threads no seu processador, etc. O meu foi concluído em alguns minutos.
Roel Van de Paar
Fiquei com relocation error: libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time referenceapós a fase de exportação (ao tentar qualquer comando). Alguém pode ajudar? @Roel
belka
11
Obrigado cara, trabalhou como esperado CENTOS 6.10. Substituí esta linha sudo make installpor make installenquanto era root, porque meu usuário não estava no arquivo sudoers
Accountant 16/04
7

Para instalar o glibc 2.14 em paralelo, adicione o prefixo de configuração:

tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install

Após esse processo, você poderá construir o 2.14, mas precisará informar ao compilador onde procurar pelo glibc.

Abaixo estão as maneiras pelas quais você pode expor a glibc ao seu programa.

  1. LD_LIBRARY_PATH = / opt / glibc-2.14 / lib

    exportar LD_LIBRARY_PATH.

    A biblioteca é exposta durante sua sessão de login atual.

  2. Você pode vincular permanentemente sua nova versão glibc dessa forma, mas leia o AVISO abaixo:

    ln -sf /opt/glibc-2.14/glibc-2.14.so /lib/libc.so.6.

Como o libc.so.6 é apenas um link simbólico. A execução do comando acima fará o link apontar para a nova biblioteca glibc. No entanto, esta etapa não é recomendada, pois existem muitos programas no Linux que dependem de versões mais antigas e que param de funcionar.

Mikel
fonte
+1 para os detalhes da exposição da biblioteca
Accountant م 16/04
2

Técnica alternativa comum. Instalando o GLIBC 2.14 em paralelo (instale-o no diretório / opt) Em seguida, ele estará disponível para os programas que precisam dele sem interromper o SO principal.

BrokenSyntax
fonte
7
Como você faria isso? Faça o download de uma rpm e?
rncrtr