apt update fails: “Failed to parse keyring /usr/share/keyring/kali-archive-keyring.gpg: No such file or directory”

I installed Kali Linux 2026.3 from an official ISO, and right after install, sudo apt update fails with this error:

Err:2 http://kali.darklab.sh/kali kali-rolling InRelease Sub-process /usr/bin/sqv returned an error code (1), error message is: Error: Failed to parse keyring "/usr/share/keyring/kali-archive-keyring.gpg" Caused by: 0: Reading "/usr/share/keyring/kali-archive-keyring.gpg": No such file or directory

The file /usr/share/keyring/kali-archive-keyring.gpg does not exist on my system, but dpkg -l kali-archive-keyring shows the package (version 2025.2) as installed with status ii. My root filesystem is only 35% full, and third-party repositories (Brave browser) update without any errors.

Why would the keyring file be missing even though the package appears to be installed, and how do I get apt working again?

EDIT
SOLVED
The issue was a one-character path mismatch. Kali stores its archive keyring in /usr/share/keyrings/ (plural), but my /etc/apt/sources.list.d/kali.sources had:

Signed-By: /usr/share/keyring/kali-archive-keyring.gpg

— the singular directory, which didn’t exist on my system at all. So apt’s signature verifier (sqv) couldn’t find the keyring, failed verification, and refused to update even though the kali-archive-keyring package was installed and healthy (which is why dpkg -l showed no problems, and reinstalling the package changed nothing).

Fix — either point Signed-By: at the correct location:

Signed-By: /usr/share/keyrings/kali-archive-keyring.gpg

or recreate the missing directory and copy the keyring into it:

sudo mkdir -p /usr/share/keyring
sudo cp /usr/share/keyrings/kali-archive-keyring.gpg /usr/share/keyring/
sudo apt update

I used the first option and sudo apt update now works cleanly.

Key takeaway for anyone hitting the sqv: Failed to parse keyring … No such file or directory error: check both /usr/share/keyring/ and /usr/share/keyrings/ to see where the file actually lives, and make sure the Signed-By: path in your sources file matches it exactly. Thanks to everyone who helped narrow it down!