불완전한 종료와 화려한 fsck에 따라 많은 파일이 사라졌습니다. 'rpm -Va'의 출력은 수백 줄입니다 (대부분 파일이 누락되었지만 일부 체크섬 및 기타 불일치). 파일이 없거나 손상된 패키지를 쉽게 다시 설치할 수 있습니까?
해당 OS는 Fedora 22입니다.
불완전한 종료와 화려한 fsck에 따라 많은 파일이 사라졌습니다. 'rpm -Va'의 출력은 수백 줄입니다 (대부분 파일이 누락되었지만 일부 체크섬 및 기타 불일치). 파일이 없거나 손상된 패키지를 쉽게 다시 설치할 수 있습니까?
해당 OS는 Fedora 22입니다.
답변:
참조 및 완전성을 위해 처음에 요청한 것을 달성 할 수있는 하나의 명령은 다음과 같습니다.
rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u
다음은 다양한 부분에 대한 간단한 설명입니다.
rpm -Va 2>&1
rpm 데이터베이스에 현재 설치되어 있거나 나열된 모든 패키지에 대해 완전한 검증을 실행합니다. 또한 내 상자에서 프리 링크가 활성화되어 발생하는 일부 오류가 오류로보고되지만 stdout에서 원할 때 stderr을 stdout으로 리디렉션합니다.
주의 : 모든 파일, 권한 및 소유자 / 그룹을 확인할 수 있으려면 루트로 실행해야합니다.
grep -vE '^$|prelink:'
emtpy 행 및 사전 링크 오류 표시를 억제합니다 (예 : 오류
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
).
sed 's|.* /|/|')
rpm -Va
파일 이름 만 표시 하도록 출력을 필터링합니다.
rpm -qf $()
패키지에 포함 된 획득 한 모든 파일 이름을 쿼리하고 패키지 이름과 버전을 출력합니다.
| sort -u
중복 된 패키지 이름 / 버전 조합을 억제합니다.
모두 확인에 실패한 패키지 목록을 받게됩니다.
rpm -Va
패키지와의 종속성을 검사하기 때문에 관련없는 일부 문제가 여전히 표시 될 수 있습니다 --nodeps
.
최근에 openSUSE 13.2에서 누락 된 파일과 비슷한 문제가 발생하여 다음과 같이 수정했습니다.
rpm -Va --nodeps --nodigest --noscripts --nosignature --nofiledigest --nosize --nomode --nordev --nouser --nogroup --nomtime\
| awk -e '($1=="missing") && ($2=="d") {system("rpm -qf "$3);}; ($1=="missing") && ($2!="d") && ($2!="c") {system("rpm -qf "$2);}'\
| sort -u | xargs zypper in -f
rpm 옵션과 awk 호출은 손상이 발생하지 않았기 때문에 시간을 절약하기위한 것입니다.
--nofiles
하는 것과 동일 하게 추가 할 수 yum check dependencies
있습니다. --nofiles
비 SSD 설치의 경우 많은 시간을 절약 할 수 있지만 누락 된 파일에 대한 검사도 생략합니다. ... 완전성을 위해. 그리고 당신은 영어 문자열을 grep으로, 당신이 가진 접두사로 할 수 있습니다 염두에 두시기 바랍니다 LC_ALL=C
)
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)