본문 바로가기

OS/Linux

[Ubuntu] apt-get update 에러. GPG public key 오류 해결 방법.

Linux를 사용 중 프로그램을 설치와 삭제를 반복하면 아래와 같은 오류가 발생한다.

W: GPG 오류: http://ppa.launchpad.net natty Release: 다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다: NO_PUBKEY XXXXXXXXXXXXXXXXXX

여기에서 GPG, 공개키와 인증 등의 생소한 용어에 당황하게 되는데 아래와 같이 하나씩 풀어가보자.


1. GPG란

GnuPG는 RFC 4880에서 정의된 OpenGL 표준을 구현한 GNU 프로젝트의 결과물이다.

pgp는 사용자가 서명된 파일이나 이메일에 사용할 식별 키 시스템으로 인증여부를 확인할 수 있다.

GPG는 GNU의 pgp 암호화 프로그램이다.


2. 문제의 원인

위 오류 메시지에서 표시된 PGP 공개키가 서버에 등록되지 않아서 발생한 것이다.

즉, 3rd party의 PPA를 등록하였는데 이 저장소를 참조하는 키가 ubuntu keyserver에 등록되지 않았기 때문이다.


3. 문제의 해결

아래 명령으로 공개키를 키 서버에 업로드를 해야 한다.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXXXXXXXX

[sudo] password for hyunmu: 

Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXXXXXXXX

gpg: requesting key A088FF1E from hkp server keyserver.ubuntu.com

gpg: key A088FF1E: public key "Launchpad Keng-Yu's PAA" imported

gpg: Total number processed: 1

gpg:               imported: 1  (RSA: 1)

4. 참고 사항

apt-key의 도움말은 아래와 같으며 키 추가는 add옵션을, 삭제는 del 옵션을 사용한다.

~/.gnupg$ apt-key --help

Usage: apt-key [--keyring file] [command] [arguments]


Manage apt's list of trusted keys


  apt-key add <file>          - add the key contained in <file> ('-' for stdin)

  apt-key del <keyid>         - remove the key <keyid>

  apt-key export <keyid>      - output the key <keyid>

  apt-key exportall           - output all trusted keys

  apt-key update              - update keys using the keyring package

  apt-key net-update          - update keys using the network

  apt-key list                - list keys

  apt-key finger              - list fingerprints

  apt-key adv                 - pass advanced options to gpg (download key)