Tentei atualizar meu servidor web de produção esta manhã (t2 rodando Amazon Linux), mas falhou porque fiquei sem RAM (php-fpm tinha tudo). Parei o php-fpm para liberar um pouco de RAM, mas a atualização do yum não foi concluída. O servidor está funcionando bem, mas gostaria de resolver esse problema.
# yum update
Resolving Dependencies
--> Running transaction check
---> Package glibc-headers.x86_64 0:2.17-106.168.amzn1 will be updated
--> Processing Dependency: glibc-headers = 2.17-106.168.amzn1 for package: glibc-devel-2.17-106.168.amzn1.x86_64
---> Package glibc-headers.x86_64 0:2.17-157.169.amzn1 will be an update
--> Finished Dependency Resolution
Error: Package: glibc-devel-2.17-106.168.amzn1.x86_64 (@amzn-main)
Requires: glibc-headers = 2.17-106.168.amzn1
Removing: glibc-headers-2.17-106.168.amzn1.x86_64 (@amzn-main)
glibc-headers = 2.17-106.168.amzn1
Updated By: glibc-headers-2.17-157.169.amzn1.x86_64 (amzn-updates)
glibc-headers = 2.17-157.169.amzn1
You could try using --skip-broken to work around the problem
** Found 6 pre-existing rpmdb problem(s), 'yum check' output follows:
glibc-devel-2.17-106.168.amzn1.x86_64 has missing requires of glibc(x86-64) = ('0', '2.17', '106.168.amzn1')
glibc-devel-2.17-157.169.amzn1.x86_64 is a duplicate with glibc-devel-2.17-106.168.amzn1.x86_64
glibc-devel-2.17-157.169.amzn1.x86_64 has missing requires of glibc-headers = ('0', '2.17', '157.169.amzn1')
glibc-headers-2.17-106.168.amzn1.x86_64 has missing requires of glibc(x86-64) = ('0', '2.17', '106.168.amzn1')
subversion-1.9.4-2.55.amzn1.x86_64 has missing requires of subversion-libs(x86-64) = ('0', '1.9.4', '2.55.amzn1')
subversion-1.9.5-1.56.amzn1.x86_64 is a duplicate with subversion-1.9.4-2.55.amzn1.x86_64
Aqui estão os pacotes glibc que estão instalados
# rpm -qa | grep glibc
glibc-devel-2.17-157.169.amzn1.x86_64
glibc-devel-2.17-106.168.amzn1.x86_64
glibc-common-2.17-157.169.amzn1.x86_64
glibc-headers-2.17-106.168.amzn1.x86_64
glibc-2.17-157.169.amzn1.x86_64
Um problema parece ser duas versões diferentes do glibc-devel instaladas. Também parece que partes do glibc estão na versão 106 e outras na versão 157.
Reiniciei o servidor, o que, como esperado, não fez diferença, mas valeu a tentativa. Eu corri o seguinte, sem efeito
yum-complete-transaction
yum-complete-transaction --cleanup-only
yum clean all
No passado, tive problemas semelhantes, mas com pacotes menos críticos. Acabei de removê-los todos e instalá-los novamente. Não acredito que isso seja possível com glibc, pois muitas coisas dependem disso.
Procurei nos fóruns do Centos e uma opção parece ser fazer o downgrade de alguns pacotes para fazer o downgrade de alguns pacotes , mas não sei se existe uma opção melhor. Como este é meu servidor de produção, gostaria de receber alguns conselhos antes de tentar isso. Se esta for uma boa abordagem, quais pacotes devo fazer o downgrade? O que eu faço depois de fazer o downgrade, uma atualização normal do yum?
Observe que tenho backups regulares e posso restaurar a partir de um backup recente, se necessário, mas prefiro não fazer isso, pois teria que refazer algum trabalho de certificado SSL que foi um pouco complicado. Pretendo migrar para o Ubuntu e usar o CloudFormation para criar o servidor no futuro, portanto, se o servidor falhar, posso simplesmente criar outro, mas essa é uma tarefa futura.
Obrigado pela sugestão de usar o rollback. Eu tentei, mas não reverteu as coisas corretamente.
Criei outra instância da VM e tentei fazer as coisas manualmente. Observando acima que eu tinha duas versões do glibc-devel, fiz o seguinte
Nesse ponto, fiz uma "verificação yum" e ele me disse que também havia um problema com a subversão.
Isso parece ter resolvido o problema.
Acabei de ter um problema semelhante com glibc-common-2.17-106.1.169.amzn1.x86_64, sendo uma instalação quebrada onde todas as outras versões glibc eram @ 2.17-55.
A execução de yum reinstall glibc-common-2.17-106.1.169.amzn1.x86_64 acionou a resolução de dependência adequada e corrigiu o conflito.