Paquete instalado y no instalado al mismo tiempo

Paquete instalado y no instalado al mismo tiempo

Hace un tiempo intenté instalar Steam en mi servidor CentOS 5 y probé casi todo lo que encontré en Internet y parece que he podido dejar libstdc++ instalado y no instalado al mismo tiempo.

CPanel no se actualiza porque no encuentra instalada la versión correcta, pero yum no puede instalarla porque ya está instalada.

¿Cómo puedo solucionar esta situación y llegar a un 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

Respuesta1

Gracias a que Anthony Geoghegan me indicó la dirección correcta, pude encontrar una solución funcional.

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

Eso eliminará el paquete de la base de datos sin tocar los archivos, entonces lo simple yum installfuncionará.

Respuesta2

Por interés, primero intentaría eliminar el paquete usando el rpmcomando:

rpm -e libstdc++

Sin embargo, sospecho que rpmla base de datos interna de está dañada y el comando anterior no funcionará, así que intentaré reconstruir su base de datos usando:

rpm --rebuilddb

Respuesta3

Esto puede suceder en x86_64 y en el paquete multilib. yum remove libstdc++Intenta eliminar la versión de 64 bits, pero no está instalada. Entonces, en tal situación, debes abordar el paquete con arch. Es decir:

yum remove libstdc++-4.1.2-55.el5.i386

Respuesta4

Tuve una situación similar en mi anfitrión.

# yum --showduplicates list coreutils-libs

devolvió dos versiones del mismo paquete aparentemente instaladas al mismo tiempo.

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

cuando lo intenté

# yum remove coreutils-libs

falló, porque tendría que eliminar otras dependencias, incluyendommmsí mismo.

Sin embargo, después de varias pruebas y errores pude solucionarlo. La clave es utilizar el nombre completo del paquete, es decir, incluir la versión y el sufijo de lanzamiento.

El punto principal es que eliminar uno de los paquetes requeriría la eliminación física, pero eliminar el otro solo eliminará el registro de base de datos rpm y, por lo tanto, pondrá la base de datos en un estado consistente.

En mi caso pude ver que también teníacoreutils-8.4-37.el6_7.3paquete instalado, por lo que la versión -37.el6_7.3 probablemente era la correcta (es decir, a conservar).

cuando le dijemmmpara quitar el otro

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

Todo se ejecutó sin ningún error y RPM DB volvió a ser consistente.

información relacionada