기존에 우분투 리눅스 20.04가 설치된 서버를 최근에 22.04로 업그레이드했습니다. OS 버전을 업그레이드한다는 것은 여러 가지 문제들을 유발할 수 있습니다. 필자의 경우는 20.04에서 22.04로 업그레이드를 수행한 이후에 십여 가지의 크고 작은 문제들이 발생했고, 구글링을 통해서 모두 해결할 수 있었습니다.
본 페이지에서는 우분투 리눅스를 22.04로 업그레이드한 이후에 패키지 업데이트 명령을 수행하면 "다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다"라는 메시지가 나오는 문제를 해결하는 방법에 대해서 설명드리고자 합니다.
1. 문제의 상황에 대한 기술
우분투 리눅스 22.04로 업그레이드한 이후에 패키지 업데이트를 수행했습니다.
$ sudo apt-get update
위의 명령으로 패키지 업데이트를 수행하면 아래와 같이 "다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다"라는 에러 메시지들이 확인됩니다.
$ sudo apt-get update 받기:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB] 기존:3 http://us.archive.ubuntu.com/ubuntu jammy InRelease 기존:4 http://us.archive.ubuntu.com/ubuntu xenial InRelease 받기:5 http://us.archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB] 받기:6 https://esm.ubuntu.com/infra/ubuntu jammy-infra-security InRelease [7,453 B] 오류:4 http://us.archive.ubuntu.com/ubuntu xenial InRelease 다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32 |
2. apt-key 명령 사용 (deprecated)
위와 같은 상황에서 기존 20.04에서는 "apt-key" 명령을 통해서 이를 해결할 수 있었습니다.
2-1. apt-key adv 명령으로 키 다운로드
apt-key adv 명령으로 키를 추가하는 명령을 수행해봤습니다.
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
기존의 20.04에서는 잘 동작하는 명령임에도 불구하고, 22.04에서는 아래와 같은 경고 메시지가 표시됩니다.
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)). Executing: /tmp/apt-key-gpghome.EN8vEwhHBR/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 gpg: key 40976EAF437D05B5: public key "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" imported gpg: Total number processed: 1 gpg: imported: 1 |
2-2. apt-key list 명령으로 키 확인
기존 20.04에서 잘 동작하던 "apt-key list" 명령을 수행해봤습니다.
$ sudo apt-key list
동일하게 apt-key 명령은 앞으로 지원되지 않을 것이라는 경고 메시지가 출력됩니다.
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)). /etc/apt/trusted.gpg -------------------- pub rsa4096 2015-07-14 [SCEA] 5811 8E89 F3A9 1289 7C07 0ADB F762 2157 2C52 609D uid [ unknown] Docker Release Tool (releasedocker) <docker@docker.com> |
"deprecated"의 의미는 추후에 더 이상 지원되지 않을 예정이라는 의미이기 때문에 지금은 사용 가능하지만, 나중에는 해당 명령이 삭제될 예정이라는 의미입니다. 따라서, 추후에 문제를 일으키기 전에 지금 수정하는 게 좋습니다.
2-3. apt-get update 명령 수행
apt-get update 명령을 수행해봤습니다.
$ sudo apt-get update
아래와 같이 거슬리는 경고 메시지가 출력됩니다.
(생략) 기존:12 http://us.archive.ubuntu.com/ubuntu jammy-backports InRelease 받기:13 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease [97.4 kB] 내려받기 303 k바이트, 소요시간 5초 (63.4 k바이트/초) 패키지 목록을 읽는 중입니다... 완료 W: http://downloads.sourceforge.net/project/ubuntuzilla/mozilla/apt/dists/all/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. W: http://us.archive.ubuntu.com/ubuntu/dists/xenial/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. W: http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. W: http://us.archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. W: http://us.archive.ubuntu.com/ubuntu/dists/xenial-backports/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. |
메시지를 잘 살펴보면 trusted.gpg에 키가 저장되어 있다는 의미입니다. 해당 위치에 저장되는 것은 레거시(과거로부터 물려 내려온 것)라고 설명되어 있습니다.
3. 키 저장소 이동
이를 해결하기 위해서는 /etc/apt/trusted.gpg 파일을 /etc/apt/trusted.gpg.d 디렉토리로 복사해주면 깔끔하게 해결이 됩니다.
$ cd /etc/apt
$ sudo cp trusted.gpg trusted.gpg.d/
위와 같이 /etc/apt/trusted.gpg 파일을 /etc/apt/trusted.gpg.d 디렉토리로 복사해준 이후에 apt-get update 명령을 수행해보면 경고 메시지가 모두 사라진 것을 확인할 수 있습니다.
기존:1 http://udomain.dl.sourceforge.net/project/ubuntuzilla/mozilla/apt all InRelease 기존:2 http://us.archive.ubuntu.com/ubuntu jammy InRelease 기존:3 http://security.ubuntu.com/ubuntu jammy-security InRelease 기존:4 http://security.ubuntu.com/ubuntu xenial-security InRelease 기존:5 http://us.archive.ubuntu.com/ubuntu xenial InRelease 기존:6 https://esm.ubuntu.com/infra/ubuntu jammy-infra-security InRelease 기존:7 http://us.archive.ubuntu.com/ubuntu jammy-updates InRelease 기존:8 https://esm.ubuntu.com/infra/ubuntu jammy-infra-updates InRelease 기존:9 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease 기존:10 http://us.archive.ubuntu.com/ubuntu jammy-backports InRelease 기존:11 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease 패키지 목록을 읽는 중입니다... 완료 |
4. 관련 링크
본 페이지를 작성하는데 도움이 되었던 자료들의 출처입니다.
▶ deprecated의 의미
지금까지 "deprecated"의 의미를 유추해서 대략적으로 알고 있었는데, 아래의 페이지에서 "deprecated"의 정확한 의미를 알게 되었습니다.
▶ legacy의 의미
이상입니다.
'SW개발 > 우분투 리눅스' 카테고리의 다른 글
우분투 리눅스 22.04 업그레이드 소요 시간 / 변경점 / 안정성 (1) | 2022.09.22 |
---|---|
[우분투 22.04] Failed to restart proftpd.service: Unit proftpd.service is masked. 해결 방법 (0) | 2022.09.21 |
[우분투 22.04] snaps 업데이트 중 멈춤 현상 (1) | 2022.09.21 |
[우분투 22.04] letsencrypt 인증서 재발급 방법 (Apache2 기준) (0) | 2022.09.18 |
[우분투 22.04] 도커 설치하는 방법 (Ubuntu 22.04 Docker Install) (0) | 2022.09.13 |
[우분투 22.04][Docker] cgroup mountpoint does not exist: unknown 해결 방법 (0) | 2022.09.13 |
색상 관리 장치를 만들려면 인증이 필요합니다. (우분투 22.04 원격 데스크톱) (0) | 2022.09.08 |
우분투 22.04에서 systemd-resolve 명령어를 찾을 수 없을 경우 문제 해결 방법 (0) | 2022.09.08 |