CentOS: GPG Keys Not Imported - Troubleshooting Repository Verification Errors
Problem: You're trying to install software on your CentOS system, but you're encountering an error message like "GPG key not found" or "Cannot verify repomd.xml for repo." This indicates your system can't verify the authenticity of the software packages in a specific repository, preventing you from installing them.
Simplified Explanation: Imagine downloading a software package from a friend. You want to be sure it's safe and hasn't been tampered with, so you ask for their digital "fingerprint" (a unique key) to verify the package's authenticity. In this case, the "fingerprint" is the GPG key. If your system can't find the key, it can't verify the package and refuses to install it.
Scenario:
Let's say you're trying to install the latest version of the 'yum-utils' package using the EPEL (Extra Packages for Enterprise Linux) repository. Your yum
command throws the following error:
Error: GPG check FAILED for file:///etc/yum.repos.d/epel.repo
(1) Cannot verify repomd.xml for repository: epel.repo
(2) GPG keys not found for repository: epel.repo
Code:
Your /etc/yum.repos.d/epel.repo
file might look like this:
[epel]
name=Extra Packages for Enterprise Linux 7 - x86_64
# baseurl=http://download.fedoraproject.org/pub/epel/7/x86_64
baseurl=http://mirror.centos.org/epel/7/x86_64
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
enabled=1
gpgcheck=1
Analysis:
The issue is likely due to one of the following:
- Missing GPG Key: The GPG key file specified in
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
is missing or corrupt. - Incorrect Key Location: The key might exist in a different location than specified in the repo file.
- Key Not Imported: Even if the key exists, it might not be imported into your system's keyrings, preventing verification.
Troubleshooting:
-
Verify the Key File:
- Check its existence: Ensure that the file at
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exists. - Verify its contents: Open the file and check if it contains valid GPG key data.
- Check its existence: Ensure that the file at
-
Update the Key Location (if necessary):
- Find the correct location: If the key exists in a different location, change the
gpgkey
directive in yourepel.repo
file to reflect the correct path. - Common Key Locations:
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
(for CentOS 6)/usr/share/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
- Find the correct location: If the key exists in a different location, change the
-
Import the Key:
- Import the Key: Use the
rpm --import
command to import the key into your system's keyrings. For example:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
- Import the Key: Use the
-
Refresh Package Lists:
- Update Repository Metadata: After importing the key, refresh your repository metadata to ensure the new key is recognized by
yum
:yum clean all yum makecache
- Update Repository Metadata: After importing the key, refresh your repository metadata to ensure the new key is recognized by
Additional Information:
- Multiple Repositories: If you're working with multiple repositories, make sure the GPG key for each repository is correctly configured and imported.
- Trust Issues: If you're unsure about the source of the repository or the GPG key, be cautious. Trusting unknown keys can potentially introduce security vulnerabilities.
- Outdated System: Ensure your system's packages are up to date, as outdated package management tools might not properly handle GPG key verification.
Resources:
- EPEL Repository Documentation: https://fedoraproject.org/wiki/EPEL
- RPM Package Manager Documentation: https://rpm.org/docs/
- CentOS Documentation: https://docs.centos.org/
By following these steps and understanding the underlying causes of the issue, you can resolve GPG key issues and ensure your CentOS system can safely and reliably install software packages.