배경
과거에는 Debian의 Ubuntu PPA에서 소프트웨어를 설치하려면 다음을 수행했습니다.
keyserver.ubuntu.com에서 개발자의 GPG 키를 가져오거나 신뢰합니다.
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E58A9D36647CAE7F
그런 다음 저장소를
/etc/apt/sources.list.d/...
# /etc/apt/sources.list.d/papirus-ppa.list deb http://ppa.launchpad.net/papirus/papirus/ubuntu focal main
(내 머리 꼭대기에서 예제를 찾을 수 있습니다.mkusb용 우분투 문서 위키또는Papirus 아이콘 테마 읽어보기.)
질문
문제는이 메서드는 이제 지원 중단 경고를 생성합니다.( 더 이상 apt-key
사용되지 않음일년 전):
$ apt-key adv ...
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))
닌자 에디터
바라보다아래 답변
apt-key
이 명령에 대한 또 다른 별도의 지원 중단이 필요합니다!
해결책?
새로운 방법(예:루스트어바웃)은 두 배입니다.
개발자의 GPG 키를 디스크에 저장합니다.
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
그런 다음 새 APT 소스를 정의할 때 GPG 키 경로를 지정합니다.
# /etc/apt/sources.list.d/docker.list deb [... signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian buster stable ⬑------------------ this part is new -----------------⬏
1단계는 부품 교체인데 apt-key
keyserver.ubuntu.com에서 개별 GPG 키를 얻을 수 없는 것 같습니다. Ubuntu PPA에 이 접근 방식이 가능합니까? 그렇지 않다면 어떻게 Ubuntu PPA를 사용하지 않고 Debian의 소프트웨어 저장소로 추가할 수 있습니까 apt-key
?
답변1
apt-key adv
기본적으로 CLI 매개변수/옵션을 에 직접 전달 gpg
하지만 임시 키링을 설정한 후에만 가능합니다. 수동으로 동일한 작업을 수행할 수 있습니다.
$ export GNUPGHOME="$(mktemp -d)" # optional (skipping this means keys will be imported to your GPG keyring)
$ gpg --recv-keys --keyserver keyserver.ubuntu.com 54B8C8AC
$ gpg --export 54B8C8AC | sudo tee /usr/share/keyrings/mkusb-archive-keyring.gpg
$ cat <<-SOURCE | sudo tee /etc/apt/sources.list.d/mkusb.list
deb [signed-by=/usr/share/keyrings/mkusb-archive-keyring.gpg] http://ppa.launchpad.net/mkusb/ppa/ubuntu focal main
SOURCE
( apt-key
당신이 선호하는 편집기에서 직접 코드를 확인할 수 있는 쉘 스크립트입니다.예를 들어, vim $(which apt-key)
.)
작동하지 않으면 ...
처음에는 다음과 같은 오류가 발생했습니다.
$ sudo apt update
...
Get:12 http://ppa.launchpad.net/papirus/papirus/ubuntu focal InRelease [18.0 kB]
Err:12 http://ppa.launchpad.net/papirus/papirus/ubuntu focal InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E58A9D36647CAE7F
파일 권한 문제로 밝혀졌습니다.
$ ls -l /usr/share/keyrings/*
...
-rw-r--r-- 1 root root 3375 Nov 22 21:38 /usr/share/keyrings/filebot-archive-keyring.gpg
-rw-r--r-- 1 root root 1124 Nov 22 21:38 /usr/share/keyrings/mkusb-archive-keyring.gpg
-rw------- 1 root root 1126 Nov 29 08:15 /usr/share/keyrings/papirus-archive-keyring.gpg
644
권한이 있는 개발자 GPG 키를 저장했는지 확인하세요 .
또 다른 문제
gpg(1)
맨페이지 에서 :
--keyserver name
This option is deprecated - please use the --keyserver in ‘dirmngr.conf’ instead.
물론 원래 방법은이중으로더 이상 사용되지 않습니다! AFAIK gpg
아직 이 CLI 옵션 사용에 대한 경고는 없지만 이 문제에 대한 올바른 해결책은 다음과 같습니다.
$ echo "keyserver hkp://keyserver.ubuntu.com" >> "${GNUPGHOME}/dirmngr.conf"
$ gpgconf --kill dirmngr
$ gpg --recv-keys 54B8C8AC
...
내가 이것을 시도하고 얻은 것을 제외하고
gpg: keyserver receive failed: Connection timed out
그러니 누군가 아이디어가 있다면 나는 귀를 기울일 것입니다.
답변2
최소한 세 가지 옵션이 있습니다:
적절한 추가 저장소
Debian 패키지 software-properties-common
에는 apt-add-repository
.sudo apt-add-repository ppa:<user>/<ppa-name>
키 서버에서 키 가져오기
키를 별도의 키링으로 가져와 APT가 예상하는 위치로 이동합니다.
$ echo "keyserver hkps://keyserver.ubuntu.com" >> "${GNUPGHOME}/dirmngr.conf"
$ gpgconf --kill dirmngr
# I don't quite understand why this failed for you. Maybe a temporary network fluke or a firewall issue?
$ gpg --no-default-keyring --keyring=./papirus.gpg --recv-keys 54B8C8AC
$ sudo mv papirus.gpg /etc/apt/trusted.gpg.d/
$ sudo chown root:root /etc/apt/trusted.gpg.d/papirus.gpg
$ sudo chmod 644 /etc/apt/trusted.gpg.d/papirus.gpg
수동으로 키 다운로드
어떤 이유로 키 서버에서 공개 키를 가져올 수 없지만 수동으로 다운로드할 수 있는 경우 papirus.pub
다음과 같이 다운로드한 파일을 가져옵니다.
$ echo "keyserver hkps://keyserver.ubuntu.com" >> "${GNUPGHOME}/dirmngr.conf"
$ gpgconf --kill dirmngr
$ gpg --no-default-keyring --keyring=./papirus.gpg --import ./papirus.pub
$ sudo mv papirus.gpg /etc/apt/trusted.gpg.d/
$ sudo chown root:root /etc/apt/trusted.gpg.d/papirus.gpg
$ sudo chmod 644 /etc/apt/trusted.gpg.d/papirus.gpg