yum
DirectAdmin을 사용하여 상당히 오래된 CentOS 5.11 VPS에서 매우 이상한 문제를 파악하려고 합니다.
다음 명령을 실행하면 telnet
패키지가 설치되었음을 나타냅니다.
# yum install telnet
...
Installed:
telnet.x86_64 1:0.17-41.el5
그러나 telnet
아직 누락된 항목:
# which telnet
/usr/bin/which: no telnet in (/root/local/node/bin:/usr/local/share/npm/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/share/adt-bundle/tools:/root/share/adt-bundle/platform-tools)
내 Yum 버전은 3.2.22입니다.
어쩌면 뭔가 잘못되었다는 힌트는 rpm
어떻게든 다른 버전이 설치되어 있는 것 같다는 것입니다. RPM 데이터베이스를 확인하려고 하면 데이터베이스 버전이 잘못된 것으로 표시됩니다.
# rpm --version
RPM version 4.3.3
# rpm --verify telnet
rpmdb: Program version 4.2 doesn't match environment version
error: db4 error(22) from dbenv->open: Invalid argument
error: cannot open Packages index using db3 - Invalid argument (22)
error: cannot open Packages database in /var/lib/rpm
package telnet is not installed
다음 명령을 사용하여 RPM 데이터베이스를 다시 빌드하는 경우:
rm -rf /var/lib/rpm/__db* && rpm --rebuilddb
Yum은 비슷한 오류를 제공하지만 최신 버전에 대해 불평합니다.
# yum update
Loaded plugins: fastestmirror
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
이러한 /var/lib/rpm/__db*
파일을 제거하면 Yum은 문제를 다시 극복할 수 있었지만 설치된 패키지는 여전히 누락된 것처럼 보였습니다.
Yum이 어떤 면에서 잘못 구성되었거나 두 가지 다른 버전의 RPM이 있는 것 같습니다. 문제를 진단하고 결국 해결책을 찾으려면 어떻게 해야 합니까?
답변1
내 생각엔 rpm 설치가 어떻게든 꺼진 것 같아요. Yum 3.2.22가 설치된 CentOS 5.11에서는 rpm 버전이 4.3.3이 아닌 4.4.2.3이 될 것으로 예상합니다.
특히 yum 3.2.22를 설치하는 데 필요한 rpm-libs 패키지에는 /usr/lib64/librpmdb-4.4.so가 필요하지만 /usr/lib64/librpmdb-4.3.so가 있는 것 같습니다.
업데이트 리포지토리에서 새로운 rpm-*4.4.*rpm을 다운로드하고 rpm을 사용하여 수동으로 설치하는 것이 좋습니다.