Upgrade from 33 to 34 fails in Software app with "could not do untrusted question as no klass support" error

This is still a problem in Fedora 33. There are some older posts about this and there is a fix being worked on by Gnome. For me, the problem is caused by the rpmsphere and rpmsphere-noarch repos, because they have gpgcheck set to 0. Disabling these repos fixes the problem:

sudo dnf config-manager --set-disabled rpmsphere rpmsphere-noarch

Any repo with gpgcheck=0 will cause the problem. This script will fix them all:

#!/usr/bin/env perl

# Attempts to fix the error: "could not do untrusted question as no klass
# support"
# Bill Chatfield - GPL2

# The problem is caused by repos that have GPG disabled, probably because
# their packages are unsigned. The gpgcheck=0 in repo file is the direct 
# cause of the error. But, you can't just set it to 1 because then any 
# packages will fail to upgrade because they're likely unsigned.

my $iniPackage = "perl-Config-INI";
my $isIniInstalled = (system("rpm --query --quiet $iniPackage") >> 8) == 0;
if (! $isIniInstalled) {
    print "Required package $iniPackage will be installed.\n";
    system("sudo dnf install $iniPackage");
}

use Config::INI::Reader;

my @repoFiles=`grep -lw 'gpgcheck=0' /etc/yum.repos.d/*`;
my $foundRepoToDisable = 0;
for my $repoFile (@repoFiles) {
    chomp($repoFile);
    my $conf = Config::INI::Reader->read_file($repoFile);
    for my $repoName (keys(%$conf)) {
        my $repoProps = $conf->{$repoName};
        if ($repoProps->{gpgcheck} == 0 && $repoProps->{enabled} == 1) {
            $foundRepoToDisable = 1;
            print "The $repoName repo has gpgcheck turned off, so it will be disabled.\n";
            system("sudo dnf config-manager --set-disabled $repoName");
        }
    }
}

if (! $foundRepoToDisable) {
    print "All repos are ready for upgrade.\n";
}

Also here.

2 Likes

Thank you for the fix! I used the idea from your Perl script to fix the problem. On my system it was the slack repository that caused the problem.

2 Likes