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)
rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u
Oto krótkie wyjaśnienie różnych części:
rpm -Va 2>&1
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ę.
grep -vE '^$|prelink:'
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
)
sed 's|.* /|/|')
przefiltruje dane rpm -Va
wyjściowe, aby wyświetlić tylko nazwy plików
rpm -qf $()
wyśle zapytanie o wszystkie uzyskane nazwy plików, w których pakiet jest zawarty, i wyświetli nazwę i wersję pakietu
| sort -u
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
.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)