GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Centos – 64-Bit-RPM kann 32-Bit-Abhängigkeiten nicht auflösen?

Problem

Ich habe ein RPM, das gemischte 64-Bit- und 32-Bit-Binärdateien enthält. Eine der Binärdateien hängt von 32-Bit-i686-Paketen ab. Wenn ich versuche, das Paket yum zu installieren, gibt mir eine Fehlermeldung, dass das Paket die 32-Bit-Pakete erfordert. Wenn ich jedoch versuche, die erforderlichen Pakete selbst zu installieren, funktioniert es einwandfrei.

Einzelheiten

In meiner Spezifikationsdatei habe ich

Requires:       glibc.i686 libstdc++.i686 device-mapper-libs.i686 lshw

Wenn ich versuche, das Paket auf einem CentOS 6.3-System zu installieren, erhalte ich:

# yum update gamigo-kvm-tools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package gamigo-kvm-tools.x86_64 0:0.0.7-4 will be updated
---> Package gamigo-kvm-tools.x86_64 0:0.0.9-4 will be an update
--> Processing Dependency: libstdc++.i686 for package: gamigo-kvm-tools-0.0.9-4.x86_64
--> Processing Dependency: glibc.i686 for package: gamigo-kvm-tools-0.0.9-4.x86_64
--> Processing Dependency: device-mapper-libs.i686 for package: gamigo-kvm-tools-0.0.9-4.x86_64
--> Finished Dependency Resolution
Error: Package: gamigo-kvm-tools-0.0.9-4.x86_64 (gamigo-CentOS-6-x86_64-liv)
           Requires: libstdc++.i686
Error: Package: gamigo-kvm-tools-0.0.9-4.x86_64 (gamigo-CentOS-6-x86_64-liv)
           Requires: device-mapper-libs.i686
Error: Package: gamigo-kvm-tools-0.0.9-4.x86_64 (gamigo-CentOS-6-x86_64-liv)
           Requires: glibc.i686
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Wenn ich jedoch die referenzierten Pakete manuell installiere, bekomme ich

# yum install libstdc++.i686 device-mapper-libs.i686 glibc.i686
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Setting up Install Process
Package libstdc++-4.4.6-4.el6.i686 already installed and latest version
Package device-mapper-libs-1.02.74-10.el6.i686 already installed and latest version
Package glibc-2.12-1.80.el6_3.5.i686 already installed and latest version
Nothing to do

Ich verstehe nicht ganz, warum der Fehler auftritt und was er mir sagen will. Ich sehe, dass es nur für die 32-Bit-Pakete auftritt, da das vierte erforderliche Paket „lshw“ kein Problem zu sein scheint. Gibt es eine spezielle Specfile-Syntax, um 32-Bit-Pakete zu referenzieren?

Akzeptierte Antwort:

Ich habe gerade die Antwort gefunden. Meine Requires-Zeile sollte

sein
Requires:       glibc(x86-32) libstdc++(x86-32) device-mapper-libs(x86-32)

wie in
http://www.rpm.org/wiki/PackagerDocs/ArchDependencies

beschrieben
Cent OS
  1. Finden Sie heraus, zu welchem ​​Paket der Befehl in CentOS gehört

  2. So installieren Sie ein RPM-Paket in einem anderen Verzeichnis in CentOS/RHEL/Fedora

  3. „-bash:Firewall:Befehl nicht gefunden“ – Lösung in CentOS/RHEL 7

  4. „lsb_release:Befehl nicht gefunden“ – Fix in CentOS/RHEL

  5. So stellen Sie gelöschte RPM-Paketdateien (Bibliotheken, Konfigurationsdateien) in CentOS/RHEL 7 wieder her

So installieren und verwalten Sie Pakete auf CentOS mit RPM

So laden Sie ein RPM-Paket mit allen Abhängigkeiten in CentOS, Fedora, RHEL, AlmaLinux, Rocky Linux herunter

So installieren Sie RPM-Pakete unter CentOS 8

So installieren Sie RPM-Pakete in CentOS, RHEL und Fedora

Alle installierten Pakete in RHEL und CentOS auflisten

Installieren Sie htop auf Centos 6.4