En VPN-pakke som rapporterer Installed: (none) mangler ikke; den er rett og slett ikke installert. Linjen som avgjør om du kan installere den, er Candidate, som APT utleder fra indeksene, suite-navnet, arkitekturen og eventuelle pin-regler som gjelder. De fleste rapportene om en forsvunnet VPN-pakke viser seg å være et kandidatproblem og ikke et pakkeproblem. Les begge linjene før du rører en eneste kildeoppføring.

Jeg sjekker kandidaten først fordi det koster én kommando og utelukker halvparten av de vanlige gjetningene.

Hva policy-utskriften forteller deg

apt-cache policy leser den lokale pakkebufferen, ikke nettverket. Den skriver ut den installerte versjonen, kandidatversjonen og en tabell over hver indeks som tilbyr pakken, med prioriteten som er knyttet til den.

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

Kandidaten er versjonen APT ville valgt akkurat nå. madison lister opp hva hver kilde tilbyr med sin prioritet, og det er slik du oppdager en pakke som finnes i en indeks, men taper pin-konkurransen. apt-cache-håndboken dokumenterer begge som bufferlesninger, så ingen av dem beviser at speilet er tilgjengelig akkurat nå.

Hvis kandidatlinjen er tom eller viser (none), er ingenting i de konfigurerte kildene kvalifisert for dette systemet slik det er konfigurert.

Fire grunner til at en kandidat forsvinner

I praksis er årsaken nesten alltid én av fire ting, og hver har en annen løsning.

Suite-navnet i kildene dine må samsvare med distribusjonen pakken ble bygget for. Et Debian bookworm-system pekt mot et trixie-speil, eller en Ubuntu-utgave som ble omdøpt i en sources.list.d-fil under en oppgradering, løser ingenting for pakker som bare finnes i den andre suiten. Sammenlign lsb_release -cs med suite-feltet i hver oppføring.

APT ser bare pakker bygget for arkitekturene dpkg kjenner. En 32-bits container, et arm64-avtrykk eller en Raspberry Pi-installasjon som ber om en pakke som bare leveres for amd64, får en tom kandidat i stedet for en feilmelding. dpkg --print-architecture og dpkg --print-foreign-architectures forteller deg hvilket sett du faktisk er i.

Komponenter betyr også noe. En pakke i contrib eller non-free er usynlig når bare main er aktivert, og Ubuntus universe oppfører seg på samme måte. Indeksen finnes, og pakken er i den; listen din over aktiverte komponenter inneholder den bare ikke.

Pinning er den stille. En fil i /etc/apt/preferences.d kan begrense en pakke under installasjonsterskelen, og da forsvinner en helt grei kandidat fra utskriften mens indeksen fortsatt viser den. Fordi policy skriver ut prioritetene ved siden av hver kilde, er en pakke der hver kilde har et lavt pin-nummer det avslørende tegnet.

Utdaterte indekser ser ut som manglende pakker

Bufferen er et øyeblikksbilde. Hvis den siste apt update feilet på én indeks, fortsetter forespørsler å svare fra den eldre kopien, og pakken du forventer er kanskje ikke i den kopien.

apt update skriver ut feil per indeks, så les dem i stedet for å rulle rett til den siste linjen.

En oppdatering som feiler på en signaturfeil, en utløpt release-fil eller et utilgjengelig speil, lar den forrige indeksen stå. Det er en fornuftig konstruksjon, fordi den beholder en fungerende buffer når et speil er kort nede. Bivirkningen er at et søk kan lykkes mens depotet er frakoblet. Det betyr også at fraværet av en pakke ikke beviser noe før du vet når indeksen sist ble hentet. Sjekk fildatoene under /var/lib/apt/lists før du skylder på pakkenavnet.

Navngi pakken du faktisk trenger

OpenVPN er en daemon, og delene folk vanligvis vil ha, er separate pakker.

Motoren, NetworkManager-pluginen og skrivebordseditoren er tre pakker med tre navn, og pluginen har en GTK-variant der navnet varierer mellom distribusjoner. apt-cache search --names-only openvpn matcher navn og oppgitte navn i stedet for beskrivelser, og det er det du vil når du omtrent vet hva tingen heter.

Hvis navnet virkelig er ukjent, søk i beskrivelser én gang, og gå deretter tilbake til eksakte navn. Ikke legg til et -gui-suffiks lånt fra en annen distribusjon og konkluder med at pakken ikke finnes lenger.

Endre kilder sist, og verifiser deretter transaksjonen

Å legge til et depot endrer hvem som leverer oppdateringene dine, så det hører hjemme på slutten av undersøkelsen, ikke i begynnelsen.

Før det, bekreft utgave, arkitektur, komponent og pin-status. Skriv ned hvilke av de fire du sjekket, slik at neste person ikke gjentar gjennomgangen. Hvis alle fire er riktige og kandidaten fortsatt mangler, er den ærlige konklusjonen at denne utgaven ikke leverer den pakken. De gjenværende mulighetene er en backport, en leverandørpakke eller en annen støttet utgave, og hver av dem er et bevisst valg og ikke en gjetning.

Når kandidaten dukker opp, simuler før du bekrefter: apt-get install --simulate med pakkenavnet viser hva som ville blitt trukket inn og hva som ville blitt fjernet. Pakketilgjengelighet, installasjon og en fungerende tunnel er fortsatt tre separate trinn, og tunnelen trenger fortsatt profilen sin, påloggingsinformasjonen, rutene og DNS før den bærer trafikk.

Relaterte artikler