突然、「apt-keyの実行中に不明なエラーが発生しました」という理由で、サーバーは「aptの更新」を拒否します。

突然、「apt-keyの実行中に不明なエラーが発生しました」という理由で、サーバーは「aptの更新」を拒否します。

質問

更新:現在straceの使用を調査中です。問題は、リポジトリにアクセスするとHTTP 400エラーのようです。

更新2:サーバーでエラーが発生しました(.so libファイルが破損し、データベースエンジンが「不明なエラー」と表示されます)。したがって、この問題はハードウェアのバグによるものです。

Unknown error executing apt-key

たとえば、apt update実行スニペットは次のとおりです。

[...]
Get:3 http://deb.debian.org/debian buster-updates InRelease [56,6 kB] 
[...]
Err:3 http://deb.debian.org/debian buster-updates InRelease
  Unknown error executing apt-key
[...]
W: GPG error: http://deb.debian.org/debian buster-updates InRelease: Unknown error executing apt-key
E: The repository 'http://deb.debian.org/debian buster-updates InRelease' is not signed.
[...]

これはずっと前からうまくいき、一晩の間に起こり始めました。サーバーには特別な操作はありません。

ほぼ同じ構成の別のサーバーがありますが、正常に動作します。

apt およびシステムログに関連エントリがありません。

私が試したこと

削除して/var/lib/apt信頼できるキーを確認する必要があるという投稿と同様の方法があります。誰も働かなかった。

出力を確認しましたapt-key list。リストは正常に動作している他のサーバーとほぼ同じでした。他のサーバーにはJenkinsリポジトリのもう1つのキーがありました。

出力は次のとおりです。

/etc/apt/trusted.gpg.d/debian-archive-bullseye-security-automatic.gpg
---------------------------------------------------------------------
pub   rsa4096 2021-01-17 [SC] [expires: 2029-01-15]
      AC53 0D52 0F2F 3269 F5E9  8313 A484 4904 4AAD 5C5D
uid           [ unknown] Debian Security Archive Automatic Signing Key (11/bullseye) <[email protected]>
sub   rsa4096 2021-01-17 [S] [expires: 2029-01-15]

/etc/apt/trusted.gpg.d/debian-archive-bullseye-stable.gpg
---------------------------------------------------------
pub   rsa4096 2021-02-13 [SC] [expires: 2029-02-11]
      A428 5295 FC7B 1A81 6000  62A9 605C 66F0 0D6C 9793
uid           [ unknown] Debian Stable Release Key (11/bullseye) <[email protected]>

/etc/apt/trusted.gpg.d/debian-archive-buster-automatic.gpg
----------------------------------------------------------
pub   rsa4096 2019-04-14 [SC] [expires: 2027-04-12]
      80D1 5823 B7FD 1561 F9F7  BCDD DC30 D7C2 3CBB ABEE
uid           [ unknown] Debian Archive Automatic Signing Key (10/buster) <[email protected]>
sub   rsa4096 2019-04-14 [S] [expires: 2027-04-12]

/etc/apt/trusted.gpg.d/debian-archive-buster-security-automatic.gpg
-------------------------------------------------------------------
pub   rsa4096 2019-04-14 [SC] [expires: 2027-04-12]
      5E61 B217 265D A980 7A23  C5FF 4DFA B270 CAA9 6DFA
uid           [ unknown] Debian Security Archive Automatic Signing Key (10/buster) <[email protected]>
sub   rsa4096 2019-04-14 [S] [expires: 2027-04-12]

ほぼ同じ設定(同じDebian 10 OS、非常に似たインストールパッケージなど)を持つ別のサーバーがあるため、必須にそのサーバーとフォルダをこの障害のあるサーバー/var/lib/apt/ec/aptコピーしようとしました。エラーが続きます。

GPGが間違っているのではないかと疑われ、再インストールしてみました。 Debianリポジトリからパッケージをダウンロードし、dpkgを使用してインストールしました。結果は同じですが、問題は持続します。

適切なデバッグを有効にする:ワーカーサーバーとの違い

適切なデバッグを有効にできます。私の場合は、次を使用します。

apt -o Debug::Acquire::http=false -o Debug::Hashes=true -o Debug::pkgAcquire::Auth=true -o Debug::sourceList=true  update

興味深いです。すべてのソースにコメントを付けましたが、deb http://deb.debian.org/debian buster main contrib non-free障害のあるサーバーは次のものを生成します。

