wtorek, 5 lutego 2013

Archlinux - problemy z weryfikacją pakietów podczas instalacji

Pacman, domyślny menedżer pakietów w Archu, umożliwia weryfikowanie pakietów na podstawie podpisów, niestety niekiedy mechanizm ten sprawia problemy. Co można zrobić?
Pierwsza rzecz to wydać polecenie pacman-key --refresh-keys, które powinno zaktualizować lokalną bazę kluczy. Notabene odświeżenie kluczy zapewnia również instalacja pakietu archlinux-keyring. Jeżeli to nie pomoże, spróbuj zmienić repozytorium w /etc/pacman.d/mirrorlist. Jeżeli i to nie pomoże, można spróbować następujących kroków:

  1. W pliku konfiguracyjnym pacman.conf tymczasowo wyłączamy weryfikację pakietów dla repozytoriów core, extra i community, czyli wpisujemy SigLevel = Never,
  2. rm -R /etc/pacman.d/gnupg - usunięcie katalogu z kluczami,
  3. rm /var/cache/pacman/pkg/* - opróżnienie cachu pakietów, wymagane, gdyż w przeciwnym razie mogą wystąpić błędy mówiące o uszkodzonych pakietach,
  4. w tym miejscu trzeba czasem zmienić serwer, z którego pobierane są pakiety (zajrzyj do pliku /etc/pacman.d/mirrolist),
  5. pacman -Syu archlinux-keyring - instalujemy aktualne klucze Archa,
  6. pacman-key --init - przygotowanie lokalnej bazy kluczy, podczas tej operacji warto w innych konsolach wydać polecenie ls -R / oraz poruszać i poklikać myszą, co przyśpieszy generowanie entropii; można też zainstalować pakiet haveged i poprzedzić inicjalizację poleceniem haveged -w 1024,
  7. pacman-key --populate archlinux - inicjalizacja kluczy, podczas której należy potwierdzić zaufanie dla kluczy głównych deweloperów wciskając "T" + Enter (samo Enter nie wystarczy!),
  8. W pliku pacman.conf przywracamy weryfikację podpisów, czyli ustawiamy SigLevel = PackageRequired dla poszczególnych repozytoriów,
  9. pacman -Syyu - odświeżenie list pakietów i aktualizacja systemu.

Jeżeli powyższe kroki nie umożliwią bezproblemowej instalacji pakietów, pozostaje wspomniana opcja SigLevel = Never. To rozwiązanie ostateczne, wyłącza przecież weryfikację podpisów pakietów, nie jest więc polecenie, ale czasem przydaje się, żeby "awaryjnie" zainstalować jakiś pakiet.

Niestety, zdarzyło się ostatnio kilka razy po zainstalowaniu najnowszego Bridge Linuksa, że powyższe porady nie przyniosły oczekiwanego skutku. Ciągle pozostawał jeden pakiet, co do którego pojawiała się informacja mówiąca o jego uszkodzeniu. Rozwiązanie było następujące: usunięcie problematycznego pakietu wg sugestii pacmana, tymczasowa zmiana serwera, zainstalowanie opornego pakietu, przywrócenie poprzedniego serwera (notabene niekonieczne, ale był szybszy) i dalsza instalacja (aktualizacja).