Pacote instalado e não instalado ao mesmo tempo

3
Algum tempo atrás eu tentei instalar o Steam no meu servidor CentOS 5 e tentei quase tudo que encontrei na Internet e parece que eu consegui deixar o libstdc ++ instalado e não instalado ao mesmo tempo.

O CPanel não está sendo atualizado porque não encontra a versão correta instalada, mas o yum não pode instalá-lo porque já está instalado.

Como posso consertar esta situação e alcançar um estado consistente?

# yum install libstdc++-4.1.2-55.el5
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * contrib: mirror.wiredtree.com
addons                                                   | 1.9 kB     00:00
base                                                     | 1.1 kB     00:00
centosplus                                               | 1.9 kB     00:00
contrib                                                  | 1.9 kB     00:00
extras                                                   | 2.1 kB     00:00
updates                                                  | 1.9 kB     00:00
wiredtree                                                |  951 B     00:00
Excluding Packages in global exclude list
Finished
Setting up Install Process
Package matching libstdc++-4.1.2-55.el5.i386 already installed. Checking for update.
Nothing to do

# yum remove libstdc++-4.1.2-55.el5
Loaded plugins: fastestmirror
Setting up Remove Process
No Match for argument: libstdc++-4.1.2-55.el5
Loading mirror speeds from cached hostfile
 * contrib: mirror.wiredtree.com
addons                                                   | 1.9 kB     00:00
base                                                     | 1.1 kB     00:00
centosplus                                               | 1.9 kB     00:00
contrib                                                  | 1.9 kB     00:00
extras                                                   | 2.1 kB     00:00
updates                                                  | 1.9 kB     00:00
wiredtree                                                |  951 B     00:00
Excluding Packages in global exclude list
Finished
Package(s) libstdc++-4.1.2-55.el5 available, but not installed.
No Packages marked for removal


# yum reinstall libstdc++-4.1.2-55.el5
Loaded plugins: fastestmirror
Setting up Reinstall Process
Loading mirror speeds from cached hostfile
 * contrib: mirror.wiredtree.com
addons                                                   | 1.9 kB     00:00
base                                                     | 1.1 kB     00:00
centosplus                                               | 1.9 kB     00:00
contrib                                                  | 1.9 kB     00:00
extras                                                   | 2.1 kB     00:00
updates                                                  | 1.9 kB     00:00
wiredtree                                                |  951 B     00:00
Excluding Packages in global exclude list
Finished
No Match for argument: libstdc++-4.1.2-55.el5
Package(s) libstdc++-4.1.2-55.el5 available, but not installed.
Nothing to do

# yum --showduplicates list libstdc++ | expand
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * contrib: mirror.wiredtree.com
Excluding Packages in global exclude list
Finished
Installed Packages
libstdc++.i386                      4.3.2-7                            installed
Available Packages
libstdc++.i386                      4.1.2-55.el5                       base
    
por frisco 16.11.2014 / 14:17

4 respostas

3

Graças a Anthony Geoghegan, apontando-me na direção certa, consegui encontrar uma solução de trabalho

rpm -e --justdb --nodeps libstdc++

Isso removerá o pacakge do banco de dados sem tocar nos arquivos, então o yum install simples funcionará.

    
por 17.11.2014 / 19:07
2

Por interesse, primeiro tente remover o pacote usando o comando rpm :

rpm -e libstdc++

No entanto, suspeito que o banco de dados interno de rpm esteja corrompido e o banco de dados acima o comando não funcionará, então tente reconstruir o banco de dados usando:

rpm --rebuilddb
    
por 16.11.2014 / 21:01
0

Isso pode acontecer no pacote x86_64 e multilib. yum remove libstdc++ tenta remover a versão 64bits, mas isso não está instalado. Então, em tal situação, você deve abordar o pacote com o arco. Ou seja:

yum remove libstdc++-4.1.2-55.el5.i386
    
por 17.10.2016 / 13:25
-1

Eu tive uma situação semelhante no meu host.

# yum --showduplicates list coreutils-libs

retornou duas versões do mesmo pacote aparentemente instaladas ao mesmo tempo.

Installed Packages
coreutils-libs.x86_64                  8.4-37.el6_7.3                 @updates
coreutils-libs.x86_64                  8.4-43.el6                     installed
Available Packages
coreutils-libs.x86_64                  8.4-43.el6                     base

Quando tentei

# yum remove coreutils-libs

falhou, porque teria que remover outras dependências, incluindo o próprio yum .

No entanto, depois de várias tentativas e erros, consegui corrigir isso. A chave é usar o nome completo do pacote, ou seja, incluindo a versão e o sufixo de lançamento.

O ponto principal é que remover um dos pacotes exigiria remoção física, mas remover o outro dos dois removerá apenas o registro do banco de dados do rpm e, assim, colocará o banco de dados em um estado consistente.

No meu caso eu pude ver que eu também tinha o pacote coreutils-8.4-37.el6_7.3 instalado, então o release -37.el6_7.3 foi provavelmente o correto (isto é, para ser preservado ).

Quando eu falei yum para remover o outro

# yum remove coreutils-libs-8.4-43.el6

tudo foi executado sem nenhum erro e o RPM DB tornou-se consistente novamente.

    
por 19.10.2016 / 13:52