RPM 데이터베이스를 확인하는 방법은 무엇입니까?

RPM 데이터베이스를 확인하는 방법은 무엇입니까?

RPM 데이터베이스(RPM이 아니라 그 안에 있는 데이터베이스)가 손상되거나 일관성이 없는지 스크립팅에 적합한 방식으로 확인해야 합니다 /var/lib/rpm(즉, 양호하면 종료 코드 0을 반환하고 손상된 경우 다른 코드를 반환). db_verify개별 Berkeley 데이터베이스를 확인하는 데 사용할 수 있지만 이는 개별 Berkeley 데이터베이스가 완전히 유효하고 데이터베이스 간에 불일치가 있다고 가정합니다. 데이터베이스 삭제(이름 변경)를 시도했지만 rpm -qa --dump눈치 채지 못하고 rpm -Va경고와 함께 다시 생성했습니다. 출력에서 "warning:" 문자열을 찾을 수 있을 것 같지만 이는 신뢰할 수 없는 것 같습니다. 또한 파일의 유효성을 검사하고 싶지 않고 데이터베이스의 유효성을 검사하고 싶습니다. OpenSuSE RPM 관련 패키지를 검색했지만 적합한 패키지를 찾지 못했습니다. 어떤 제안이 있으십니까? 그냥 버리는 것보다 철저한 검증이 되도록 설계된 것을 선호합니다.

답변1

--verifydb최소 rpm-4.1 이후로 문서화되지 않은 플래그가 있습니다.

바라보다rpm/rpmdb.c:

{ "verifydb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR|POPT_ARGFLAG_DOC_HIDDEN),
    &mode, MODE_VERIFYDB, N_("verify database files"), NULL},

그러니 rpm --verifydb당신이 찾고 있는 일을 해야 합니다.

관련 정보