On some RHEL 10.1 installs users are running into this error, post-install, when attempting to install packages via dnf.
Unsure if the issue is isolated to users attempting to install RHEL via the full DVD ISO, from the minimal boot ISO, and users deploying RHEL 10.1 via kickstart.
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
The GPG keys listed for the "Red Hat Enterprise Linux 10 for x86_64 - AppStream (RPMs)" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.. Failing package is: gnupg2-smime-2.4.5-3.el10_1.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'yum clean packages'.
Error: GPG check FAILED
I am currently aware of two workaround, one manual, one much more simple. Details below
Workaround #1 (Simple)
Use dnf to install new GPG keys used via dnf
$ sudo dnf update redhat-release
After doing so you should run the following
$ sudo dnf clean all
You should now be able to update RHEL and install additional RPMs.
Workaround #2 (manual)
You can delete the current key in “/etc/pki/rpm-gpg”
Delete the following
RPM-GPG-KEY-redhat-release
RPM-GPG-KEY-redhat-beta (if applicable)
Then SCP known working copies of the keys that you just deleted from a RHEL 10.1 host that is not experiencing this issue. I would suspect an earlier build of RHEL 10.1 or possibly a later build or RHEL 10.1 once available will not experience this issue.
In my personal lab I do not have a network managed UPS. My rack mount UPS can only be monitored via USB from a directly connected host.
This guide details the installation and configuration of Network UPS Tools (NUT) to monitor a Tripp Lite USB PDU and prepare it for Zabbix integration.
Prerequisites & Installation
Install the necessary NUT packages. RHEL 10 uses the 2.8.x branch, which introduces an “instantiated” service model.
sudo dnf install nut nut-client nut-server
Directory Structure Setup
RHEL 10 defaults to /etc/ups, we will use /etc/nut to ensure our configuration files are in the correct location and we will create a symbolic link for legacy compatibility.
# Move config if it exists in the old /etc/ups locationsudo mkdir -p /etc/nutsudo mv /etc/ups/* /etc/nut/ 2>/dev/nullsudo ln -s /etc/nut /etc/ups
Configuration Files
The following files in /etc/nut/ must be configured:
nut.conf
Set the operation mode:
MODE=netserver
NUT (Network UPS Tools) Netserver Mode is a configuration where one machine (the server) connects to a UPS, monitors it, and then broadcasts the power status and alerts (like “on battery”) across the local network
ups.conf
Define the hardware driver. Note the exact spelling of the section name [tripplite].
[tripplite]
driver = usbhid-ups
port = auto
desc = "Tripp Lite USB PDU"
upsd.conf
Control network listening. To allow remote connections (like from a Zabbix server), you must listen on the host’s IP or all interfaces (0.0.0.0).
sudo udevadm control --reload-rules && sudo udevadm trigger
Firewall
You need to allow inbound port 3493 since we want to be able to poll the ups remotely from a Zabbix host.
# Open port 3493 permanently
sudo firewall-cmd --permanent --add-port=3493/tcp
sudo firewall-cmd --reload
Service Management
RHEL 10 uses a specific sequence. You must trigger the “enumerator” to generate the systemd units for your specific PDU name.
# Force the system to recognize the [tripplite] section
sudo /usr/libexec/nut-driver-enumerator.sh
# Enable and start the driver instance
sudo systemctl enable --now nut-driver@tripplite.service
# Start the data server and monitoring daemon
sudo systemctl enable --now nut-server.service
sudo systemctl enable --now nut-monitor.service
Manual Check Commands
Use these commands to verify health:
Command
Purpose
upsc -l
Lists all configured UPS/PDU devices.
upsc tripplite@localhost
Dumps all current PDU metrics (voltage, load, etc.).
systemctl status nut-driver@tripplite
Checks if the USB driver is active and running.
journalctl -u nut-driver@tripplite -f
Follow live logs if the USB connection drops.
Test Remotely
From another host, install the nut-client. If this step does not work, but the same commands worked locally, you should double check your Firewall settings.
$ sudo apt install nut-client
And test
$ upsc tripplite@10.1.10.21
Prepare the Zabbix Agent Permissions
To allow Zabbix to collect this data automatically. Run the two commands below on the host connected to UPS via USB
Lets create a simple template for zabbix. Follow the steps shown below.
Manual Item Creation
If you just want the most important metrics, go to your Host in Zabbix and create these Items:
Name
Type
Key
Type of Information
PDU Load
Zabbix Agent
nut.ups.value[tripplite,ups.load]
Numeric (float)
Input Voltage
Zabbix Agent
nut.ups.value[tripplite,input.voltage]
Numeric (float)
Battery Charge
Zabbix Agent
nut.ups.value[tripplite,battery.charge]
Numeric (float)
PDU Status
Zabbix Agent
nut.ups.value[tripplite,ups.status]
Character
Configuring SELinux
If you check the zabbix webui, you are going to see some failures, as we need to configure selinux.
Note that we configured Zabbix “items” first so that we would be able to capture the failures in the audit log and generate a policy.
So now that we have failures, we can tell RHEL to look at all recent security denials involving the zabbix_agent and write a “policy” that allows those specific actions.
# Search the audit log for zabbix-related denials and create a policy module
grep "zabbix" /var/log/audit/audit.log | audit2allow -M zabbix_nut_final
Install the Policy
The previous command created a file called zabbix_nut_final.pp. Now, load it into the kernel:
semodule -i zabbix_nut_final.pp
You should now see data returning in the Zabbix WebUI. You may need to wait a few second or re-run the check.