웹사이트 검색

CentOS에서 손상된 RPM 데이터베이스를 재구축하는 방법


RPM 데이터베이스는 CentOS 및 기타 엔터프라이즈 Linux 배포판(예: )의 /var/lib/rpm/ 디렉토리 아래의 파일로 구성됩니다. >RHEL, openSUSE, Oracle Linux 등.

RPM 데이터베이스가 손상된 경우 RPM이 올바르게 작동하지 않으므로 업데이트를 시스템에 적용할 수 없습니다. YUM 패키지 관리자를 통해 시스템에서 패키지를 업데이트하는 동안 오류가 발생합니다. 최악의 시나리오는 rpm 및 yum 명령을 성공적으로 실행할 수 없는 것입니다.

추가 읽기: Linux에서 RPM 명령의 20가지 실제 사례

불완전한 이전 트랜잭션, 특정 타사 소프트웨어 설치, 특정 패키지 제거 등 RPM 데이터베이스 손상을 초래할 수 있는 여러 가지 요인이 있습니다.

이 글에서는 손상된 RPM 데이터베이스를 재구축하는 방법을 보여드리겠습니다. 이 방법으로 CentOS에서 RPM 데이터베이스 손상을 복구할 수 있습니다. 이를 위해서는 루트 사용자 권한이 필요합니다. 그렇지 않은 경우 sudo 명령을 사용하여 해당 권한을 얻으십시오.

CentOS에서 손상된 RPM 데이터베이스 재구축

먼저 다음 명령을 사용하여 계속 진행하기 전에 현재 RPM 데이터베이스를 백업하여 시작하십시오(나중에 필요할 수 있음).

mkdir /backups/
tar -zcvf /backups/rpmdb-$(date +"%d%m%Y").tar.gz  /var/lib/rpm

그런 다음 마스터 패키지 메타데이터 파일 /var/lib/rpm/Packages의 무결성을 확인합니다. 이 파일은 다시 빌드해야 하지만 먼저 /var/lib/rpm/__db* 파일을 제거하여 오래된 잠금을 방지하려면 다음 명령을 사용하세요.

rm -f /var/lib/rpm/__db*		
/usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

위 작업이 실패하는 경우(즉, 여전히 오류가 발생하는 경우) 새 데이터베이스를 덤프하고 로드해야 합니다. 또한 다음과 같이 새로 로드된 패키지 파일의 무결성을 확인합니다.


cd /var/lib/rpm/
mv Packages Packages.back
/usr/lib/rpm/rpmdb_dump Packages.back | /usr/lib/rpm/rpmdb_load Packages
/usr/lib/rpm/rpmdb_verify Packages

이제 데이터베이스 헤더를 확인하려면 -q-a 플래그를 사용하여 설치된 모든 패키지를 쿼리하고 표준 오류.


rpm -qa >/dev/null	#output is discarded to enable printing of errors only

마지막으로 중요한 것은 다음 명령을 사용하여 RPM 데이터베이스를 재구축하는 것입니다. -vv 옵션을 사용하면 많은 디버깅 정보를 표시할 수 있습니다.

rpm -vv --rebuilddb

dcrpm 도구를 사용하여 RPM 데이터베이스 감지 및 수정

또한 RPM 데이터베이스 손상과 관련하여 잘 알려진 문제를 식별하고 수정하는 데 사용되는 dcrpm(rpm 감지 및 수정) 명령줄 도구도 발견했습니다. 옵션 없이 실행할 수 있는 간단하고 사용하기 쉬운 도구입니다. 효과적이고 안정적인 사용을 위해서는 cron을 통해 정기적으로 실행해야 합니다.

소스에서 설치할 수 있습니다. 소스 트리를 다운로드하고 표시된 대로 setup.py(pypi에서도 psutil 종속성을 가져와야 함)를 사용하여 설치합니다.

git clone https://github.com/facebookincubator/dcrpm.git
cd dcrpm
python setup.py install

dcrpm을 설치한 후 표시된 대로 실행하세요.

dcrpm

마지막으로 실패한 rpm 또는 yum 명령을 다시 실행하여 모든 것이 제대로 작동하는지 확인하십시오.

dcrpm Github 저장소: https://github.com/facebookincubator/dcrpm
RPM 데이터베이스 복구 페이지에서 자세한 정보를 확인할 수 있습니다.

그게 다야! 이 기사에서는 CentOS에서 손상된 RPM 데이터베이스를 다시 빌드하는 방법을 설명했습니다. 이 가이드에 대해 질문이 있거나 생각을 공유하려면 아래 피드백 양식을 사용하세요.