적절한 추가 저장소

적절한 추가 저장소

배경

과거에는 Debian의 Ubuntu PPA에서 소프트웨어를 설치하려면 다음을 수행했습니다.

  1. keyserver.ubuntu.com에서 개발자의 GPG 키를 가져오거나 신뢰합니다.

    $ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E58A9D36647CAE7F
    
  2. 그런 다음 저장소를/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이 명령에 대한 또 다른 별도의 지원 중단이 필요합니다!

해결책?

새로운 방법(예:루스트어바웃)은 두 배입니다.

  1. 개발자의 GPG 키를 디스크에 저장합니다.

    $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
  2. 그런 다음 새 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-keykeyserver.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

관련 정보