背景
過去に、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用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倍です。
開発者の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.
もちろん、元の方法は二重に廃止予定! 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-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