Dlaczego indeks yum jest uszkodzony?


Czasami pamięć podręczna yum ulega uszkodzeniu i widzimy takie błędy:
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in/var/lib/rpm

Obejście problemu
       rm -f/var/lib/rpm/__db*
a następnie następne polecenie „yum” ponownie generuje dane.
Moje pytanie brzmi, co może być tego przyczyną? Czy istnieje jakiś ogólny problem, który ignoruje blokady lub inny problem, który to powoduje?
Mamy setki maszyn CentOS i nie ma modelu, który widzi ten problem. Może to być problem jeden na milion, który często występuje na dużą skalę.
UWAGA. Rozumiem, że jest to bardzo „otwarte” pytanie, ale jeśli odpowiedź znajdzie powód, wrócę i zamienię pytanie na coś bardziej kanonicznego, co jest bezpośrednio związane z konkretnym problemem.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Generalnie dzieje się tak, gdy rpm (lub yum) ulega awarii podczas aktualizacji rpmdb, który jest magazynem kluczy/wartości Berkeley DB i jest bardzo czuły. Gdy wystąpi taka awaria, rpmdb pozostaje w stanie niespójności i pojawia się ten błąd. Wszystkie inne pliki w formacie
/var/lib/rpm
zawierają te same informacje, ale w mniej wydajnym formacie, dzięki czemu baza danych jest łatwa do odzyskania.
Mogą to być dwa znaczące błędy, które mogłeś zobaczyć w starszych systemach CentOS.

Duży
https://bugzilla.redhat.com/show_bug.cgi?id=220963
„paskudnym i subtelnym wyścigiem w ogólnym przeglądaniu stron wstecz za pomocą mmapa”, jak odnotowano w dzienniku zmian

po cichu naprawione w aktualizacji jądra 2007
https://rhn.redhat.com/errata/ ... ml... To

przedstawiłem się trochę inaczej
https://bugzilla.redhat.com/show_bug.cgi?id=230362
niż twój raport.
W

jeden, który można zobaczyć z 2009 roku
http://www.redhat.com/archives ... .html
zdarzyło się, gdy PackageKit zabił yum w niewłaściwym czasie, a

został również naprawiony
http://www.redhat.com/archives ... ml... Jednak najprawdopodobniej wpłynie to na komputery stacjonarne lub serwery z interfejsem graficznym.
Wszystkie te błędy pochodzą sprzed wersji EL 6 i powinieneś

prawie

nigdy nie zobaczy tego na EL 6 lub 7 i nie powinieneś tego widzieć, jeśli twoje systemy EL 5 są aktualne. (Nie mam pojęcia o EL 4. Jeśli go masz, zabij go, zanim się rozprzestrzeni).

byle co

powodując śmierć yum lub rpm, a praca z rpmdb może to spowodować. Obejmuje to to, co najprawdopodobniej zobaczysz w dzisiejszych czasach, losowe promienie kosmiczne przerzucające bity lub ktoś przesadzony z
         kill -9
.
W RHEL 7 yum przechwytuje więcej sygnałów podczas faktycznej realizacji transakcji i zobaczysz komunikat
         (shutdown inhibited)
... Powinno to zapobiec większości sytuacji, w których ktoś lub coś przerywa transakcję i powoduje ten problem.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się