Una mirada tuxiana del todo
Muchas veces nos suele suceder en Ubuntu y Debian que agregamos repositorios de software que todavía no es lanzado como estable, o que no está en los repositorios oficiales de nuestra distribución, y obtenemos un error de claves GPG.
Primero, lo primero. ¿Qué son las misteriosas claves GPG?
Las claves GPG(GNU Privacy Guard) son claves libres de cifrado y firmas digitales. Básicamente, los que nos permiten es verificar que el software que estemos por descargar sea el correcto, y no haya sido adulterado por terceros.
Cuando agregamos repositorios, al querer actualizar la fuente de paquetes(el clásico “sudo apt-get update”), nos dá el siguiente error(o muy similar):
W: Error de GPG: http://ppa.launchpad.net intrepid Release Las firmas siguientes no se pudieron verificar porquesu llave pública no está disponible:
W: Tal vez quiera ejecutar ‘apt-get update’ para corregir estos problemas
Este error me dió al querer instalar Chromium bajo Kubuntu.
Para poder corregir esto, una opción es conseguir la llave específica para ese repositorio(como lo hice en el ejemplo de Chromium), pero hay una manera más simple, y es la que veremos hoy:
Abriremos nuestro editor de texto preferido, y copiaremos el siguiente código(pero también pueden saltearse este paso descargando el archivo desde aquí):
##=========================================================
## El Cerrajero — Version 0.3 por Sapphire
##=========================================================
##Si el UID es distinto a 0, entonces:
if [ "$UID" > 1 ]; then
echo ” ”
echo “El script tiene que ser ejecutado como ROOT.”
echo ” ”
return 0
fi
##Si los argumentos estan vacios:
if [ -z "$1" ]; then
echo ” ”
echo “Usage: sh cerrajero.sh -a | -s [GPG Error ID.] | –help”
echo ” ”
echo “–a Busca automaticamente los errores y los intenta corregir.”
echo “–s Poner junto al codigo de error para solucionar solo ese.”
echo “–v Version del script”
echo “–help Esta ayuda que esta viendo.”
echo ” ”
return 0
##Si el argumento –a esta puesto, entonces:
elif [ "$1" = --a ]; then
##Texto al azar que queda bien [?] xD
echo ” ”
echo “Updateando la lista: /etc/apt/sources.list”
echo ” ”
echo “Esto puede tomar un tiempo, espere..”
echo ” ”
##Hace un apt-get update y busca los codigos de error, guardandolo en variables
for k in $(apt-get update 2>&1 | grep -o NO_PUBKEY.*|sed ’s/NO_PUBKEY //’);
##Para cada codigo de variable hace un –recv-keys y consigue el respectivo key
do gpg –recv-keys –keyserver wwwkeys.eu.pgp.net $k;gpg –armor –export $k|apt-key add -;
##Fin del “FOR”
done
##Indicacion de fin
echo “Ya esta nene, tenes todas las llaves que necesitas”
echo ” ”
return 0
##Si el argumento –s esta siendo usado, entonces:
elif [ "$1" = --s ]; then
##Para el codigo del argumento 2 hace un –recv-keys y consigue el respectivo key
gpg –recv-keys –keyserver wwwkeys.eu.pgp.net $2;gpg –armor –export $2|apt-key add -;
##Si la –s fue elegida, pero no se puso el codigo del error..
if [ -z "$2" ]; then
echo “Es ./cerrajero.sh –s XXXXXXXXX (Donde X son las siglas del ID del error de GPG.)”
echo “Use –help para mas informacion.”
echo ” ”
##Fin del IF
return 0
fi
##Indicacion de fin
echo “Ya esta nene, tenes todas las llaves que necesitas”
echo ” ”
##Si el argumento –v esta siendo usado, entonces:
elif [ "$1" = --v ]; then
echo “El Cerrajero - Version 0.3 por Sapphire/Elidix.”
return 0
##Si el argumento –help esta siendo usado, entonces:
elif [ "$1" = --help ]; then
echo ” ”
echo “Usage: sh cerrajero.sh -a | -s [GPG Error ID.] | –help”
echo ” ”
echo “–a Busca automaticamente los errores y los intenta corregir.”
echo “–s Poner junto al codigo de error para solucionar solo ese.”
echo “–v Version del script”
echo “–help Esta ayuda que esta viendo.”
echo ” ”
return 0
##Fin del IF y del script
fi
##=========================================================
## Fin del script
##=========================================================
Luego, guardaremos este archivo como cerrajero.sh y le daremos permisos de ejecución de la siguiente manera(mediante una consola, acuérdense de posicionarse en el directorio que guardaron el script):
sudo chmod a+x cerrajero.sh
Por último, lo ejecutaremos:
sudo sh ./cerrajero.sh
Y con eso, se repararán todas las claves GPG. No lo pude probar, ya que por ahora no tengo este problema. Pero un user llegó a mi blog teniendo este problema(según Google Analytics). Este tutorial es cortesía de La Biblia de Kubuntu.
ACTUALIZACIÓN: El script anterior me dió algunos problemas, pero queda en probar ustedes. También encontré otro que no me solucionó el problema, porque parece que acaban de cambiar la llave del un repositorio, entonces no puede verificarla(o algún error debe haber).
Desde aquí pueden bajar el otro script. Deben hacer los mismos pasos:
sudo chmod a+x launchpad-update
sh ./launchpad-update
Aquí les pedirá que ingresen la versión de Ubuntu que utilizan. Por lo tanto, si utilizan Intrepid Ibex (8.10), deberán escribir:
sudo sh ./launchpad-update intrepid
¡Y eso es todo!. Este script lo saqué de aquí.
5 Respuestas a Corregir errores en las claves GPG de los repositorios
CORREGIR ERROR DE GPG TRAS ACTUALIZACION EN UBUNTU « EL KIOSCO
Abril 12th, 2009 a las 0:30
[...] por los ojos de tux y por [...]
¡Contestá este comentario!
pablo
Abril 12th, 2009 a las 18:34
Bueno, pero mas alla del scrip que esta genial. Entonces hay una manera de hacerlo a mano cuando no tenes la llave publica. Digo por que a mi me paso que me ponia a agregar repositorios y en ningun lado daba con las llaves para bajarlas. Asi que no me dejaba usar los repositorios
pablo´s last blog post..a las pruebas
Navegando con¡Contestá este comentario!
phyro
Abril 12th, 2009 a las 18:38
@pablo: Sí, son muy útiles para corregir las llaves de los repositorios rápidamente, además, si tenemos varias llaves a corregir no tenemos que ir buscando por toda la internet hasta hallarlas
.
Navegando con¡Contestá este comentario!
Cristina
Febrero 16th, 2010 a las 9:25
Pues a mi no me ha ido el segundo (ni el primero), es decir me pone OK y cuando updateo el apt-get me dan los mismos problemas con las keys
Aun así se agradece =)
Navegando con¡Contestá este comentario!
phyro
Febrero 16th, 2010 a las 14:37
@Cristina: Mm, quizás cambio el sistema. ¡Lo siento!.
Navegando con¡Contestá este comentario!