Paket gleichzeitig installiert und nicht installiert

Paket gleichzeitig installiert und nicht installiert

Vor einiger Zeit habe ich versucht, Steam auf meinem CentOS 5-Server zu installieren und habe fast alles ausprobiert, was ich im Internet gefunden habe. Und anscheinend konnte ich libstdc++ gleichzeitig installiert und nicht installiert lassen.

Die Aktualisierung von CPanel schlägt fehl, da die richtige Version nicht installiert ist. Yum kann sie jedoch nicht installieren, da sie bereits installiert ist.

Wie kann ich diese Situation beheben und einen konsistenten Zustand erreichen?

# 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

Antwort1

Dank Anthony Geoghegan, der mich in die richtige Richtung gelenkt hat, konnte ich eine funktionierende Lösung finden

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

Dadurch wird das Paket aus der Datenbank entfernt, ohne die Dateien zu berühren, dann yum installfunktioniert es einfach.

Antwort2

Aus Interesse würde ich zunächst versuchen, das Paket mit dem folgenden rpmBefehl zu entfernen:

rpm -e libstdc++

Ich vermute jedoch, dass rpmdie interne Datenbank von beschädigt ist und der obige Befehl nicht funktioniert. Daher würde ich versuchen, die Datenbank mit folgendem Befehl neu aufzubauen:

rpm --rebuilddb

Antwort3

Dies kann bei x86_64- und Multilib-Paketen passieren. yum remove libstdc++versucht, die 64-Bit-Version zu entfernen, aber diese ist nicht installiert. In einer solchen Situation sollten Sie das Paket mit Arch ansprechen. Beispiel:

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

Antwort4

Ich hatte eine ähnliche Situation auf meinem Host.

# yum --showduplicates list coreutils-libs

hat zwei Versionen desselben Pakets zurückgegeben, die offenbar gleichzeitig installiert wurden.

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

Als ich es versuchte

# yum remove coreutils-libs

es schlug fehl, weil es andere Abhängigkeiten entfernen müsste, einschließlichleckerselbst.

Nach mehreren Versuchen und Fehlern konnte ich das jedoch beheben. Der Schlüssel besteht darin, den vollständigen Namen des Pakets zu verwenden, d. h. einschließlich der Version und des Release-Suffixes.

Der wesentliche Punkt besteht darin, dass das Entfernen eines der Pakete eine physische Entfernung erfordern würde, das Entfernen des anderen der beiden jedoch lediglich den RPM-DB-Eintrag entfernt und somit die Datenbank in einen konsistenten Zustand versetzt.

In meinem Fall konnte ich sehen, dass ich auch hattecoreutils-8.4-37.el6_7.3Paket installiert, daher war die Version -37.el6_7.3 wahrscheinlich die richtige (d. h. die, die beibehalten werden sollte).

Als ich sagteleckerum den anderen zu entfernen

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

Alles lief ohne Fehler und die RPM-Datenbank war wieder konsistent.

verwandte Informationen