Dlaczego apt-cache pokazuje zainstalowano (brak) dla Twojego pakietu VPN
Zainstalowano (brak) oznacza, że pakiet VPN nie jest zainstalowany, a nie że go brakuje. Przeczytaj wiersze kandydata, przypięcia i architektury, zanim edytujesz źródła.
Pakiet VPN, który zgłasza Installed: (none), nie zniknął; po prostu nie jest zainstalowany. Wiersz, który decyduje, czy możesz go zainstalować, to Candidate, który APT wyprowadza z indeksów, nazwy suite, architektury i wszelkich obowiązujących reguł przypinania. Większość zgłoszeń o znikniętym pakiecie VPN okazuje się problemem kandydata, a nie problemem pakowania. Przeczytaj oba wiersze, zanim dotkniesz choćby jednego wpisu źródeł.
Najpierw sprawdzam kandydata, bo to kosztuje jedno polecenie i wyklucza połowę zwykłych domysłów.
Co mówi ci wynik apt-cache policy
apt-cache policy czyta lokalny cache pakietów, a nie sieć. Wypisuje zainstalowaną wersję, wersję kandydata oraz tabelę każdego indeksu, który oferuje pakiet, wraz z przypisanym mu priorytetem.
apt-cache policy openvpn
apt-cache madison openvpn
apt list -a network-manager-openvpnKandydat to wersja, którą APT wybrałby teraz. madison wymienia, co oferuje każde źródło wraz z priorytetem, i tak zauważasz pakiet, który istnieje w indeksie, ale przegrywa konkurencję przypięcia. Podręcznik apt-cache opisuje oba jako odczyty cache, więc żaden z nich nie dowodzi, że serwer lustrzany jest w tej chwili osiągalny.
Jeśli wiersz kandydata jest pusty lub pokazuje (none), nic w skonfigurowanych źródłach nie kwalifikuje się dla tego systemu w takiej postaci, w jakiej jest skonfigurowany.
Cztery powody, dla których kandydat znika
W praktyce przyczyna jest prawie zawsze jedną z czterech rzeczy, a każda ma inne rozwiązanie.
Nazwa suite w twoich źródłach musi odpowiadać dystrybucji, dla której zbudowano pakiet. System Debian bookworm wskazujący na serwer lustrzany trixie albo wydanie Ubuntu przemianowane w pliku sources.list.d podczas aktualizacji nie rozwiązuje niczego dla pakietów istniejących tylko w drugim suite. Porównaj lsb_release -cs z polem suite w każdym wpisie.
APT widzi tylko pakiety zbudowane dla architektur, które zna dpkg. Kontener 32-bitowy, obraz arm64 albo instalacja na Raspberry Pi żądająca pakietu dostarczanego wyłącznie dla amd64 otrzymuje pustego kandydata zamiast komunikatu o błędzie. dpkg --print-architecture i dpkg --print-foreign-architectures powiedzą ci, w którym zbiorze naprawdę jesteś.
Komponenty też mają znaczenie. Pakiet w contrib lub non-free jest niewidoczny, gdy włączony jest tylko main, a universe w Ubuntu zachowuje się tak samo. Indeks istnieje i pakiet w nim jest; po prostu twoja lista włączonych komponentów go nie obejmuje.
Przypinanie jest tym cichym. Plik w /etc/apt/preferences.d może ograniczyć pakiet poniżej progu instalacji, a wtedy całkiem dobry kandydat znika z wyniku, podczas gdy indeks nadal go wymienia. Ponieważ policy wypisuje priorytety obok każdego źródła, pakiet, którego każde źródło ma niski numer przypięcia, jest wskazówką.
Nieaktualne indeksy wyglądają jak brakujące pakiety
Cache to migawka. Jeśli ostatnie apt update nie powiodło się na jednym indeksie, zapytania nadal odpowiadają ze starszej kopii, a pakietu, którego oczekujesz, może w niej nie być.
apt update wypisuje błędy dla każdego indeksu, więc je czytaj, zamiast od razu przewijać do ostatniego wiersza.
Odświeżenie, które kończy się niepowodzeniem z powodu błędu podpisu, wygasłego pliku release lub nieosiągalnego serwera lustrzanego, pozostawia poprzedni indeks na miejscu. To rozsądne rozwiązanie, bo zachowuje działający cache, gdy serwer jest chwilowo niedostępny. Skutkiem ubocznym jest to, że wyszukiwanie może się powieść, gdy repozytorium jest offline. Oznacza to też, że brak pakietu niczego nie dowodzi, dopóki nie wiesz, kiedy indeks został ostatnio pobrany. Sprawdź daty plików w /var/lib/apt/lists, zanim obwinisz nazwę pakietu.
Nazwij pakiet, którego naprawdę potrzebujesz
OpenVPN jest demonem, a części, których ludzie zwykle chcą, to osobne pakiety.
Silnik, wtyczka NetworkManager i edytor pulpitu to trzy pakiety o trzech nazwach, a wtyczka ma wariant GTK, którego nazwa różni się między dystrybucjami. apt-cache search --names-only openvpn dopasowuje nazwy i nazwy dostarczane zamiast opisów, i to jest to, czego chcesz, gdy mniej więcej wiesz, jak ta rzecz się nazywa.
Jeśli nazwa jest naprawdę nieznana, przeszukaj raz opisy, a potem wróć do dokładnych nazw. Nie dodawaj przyrostka -gui pożyczonego z innej dystrybucji i nie wnioskuj, że pakiet już nie istnieje.
Zmieniaj źródła na końcu, a potem zweryfikuj transakcję
Dodanie repozytorium zmienia to, kto dostarcza twoje aktualizacje, więc należy ono do końca dochodzenia, a nie do początku.
Wcześniej potwierdź wydanie, architekturę, komponent i stan przypięcia. Zapisz, które z czterech sprawdziłeś, żeby następna osoba nie powtarzała przeglądu. Jeśli wszystkie cztery są poprawne, a kandydata nadal brak, uczciwym wnioskiem jest to, że to wydanie nie dostarcza tego pakietu. Pozostałe opcje to backport, pakiet dostawcy lub inne obsługiwane wydanie, i każda z nich jest świadomym wyborem, a nie domysłem.
Gdy kandydat się pojawi, zasymuluj przed zatwierdzeniem: apt-get install --simulate z nazwą pakietu pokazuje, co zostałoby pobrane, a co usunięte. Dostępność pakietu, instalacja i działający tunel pozostają trzema osobnymi etapami, a tunel nadal potrzebuje swojego profilu, danych logowania, tras i DNS, zanim przeniesie ruch.