Wyszukiwanie w witrynie

Jak naprawić błąd 404 Not Found podczas aktualizacji apt-get na Debianie


Błąd „404 Not Found” podczas aktualizacji występuje, gdy system próbuje pobrać pakiety z repozytoriów, które już nie istnieją lub zostały przeniesione, co zazwyczaj ma miejsce w przypadku starszych wydań Debian, które osiągnęły status końca wsparcia i których pakiety zostały przeniesione na serwery archiwalne.

Ponieważ Debian utrzymuje rygorystyczne cykle wydawnicze, starsze wersje w końcu przenoszone są z aktywnych mirrorów do dedykowanego archiwum. Kiedy to nastąpi, Twoja istniejąca konfiguracja repozytorium staje się przestarzała, a operacje menedżera pakietów zawodzą.

Zrozumienie błędów 404 podczas aktualizacji

Kiedy uruchamiasz apt-get update lub apt-get upgrade, system odczytuje listę źródeł z /etc/apt/sources.list i próbuje pobrać informacje o pakietach z określonych tam adresów URL. Jeśli te adresy URL wskazują na repozytoria, które zostały przeniesione lub usunięte, otrzymujesz błędy 404.

Rozwiązanie polega na zaktualizowaniu listy źródeł, aby wskazywała na właściwe lokalizacje repozytoriów. Ponieważ różne wersje Debiana wymagają różnych adresów URL repozytoriów, najpierw zidentyfikujemy Twoją obecną wersję, a następnie odpowiednio zmodyfikujemy konfigurację.

Sprawdzanie wersji Debiana

Zanim wprowadzisz jakiekolwiek zmiany, musisz określić, jaką wersję Debiana używasz.

lsb_release -a

Powyższe polecenie wyświetla informacje o Twojej dystrybucji, w tym numer wydania i nazwę kodową.

  • Bookworm → Debian 12
  • Bullseye → Debian 11
  • Buster → Debian 10

Zanotuj swój pseudonim, ponieważ będziesz go potrzebować w kolejnych krokach.

Tworzenie kopii zapasowej konfiguracji plików źródeł

Ponieważ będziesz modyfikować pliki systemowe, utworzenie kopii zapasowej zapewnia możliwość przywrócenia pierwotnej konfiguracji w razie potrzeby.

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

Tworzy to kopię Twojej listy źródeł w tym samym katalogu; jeśli coś pójdzie nie tak, możesz ją przywrócić, odwracając źródło i miejsce docelowe w powyższym poleceniu.

Aktualizowanie źródeł repozytorium

Następnie musisz edytować listę źródeł, aby wskazywała na odpowiednie repozytoria. W przypadku starszych wydań Debiana, które osiągnęły koniec wsparcia, musisz przełączyć się na serwery archiwalne.

Otwórz plik za pomocą edytora tekstu:

sudo nano /etc/apt/sources.list

Dla wersji Debiana, które osiągnęły koniec wsparcia

Jeśli Twoja wersja Debian nie jest już wspierana (np. Jessie, Stretch lub starsze), zamień zawartość pliku na:

deb http://archive.debian.org/debian/ CODENAME main contrib non-free
deb http://archive.debian.org/debian-security/ CODENAME/updates main contrib non-free

Zastąp CODENAME swoją nazwą kodową Debiana (na przykład stretch dla Debian 9).

Dla aktualnie obsługiwanych wersji

Jeśli Twoja wersja Debiana jest nadal wspierana, ale występują błędy 404 (problemy z mirrorami), użyj zamiast tego głównych repozytoriów Debiana:

deb http://deb.debian.org/debian/ CODENAME main contrib non-free
deb http://deb.debian.org/debian/ CODENAME-updates main contrib non-free
deb http://security.debian.org/debian-security CODENAME-security main contrib non-free

Zastąp CODENAME swoją wersją:

  • Debian 12 → bookworm
  • Debian 11 → bullseye
  • Debian 10 → buster

Po wprowadzeniu tych zmian zapisz plik, naciskając Ctrl+O, a następnie Enter, i wyjdź, używając Ctrl+X.

Obsługa weryfikacji repozytorium archiwum

Repozytoria archiwalne dla przestarzałych wersji Debian nie otrzymują aktualizacji bezpieczeństwa, co oznacza, że pliki wydania nie są już podpisane ważnymi kluczami. Aby zapobiec błędom polecenia apt spowodowanym wygasłymi podpisami, musisz wyłączyć sprawdzanie weryfikacji dla tych repozytoriów.

Otwórz lub utwórz następujący plik konfiguracyjny:

sudo nano /etc/apt/apt.conf.d/99allow-unauthenticated

Dodaj tę jedną linię:

Acquire::Check-Valid-Until "false";

To ustawienie mówi apt, aby ignorował okres ważności plików wydania, co jest konieczne w przypadku archiwalnych repozytoriów, które nie otrzymują już aktualizacji.

Aktualizowanie informacji o pakietach

Teraz, gdy źródła twojego repozytorium są poprawnie skonfigurowane, zaktualizuj listy pakietów, co pobierze najnowsze informacje o pakietach z właśnie skonfigurowanych repozytoriów. Jeśli wszystko jest poprawnie ustawione, proces powinien zakończyć się bez żadnych błędów 404.

sudo apt-get update

Po zaktualizowaniu list pakietów możesz uaktualnić zainstalowane pakiety, co spowoduje pobranie i zainstalowanie dostępnych aktualizacji dla twojego obecnego systemu. W przypadku wersji archiwalnych może się okazać, że niewiele pakietów lub żadne nie zostaną zaktualizowane, ponieważ nie otrzymują już aktualizacji.

sudo apt-get upgrade

Rozważanie aktualizacji dystrybucji

Naprawa błędów 404 pozwala na działanie obecnego systemu, ale używanie przestarzałej wersji Debiana oznacza, że nie otrzymujesz już aktualizacji bezpieczeństwa, co stanowi istotne ryzyko w środowiskach produkcyjnych lub podłączonych do internetu.

Powinieneś rozważyć uaktualnienie do obecnie wspieranej wersji Debiana.

sudo apt-get dist-upgrade

Jednak aktualizacja między głównymi wersjami Debiana wymaga starannego planowania i nie powinna być wykonywana lekkomyślnie, ponieważ może spowodować uszkodzenie istniejących konfiguracji lub zainstalowanego oprogramowania. Przed przystąpieniem do większej aktualizacji zapoznaj się z oficjalnymi notatkami wydania Debiana dla wybranej wersji.

Podsumowanie

Błędy 404 podczas apt-get upgrade wynikają z przestarzałych adresów URL repozytoriów w konfiguracji źródeł. Rozpoznanie wersji Debiana, aktualizacja listy źródeł w celu wskazania odpowiednich repozytoriów oraz dostosowanie ustawień weryfikacji może przywrócić funkcjonalność zarządzania pakietami.

Ponieważ korzystanie z nieobsługiwanych wersji niesie ze sobą zagrożenia bezpieczeństwa, zaleca się planowanie aktualizacji do bieżącej wersji Debiana jako długoterminowego rozwiązania.