適切な追加ストレージ

適切な追加ストレージ

背景

過去に、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用Ubuntu Documentation WikiまたはPapirusアイコンのテーマを読む.)

質問

問題はこのメソッドはサポート終了警告を生成します。(廃止apt-key予定1年前):

$ apt-key adv ...
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))

忍者エディタ

バラより以下の回答apt-keyこのコマンドのための別の別々のサポートの中断が必要です!

解決策?

新しい方法(例:ルーストアバウト)は2倍です。

  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.

もちろん、元の方法は二重に廃止予定! AFAIKgpgまだこの 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

少なくとも3つのオプションがあります。

適切な追加ストレージ

Debianパッケージsoftware-properties-commonにはapt-add-repositorysudo 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

関連情報