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 を使わないで公開キーをインストールする場合には、次項 をご覧下さい。

上記コマンドを実行する前に、apt install gnupg を、お忘れなく!
James porter Bridges
James porter Bridges

ちなみに、今日(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 Repository
画面の一番下にある 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 のエラーは出なくなります。

 References

    1. apt-key が非推奨になったので
    2. 非推奨となったapt-keyの代わりにsigned-byとgnupgを使う方法
    3. Handling “apt-key is deprecated. Manage keyring files in trusted.gpg.d instead” in Ubuntu Linux