Ubuntu / Linux news and application reviews.

Launchpad Getkeys

Launchpad-Getkeys is a script (comes packaged in a .deb) that automatically imports all missing GPG keys, even if you're behind a firewall. It was initially created by blackgr @ ubuntuforums but then I decided to completely re-write the script so I can add some options, new features and so on.

How do you know when you have a missing GPG key? Here's an example: when you run "sudo apt-get update", you'll see some errors like this:

[...]
Fetched 47.0kB in 6s (7,710B/s)                                                
Reading package lists... Done
W: GPG error: http://ppa.launchpad.net maverick Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B2DFD25316B94077
W: GPG error: http://ppa.launchpad.net maverick Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1FFD34C9EB13C954
W: GPG error: http://ppa.launchpad.net maverick Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EF4186FE247510BE

Here's a screenshot too:

GPG errors


Further more, if you have missing GPG keys, the update manager will not allow you to update the packages. That's when Launchpad-Getkeys comes in: it can automatically import all these missing GPG keys, thus fix the errors.

Here is a video with Launchpad-getkeys in action to get a better idea on how it works:




Unfortunately my script didn't work if the user was behind a proxy but WebUpd8 reader Saurabh Kumar added proxy support to Launchpad-Getkeys - I couldn't test this (I'm not behind a proxy and even if I'd try to simulate this, I wouldn't know for sure that it works) but I've merged his change into the Launchpad-Getkeys package in the WebUpd8 PPA anyway. Read on to find out how to install and use Launchpad-Getkeys.



Install Launchpad-Getkeys


Launchpad-Getkeys is available for Ubuntu 9.10, 10.04, 10.10 and 11.04, in the WebUpd8 PPA. Add the PPA and install Launchpad-Getkeys using the following commands:
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install launchpad-getkeys


How to use Launchpad-Getkeys


To automatically import all the missing Launchpad GPG keys, all you have to do is run the following command:
sudo launchpad-getkeys


You can also specify a keyserver and port using the "-k" parameter, like so:
sudo launchpad-getkeys -k SERVER:PORT

This is useful if the port is blocked (but Launchpad-Getkeys uses port 80 by default, unlike the "add-apt-repository" command until Ubuntu 11.04) or if the keyserver is down.

To use Launchpad Getkeys when you're behind a proxy (instructions by Saurabh Kumar - tested by him only), run the following command:
sudo visudo

Then search for this line:
Defaults        env_reset

And above it, add this:
Defaults env_keep = "http_proxy"

Then press "Ctrl + O" and "Ctrl + X" if visudo is open using Nano (that's the default behavior).

This will use your "http_proxy" so all you have to do is run:
sudo launchpad-getkeys

If you want, you can specify a different proxy like this:
sudo launchpad-getkeys -p http://SERVER:PORT


Note: There are still things to do. For instance, the script cannot tell if it imported the keys successfully or not and will always report this as successful. I'm still working on solving this.


Many thanks to Saurabh Kumar for his patch!