Saltar al contenido
LINWIND de Windows a Linux

~/linux

Solucionar el error GPG NO_PUBKEY en Ubuntu y Debian

Linwind · · 4 min

El error NO_PUBKEY de Ubuntu (The following signatures couldn’t be verified because the public key is not available) quiere decir que apt no tiene la clave pública con la que está firmado uno de tus repositorios, así que no puede comprobar que lo que descarga de él es auténtico. Se soluciona en dos pasos: localizar qué repositorio da el error y volver a instalar su clave. Si es un PPA, basta con añadirlo otra vez con add-apt-repository. Si es el repositorio de otro proveedor, se descarga su clave de la web oficial a /etc/apt/keyrings y se indica en el repositorio con la opción Signed-By. apt-key, que era la solución de siempre, está obsoleto.

Localizar el repositorio que falla

Ejecuta sudo apt update y lee la línea del error. Junto al código de la clave que falta aparece la dirección del repositorio. Con un PPA se vería parecido a esto (ejemplo con nombres inventados y el sistema en inglés, en español el texto sale traducido):

W: GPG error: https://ppa.launchpadcontent.net/usuario/nombre/ubuntu noble InRelease:
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1234ABCD5678EF90

Con esa dirección, busca en qué fichero está configurado:

grep -rl "launchpadcontent.net/usuario" /etc/apt/sources.list /etc/apt/sources.list.d/

Los repositorios añadidos viven en /etc/apt/sources.list.d/, en ficheros .list (formato de una línea, el de Ubuntu 22.04 y anteriores) o .sources (formato deb822, el habitual desde Ubuntu 24.04). Los oficiales de Ubuntu están en /etc/apt/sources.list.d/ubuntu.sources, según el manual de sources.list. Para ver solo los activos también sirve add-apt-repository -L.

Si el repositorio es un PPA

Vuelve a añadirlo y actualiza:

sudo add-apt-repository ppa:usuario/nombre
sudo apt update

Según la página de manual de add-apt-repository, al añadir un PPA se descarga también su clave GPG. Si quieres comprobar que es la buena, la página del PPA en Launchpad muestra la huella (fingerprint) de su clave de firma.

Si es el repositorio de otro proveedor

La clave tiene que salir de la web oficial del proveedor, por HTTPS. La página de manual de apt-key indica que, desde APT 2.4, el sitio recomendado para las claves que no gestiona un paquete es /etc/apt/keyrings, y la guía de Debian para repositorios de terceros lo confirma. En versiones anteriores a Debian 12 y Ubuntu 22.04 esa carpeta no existe y hay que crearla con permisos 0755.

Con un ejemplo inventado, proveedor.example, el proceso sería este. Primero, descargar la clave:

sudo install -d -m 0755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/proveedor.asc https://proveedor.example/ubuntu/clave.asc

Después, decirle al repositorio que use esa clave con Signed-By. En el formato deb822, el fichero /etc/apt/sources.list.d/proveedor.sources quedaría así:

Types: deb
URIs: https://proveedor.example/ubuntu
Suites: noble
Components: main
Signed-By: /etc/apt/keyrings/proveedor.asc

Si el repositorio usa el formato de una línea (.list), la opción va entre corchetes. La documentación de Ubuntu Server indica que ese formato, en Ubuntu 22.04 y anteriores, solo admite la clave en binario, así que conviene convertirla con gpg --dearmor:

curl -fsSL https://proveedor.example/ubuntu/clave.asc | sudo gpg --dearmor -o /etc/apt/keyrings/proveedor.gpg
deb [signed-by=/etc/apt/keyrings/proveedor.gpg] https://proveedor.example/ubuntu noble main

Termina con sudo apt update. El fichero de la clave tiene que poder leerlo el usuario del sistema _apt, así que deja permisos de lectura para todos. La ventaja de Signed-By frente al método antiguo es que esa clave solo vale para ese repositorio y no para todos los que tengas configurados.

