Atualização da biblioteca GLIBC no CentOS 7 Linux
fonte da imagem: Threat Post
Nota: CentOS geralmente é critico para uso de versões estável da biblioteca GLIBC. Alguns programas precisam ser instalados dependendo da nova versão. A atualização da GLIBC precisa ser cautelosa, porque muitas pessoas falham na atualização e o sistema passa a não ser estável (utilizável) para uso.
Eu pessoalmente testei e atualizei várias máquinas, todas as quais foram atualizadas com sucesso. Seguindo este procedimento descrito a seguir.
Lembrando: O motivo que tenho que fazer atualização da GLIBC é devido o TIMING do Asterisk® SCF™ explicado neste post.
RES_TIMING_TIMERFD:
- está disponível apenas em Sistemas Operacionais, com o Linux (Kernel) usando uma versão de pelo menos 2.6.25 e uma versão do GLIBC de pelo menos 2.8;
Verificando este site, verificamos que para a versão atual do Asterisk® SCF™ (16 LTS) devemos usar a versão GLIBC 2.31 (2020-02-01) ou 2.32 (2020-02-05). Então este post tem como finalidade orientar você a atualizar essa biblioteca que é importante para o TIMING do Asterisk® SCF™.
Introdução ao GLIBC:
GLIBC é a biblioteca LIBC lançada pela GNU, que é a biblioteca de tempo de execução C. GLIBC é a API de nível mais baixo no Linux (kernel) e quase qualquer outro tempo de execução depende da GLIBC. Além de encapsular os serviços do sistema fornecidos pelo sistema operacional GNU/Linux (e seus forks), a própria GLIBC fornece muitas outras implementações dos serviços funcionais necessários. Como a GLIBC cobre quase todos os padrões comuns ao UNIX, você pode imaginar que ela é abrangente. Assim como outros sistemas UNIX, o grupo de arquivos contido nele está espalhado na estrutura em árvore do sistema, como um colchete para suportar todo o sistema operacional.
Para visualizar a versão da biblioteca GLIBC do sistema, use o seguinte comando:
$ strings /lib64/libc.so.6 |grep GLIBC_
Ao encontrar o problema da biblioteca GLIBC, você pode primeiro considerar por que deseja atualizar a biblioteca GLIBC e pode passar por outras maneiras relativamente insignificantes:
- Compilar seu próprio produto em uma versão inferior do sistema, se o seu produto não exigir a nova versão para oferecer suporte a novos recursos;
- Compile com um sistema de alto nível, como Ubuntu, e uma nova versão do CentOS 8 Linuux, mas pode ser necessário implantar para uma versão inferior, então você pode considerar o uso de uma simulação e outra tecnologia para fazer um pacote de instalação melhor e inserir a dependência no pacote.
- Usando tecnologia de contêiner, como Docker, leve o isolamento de um ambiente de tempo de execução virtual para ajustar seu programa a uma versão inferior do sistema operacional.
Confirmado que as opções passada não pode resolver seu problema de incompatibilidade de uso da biblioteca, então considere atualizar a biblioteca GLIBC, eu atualizei a biblioteca por causa do erro relatado no BUG #17255 do Asterisk® SCF™:
ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found
Etapa de Atualização:
1, primeiro baixe a versão correspondente do pacote de instalação que deseje:
# wget https://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz
2, extrair, criar um novo diretório de diretório de compilação;
# tar xf glibc-2.23.tar.gz
# cd glibc-2.23/
# mkdir glibc-build
# cd glibc-build (
deve estar no diretório recém-criado)
3, instalação;
# ../configure --prefix=/usr
# make
# make install
Pode haver um erro ao fazer a instalação (semelhante à versão errada do link simbólico)
gawk '/\.gnu\.glibc-stub\./ { \
sub(/\.gnu\.glibc-stub\./, "", $2); \
stubs[$2] = 1; } \
END { for (s in stubs) print "#define __stub_" s }' > /root/glibc-2.23/glibc-build/math/stubsT
gawk: error while loading shared libraries: /lib64/libm.so.6: invalid ELF header
make[2]: *** [/root/glibc-2.23/glibc-build/math/stubs] Error 127
make[2]: Leaving directory `/root/glibc-2.23/math'
make[1]: *** [math/subdir_install] Error 2
make[1]: Leaving directory `/root/glibc-2.23'
make: *** [install] Error 2
Solução (executada em outra janela/terminal):
# cd /lib64
# unlink libm.so.6
# ln -s libm-2.23.so libm.so.6
Em seguida, execute novamente; make install;
Veja a seguinte mensagem se a instalação foi bem sucedida;
LD_SO=ld-linux-x86-64.so.2 CC="gcc" /usr/bin/perl scripts/test-installation.pl /root/glibc-2.23/glibc-build/
Your new glibc installation seems to be ok.
make[1]: Leaving directory `/root/glibc-2.23'
4, verificação.
# ldd --version
ldd (GNU libc) 2.23
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Parabéns atualização bem-sucedida!
Thats All FOLKS! (Isso é tudo, pessoal!)
Fonte: Installing a newer version of glibc RHEL 7.6
Deixe um comentário