Varför apt-cache visar installerat (inget) för ditt VPN-paket
Installerat (inget) betyder att VPN-paketet inte är installerat, inte att det saknas. Läs raderna för kandidat, pinning och arkitektur innan du redigerar källor.
Ett VPN-paket som rapporterar Installed: (none) saknas inte; det är helt enkelt inte installerat. Raden som avgör om du kan installera det är Candidate, som APT härleder från indexen, suite-namnet, arkitekturen och eventuella gällande pin-regler. De flesta rapporter om ett försvunnet VPN-paket visar sig vara ett kandidatproblem och inte ett paketeringsproblem. Läs båda raderna innan du rör en enda källpost.
Jag kontrollerar kandidaten först eftersom det kostar ett kommando och utesluter hälften av de vanliga gissningarna.
Vad utmatningen från apt-cache policy säger dig
apt-cache policy läser den lokala paketcachen, inte nätverket. Den skriver ut den installerade versionen, kandidatversionen och en tabell över varje index som erbjuder paketet, med prioriteten som hör till.
apt-cache policy openvpn
apt-cache madison openvpn
apt list -a network-manager-openvpnKandidaten är den version APT skulle välja just nu. madison listar vad varje källa erbjuder med sin prioritet, och det är så du upptäcker ett paket som finns i ett index men förlorar pin-tävlingen. apt-cache-handboken dokumenterar båda som cacheläsningar, så ingen av dem bevisar att spegeln är nåbar just nu.
Om kandidatraden är tom eller visar (none), är inget i de konfigurerade källorna kvalificerat för det här systemet som det är konfigurerat.
Fyra orsaker till att en kandidat försvinner
I praktiken är orsaken nästan alltid en av fyra saker, och var och en har en annan lösning.
Suite-namnet i dina källor måste stämma med den distribution paketet byggdes för. Ett Debian bookworm-system riktat mot en trixie-spegel, eller en Ubuntu-utgåva som döptes om i en sources.list.d-fil under en uppgradering, löser inget för paket som bara finns i den andra suiten. Jämför lsb_release -cs med suite-fältet i varje post.
APT ser bara paket byggda för de arkitekturer som dpkg känner till. En 32-bitars container, en arm64-avbildning eller en Raspberry Pi-installation som begär ett paket som bara levereras för amd64 får en tom kandidat i stället för ett felmeddelande. dpkg --print-architecture och dpkg --print-foreign-architectures berättar vilken uppsättning du faktiskt är i.
Komponenter spelar också roll. Ett paket i contrib eller non-free är osynligt när bara main är aktiverat, och Ubuntus universe beter sig likadant. Indexet finns och paketet ligger i det; din lista över aktiverade komponenter innehåller det bara inte.
Pinning är den tysta. En fil i /etc/apt/preferences.d kan begränsa ett paket under installationströskeln, och då försvinner en helt bra kandidat från utmatningen medan indexet fortfarande listar det. Eftersom policy skriver ut prioriteterna bredvid varje källa, är ett paket där varje källa bär ett lågt pin-nummer ledtråden.
Inaktuella index ser ut som saknade paket
Cachen är en ögonblicksbild. Om den senaste apt update misslyckades på ett index fortsätter frågor att besvaras från den äldre kopian, och paketet du förväntar dig finns kanske inte i den kopian.
apt update skriver ut fel per index, så läs dem i stället för att rulla direkt till sista raden.
En uppdatering som misslyckas på grund av ett signaturfel, en utgången release-fil eller en onåbar spegel lämnar det föregående indexet kvar. Det är en förnuftig konstruktion, eftersom den behåller en fungerande cache när en spegel är nere en kort stund. Bieffekten är att en sökning kan lyckas medan förrådet är offline. Det betyder också att frånvaron av ett paket inte bevisar något förrän du vet när indexet senast hämtades. Kontrollera fildatumen under /var/lib/apt/lists innan du skyller på paketnamnet.
Namnge paketet du faktiskt behöver
OpenVPN är en daemon, och delarna folk vanligtvis vill ha är separata paket.
Motorn, NetworkManager-insticksmodulen och skrivbordsredigeraren är tre paket med tre namn, och insticksmodulen har en GTK-variant vars namn skiljer sig mellan distributioner. apt-cache search --names-only openvpn matchar namn och tillhandahållna namn i stället för beskrivningar, och det är vad du vill när du ungefär vet vad saken heter.
Om namnet verkligen är okänt, sök i beskrivningarna en gång och gå sedan tillbaka till exakta namn. Lägg inte till ett -gui-suffix lånat från en annan distribution och dra slutsatsen att paketet inte finns längre.
Ändra källor sist och verifiera sedan transaktionen
Att lägga till ett förråd ändrar vem som levererar dina uppdateringar, så det hör till slutet av undersökningen, inte början.
Innan dess, bekräfta utgåva, arkitektur, komponent och pin-status. Skriv ned vilka av de fyra du kontrollerade, så att nästa person inte upprepar genomgången. Om alla fyra stämmer och kandidaten fortfarande saknas, är den ärliga slutsatsen att den här utgåvan inte levererar det paketet. De återstående alternativen är en backport, ett leverantörspaket eller en annan stödd utgåva, och var och ett av dem är ett medvetet val och inte en gissning.
När kandidaten väl dyker upp, simulera innan du bekräftar: apt-get install --simulate med paketnamnet visar vad som skulle dras in och vad som skulle tas bort. Pakettillgänglighet, installation och en fungerande tunnel är fortfarande tre separata steg, och tunneln behöver fortfarande sin profil, sina inloggningsuppgifter, sina rutter och DNS innan den bär trafik.