Mit tegyünk, ha régebbi Debian rendszerünkön a csomagtár frissítésekor a "nyilvános kulcs nem érhető el" (NO_PUBKEY) hibaüzenetet kapjuk

botond küldte be 2021. 11. 04., cs – 15:15 időpontban

Tartalom

 

Bevezető

Amikor egy Linux disztribúció nem a legfrissebb változatát használjuk, előjöhetnek furcsaságok. Nálam például egy későbbi leírás előkészítéséhez előszedett Debian 9 (Stretch) virtuális gép okozott érdekességet a csomagtárának frissítésekor, de a hiba szerencsére roppant egyszerűen orvosolható volt.

 

 

A hibajelenség

Debian 9 (Stretch) backports csomagtárának frissítésekor hibaüzenetet kapunk:

sudo apt-get update

Csomagtár frissítési hiba Debian 9 (Stretch) rendszeren

Azt írja hogy "Az alábbi aláírások nem ellenőrizhetők, mert a nyilvános kulcs nem érhető el: NO_PUBKEY xxxxxxx".

Ilyesmi akkor fordulhat elő, ha rendszerünket már nagyon nagyon rég frissítettük, így sok csomag elavult benne. Így jártam én is a már körülbelül több mint egy éve nem használt Debian 9 virtuális gépemmel, amikor előszedtem, hogy egy későbbi leírás céljából naprakész állapotba rakjam -  már amennyire naprakész állapotba lehet tenni egy Debian 9-et.

Ez a kellemetlenség szerencsére roppant egyszerűen elhárítható.

 

A megoldás

Utánanézve a legtöbb helyen a kulcsszerver beállítgatását, illetve a megfelelően friss GPG kulcsok telepítését ajánlgatják, de ennél egyszerűbben is orvosolhatjuk a problémát, amennyiben nem harmadik féltől származó csomagtárról van szó, hanem például a Debian backports tárolójáról.

A Debian 9 esetében, amikor annak idején a disztribúció átkerült az oldstable állapotba, és a helyére a Debian 10 (Buster) került, mint stabil változat, akkor a Debian 9 csomagtára egy idő után átkerült az archív csomagtárba, amit csak a debian-archive-keyring csomaggal érhettünk el, mivel a megfelelő GPG kulcsokat ez a csomag tartalmazza. Így tehát ez a GPG kulcsokat tartalmazó csomag jó eséllyel a gépünkön van, viszont ez is elavult, ezért ezt újra kell telepítenünk az apt-get parancs segítségével:

sudo apt-get --reinstall install debian-archive-keyring

A debian-archive-keyring csomag újratelepítése Debian 9 rendszeren

Az APT csomagkezelő ekkor újratelepíti a debian-archive-keyring csomagot a Debian csomagtárából, ami már tartalmazza a friss GPG kulcsokat, valamint eltávolítja az elavult konfigurációs fájlokat, kulcsokat, stb.

Ezután ha újra kiadjuk az apt-get update parancsot, akkor az első alkalommal betölt és megjelenít mindent:

apt-get update működik

majd utána ha újra futtatjuk, akkor már a megszokott módon működik:

apt-get update a megszokott módon működik

Ezután már frissíthetjük is a csomagjainkat a megszokott módon:

sudo apt-get upgrade

 

 

A megoldás harmadik féltől származó csomagtárak esetén

A fenti megoldás csak a Debian saját csomagtárainak használata esetén működik, azonban ha harmadik féltől származó csomagtárakat használunk, akkor muszáj letöltenünk azoknak a saját GPG kulcsait. Lássunk egy példát.

Google Chrome

Például ha a Google Chrome böngészőnk csomagtárának a kulcsa vált érvénytelenné, akkor itt is az alábbi (NO_PUBKEY) hibát dobja egy Debian 9 esetén:

apt-get update hiba

Ekkor futtassuk az alábbi wget parancsot root-ként:

wget -qO - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

És a Google publikus kulcsa települ:

Google publikus kulcs telepítve

A parancssorban önállóan szereplő "-" jel a wget -O (output) opciójának paraméterként funkcionál, ami annyit tesz, hogy hogy a wget parancs által letöltött tartalom jelen esetben ne egy megadott fájlba kerüljön lementésre, hanem a szabványos kimenetre íródjon ki, hogy aztán csővezetéken át lehessen adni további parancsoknak.

Ezután már működik rendesen a csomagtáraink frissítése is:

Csomagtárak frissítése rendben

Opera

Opera esetén például a kulcsot az alábbi paranccsal tölthetjük le:

wget -qO - https://deb.opera.com/archive.key | sudo apt-key add -

 

Időnként azonban előfordulhat, hogy a fenti wget parancsok nem tudják letölteni megfelelően a kulcsokat a Chrome vagy egyéb szoftver csomagtárból. Ilyenkor a hiba továbbra is megmarad a következő csomagtár frissítésekor is. Ha Ilyen fordul elő, akkor érdemes közvetlenül az Ubuntu kulcsszerveréről letölteni a kulcsot az alábbi paranccsal:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <azonosító>

Ahol az <azonosító> helyére helyettesítsük be a saját hibakimenetünkben található "NO_PUBKEY" utáni hexadecimális azonosítót.

 

 

Konklúzió

A disztribúciók illetve verzióik jönnek, mennek, a régiek helyére újabbak lépnek, így időnként szükséges lehet a régebbi rendszerek használata esetén külön megoldásokra, hogy aztán rendesen működhessenek tovább.

 

Kapcsolódó tartalom, hasznos linkek: