Een VPN-pakket dat Installed: (none) meldt, ontbreekt niet; het is simpelweg niet geïnstalleerd. De regel die bepaalt of u het kunt installeren is Candidate, die APT afleidt uit de indexen, de suite-naam, de architectuur en eventuele geldende pinning-regels. De meeste meldingen over een verdwenen VPN-pakket blijken een kandidaatprobleem en geen verpakkingsprobleem. Lees beide regels voordat u één bronvermelding aanraakt.

Ik controleer eerst de kandidaat omdat dat één opdracht kost en de helft van de gebruikelijke gissingen uitsluit.

Wat de uitvoer van apt-cache policy u vertelt

apt-cache policy leest de lokale pakketcache, niet het netwerk. Het toont de geïnstalleerde versie, de kandidaatversie en een tabel van elke index die het pakket aanbiedt, met de eraan gekoppelde prioriteit.

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

De kandidaat is de versie die APT nu zou kiezen. madison somt op wat elke bron met zijn prioriteit biedt, en zo herkent u een pakket dat in een index staat maar de pinning-wedstrijd verliest. De apt-cache-handleiding beschrijft beide als cache-lezingen, dus geen van beide bewijst dat de spiegel op dit moment bereikbaar is.

Als de kandidaatregel leeg is of (none) toont, is niets in de geconfigureerde bronnen geschikt voor dit systeem zoals het is geconfigureerd.

Vier redenen waarom een kandidaat verdwijnt

In de praktijk is de oorzaak bijna altijd een van vier dingen, en elk heeft een andere oplossing.

De suite-naam in uw bronnen moet overeenkomen met de distributie waarvoor het pakket is gebouwd. Een Debian bookworm-systeem dat naar een trixie-spiegel wijst, of een Ubuntu-versie die tijdens een upgrade in een sources.list.d-bestand is hernoemd, lost niets op voor pakketten die alleen in de andere suite bestaan. Vergelijk lsb_release -cs met het suite-veld in elke vermelding.

APT ziet alleen pakketten die zijn gebouwd voor de architecturen die dpkg kent. Een 32-bits container, een arm64-image of een Raspberry Pi-installatie die een pakket vraagt dat alleen voor amd64 wordt geleverd, krijgt een lege kandidaat in plaats van een foutmelding. dpkg --print-architecture en dpkg --print-foreign-architectures vertellen u in welke set u werkelijk zit.

Componenten tellen ook mee. Een pakket in contrib of non-free is onzichtbaar wanneer alleen main is ingeschakeld, en het universe van Ubuntu gedraagt zich hetzelfde. De index bestaat en het pakket staat erin; uw lijst met ingeschakelde componenten bevat het alleen niet.

Pinning is de stille. Een bestand in /etc/apt/preferences.d kan een pakket onder de installatiedrempel begrenzen, en dan verdwijnt een volstrekt goede kandidaat uit de uitvoer terwijl de index hem nog steeds vermeldt. Omdat policy de prioriteiten naast elke bron toont, is een pakket waarvan elke bron een laag pinnummer draagt de aanwijzing.

Verouderde indexen lijken op ontbrekende pakketten

De cache is een momentopname. Als de laatste apt update op één index is mislukt, blijven zoekopdrachten antwoorden uit de oudere kopie, en het pakket dat u verwacht staat misschien niet in die kopie.

apt update toont fouten per index, dus lees ze in plaats van meteen naar de laatste regel te scrollen.

Een verversing die mislukt door een handtekeningfout, een verlopen release-bestand of een onbereikbare spiegel laat de vorige index staan. Dat is een verstandig ontwerp, want het behoudt een werkende cache wanneer een spiegel kort uitvalt. Het neveneffect is dat een zoekopdracht kan slagen terwijl de repository offline is. Het betekent ook dat de afwezigheid van een pakket niets bewijst totdat u weet wanneer de index voor het laatst is opgehaald. Controleer de bestandsdatums onder /var/lib/apt/lists voordat u de pakketnaam de schuld geeft.

Noem het pakket dat u echt nodig hebt

OpenVPN is een daemon, en de onderdelen die mensen meestal willen zijn aparte pakketten.

De engine, de NetworkManager-plug-in en de bureaubladeditor zijn drie pakketten met drie namen, en de plug-in heeft een GTK-variant waarvan de naam per distributie verschilt. apt-cache search --names-only openvpn vergelijkt namen en geleverde namen in plaats van beschrijvingen, en dat is wat u wilt wanneer u ongeveer weet hoe het ding heet.

Als de naam echt onbekend is, zoek dan één keer in beschrijvingen en ga daarna terug naar exacte namen. Voeg geen -gui-achtervoegsel toe dat van een andere distributie is geleend en concludeer niet dat het pakket niet meer bestaat.

Wijzig bronnen als laatste en verifieer daarna de transactie

Een repository toevoegen verandert wie uw updates levert, dus dat hoort aan het einde van het onderzoek, niet aan het begin.

Bevestig daarvoor release, architectuur, component en pin-status. Noteer welke van de vier u hebt gecontroleerd, zodat de volgende persoon de ronde niet herhaalt. Als alle vier kloppen en de kandidaat nog steeds ontbreekt, is de eerlijke conclusie dat deze release dat pakket niet levert. De overgebleven opties zijn een backport, een leverancierspakket of een andere ondersteunde release, en elk daarvan is een bewuste keuze en geen gok.

Wanneer de kandidaat verschijnt, simuleer dan voordat u bevestigt: apt-get install --simulate met de pakketnaam toont wat er zou worden opgehaald en wat zou worden verwijderd. Pakketbeschikbaarheid, installatie en een werkende tunnel blijven drie afzonderlijke fasen, en de tunnel heeft nog steeds zijn profiel, inloggegevens, routes en DNS nodig voordat hij verkeer vervoert.

Gerelateerde artikelen