I'm creating a package that will automatically install some repositories to all hosts in the LAN. The package will be accessible from the central repository.

I've discovered that repo lists can be dropped in '/etc/apt/sources.list.d/*.list'. Now I need to import their keys, for instance, this one. However, when I drop it into '/etc/apt/trusted.gpg.d/Opera.gpg', apt-get update gives me a plenty of NO_PUBKEY errors for all repos I have, including Opera!

What's wrong? :)


Keys downloaded from repositories should be joint into a new GPG keyring so you can drop them into '/etc/apt/trusted.gpg.d/*.gpg', like this:

gpg --no-default-keyring --keyring ./Opera.gpg --import Opera.key
sudo cp Opera.gpg /etc/apt/trusted.gpg.d/Opera.gpg
  • 2
    Doesn't work, neither with version gpg 1.4.x nor 2.1: gpg: keyblock resource './Opera.gpg': file open error and gpg: no writable keyring found: eof. To make it work, you need to do first: touch Opera.gpg
    – Tino
    Apr 15 '18 at 20:43

You can actually get the best of both worlds: create an additional keyring in /etc/apt/trusted.gpg.d/ and use apt-key instead of gpg directly.

If you already have a keyfile locally, such as Opera.key, then run the following command:

sudo apt-key --keyring /etc/apt/trusted.gpg.d/Opera.gpg add Opera.key

Of course, you can still import the key directly as MestreLion demonstrated:

wget -q -O - http://deb.opera.com/archive.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/Opera.gpg add -
  • 1
    Note that specifying the keyring Opera.gpg will create the keyring in the current directory, not /etc/apt/trusted.gpg.d. Therefore make sure to either specify the full path, or to move the newly created keyring to the /etc/apt/trusted.gpg.d directory (apt version 1.2.27).
    – jII
    Jul 9 '18 at 19:17
  • For people looking to import keys from a key server, I found this command useful: apt-key --keyring /etc/apt/trusted.gpg.d/keyring-name.gpg adv --keyserver keyserver.ubuntu.com --recv GPGKEYID
    – Guss
    Jun 23 at 8:56

Additionally, you could use apt-key to add the key for you in instead of manually dropping a file to that path. Assuming you saved the file as Opera.key:

sudo apt-key add Opera.key

You could even download and import the key file on-the-fly, instead of saving it to a local file:

wget -q -O - http://deb.opera.com/archive.key | sudo apt-key add -

Apt-key manages the contents of /etc/apt/trusted.gpg main file instead of using the directory, which may be a convenience or a burden for you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.