64비트 rpm은 32비트 종속성을 해결할 수 없습니다.

64비트 rpm은 32비트 종속성을 해결할 수 없습니다.

질문

64비트와 32비트 바이너리가 혼합된 RPM이 있습니다. 바이너리 중 하나는 32비트 i686 패키지에 따라 다릅니다. 패키지를 설치하려고 할 때 yum에서 패키지에 32비트 패키지가 필요하다는 오류가 표시되었습니다. 그러나 필요한 패키지를 직접 설치하려고 하면 문제 없이 작동합니다.

세부 사항

내 사양 파일에는

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

CentOS 6.3 시스템에 패키지를 설치하려고 하면 다음과 같은 메시지가 나타납니다.

# 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

그러나 참조 패키지를 수동으로 설치하면 다음과 같은 메시지가 나타납니다.

# 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

오류가 발생하는 이유와 오류가 나에게 무엇을 말하려는지 잘 이해하지 못합니다. 네 번째 필수 패키지 "lshw"가 제대로 작동하는 것 같기 때문에 이 문제는 32비트 패키지에서만 발생하는 것으로 나타났습니다. 32비트 패키지를 참조하는 특별한 사양 파일 구문이 있습니까?

답변1

방금 답을 찾았습니다. 내 요구사항 라인은 다음과 같아야 합니다.

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

에서 언급했듯이 http://www.rpm.org/wiki/PackagerDocs/ArchDependency

답변2

누군가 4.6 답변(4.4 버전)에 답변했으므로 32비트 RPM을 사용하여 어려움이나 구문 부족 문제를 해결하는 경우 다른 사람들에게 유용할 수 있습니다.

Requires:      /lib/libc.so.6

이 파일은 32비트 glibc에서 제공되므로 설치 시 올바른 종속성을 가져옵니다.

관련 정보