LA FORET ROUGE

Amazon Linux - gpg: keyserver receive failed: No dirmngr

⏱ 2m | Categories: CLOUD | Tags: AWS , EC2 , AMAZONLINUX , FEDORA , GPG

Amazon Linux에서 gpg 키 설치 중 dirmngr 관련 문제를 해결하는 과정입니다.

문제 상황

aws EC2 인스턴스를 Amazon Linux로 만들어 사용하던 중 rvm을 설치하려고 했습니다. 설치 과정에서 gpg 키를 추가하기 위해 명령어를 실행했는데 다음과 같은 오류를 만났습니다.

1[ec2-user@ec2 ~]$ gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
2gpg: keyserver receive failed: No dirmngr

시도

dirmngr은 X.509 인증서와 관련된 서버로 내부적으로 호출된다고 합니다1. 이게 없다고 하니 일단 설치를 시도해봅니다2.

 1[ec2-user@ec2 ~]$ sudo yum install dirmngr
 2Last metadata expiration check: 1:02:15 ago on Wed Jun 26 00:25:06 2024.
 3Error:
 4 Problem: problem with installed package gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64
 5  - package gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64 from @System conflicts with gnupg2 provided by gnupg2-2.3.7-1.amzn2023.0.3.x86_64 from amazonlinux
 6  - package gnupg2-minimal-2.3.7-1.amzn2023.0.3.x86_64 from amazonlinux conflicts with gnupg2 provided by gnupg2-2.3.7-1.amzn2023.0.3.x86_64 from amazonlinux
 7  - package gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64 from amazonlinux conflicts with gnupg2 provided by gnupg2-2.3.7-1.amzn2023.0.3.x86_64 from amazonlinux
 8  - conflicting requests
 9  - package gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64 from @System conflicts with gnupg2 provided by gnupg2-2.3.7-1.amzn2023.0.4.x86_64 from amazonlinux
10  - package gnupg2-minimal-2.3.7-1.amzn2023.0.3.x86_64 from amazonlinux conflicts with gnupg2 provided by gnupg2-2.3.7-1.amzn2023.0.4.x86_64 from amazonlinux
11  - package gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64 from amazonlinux conflicts with gnupg2 provided by gnupg2-2.3.7-1.amzn2023.0.4.x86_64 from amazonlinux
12(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages)

amazonlinux에 기존에 이미 gnupg2-minimal 패키지가 설치가 있었던 것 같은데 이것과 충돌이 있는 것 같습니다. 이 문제와 동일한 문제를 겪은 사람의 GitHub 이슈에 따르면 위 로그 마지막에 나온 것처럼 --allowerasing을 붙여서 설치를 했다고 합니다3.

 1[ec2-user@ec2 ~]$ sudo yum install dirmngr --allowerasing
 2Last metadata expiration check: 1:13:44 ago on Wed Jun 26 00:25:06 2024.
 3Dependencies resolved.
 4======================================================================================================================
 5 Package                        Architecture       Version                              Repository               Size
 6======================================================================================================================
 7Installing:
 8 gnupg2                         x86_64             2.3.7-1.amzn2023.0.4                 amazonlinux             2.5 M
 9Installing dependencies:
10 libksba                        x86_64             1.6.3-1.amzn2023.0.2                 amazonlinux             159 k
11 # ...
12Removing dependent packages:
13 gnupg2-minimal                 x86_64             2.3.7-1.amzn2023.0.4                 @System                 917 k
14
15Transaction Summary
16======================================================================================================================
17Install  12 Packages
18Remove    1 Package
19
20Total download size: 12 M
21Is this ok [y/N]: y
22# ...
23
24Installed:
25  gnupg2-2.3.7-1.amzn2023.0.4.x86_64                       gnupg2-smime-2.3.7-1.amzn2023.0.4.x86_64
26# ...
27Removed:
28  gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64
29
30Complete!

결과

dirmngr 설치를 했으니 다시 gpg 키 추가를 시도해봅니다.

1[ec2-user@ec2 ~]$ gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
2gpg: key 105BD0E739499BDB: 1 duplicate signature removed
3gpg: /home/ec2-user/.gnupg/trustdb.gpg: trustdb created
4gpg: key 105BD0E739499BDB: public key "Piotr Kuczynski <piotr.kuczynski@gmail.com>" imported
5gpg: key 3804BB82D39DC0E3: public key "Michal Papis (RVM signing) <mpapis@gmail.com>" imported
6gpg: Total number processed: 2
7gpg:               imported: 2

정상적으로 잘 되었습니다.

추가 의견

참고했던 GitHub 이슈의 작성자는 문제 해결이 안 된 것으로 보였습니다. timeout이 발생한다고 하던데, gpg 키를 저장해두는 서버의 문제일 수도 있다는 생각을 했습니다.

  • 제 경우에도 rvm 문서에 나온 다른 키 서버로 바꿔서 시도해봤는데 안된 경우가 있었습니다.

    rvm gpg

    1[ec2-user@ec2 ~]$ gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    2gpg: keyserver receive failed: Server indicated a failure
    

참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.

  • GPG(GNU Privacy Guard)4.

  1. “1 About Dirmngr.” gnupg.org. https://www.gnupg.org/documentation/manuals/dirmngr/Introduction.html (accessed Jun. 27, 2024). ↩︎

  2. Hunter.S.Thompson. “gpg: keyserver receive failed: No dirmngr.” StackExchange. https://unix.stackexchange.com/questions/401547/gpg-keyserver-receive-failed-no-dirmngr#401548 (accessed Jun. 27, 2024). ↩︎

  3. “DNF Command Reference.” DNF. https://dnf.readthedocs.io/en/latest/command_ref.html#options-label (accessed Jun. 27, 2024). ↩︎

  4. “THE GNU PRIVACY GUARD.” gnupg.org. https://gnupg.org (accessed Jun. 27, 2024). ↩︎

Comments

Link copied to clipboard!