Po nieczystym zamknięciu i kolorowym fsck zaginęła cała masa plików. Wyjście „rpm -Va” ma kilkaset wierszy (głównie brakujące pliki, ale także pewna suma kontrolna i inne niedopasowania). Czy istnieje prosty sposób na ponowną instalację pakietów z brakującymi i / lub uszkodzonymi plikami?
System operacyjny to Fedora 22.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)
Odpowiedzi:
Dla odniesienia i kompletności, jedno polecenie, które byłoby w stanie osiągnąć to, o co początkowo prosiło, byłoby coś takiego (szybko bawił się razem, ale działa)
Oto krótkie wyjaśnienie różnych części:
Przeprowadzi pełną weryfikację wszystkich pakietów aktualnie zainstalowanych / wymienionych w bazie danych rpm. Przekieruje również stderr na stdout, ponieważ tutaj na moim pudełku niektóre błędy, które są spowodowane włączeniem prelink, są zgłaszane jako błędy, ale chcemy je na stdout.
Uwaga: Musi działać jako root, aby móc sprawdzić wszystkie pliki, uprawnienia i właściciela / grupę.
Pomija wyświetlanie od emtpy linii i tak z prelink błędów (przykład takiego błędu:
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
)przefiltruje dane
rpm -Va
wyjściowe, aby wyświetlić tylko nazwy plikówwyśle zapytanie o wszystkie uzyskane nazwy plików, w których pakiet jest zawarty, i wyświetli nazwę i wersję pakietu
usunie duplikaty kombinacji nazwa / wersja pakietu.
W sumie otrzymasz listę pakietów, których weryfikacja nie powiodła się.
rpm -Va
może nadal wykazywać pewne niepowiązane ze sobą problemy, ponieważ sprawdza również zależności między pakietami, które mogą wymagać usunięcia przez dodanie--nodeps
.źródło
Niedawno miałem podobny problem z brakującymi plikami w openSUSE 13.2 i naprawiłem to za pomocą:
Opcje rpm i wywołanie awk mają w moim przypadku zaoszczędzić czas, ponieważ nie doszło do uszkodzenia.
źródło
--nofiles
a zatem w zasadzie zrobić to samo, ponieważyum check dependencies
będzie on sprawdzał tylko wszystkie zainstalowane pakiety rpm pod kątem problemów z zależnościami.--nofiles
zaoszczędziłoby dużo czasu w przypadku instalacji innych niż SSD, ale można by również pominąć sprawdzanie brakujących plików. ... tylko ze względu na kompletność. I pamiętajcie, jeśli chcecie angielskich ciągów znaków, możecie chciećLC_ALL=C