Lo que no conviene hacer

apt-key add está obsoleto, lo dice su propia página de manual, que explica cómo sustituirlo por Signed-By. La guía de Debian pide expresamente no dejar las claves en /etc/apt/trusted.gpg.d ni cargarlas con apt-key add, porque así el sistema aceptaría firmas de ese tercero en cualquier repositorio que no tenga Signed-By, incluidos los oficiales.

Tampoco marques el repositorio con [trusted=yes] para que el aviso desaparezca. El manual de sources.list explica que esa opción salta parte de las comprobaciones de seguridad de apt y que solo tiene sentido en un entorno local y de confianza. Y nada de scripts de foros que prometen arreglar todas las claves de golpe, como los que circulaban en 2009 para los PPA, porque ejecutas como administrador un código que no has revisado.

Si ya no usas ese repositorio

Si el error viene de un PPA o un repositorio que ya no usas, lo más limpio es quitarlo. Un PPA se elimina con sudo add-apt-repository -r ppa:usuario/nombre. En un fichero .sources puedes desactivarlo sin borrarlo añadiendo la línea Enabled: no, y si quieres quitarlo del todo, la documentación de Ubuntu Server indica borrar su fichero de /etc/apt/sources.list.d/ y, si no lo gestiona un paquete, también su clave.

Revisado y actualizado en octubre de 2026.

# sigue leyendo

4 comentarios

  1. Hola a todos,

    a ver si alguien me puede ayudar, porque llevo ya más de 30 días sin poder actualizar mi sistema.

    He probado con todos los métodos que circulan por internet para imporatar las claves esas, parece que funciona salvo en dos casos en que el problema parece ser, simplemente, que no ocurre la descarga. Aquí mis intentos y las respuestas.

    PUBKEY=437D05B5
    gpg –keyserver subkeys.pgp.net –recv-key $PUBKEY

    RESPUESTAS
    gpg: solicitando clave 437D05B5 de hkp servidor subkeys.pgp.net
    gpg: error del servidor de claves
    gpg: recepción del servidor de claves fallida: Error del servidor de claves

    La primera linea permanece sola un rato en pantalla, luego aparecen las otras dos. Ignoro el fallo y escribo la tercera linea:
    gpg -a –export $PUBKEY | sudo apt-key add –

    RESPUESTA
    OK

    Pero luego no puedo hacer actualizar el sistema.

    Luego lo intento con la otra clave:
    PUBKEY=AF1CDFA9

    Y obtengo las mismas respuestas.

    Al final:
    sudo aptitude update

    RESPUESTAS
    …
    …
    …
    Obj http://es.archive.ubuntu.com jaunty-updates/multiverse Packages
    Obj http://es.archive.ubuntu.com jaunty-updates/multiverse Sources
    Descargados 497B en 1s (383B/s).
    Leyendo lista de paquetes… Hecho
    W: Ha ocurrido un error durante la verificación de la firma. El repositorio no se ha actualizado y se usarán los archivos de índice anteriores. Error de GPG: http://es.archive.ubuntu.com jaunty Release Las siguientes firms fueron inválidas: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key

    W: Ha ocurrido un error durante la verificación de la firma. El repositorio no se ha actualizado y se usarán los archivos de índice anteriores. Error de GPG: http://ppa.launchpad.net jaunty Release Las siguientes firms fueron inválidas: BADSIG 3B22AB97AF1CDFA9 Launchpad PPA for Ubuntu-X

    W: Tal vez quiera ejecutar ‘apt-get update’ para corregir estos problemas

    Después de una acercamiento progresivo e imparable entre los linux y yo, parecía que con la llegada de ubuntu todo iba a ser un camino de rosas, y así fue durante algunos meses, pero ahora que ya estoy dentro este problema acabar con el romance. 🙁

    HELP!

Deja un comentario

Tu correo no se publica.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.