質問
更新:現在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.html
Webブラウザを使用して表示します。通知がローカル Web フィルタから来る場合は、フィルタ管理者に問い合わせる必要があります。他のHTMLエラーページの場合、リポジトリはdeb.debian.org
特定のエラーが発生した可能性があることを示します。
リポジトリが変更されるまで待つことができない場合は、いつでも次をご覧ください。https://www.debian.org/mirror/listそして、1つまたは2つの近いミラーを選択して一時的に代わりにsources.list
使用するように設定し、deb.debian.org
問題のあるリポジトリを解決してください。
答え2
リカバリディスクで再起動した後、EXT4ファイルシステムを確認しましたが、何百ものfsck
エラーがありました。
その後、破損したバイナリを修正するためにインストールされたすべてのパッケージを再インストールしました。
その後、適切なエラーが消えました。これはapt
。
SSDを更新するのは難しいので、最終的に別のサーバーに切り替える必要がありました。バックアップは有効であり、この事故中にデータが破損していません。