# apt -o Debug::Acquire::http=false -o Debug::Hashes=true -o Debug::pkgAcquire::Auth=true -o Debug::sourceList=true  update
Get:1 http://deb.debian.org/debian buster InRelease [122 kB]
201 URI Done: http://deb.debian.org/debian/dists/buster/InRelease
ReceivedHash:
        - SHA512:c65abc258e9ecc7e506133502add58d9c451bc11c3dd9bf7f23a0d58fb0f7747cc75bee22e58dece5af63f6a1cc7dd7c150a383fbd79ce23655c7aca6c32b78c
        - SHA256:45420bba913bb4d35b98319d893d9db2bc0c4034a12c65f07118dd36ee4cea86
        - SHA1:dcbc9207da6730f5a268f7c8f452ad62f0fd9705
        - MD5Sum:2f497e0885083bf377d7f5cafe9b1762
        - Checksum-FileSize:121570
ExpectedHash:

Err:1 http://deb.debian.org/debian buster InRelease
  Unknown error executing apt-key
Reading package lists... Done
W: GPG error: http://deb.debian.org/debian buster InRelease: Unknown error executing apt-key
E: The repository 'http://deb.debian.org/debian buster InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

ただし、ジョブサーバーは次のように出力します。

# apt -o Debug::Acquire::http=false -o Debug::Hashes=true -o Debug::pkgAcquire::Auth=true -o Debug::sourceList=true  update
0% [Working]201 URI Done: http://deb.debian.org/debian/dists/buster/InRelease
ReceivedHash:
ExpectedHash:

Hit:1 http://deb.debian.org/debian buster InRelease
0% [Working]201 URI Done: http://deb.debian.org/debian/dists/buster/InRelease
ReceivedHash:
ExpectedHash:

Signature verification succeeded: /var/lib/apt/lists/deb.debian.org_debian_dists_buster_InRelease
Got Codename: buster
Got Suite: oldstable
Expecting Dist: buster
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.

ご覧のとおり、失敗したサーバーは一部のハッシュを受け取ったようですが、予想されるハッシュはまったく受信していませんが、稼働中のサーバーにはハッシュがまったくありません。

他のソースはどうですか?を使用しようとすると、deb http://deb.debian.org/debian buster-updates main contrib non-free障害のあるサーバーは次のように出力します。

# apt -o Debug::Acquire::http=false -o Debug::Hashes=true -o Debug::pkgAcquire::Auth=true -o Debug::sourceList=true  update
Get:1 http://deb.debian.org/debian buster-updates InRelease [56,6 kB]
0% [1 InRelease 56,6 kB/56,6 kB 100%]201 URI Done: http://deb.debian.org/debian/dists/buster-updates/InRelease
ReceivedHash:
        - SHA512:3542a4de41bdffba0631f27efdf2dd69602b77b1dd7362285527d3e96d22daaae1165979fc83a740049e2c54de455f798c07f0120baeafd316dd2e9efd68faab
        - SHA256:65d8f69e329505a4abdc3968778e36adae20b8542eed9745c60c47bc90ea4c05
        - SHA1:e901931cf25b06819fe1a653b39621b5e42a0109
        - MD5Sum:db7403e0f919a66b1e05ed537962d333
        - Checksum-FileSize:56621
ExpectedHash:

Err:1 http://deb.debian.org/debian buster-updates InRelease
  Unknown error executing apt-key
Reading package lists... Done
W: GPG error: http://deb.debian.org/debian buster-updates InRelease: Unknown error executing apt-key
E: The repository 'http://deb.debian.org/debian buster-updates InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

以前とほぼ同じエラーです。 ReceiverdHashには複数のキーが含まれていますが、ExpectedHashにはNULL値があります。

ワーカーサーバーはどうですか?次のように出力されます。

# apt -o Debug::Acquire::http=false -o Debug::Hashes=true -o Debug::pkgAcquire::Auth=true -o Debug::sourceList=true  update
Get:1 http://deb.debian.org/debian buster-updates InRelease [56,6 kB]
0% [1 InRelease 16,4 kB/56,6 kB 29%]201 URI Done: http://deb.debian.org/debian/dists/buster-updates/InRelease
ReceivedHash:
        - SHA512:3542a4de41bdffba0631f27efdf2dd69602b77b1dd7362285527d3e96d22daaae1165979fc83a740049e2c54de455f798c07f0120baeafd316dd2e9efd68faab
        - SHA256:65d8f69e329505a4abdc3968778e36adae20b8542eed9745c60c47bc90ea4c05
        - SHA1:e901931cf25b06819fe1a653b39621b5e42a0109
        - MD5Sum:db7403e0f919a66b1e05ed537962d333
        - Checksum-FileSize:56621
ExpectedHash:

0% [Working]201 URI Done: http://deb.debian.org/debian/dists/buster-updates/InRelease
ReceivedHash:
ExpectedHash:

Signature verification succeeded: /var/lib/apt/lists/partial/deb.debian.org_debian_dists_buster-updates_InRelease

