Prędzej czy później apt update na Twoim VPS Linux Infrawire zakończy się ścianą czerwonego tekstu: brakującym kluczem GPG, repozytorium, które już nie istnieje, albo blokadą, która nie znika. Każdy błąd ma jasną przyczynę i krótkie rozwiązanie.
Poradnik omawia najczęstsze problemy w Ubuntu 24.04 i Debianie 12, od najmniej do najbardziej inwazyjnych poprawek.
📋 Wymagania
- VPS z Ubuntu 24.04 lub Debianem 12
- Dostęp SSH jako root (IP i hasło roota znajdziesz w panelu klienta)
- Podstawowa znajomość wiersza poleceń
1. Najpierw znajdź źródła
Zanim cokolwiek naprawisz, sprawdź, gdzie zdefiniowane są repozytoria:
Bashcat /etc/os-release cat /etc/apt/sources.list ls -l /etc/apt/sources.list.d/ apt update 2>&1 | grep -E '^(Err|W:|E:)'
W Ubuntu 24.04 główne repozytoria znajdują się w /etc/apt/sources.list.d/ubuntu.sources w formacie deb822 (pliki .sources). Debian 12 nadal używa klasycznego formatu jednowierszowego w /etc/apt/sources.list, a oba formaty działają obok siebie.
Bash# Przykład wpisu deb822 (Ubuntu 24.04) Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
2. Błędy blokady i przerwany dpkg
Komunikat Could not get lock /var/lib/dpkg/lock-frontend oznacza, że apt używa inny proces, najczęściej unattended-upgrades tuż po starcie. Sprawdź to, zanim cokolwiek zrobisz:
Bashps aux | grep -E 'apt|dpkg|unattended' | grep -v grep lsof /var/lib/dpkg/lock-frontend
Jeśli proces działa, poczekaj kilka minut. Plik blokady usuwaj tylko wtedy, gdy nic go nie trzyma (ryzykowne, jeśli się mylisz), a potem napraw przerwany stan:
Bashrm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock /var/cache/apt/archives/lock dpkg --configure -a apt --fix-broken install
Komunikat dpkg was interrupted, you must manually run 'dpkg --configure -a' rozwiązuje właśnie pierwsze z tych poleceń.
3. NO_PUBKEY i brakujące klucze GPG
Błąd The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABCD1234 oznacza, że repozytorium zewnętrzne nie ma zaufanego klucza. Nie używaj przestarzałego apt-key: umieść klucz w /etc/apt/keyrings/ i wskaż go przez signed-by.
Bashinstall -d -m 0755 /etc/apt/keyrings curl -fsSL https://example.com/repo/key.gpg | gpg --dearmor -o /etc/apt/keyrings/example.gpg chmod 644 /etc/apt/keyrings/example.gpg echo 'deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/repo stable main' > /etc/apt/sources.list.d/example.list apt update
Użyj adresu klucza z oficjalnej dokumentacji oprogramowania i w razie braku najpierw zainstaluj curl gnupg. Jeśli błąd dotyczy samego archiwum Ubuntu lub Debiana, zainstaluj ponownie pakiet z kluczami: apt install --reinstall ubuntu-keyring lub debian-archive-keyring.
4. Uszkodzone repozytoria zewnętrzne
Błąd 404 Not Found lub does not have a Release file przy PPA albo repozytorium producenta zwykle oznacza, że nie wspiera już Twojej wersji. Wyłącz je zamiast usuwać:
Bash# Klasyczny plik .list: zmień nazwę mv /etc/apt/sources.list.d/broken.list /etc/apt/sources.list.d/broken.list.disabled # Plik .sources w deb822: dodaj tę linię wewnątrz bloku Enabled: no
Uruchom ponownie apt update. Błąd zniknie, a zainstalowane już pakiety nadal będą działać.
5. Błędy zegara: Release file not valid yet
Release file for ... is not valid yet (invalid for another 3h 12min) oznacza, że zegar systemowy spóźnia się względem znacznika czasu repozytorium. Sprawdź i zsynchronizuj ponownie:
Bashtimedatectl timedatectl set-ntp true systemctl restart systemd-timesyncd
Jeśli systemd-timesyncd nie jest zainstalowany (niektóre minimalne obrazy Debiana), użyj apt install -y chrony.
6. Wersje po zakończeniu wsparcia (EOL)
Gdy wersja kończy wsparcie, jej pakiety są przenoszone, a apt update zwraca 404 lub no longer has a Release file. Dla wersji Ubuntu innej niż LTS wskaż źródła na archiwum starych wydań:
Bashsed -i 's|http://archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g; s|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list /etc/apt/sources.list.d/*.sources 2>/dev/null apt update
Dla starego Debiana użyj http://archive.debian.org/debian i usuń linię security. Traktuj system EOL jako rozwiązanie tymczasowe: nie dostaje już poprawek bezpieczeństwa, więc zaplanuj aktualizację do wspieranej wersji.
7. Weryfikacja
Bashapt update apt upgrade --dry-run apt-get check
apt update musi zakończyć się bez linii Err i E:, a apt-get check nie powinien nic wypisać.
🛠️ Rozwiązywanie problemów
Blokada wraca przy każdej próbie: prawdopodobnie działa unattended-upgrades. Sprawdź systemctl status unattended-upgrades i poczekaj na koniec.
Conflicting values set for option Signed-By: to samo repozytorium jest zadeklarowane dwa razy z różnymi kluczami. Znajdź je przez grep -r example.com /etc/apt/ i zostaw jeden wpis.
apt --fix-broken install kończy się błędem skryptu pakietu: przeczytaj ostatnie linie błędu, a potem spróbuj dpkg --remove --force-remove-reinstreq PACKAGE i zwykłej ponownej instalacji.
✅ Menedżer pakietów znów jest zdrowy: aktualizacje i instalacje działają bez błędów!