VPN balíček, který hlásí Installed: (none), nechybí; prostě není nainstalovaný. Řádek, který rozhoduje o tom, zda jej můžete nainstalovat, je Candidate, který APT odvozuje z indexů, názvu suite, architektury a případných platných pravidel pinningu. Většina hlášení o zmizelém VPN balíčku se ukáže jako problém kandidáta, nikoli problém balení. Přečtěte si oba řádky, než se dotknete jediného záznamu zdrojů.

Nejprve kontroluji kandidáta, protože to stojí jeden příkaz a vyloučí polovinu obvyklých dohadů.

Co vám výstup apt-cache policy říká

apt-cache policy čte místní mezipaměť balíčků, ne síť. Vypisuje nainstalovanou verzi, verzi kandidáta a tabulku každého indexu, který balíček nabízí, s přiřazenou prioritou.

apt-cache policy openvpn
apt-cache madison openvpn
apt list -a network-manager-openvpn

Kandidát je verze, kterou by APT právě teď vybral. madison vypisuje, co který zdroj nabízí, s jeho prioritou, a právě tak odhalíte balíček, který v indexu existuje, ale prohrává soutěž pinningu. Manuál apt-cache popisuje obojí jako čtení mezipaměti, takže ani jedno nedokazuje, že je zrcadlo v tuto chvíli dostupné.

Pokud je řádek kandidáta prázdný nebo uvádí (none), nic v nakonfigurovaných zdrojích není pro tento systém v jeho konfiguraci vhodné.

Čtyři důvody, proč kandidát zmizí

V praxi je příčinou téměř vždy jedna ze čtyř věcí a každá má jiné řešení.

Název suite ve vašich zdrojích musí odpovídat distribuci, pro kterou byl balíček sestaven. Systém Debian bookworm namířený na zrcadlo trixie nebo vydání Ubuntu, které bylo během upgradu přejmenováno v souboru sources.list.d, nevyřeší nic pro balíčky, které existují jen v druhém suite. Porovnejte lsb_release -cs s polem suite v každém záznamu.

APT vidí jen balíčky sestavené pro architektury, které dpkg zná. 32bitový kontejner, obraz arm64 nebo instalace na Raspberry Pi, která žádá balíček dodávaný pouze pro amd64, dostane prázdného kandidáta místo chybové zprávy. dpkg --print-architecture a dpkg --print-foreign-architectures vám řeknou, ve které sadě skutečně jste.

Na komponentách také záleží. Balíček v contrib nebo non-free je neviditelný, když je povolen jen main, a universe v Ubuntu se chová stejně. Index existuje a balíček v něm je; jen váš seznam povolených komponent ho nezahrnuje.

Pinning je ten tichý. Soubor v /etc/apt/preferences.d může omezit balíček pod instalační práh, a pak naprosto dobrý kandidát zmizí z výstupu, zatímco index ho stále uvádí. Protože policy vypisuje priority vedle každého zdroje, balíček, jehož každý zdroj nese nízké číslo pinningu, je vodítko.

Zastaralé indexy vypadají jako chybějící balíčky

Mezipaměť je snímek. Pokud poslední apt update selhal u jednoho indexu, dotazy dál odpovídají ze starší kopie a balíček, který očekáváte, v ní nemusí být.

apt update vypisuje chyby po jednotlivých indexech, takže je čtěte, místo abyste rovnou sjeli na poslední řádek.

Obnovení, které selže kvůli chybě podpisu, prošlému souboru release nebo nedostupnému zrcadlu, ponechá předchozí index na místě. Je to rozumný návrh, protože zachovává funkční mezipaměť, když zrcadlo krátce vypadne. Vedlejším účinkem je, že hledání může uspět, i když je repozitář offline. Znamená to také, že nepřítomnost balíčku nic nedokazuje, dokud nevíte, kdy byl index naposledy stažen. Zkontrolujte data souborů v /var/lib/apt/lists, než obviníte název balíčku.

Pojmenujte balíček, který skutečně potřebujete

OpenVPN je démon a části, které lidé obvykle chtějí, jsou samostatné balíčky.

Jádro, plugin pro NetworkManager a editor pro plochu jsou tři balíčky se třemi názvy a plugin má variantu GTK, jejíž název se mezi distribucemi liší. apt-cache search --names-only openvpn porovnává názvy a poskytnuté názvy místo popisů, což je přesně to, co chcete, když přibližně víte, jak se ta věc jmenuje.

Pokud je název skutečně neznámý, jednou prohledejte popisy a pak se vraťte k přesným názvům. Nepřidávejte příponu -gui vypůjčenou z jiné distribuce a neuzavírejte, že balíček už neexistuje.

Zdroje změňte nakonec a pak transakci ověřte

Přidání repozitáře mění, kdo dodává vaše aktualizace, takže patří na konec vyšetřování, ne na začátek.

Předtím potvrďte vydání, architekturu, komponentu a stav pinningu. Zapište, které ze čtyř jste zkontrolovali, aby další člověk neopakoval průchod. Pokud jsou všechny čtyři správně a kandidát stále chybí, poctivý závěr je, že toto vydání tento balíček nedodává. Zbývající možnosti jsou backport, balíček od dodavatele nebo jiné podporované vydání a každá z nich je vědomá volba, ne hádání.

Když se kandidát přece objeví, simulujte, než potvrdíte: apt-get install --simulate s názvem balíčku ukáže, co by se přitáhlo a co odstranilo. Dostupnost balíčku, instalace a funkční tunel zůstávají tři oddělené fáze a tunel stále potřebuje svůj profil, přihlašovací údaje, trasy a DNS, než ponese provoz.

Související články