apt ažuriranje ne uspijeva s NO_PUBKEY nakon dodavanja VPN repozitorija
NO_PUBKEY i nedostajuća datoteka Release su greške povjerenja, a ne mrežni kvarovi. Odlučite hoćete li prikvačiti ključ dobavljača pomoću signed-by ili ukloniti izvor.
apt izvor vašeg VPN dobavljača pokvario je vaš upravitelj paketa, a popravak je odluka, a ne naredba. NO_PUBKEY, ili pritužba da repozitorij nema datoteku Release, znači da je apt odbio vjerovati tom izvoru, pa svaka kasnija operacija s paketima nastavlja ispisivati isto upozorenje. Sam tunel vjerojatno je nedužan. Odgovorite na tri pitanja o tome želite li još uvijek taj izvor, i ispravan popravak slijedi gotovo mehanički.
Prvo, smjestite kvar u pravu kategoriju
Greška povjerenja imenuje datoteku izvora i ili ključ koji nedostaje ili odsutnu datoteku Release. Greška prijenosa izgleda drukčije: pogreške TLS certifikata, odbijena veza, isteci vremena ili proxy koji odbija CONNECT. Ta razlika odlučuje koji članak čitate, jer VPN koji presreće TLS ili blokira host dobavljača proizvodi greške prijenosa, a ne greške potpisa.
Pokrenite sudo apt update samostalno i pročitajte kraj, zanemarujući keširane pogotke iznad. Redak koji je važan imenuje /etc/apt/sources.list.d/ i govori vam koju datoteku otvoriti.
Ako se kvar pojavljuje nakon podizanja tunela, testirajte s isključenim tunelom i s DNS-om koji razrješava sistemski resolver. Izvor koji radi bez VPN-a pitanje je usmjeravanja ili presretanja, i nikakvo upravljanje ključevima to neće popraviti.
Tri pitanja koja biraju put
Instalirate li još uvijek ili nadograđujete pakete iz ovog izvora? Ako je klijent u aktivnoj uporabi, popravite povjerenje. Ako ste klijent instalirali jednom i sada uvozite običan profil u NetworkManager, izvor je mrtav teret i uklanjanje je iskren popravak.
Drugo, objavljuje li dobavljač ključ i otisak koji možete provjeriti izvan kanala? Treće, tko upravlja ključevima na ovom hostu: distribucija ili vi? Izvor potpisan ključem koji ne možete provjeriti jest ovlast za ažuriranje koju ne biste trebali dati.
Odgovor ne na prvo pitanje završava analizu. Odgovor da na sve tri točke upućuje na popravak pomoću signed-by, jedini raspored koji i radi i ostaje revidiran. Miješanje dvaju putova, zadržavanjem izvora i nasilnim proguravanjem, jedina je opcija koju vrijedi izrijekom isključiti.
Zašto trusted=yes izgleda kao popravak, a nije
Stranica priručnika za sources.list izravna je o tome. Postavljanje opcije Trusted na yes govori apt-u da prihvati izvor čak i kad ne prođe autentifikaciju, što isključuje apt-secure za taj repozitorij. Stranica to zadržava za lokalni kontekst, ako se uopće koristi.
To nije uža inačica povjerenja u dobavljača. Time se uklanja pitanje tko je potpisao indeks, pa svatko tko može odgovoriti za to ime hosta može vašem stroju dati pakete koji se instaliraju kao root.
Put popravka: nabavite ključ, zatim ga prikvačite
Nabavite ključ s mjesta koje dobavljač dokumentira i raspakirajte ga u privjesak ključeva kojim upravlja administrator, zatim usmjerite redak repozitorija na tu datoteku kako povjerenje ne bi moglo odlutati.
- Pročitajte redak koji ne uspijeva da biste dobili ID ključa i naziv datoteke izvora.
- Preuzmite dobavljačev ASCII-oklopljeni ključ i pokrenite
gpg --dearmoru/etc/apt/keyrings/vendor-name.gpg. - Dodajte
[signed-by=/etc/apt/keyrings/vendor-name.gpg]unosu u datoteci.listtog dobavljača. - Pokrenite
sudo apt updatei potvrdite da izvor dohvaća indeks umjesto da ponavlja upozorenje o potpisu.
Prednost dajte /usr/share/keyrings za ključeve koji dolaze s paketom i /etc/apt/keyrings za ključeve koje postavljate ručno. Ta podjela nije kozmetička: govori sljedećem administratoru koji će ključevi preživjeti nadogradnju paketa, a koji trebaju čovjeka.
Provjerite otisak prema dobavljačevoj objavljenoj vrijednosti prije nego mu povjerujete. ID ključa zalijepljen s foruma način je na koji stroj počne vjerovati ovlasti za ažuriranje koju nitko ne može imenovati.
Put uklanjanja i zašto se greška može vratiti
Pogledajte što je instalater stvarno zapisao, jer nekoliko datoteka može spominjati istog dobavljača i jedna je od njih obično zaostala kopija.
grep -r . /etc/apt/sources.list.d/
sudo rm /etc/apt/sources.list.d/vendor.listapt čita samo datoteke .list i .sources iz tog direktorija, pa se kopija .save ili .distUpgrade već zanemaruje; brisanje ipak sprječava kasnijeg čitatelja da je slučajno vrati. Uklanjanje izvora ne deinstalira ništa, a apt tada može opisati instalirani VPN paket kao lokalno instaliran ili više nedostupan, što je poruka o stanju paketa, a ne povratak greške povjerenja.
Ponavljajući slučaj su starije upute koje su instalirale ključeve pomoću apt-key u globalni prsten povjerenja. Taj je put zastario, a nadogradnja izdanja može ostaviti ključ ispuštenim ili jednostavno nekonzultiranim, i upravo zato se greška koja je godinu dana bila tiha pojavljuje u tjednu vaše nadogradnje. Provjerite /etc/apt/trusted.gpg.d/, zatim premjestite odluku o povjerenju u redak repozitorija gdje joj je mjesto. Ako dobavljač još ispisuje upute za apt-key, ipak upotrijebite signed-by; to je raspored koji priručnik dokumentira i onaj koji preživljava nadogradnju.