....ダウンロードする他のファイルには他の行がたくさんありますが、この質問には興味がないようです。

この場合、ワーカーサーバーはReceiverdHashのハッシュ値とExpectedHashのnull値も受け取ります。

ストレージにアクセスすると400エラー

さて、もっと深く掘り下げてみましょう。を試してみましょうstrace。面白い部分は次のとおりです。

lchown("/var/lib/apt/lists/partial/deb.debian.org_debian_dists_buster-updates_InRelease", 100, 0) = 0
lstat("/var/lib/apt/lists/partial/deb.debian.org_debian_dists_buster-updates_InRelease", {st_mode=S_IFREG|0644, st_size=56621, ...}) = 0
chmod("/var/lib/apt/lists/partial/deb.debian.org_debian_dists_buster-updates_InRelease", 0600) = 0
rt_sigprocmask(SIG_BLOCK, [WINCH], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
0% [Working])   = 18% [Working]", 18
write(1, "\33[0m", 4)                   = 4
select(11, [5 6], [10], NULL, {tv_sec=0, tv_usec=500000}) = 1 (out [10], left {tv_sec=0, tv_usec=499997})
write(10, "601 Configuration\nConfig-Item: A"..., 11121) = 11121
select(7, [5 6], [], NULL, {tv_sec=0, tv_usec=499997}) = 1 (in [6], left {tv_sec=0, tv_usec=364398})
read(6, "400 URI Failure\nMessage: Unknown"..., 64000) = 148
stat("/var/lib/apt/lists/partial/deb.debian.org_debian_dists_buster-updates_InRelease", {st_mode=S_IFREG|0600, st_size=56621, ...}) = 0
getuid()                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 7
connect(7, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = 0
sendto(7, "\2\0\0\0\0\0\0\0\5\0\0\0root\0", 17, MSG_NOSIGNAL, NULL, 0) = 17
poll([{fd=7, events=POLLIN|POLLERR|POLLHUP}], 1, 5000) = 1 ([{fd=7, revents=POLLIN}])

具体的には、次の行は次のとおりです。

read(6, "400 URI Failure\nMessage: Unknown"..., 64000) = 148

転送中にエラーが発生したようです。

今何をすべきですか?

HTTPエラーの詳細についてはどうすればよいですか? 400を返す要求を模倣するためにapt-keyを使用できますか?この問題を解決するにはどうすればよいですか(GPGフラグの確認を無視することに加えて)。それとも、問題の根本原因を見つけるために他のどのテストを実行できますか?

ベストアンサー1

ストレージミラーリングエラーの被害者である可能性があります。または、Webフィルタ(サイトにフィルタがある場合)によってシステムがDebianリポジトリにアクセスできない可能性があります。deb.debian.org最も近い Debian リポジトリに接続しようとする GeoIP リダイレクタです。 Webフィルタは、リダイレクタがユーザーに送信できるすべてのアドレスを完全に理解していない可能性があります。

InReleaseファイルは、次の方法で手動でダウンロードできます。

wget http://ftp.debian.org/debian/dists/buster/InRelease

または

curl http://ftp.debian.org/debian/dists/buster/InRelease > InRelease

私が知る限り、生成されたファイルは2022年9月10日以降に変更されず、サイズは正確に121570バイトでなければなりません。これは、その日Debian 10.12がリリースされ、バージョンにラベルが付けられたという事実と一致しています。Debian 10 は長期サポートに切り替わります。

結果ファイルは、次から始まるPGP署名テキストファイルでなければなりません。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Origin: Debian
Label: Debian
Suite: oldstable
Version: 10.13
Codename: buster
Changelogs: http://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog
Date: Sat, 10 Sep 2022 11:30:54 UTC
Acquire-By-Hash: yes

他の結果が出た場合は、ローカルのWebフィルタプロキシ(サイトにある場合)の通知ページである可能性があり、リンクされたミラーサイトにディスクエラーが発生してファイルを完全に再ミラー化していない可能性があります。ファイルが不完全な可能性があります。あなたのstraceはstat()システムコールがreturn中であることを示すst_size=56621ので、不完全なファイルや他のファイルを取得しているようです。

生成されたファイルがHTMLファイルのように見える場合は、名前を変更してsomething.htmlWebブラウザを使用して表示します。通知がローカル Web フィルタから来る場合は、フィルタ管理者に問い合わせる必要があります。他のHTMLエラーページの場合、リポジトリはdeb.debian.org特定のエラーが発生した可能性があることを示します。

リポジトリが変更されるまで待つことができない場合は、いつでも次をご覧ください。https://www.debian.org/mirror/listそして、1つまたは2つの近いミラーを選択して一時的に代わりにsources.list使用するように設定し、deb.debian.org問題のあるリポジトリを解決してください。

おすすめ記事