背景
apt-key
が deprecated になったので 、今後推奨となる方法を示す。
概要
- 手順概要
-
/etc/apt/keyrings/
にレポジトリの公開鍵 (asc や gpg) を保存する。 -
/etc/sources.list.d/
にレポジトリの参照先情報を保存する。- このとき、
signed-by
で保存した公開鍵を指定する。
- このとき、
-
- 今回は ppa:nginx/stable をインストールする。
- ppa 以外のレポジトリでも、公開鍵と参照先情報があれば同じ手順が使える。
- ppa のサイトから必要な情報をメモ (画像参照)
手順
/etc/apt/keyrings/
にレポジトリの公開鍵 (asc や gpg) を保存
sudo mkdir /etc/apt/keyrings/
sudo curl 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x8b3981e7a6852f782cc4951600a6f0a3c300ee8c' -o /etc/apt/keyrings/nginx-ubuntu-stable-focal.asc
- fingerprint:
8B3981E7A6852F782CC4951600A6F0A3C300EE8C
- 公開鍵の url:
https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x8b3981e7a6852f782cc4951600a6f0a3c300ee8c
- 公開鍵の保存先:
/etc/apt/keyrings/nginx-ubuntu-stable-focal.asc
/etc/apt/sources.list.d/
にレポジトリの参照先を保存
echo deb [signed-by=/etc/apt/keyrings/nginx-ubuntu-stable-focal.asc] https://ppa.launchpadcontent.net/nginx/stable/ubuntu focal main | sudo tee /etc/apt/sources.list.d/nginx-ubuntu-stable-focal.list >/dev/null
- 公開鍵の場所:
/etc/apt/keyrings/nginx-ubuntu-stable-focal.asc
- 接続先情報:
deb https://ppa.launchpadcontent.net/nginx/stable/ubuntu focal main
- 接続先情報の保存先:
/etc/apt/sources.list.d/nginx-ubuntu-stable-focal.list
インストール
sudo apt update && sudo apt install -y nginx
ポイント
apt update で失敗する場合、ファイル/ディレクトリの owner/group/permission を確認する。
以下以外では動かない可能性がある。
- owner/group:
root:root
- permission: dir=755, file=644
- 対象: 公開鍵、参照先情報、それらの親ディレクトリ
また、後述のメモの情報を使ってデバッグしてみる。
その他メモ
apt update (nginx-ubuntu-stable-focal.list のみ)
$ sudo apt-get update -o APT::Get::List-Cleanup=0 -o Dir::Etc::sourceparts=- -o Dir::Etc::sourcelist=sources.list.d/nginx-ubuntu-stable-focal.list
Hit:1 https://ppa.launchpadcontent.net/nginx/stable/ubuntu focal InRelease
Reading package lists... Done
my.asc を my.gpg に変換
$ gpg --no-default-keyring --keyring ./my.gpg --import ./my.asc
gpg: keybox './my.gpg' created
gpg: key 00A6F0A3C300EE8C: 1 signature not checked due to a missing key
gpg: key 00A6F0A3C300EE8C: public key "Launchpad Stable" imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: no ultimately trusted keys found
my.gpg を確認
$ gpg --no-default-keyring --keyring ./my.gpg --list-keys
./my.gpg
--------
pub rsa1024 2010-07-21 [SC]
8B3981E7A6852F782CC4951600A6F0A3C300EE8C
uid [ unknown] Launchpad Stable
my.gpg で apt update 時の鍵検証を手動でやる
$ wget -q https://ppa.launchpadcontent.net/nginx/stable/ubuntu/dists/focal/InRelease
$ gpgv --keyring ./my.gpg ./InRelease
gpgv: can't allocate lock for './my.gpg'
gpgv: Signature made Wed 21 Oct 2020 12:51:01 PM UTC
gpgv: using RSA key 00A6F0A3C300EE8C
gpgv: Good signature from "Launchpad Stable"
参考
- 第675回 apt-keyはなぜ廃止予定となったのか | gihyo.jp
- apt-key が非推奨になったので