# apt update
Hit:1 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:5 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy InRelease
Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:7 https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_22.04 InRelease
Hit:8 https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24/xUbuntu_22.04 InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
W: https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_22.04/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24/xUbuntu_22.04/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
이 경고는 apt 패키지 매니저에서 GPG 키를 관리하는 방식이 변경되면서 발생하는 것입니다. 이전에는 apt-key
를 사용하여 GPG 키를 관리했지만, 이제는 trusted.gpg
키링이 더 이상 권장되지 않고 레거시로 간주되기 때문에 발생합니다.
새로운 GPG 키 관리 방식을 사용하여 이러한 경고를 해결할 수 있습니다.
다음은 해당 경고를 해결하는 단계입니다.
- apt-key 명령어 사용 중단
apt-key 명령어 사용을 중단하고 대신 새로운 GPG 키 관리 방식을 사용해야 합니다. - 레포지토리 설정 확인
경고가 발생하는 레포지토리의 설정을 확인합니다. 위 로그에서는 OpenSUSE의 레포지토리로 보입니다. - GPG 키 다운로드
GPG 키를 새로운 방식으로 다운로드합니다.
일반적으로는gpg --keyserver keyserver.ubuntu.com --recv-keys <KEY>
gpg
명령어를 사용하여 진행합니다. 예를 들어:<KEY>
부분에는 실제로 사용 중인 레포지토리의 GPG 키 값이 들어가야 합니다. - 다운로드한 GPG 키 추가
다운로드한 GPG 키를 apt 키 링에 추가합니다. 다음 명령어를 사용합니다.gpg --export --armor <KEY> | sudo apt-key add -
- 레포지토리 업데이트
변경 사항을 적용하기 위해 apt 레포지토리를 업데이트합니다.sudo apt update
이제 새로운 GPG 키 관리 방식을 사용하여 레포지토리의 업데이트 및 패키지 설치를 진행하면 해당 경고가 표시되지 않습니다. 주의해야 할 점은 이 방법은 현재 사용 중인 레포지토리의 GPG 키에 따라 다를 수 있다는 것입니다. 따라서 <KEY>
값은 실제로 사용 중인 레포지토리의 GPG 키로 대체해야 합니다.
apt-key
명령어로 등록된 GPG 키 목록을 확인하는 방법은 다음과 같습니다. 하지만 기억해 주세요. 이 방법은 이제는 레거시 방식이므로 새로운 방식을 사용하는 것이 권장됩니다.
- 등록된 GPG 키 목록 확인
아래 명령어를 실행하면 현재 시스템에 등록된 GPG 키 목록이 표시됩니다. 각 키는 고유한 ID와 키의 소유자 등 정보가 나열됩니다.sudo apt-key list
- 문제되는 키 확인
목록에서 사용 중인 레포지토리의 GPG 키를 찾아서 문제되는 키인지 확인합니다. - 문제되는 키 제거
문제되는 키를 확인했다면 해당 키를 제거합니다. 아래 명령어를 사용합니다.sudo apt-key --keyring /etc/apt/trusted.gpg del <KEY_ID>
<KEY_ID>
는 제거하려는 키의 ID로 대체되어야 합니다.
주의: 키를 제거할 때는 신중하게 선택해야 합니다. 잘못된 키를 제거하면 시스템에 문제가 발생할 수 있습니다. - 새로운 GPG 키 추가
새로운 GPG 키를 다운로드하고 추가합니다.sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <NEW_KEY>
<NEW_KEY>
는 새로 추가할 GPG 키의 값으로 대체되어야 합니다. - 레포지토리 업데이트
변경 사항을 적용하기 위해 apt 레포지토리를 업데이트합니다.sudo apt update
새로운 GPG 키가 등록되었고 문제되는 키가 제거되었기 때문에 해당 경고는 나타나지 않습니다. 하지만 여전히 새로운 GPG 키 관리 방식을 사용하는 것이 권장되므로, 가능하면 이 방식을 사용하는 것이 좋습니다.
새로운 GPG 키 관리 방식으로 전환됨에 따라 apt-key
명령어를 사용하여 등록된 키 목록을 확인하는 대신, gpg
명령어를 사용하여 GPG 키를 확인해야 합니다. 아래는 현재 등록된 GPG 키 목록을 확인하고 문제되는 키를 찾는 방법입니다.
- 현재 등록된 GPG 키 목록 확인
아래 명령어를 실행하면 현재 시스템에 등록된 모든 GPG 키 목록이 표시됩니다. 이 목록에서 사용 중인 레포지토리의 키를 찾아야 합니다.gpg --list-keys
- 레포지토리에서 사용 중인 키 확인
레포지토리에서 사용 중인 GPG 키를 확인하려면 먼저 레포지토리의 GPG 키 ID를 알아야 합니다.
이 정보는 레포지토리의 공식 웹사이트나 문서에서 찾을 수 있습니다. - GPG 키 목록에서 해당 키 찾기
다시 처음 실행한gpg --list-keys
명령어의 결과에서 레포지토리에서 사용 중인 키를 찾습니다.
보통 키는 8자리의 키 ID로 표시됩니다. - 문제되는 키 제거
찾은 키 ID를 사용하여 해당 키를 제거합니다.gpg --delete-key <KEY_ID>
<KEY_ID>
는 실제로 사용 중인 키의 ID로 대체되어야 합니다.
주의: 키를 제거할 때는 신중하게 선택해야 하며, 잘못된 키를 제거하면 시스템에 문제가 발생할 수 있습니다. - 새로운 GPG 키 추가
앞서 설명한 대로 올바른 GPG 키를 다운로드하고 추가합니다.gpg --export --armor <NEW_KEY> | sudo apt-key add -
<NEW_KEY>
는 새로 추가할 GPG 키의 값으로 대체되어야 합니다. - 레포지토리 업데이트
변경 사항을 적용하기 위해 apt 레포지토리를 업데이트합니다.sudo apt update
새로운 GPG 키를 등록하는 경우, 이제는 apt-key
대신에 직접 GPG 명령어를 사용하여 키를 추가하는 방식이 권장됩니다. 아래는 새로운 GPG 키를 등록하는 단계입니다.
- GPG 키 다운로드
새로운 GPG 키를 다운로드합니다. 이때, 키의 ID 또는 fingerprint가 필요합니다.gpg --keyserver keyserver.ubuntu.com --recv-keys <KEY>
<KEY>
는 새로운 키의 ID나 fingerprint로 대체되어야 합니다. - GPG 키 확인
다운로드한 키가 올바른지 확인합니다. 키의 fingerprint를 비교하여 일치하는지 확인하는 것이 좋습니다.gpg --fingerprint <KEY>
<KEY>
는 다운로드한 키의 ID로 대체되어야 합니다. - APT에 GPG 키 추가
GPG 키를 APT에 직접 추가합니다.gpg --export --armor <KEY> | sudo tee /etc/apt/trusted.gpg.d/<KEY>.asc
<KEY>
는 새로운 키의 ID로 대체되어야 합니다.
이 명령어는 GPG 키를trusted.gpg.d
디렉토리에 추가합니다. - 레포지토리 업데이트
변경 사항을 적용하기 위해 apt 레포지토리를 업데이트합니다.
이제 새로운 GPG 키가 등록되었고, 해당 키가 사용되는 레포지토리의 업데이트 및 패키지 설치를 위해 사용될 것입니다.sudo apt update
이 방식은 apt-key
를 사용하지 않고 직접 GPG 명령어를 사용하여 키를 관리하는 더 안전하고 현대적인 방식입니다.
아래는 Ubuntu 22.04로 이전한 후에 나타나는 문제를 해결하기 위한 것으로, 더 이상 사용되지 않는 키를 새로운 형식으로 변환하는 데 사용됩니다. 주의해야 할 점은 이 명령어를 실행하기 전에 자신의 시스템에서 어떤 동작을 하는지 정확히 이해해야 한다는 것입니다.
한줄 명령어
for KEY in $(apt-key --keyring /etc/apt/trusted.gpg list | grep -E "(([ ]{1,2}(([0-9A-F]{4}))){10})" | tr -d " " | grep -E "([0-9A-F]){8}\b" ); do K=${KEY:(-8)}; apt-key export $K | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg; done
위 명령어를 보기 쉽게 정리
for KEY in $( \
apt-key --keyring /etc/apt/trusted.gpg list \
| grep -E "(([ ]{1,2}(([0-9A-F]{4}))){10})" \
| tr -d " " \
| grep -E "([0-9A-F]){8}\b" \
); do
K=${KEY:(-8)}
apt-key export $K \
| sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg
done
다음은 명령어의 간략한 설명과 함께 해석된 내용입니다.
- 키 목록 가져오기
시스템에 등록된 키 목록을 가져옵니다.apt-key --keyring /etc/apt/trusted.gpg list
- 정규표현식을 사용하여 키 식별
10개의 그룹으로 묶인 4자리의 16진수 문자열을 찾아냅니다. 이는 키의 전체 서명을 제공합니다.grep -E "(([ ]{1,2}(([0-9A-F]{4}))){10})"
- 공백 제거
각 줄에서 모든 공백을 제거하여 키 서명이 깨지지 않도록 합니다.tr -d " "
- 마지막 8자리 키 식별
각 행에서 마지막 8자리의 키 식별자를 가져옵니다.grep -E "([0-9A-F]){8}\b"
- 키 변환 및 저장
for KEY in $(…); do K=${KEY:(-8)}; apt-key export $K | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg; done
for KEY in $(…); do
각 키에 대해 반복합니다.K=${KEY:(-8)}
현재 키의 마지막 8자리를 K 변수에 할당합니다.apt-key export $K
해당 키를 내보내고,sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg
GPG를 사용하여 새로운 형식으로 변환한 다음, 새로운 형식의 GPG 파일로 저장합니다.
이 명령어는 사용하지 않는 키를 새로운 형식으로 변환하여 더 이상의 경고를 피할 수 있습니다. 그러나 명령어를 실행하기 전에 시스템 및 명령어의 동작을 정확히 이해하고, 필요하다면 백업을 만들어두는 것이 중요합니다.
댓글