RHEL 5(64비트)를 사용하고 있는데 rpm/yum 불일치가 발생합니다. 32비트 RPM을 설치하려고 하면 디스크에 64비트 버전만 있는데 RPM이 이미 설치되어 있다는 메시지가 나타납니다.
$ rpm -Uvh ./libsysfs-2.1.0-1.el5.i386.rpm
Preparing... ########################### [100%]
package libsysfs-2.1.0-1.el5.i386 is already installed
$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
libsysfs-2.1.0-1.el5.x86_64
데이터베이스 재구축을 시도했지만 동일한 오류가 발생했습니다.
실제로 RPM이 설치되지 않은 것을 확인했습니다. 실행하면 rpm -qp ./libsysfs-2.1.0-1.el5.i386.rpm
나열된 파일이 시스템에 존재하지 않는 것을 확인할 수 있습니다.
내가 무엇을 놓치고 있나요? RPM이 RPM이 설치되어 있는지 확인하기 위해 다른 것을 찾나요?
편집 1
이것이 RPM 자체와 관련이 있는지 확실하지 않습니다. 를 실행하고 updatedb
RPM 삭제를 사용하여 rpm -e libsysfs
둘 다 설치하려고 하면 패키지가 추가되었다는 오류 메시지가 나타납니다.
$ rpm -e libsysfs
$ rpm -Uvh ./libsysfs-2.1.0-1.el5.i386.rpm ./libsysfs-2.1.0-1.el5.x86_64.rpm
warning: package libsysfs = 2.1.0-1.el5 was already added, skipping libsysfs < 2.1.0-1.el5
Preparing... ########################### [100%]
1:libsysfs ########################### [100%]
동일한 작업을 수행하는 다른 RPM이 19개 있습니다.
편집 2
32비트 패키지가 여전히 설치되지 않습니다. 무슨 일이 일어나고 있는지 알아보는 과정에서 강제로 rpm install 을 할 수 있었고 rpm -Uvh --force libsysfs-2.1.0-1.el5.i386.rpm
성공적으로 설치되었습니다. 32비트로 나열된 파일을 확인할 수 있습니다.그리고이제 파일 시스템에 64비트 RPM이 존재합니다. 그러나 양측은 rpm
이제 yum
믿습니다.오직32비트 버전은 디스크에 있습니다:
$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
libsysfs-2.1.0-1.el5.i386
32비트 RPM을 성공적으로 지울 수 있지만 rpm
이제 모든 파일이 제자리에 있어도 명령이 더 이상 64비트 변형을 인식하지 못합니다.
$ rpm -e libsysfs.i386
$ rpm -q libsysfs --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n
package libsysfs is not installed
$ rpm -qpl ./libsysfs-2.1.0-1.el5.x86_64.rpm
/usr/lib64/libsysfs.so.2
/usr/lib64/libsysfs.so.2.0.1
...
/usr/share/doc/libsysfs-2.1.0/libsysfs.txt
$ ls /usr/lib64/libsysfs.so.2
/usr/lib64/libsysfs.so.2
RPM 데이터베이스를 재구축했지만 여전히 libsysfs RPM을 찾을 수 없습니다.
$ cd /var/lib/rpm
$ rm -f __db*
$ /usr/lib/rpm/rpmdb_verify Packages
$ mv Packages Packages.orig
$ /usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load Packages
$ /usr/lib/rpm/rpmdb_verify Packages
$ rpm -v --rebuilddb
일종의 RPM 데이터베이스 손상이 있는 것이 틀림없다는 결론에 도달했지만 어떻게 해야 할지 모르겠습니다.
편집 3
무슨 일이 일어나고 있는지 더 잘 이해하기 위해 libsysfs를 제거하고 yum localinstall
옵션을 시도했지만 설치 프로그램은 여전히 32비트 옵션과 64비트 옵션을 같은 것으로 취급하는 것 같습니다.
$ yum localinstall ./libsysfs-2.1.0-1.el5.x86_64.rpm ./libsysfs-2.1.0-1.el5.i386.rpm
...
Resolving Dependencies
--> Running transaction check
---> Package libsysfs.i386 0:2.1.0-1.el5 set to be updated
---> Package libsysfs.x86_64 0:2.1.0-1.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
Packages Arch Version Repository Size
===============================================================================
Installing:
libsysfs i386 2.1.0-1.el5 /libsysfs-2.1.0-1.el5.i386 140 k
libsysfs x86_64 2.1.0-1.el5 /libsysfs-2.1.0-1.el5.x86_64 141 k
Transaction Summary
===============================================================================
Install 2 Package(s)
Upgrade 0 Package(s)
Total Size: 281 k
...
Running Transaction:
Installing : libsysfs 1/1
Installed products updated.
Installed:
libsysfs.i386 0:2.1.0-1.el5 libsysfs.x86_64 0:2.1.0-1.el5
Complete!
실제로 설치가 발생한 곳을 제외한 모든 곳에서 두 아키텍처가 모두 언급되었지만 설치는 여전히 하나만 이루어졌습니다.
답변1
모든 32비트 RPM이 동일하게 생성되는 것은 아닌 것 같습니다. 이 문제가 있는 유일한 RPM은 RHN에서 직접 다운로드한 RPM입니다. yum을 통해 rhel-5-server-rpms 저장소에 있는 RPM을 사용하면 모든 것이 잘 작동합니다. rhn.redhat.com에서 다운로드한 50개 정도의 누락된 RPM이 문제의 원인이었습니다.
우리 설정에서는 다운로드한 RPM이 아나콘다를 통해 시스템에 강제로 로드됩니다.
편집하다
문제를 최소화하기 위해 각 32비트 RPM을 제거하고 64비트/noarch RPM을 다시 설치한 다음 32비트 RPM을 설치하면 문제가 해결되는 것으로 보입니다.
yum erase '*.i386'
yum reinstall '*.x86_64' --exclude=filesystem
yum install '<rpm>.i386'
어떤 이유에서인지 이것은 내가 본 8RPM을 제외하고는 해결되었습니다.
답변2
아치 지지대를 확인해 보세요. x86_64 패키지를 사용하고 있거나 필요하다고 말했지만 i386 패키지를 가지고 있습니다.
문제는 "/etc/yum.conf" 파일의 아치 지원과 관련이 있을 수 있습니다. 바꿔보세요 ->
multilib_policy=all
받는 사람->
multilib_policy=best
이것을 실행하세요:
yum clean all
그런 다음 패키지 업데이트를 실행하고 필요한 패키지를 설치/업그레이드하세요.
또한 다음 공식 링크를 확인하세요.