debian 10 buster から、debian 11 bullseye へアップグレードした際に、zabbix-agent のアップグレードで、ひっかかりました。
その時の記録というか、色々調べた結果も合わせて書いてみます。
追記 2022/10/26
bullseye で、apt-key コマンドを使うと
Warning: apt-key is deprecated.
このような警告(apt-key は非推奨)が表示されるので、気になって調べてみました。
apt-key コマンドを使わないで公開キーを登録する方法 は、こちら をお読み下さい。
apt-key コマンドを使って公開キーを登録
私が使っている buster の sources.list
# # sources.list for Debian 10 buster # deb http://security.debian.org/ buster/updates main contrib non-free deb-src http://security.debian.org/ buster/updates main contrib non-free deb http://cdn.debian.or.jp/debian buster main contrib non-free deb-src http://cdn.debian.or.jp/debian buster main contrib non-free deb http://cdn.debian.or.jp/debian buster-updates main contrib non-free deb-src http://cdn.debian.or.jp/debian buster-updates main contrib non-free deb http://cdn.debian.or.jp/debian buster-backports main contrib non-free deb-src http://cdn.debian.or.jp/debian buster-backports main contrib non-free
まずは、buster で、apt update ; apt full-upgrade を実行します。
次に、sources.list を、bullseye 用に切り替えます。
# # sources.list for Debian 11 bullseye # deb http://security.debian.org/debian-security bullseye-security main contrib non-free deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free deb http://cdn.debian.or.jp/debian bullseye main contrib non-free deb-src http://cdn.debian.or.jp/debian bullseye main contrib non-free deb http://cdn.debian.or.jp/debian bullseye-updates main contrib non-free deb-src http://cdn.debian.or.jp/debian bullseye-updates main contrib non-free deb http://cdn.debian.or.jp/debian bullseye-backports main contrib non-free deb-src http://cdn.debian.or.jp/debian bullseye-backports main contrib non-free
新しい sources.list で、まずは、apt update ; apt upgrade 次に、apt full-upgrade を実行し、全て正常に終了したら reboot します。
これで、buster から、bullseye へアップグレードされますが、問題の zabbix-agent です。
debian のリポジトリから zabbix-agent をインストールしている場合には、特別な操作はいりません。bullseye 用の zabbix-agent にアップグレードされています。
しかし、zabbix のリポジトリからインストールしている場合、以下の作業が必要となります。
buster の時には、/etc/apt/sources.list.d/zabbix.list は、
deb http://repo.zabbix.com/zabbix/5.0/debian buster main deb-src http://repo.zabbix.com/zabbix/5.0/debian buster main
となっていました。このリポジトリファイルの buster を bullseye へ変更すれば OK のような気がするのですが、なんと、bullseye では 16bit のサポートが無くなり、64bit only との事で、カーネルのバージョンが、5.10.0-19-686-pae のような i386 用では、残念ながら zabbix のリポジトリからのインストールはできません。
/etc/apt/sources.list.d/zabbix.list を削除し、通常の debian リポジトリから、apt install zabbix-agent でインストールします。
64bit で、Linuxがインストールされていれば、/etc/apt/sources.list.d/zabbix.list を変更し、
deb http://repo.zabbix.com/zabbix/5.0/debian bullseye main deb-src http://repo.zabbix.com/zabbix/5.0/debian bullseye main
これで、apt update ; apt install zabbix-agent で、インストールできると思いきや、なんと apt update でエラーです。
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 082AB56BA14FE591
メッセージそのままで、公開キーが登録されてないよ エラーでした。
これは pgp の公開キーサーバからインストールできる筈なので、調べてみました。
pgp といえば、MIT(マサチューセッツ工科大学)のサーバというのがお約束だと思っていたのですが、最近は、keys.openpgp.org が主流のようです。
apt-key adv --keyserver keys.openpgp.org --recv-keys 082AB56BA14FE591
–recv-keys の所には、エラーメッセージの最後にある、082AB56BA14FE591 を指定します。
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.pMpMgml0Gq/gpg.1.sh --keyserver keys.openpgp.org --recv-keys 082AB56BA14FE591
gpg: key 082AB56BA14FE591: public key "Zabbix LLC <packager@zabbix.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
…と結果が表示されれば、無事公開キーの読み込みは完了です。
この操作を一度行えば、apt update でエラーは出ませんし、apt install zabbix-agent も正常に実行されます。
Warning(警告)が出ていますが、ここでは影響がないので無視します。apt-key を使わないで公開キーをインストールする場合には、次項 をご覧下さい。
ちなみに、今日(2022/10/26) zabbix リポジトリからインストールすると 5.0.28 で、debian リポジトリからインストールすると 5.0.8 です。
※バージョンが随分違う(°0°)
公開されているキーサーバはいくつかあるので、zabbix の公開キーが登録されているかどうか、ざっと調べてみました。
Key server (cryptographic) – Wikipedia
keys.openpgp.org OK pgp.mit.edu OK keyring.debian.org NG keyserver.ubuntu.com OK attester.flowcrypt.com NG zimmermann.mayfirst.org NG pgp.surf.nl OK
こんな感じでした。
たしか JPNIC でも、公開キーサーバを動かしていた記憶があったのですが、なんと、2022年9月末でクローズしてました。
pgp.nic.ad.jp サービス終了のお知らせ 2022年9月5日
https://www.nic.ad.jp/ja/topics/2022/20220905-03.html
apt-key を使わないで公開キーを登録する(こちらをお勧め)
apt-key は、現バージョン debian 11 bullseye では使えますが、次のバージョンである debian 12 Bookworm では廃止されるようです。
たしかに、debian リポジトリの検証に使われる keyring ( /etc/apt/trusted.gpg に格納される)に、全く別の団体・企業の公開キーをぶら下げるのは、セキュリティ的に問題が出そうな感じは理解できます。
/etc/apt/trusted.gpg.d の中身
debian-archive-bullseye-automatic.gpg debian-archive-bullseye-security-automatic.gpg debian-archive-bullseye-stable.gpg debian-archive-buster-automatic.gpg debian-archive-buster-security-automatic.gpg debian-archive-buster-stable.gpg debian-archive-stretch-automatic.gpg debian-archive-stretch-security-automatic.gpg debian-archive-stretch-stable.gpg
それでは、apt-key を使わない方法ですが、このやり方が果たして正式なやり方なのかは、正直自信がないので、あくまで参考ということでお願いします。
※私の環境では正常に動作しています。
まずは、debian 正式リポジトリ以外の公開キーを格納するディレクトリを用意します。
mkdir /etc/apt/keyrings
そして、ここへ zabbix リポジトリの公開キーをダウンロードします。
リポジトリに記載されている URL をブラウザで開くと…
https://repo.zabbix.com/
画面の一番下にある zabbix-official-repo.key というファイルをダウンロードします。
cd /etc/apt/keyrings
wget https://repo.zabbix.com/zabbix-official-repo.key
中身はこんな感じです。
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.10 (GNU/Linux) mQGiBFCNJaYRBAC4nIW8o2NyOIswb82Xn3AYSMUcNZuKB2fMtpu0WxSXIRiX2BwC YXx8cIEQVYtLRBL5o0JdmoNCjW6jd5fOVem3EmOcPksvzzRWonIgFHf4EI2n1KJc JXX/nDC+eoh5xW35mRNFN/BEJHxxiRGGbp2MCnApwgrZLhOujaCGAwavGwCgiG4D wKMZ4xX6Y2Gv3MSuzMIT0bcEAKYn3WohS+udp0yC3FHDj+oxfuHpklu1xuI3y6ha 402aEFahNi3wr316ukgdPAYLbpz76ivoouTJ/U2MqbNLjAspDvlnHXXyqPM5GC6K jtXPqNrRMUCrwisoAhorGUg/+S5pyXwsWcJ6EKmA80pR9HO+TbsELE5bGe/oc238 --- 中略 --- UIukhErLuo1YPWqFABEBAAGJAR8EGAECAAkFAleIdv0CGwwACgkQCCq1a6FP5ZH8 +wf/erZneDXqM6xYT8qncFpc1GtOCeODNb19Ii22lDEXd9qNUlAz2SB6zC5oywln R0o1cglcrW96MD/uuCL/+tTczeB2C455ofs2mhpK7nKiA4FM+JZZ6XSBnq7sfsYD 6knbvS//SXQV/qYb4bKMvwYnyMz63escgQhOsTT20ptc/w7fC+YPBR/rHImKspyI wxyqU8EXylFW8f3Ugi2+Fna3CAPR9yQIAChkCjUawUa2VFmm5KP8DHg6oWM5mdqc pvU5DMqpi8SA26DEFvULs8bR+kgDd5AU3I4+ei71GslOdfk4s1soKT4X2UK+dCCX ui+/5ZJHakC67t5OgbMas3Hz4Q== =HHRW -----END PGP PUBLIC KEY BLOCK-----
公開キーに関しては、apt 1.4 以降であれば(現バージョンは 2.2.4)アスキーファイル(単なるテキスト)を扱えるので、実はこのまま、バイナリーに変換しなくても使えます。
最後に、/etc/apt/sources.list.d/ にある、zabbix.list を変更します。
deb [signed-by=/etc/apt/keyrings/zabbix-official-repo.key] https://repo.zabbix.com/zabbix/5.0/debian bullseye main deb-src [signed-by=/etc/apt/keyrings/zabbix-official-repo.key] https://repo.zabbix.com/zabbix/5.0/debian bullseye main
参照するリポジトリを指定する sources.list に、該当リポジトリの検証に使う公開キーを個別に指定する感じです。
このように apt-key コマンドを使わないで、新しいリポジトリの公開キーを設定することができ、apt update で、NO_PUBKEY のエラーは出なくなります。