yum 오류 : rpmmdb 열기 실패


42

실행하려고 하는데이 yum update오류가 발생합니다.

rpmdb: PANIC: fatal region error detected; run recovery
error: db3 error(-30974) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

페이지를 확인 했지만 실행 중 yum clean all동일한 오류가 발생합니다.

이 문제를 어떻게 해결할 수 있습니까?

답변:


84

이것이 내가 문제를 해결 한 방법입니다.

이것은 매우 지저분한 상황입니다. rpm 데이터베이스를 정리하여이 문제를 해결할 수 있습니다. 위험을 최소화하려면 다음 명령 을 /var/lib/rpm/사용하여 파일을 백업하십시오 cp.

mkdir /root/backups.rpm.mm_dd_yyyy/
cp -avr /var/lib/rpm/ /root/backups.rpm.mm_dd_yyyy/

이 문제를 해결하려면 다음을 시도하십시오.

# rm -f /var/lib/rpm/__db*
# db_verify /var/lib/rpm/Packages
# rpm --rebuilddb
# yum clean all

다음 yum 명령으로 오류가 발생했는지 확인하십시오.

# yum update

이 솔루션은 yum 대신 dnf에서도 작동하는 것 같습니다.
unhammer

이 작업을 모두 수행 한 후 "완료되지 않은 트랜잭션이 남아 있습니다."라는 메시지가 표시되고 문제를 일으킨 손상된 패키지는 향후 설치를 계속 차단합니다. 그 문제에 대해 왜 최종 사용자가 이것을 보거나해야합니까? yum-db에 문제가있는 경우 os-tinkerer가 옵트 아웃 할 수도있는 최대 ay / n 프롬프트로 자동으로 자체 정리 / 수정해야합니다. 내 사건에 대한 해결책을 찾았습니다. 위의 작업을 수행 한 다음 "yum-complete-transaction --cleanup-only"
JosephK

8
왜 안돼 cd /var/lib/rpm; db_recover? 대부분의 경우 이는 핵 옵션보다 훨씬 적습니다.
Craig Ringer

3
내가 찾아 sudo rpm --rebuilddb혼자 해결할 수있는 문제를 내 경우를. 그럼에도 불구하고 항상 /var/lib/rpm안전을 위해 백업하십시오 .
a 릭

yum 설치시 킬 메시지가 계속 표시되는 경우 서버를 다시 시작하십시오. 예,이 작업과 같은 기본적인 것을 얻기 위해 다시 시작하는 것은 짜증이 났지만 그것이 나를 위해 일한 유일한 것이 었습니다.
Nirmal

0

고마워 Alex, 당신의 대답은 내가 한 약간의 변화와 별개로 나를 위해 일했습니다.

rm -f /var/lib/rpm/__db*

반환 된 오류

rm: cannot remove `/var/lib/rpm/__db.001': Is a directory
rm: cannot remove `/var/lib/rpm/__db.002': Is a directory
rm: cannot remove `/var/lib/rpm/__db.004': Is a directory

그래서 나는 재발했다

rm -rf /var/lib/rpm/__db*

2
그것들은 디렉토리가 아니어야합니다. 이 경우 fsck파일 손상이 없는지 확인하기 위해 파티션에서 실행하고 싶을 수 있습니다 .
docwhat

0

나는 위의 것을 시도했지만 작동하지 않았다.

아래는 잘 작동합니다

# cd /var/lib
# tar -zcvf /var/preserve/rpmdb-$(date +%Y-%m-%d_%H-%M-%S).tar.gz rpm

참고 : RPM 데이터베이스 복구 시도에 문제가있는 경우이 tar 백업을 사용할 수 있습니다.

패키지 파일의 무결성을 확인하십시오.

# cd /var/lib/rpm
# rm -f __db*      # to avoid stale locks
# /usr/lib/rpm/rpmdb_verify Packages

# mv Packages Packages.orig
# /usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load Packages


# rpm -vv --rebuilddb

다시 한 번 RPM 데이터베이스를 확인하십시오.

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages

0

".lock"확장자를 가진 두 개의 파일과 "__db"로 시작한 세 개의 파일을 삭제하기 만하면됩니다.

# rm /var/lib/rpm/.dbenv.lock
# rm /var/lib/rpm/.rpm.lock
# rm /var/lib/rpm/__db*

그 후 yum update일했다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.