Fedora 36: I can't open settings, and I can't update!

can you check the output of:
rpm -qa \*gpg\*

Depending on what you have installed you should see something like:

gpg-pubkey-38ab71f4-60242b08
libgpg-error-1.45-1.fc36.x86_64
fedora-gpg-keys-36-4.noarch
gpgmepp-1.17.0-4.fc36.x86_64
distribution-gpg-keys-1.77-1.fc36.noarch
gpgme-1.17.0-4.fc36.x86_64
python3-gpg-1.17.0-4.fc36.x86_64

You could also try reinstalling, the package is gpgme-1.17.0-4.fc36 | Build Info | koji

My best guess would be you’d want to start with downloading python3-gpg-1.17.0-4.fc36.x86_64.rpm

After downloading you’d want to reinstall with:
sudo rpm -i --reinstall python3-gpg-1.17.0-4.fc36.x86_64.rpm

1 Like

I think I noted another similar error and there the problem was that for some reason python was using the module “/usr/lib/python3.10/site-packages/dnf/crypto.py” and expected to find "/usr/lib/python3.10/site-packages/dnf/gpgme.py` when gpgme was in the path “/usr/lib64/python3.10/site-packages/dnf/”

What is the content of /usr/lib/python3.10/site-packages/dnf/crypto.py?. Maybe this is an error introduced by an incomplete update somehow.

Please post the output of cat /usr/lib/python3.10/site-packages/dnf/crypto.py. It should only be about 208 lines of text.

Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/dnf/crypto.py", line 35, in <module>
    from gpg import Context
  File "/usr/lib64/python3.10/site-packages/gpg/__init__.py", line 123, in <module>
    from . import core
  File "/usr/lib64/python3.10/site-packages/gpg/core.py", line 10, in <module>
    from . import gpgme
  File "/usr/lib64/python3.10/site-packages/gpg/gpgme.py", line 13, in <module>
    from . import _gpgme
ImportError: /usr/lib64/python3.10/site-packages/gpg/_gpgme.cpython-310-x86_64-linux-gnu.so: undefined symbol: gpgme_op_receive_keys, version GPGME_1.0

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/dnf", line 61, in <module>
    from dnf.cli import main
  File "/usr/lib/python3.10/site-packages/dnf/__init__.py", line 30, in <module>
    import dnf.base
  File "/usr/lib/python3.10/site-packages/dnf/base.py", line 35, in <module>
    from dnf.db.history import SwdbInterface
  File "/usr/lib/python3.10/site-packages/dnf/db/history.py", line 28, in <module>
    from dnf.yum import misc
  File "/usr/lib/python3.10/site-packages/dnf/yum/misc.py", line 29, in <module>
    import dnf.crypto
  File "/usr/lib/python3.10/site-packages/dnf/crypto.py", line 38, in <module>
    import gpgme
ModuleNotFoundError: No module named 'gpgme'

Output of rpm -qa *gpg* :

gpg-pubkey-9867c58f-601c49ca
gpg-pubkey-64487e24-6106de44
gpg-pubkey-c5b0135c-61427f84
gpg-pubkey-d651ff2e-5dadbbc1
gpg-pubkey-94843c65-5dadbc64
libgpg-error-1.45-1.fc36.x86_64
gpgme-1.15.1-6.fc36.x86_64
libgpg-error-1.45-1.fc36.i686
gpg-pubkey-c2d4e821-6285304f
gpg-pubkey-38ab71f4-60242b08
fedora-gpg-keys-36-4.noarch
distribution-gpg-keys-1.77-1.fc36.noarch
gpgme-1.17.0-4.fc36.x86_64
python3-gpg-1.17.0-4.fc36.x86_64

I installed the package, and it’s installed, but nothing has changed.

# Keys and signatures.
#
# Copyright (C) 2014  Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions of
# the GNU General Public License v.2, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY expressed or implied, including the implied warranties of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
# Public License for more details.  You should have received a copy of the
# GNU General Public License along with this program; if not, write to the
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.  Any Red Hat trademarks that are incorporated in the
# source code or documentation are not subject to the GNU General Public
# License and may only be used or replicated with the express permission of
# Red Hat, Inc.
#

from __future__ import print_function
from __future__ import absolute_import
from __future__ import unicode_literals
from dnf.i18n import _
import contextlib
import dnf.pycomp
import dnf.util
import dnf.yum.misc
import io
import logging
import os
import tempfile

try:
    from gpg import Context
    from gpg import Data
except ImportError:
    import gpgme


    class Context(object):
        def __init__(self):
            self.__dict__["ctx"] = gpgme.Context()

        def __enter__(self):
            return self

        def __exit__(self, type, value, tb):
            pass

        @property
        def armor(self):
            return self.ctx.armor

        @armor.setter
        def armor(self, value):
            self.ctx.armor = value

        def op_import(self, key_fo):
            if isinstance(key_fo, basestring):
                key_fo = io.BytesIO(key_fo)
            self.ctx.import_(key_fo)

        def op_export(self, pattern, mode, keydata):
            self.ctx.export(pattern, keydata)

        def __getattr__(self, name):
            return getattr(self.ctx, name)


    class Data(object):
        def __init__(self):
            self.__dict__["buf"] = io.BytesIO()

        def __enter__(self):
            return self

        def __exit__(self, type, value, tb):
            pass

        def read(self):
            return self.buf.getvalue()

        def __getattr__(self, name):
            return getattr(self.buf, name)


GPG_HOME_ENV = 'GNUPGHOME'
logger = logging.getLogger('dnf')


def _extract_signing_subkey(key):
    return dnf.util.first(subkey for subkey in key.subkeys if subkey.can_sign)


def _printable_fingerprint(fpr_hex):
    segments = (fpr_hex[i:i + 4] for i in range(0, len(fpr_hex), 4))
    return " ".join(segments)


def import_repo_keys(repo):
    gpgdir = repo._pubring_dir
    known_keys = keyids_from_pubring(gpgdir)
    for keyurl in repo.gpgkey:
        for keyinfo in retrieve(keyurl, repo):
            keyid = keyinfo.id_
            if keyid in known_keys:
                logger.debug(_('repo %s: 0x%s already imported'), repo.id, keyid)
                continue
            if not repo._key_import._confirm(keyinfo):
                continue
            dnf.yum.misc.import_key_to_pubring(
                keyinfo.raw_key, keyinfo.short_id, gpgdir=gpgdir,
                make_ro_copy=False)
            logger.debug(_('repo %s: imported key 0x%s.'), repo.id, keyid)


def keyids_from_pubring(gpgdir):
    if not os.path.exists(gpgdir):
        return []

    with pubring_dir(gpgdir), Context() as ctx:
        keyids = []
        for k in ctx.keylist():
            subkey = _extract_signing_subkey(k)
            if subkey is not None:
                keyids.append(subkey.keyid)
        return keyids


def log_key_import(keyinfo):
    msg = (_('Importing GPG key 0x%s:\n'
             ' Userid     : "%s"\n'
             ' Fingerprint: %s\n'
             ' From       : %s') %
           (keyinfo.short_id, keyinfo.userid,
            _printable_fingerprint(keyinfo.fingerprint),
            keyinfo.url.replace("file://", "")))
    logger.critical("%s", msg)


def log_dns_key_import(keyinfo, dns_result):
    log_key_import(keyinfo)
    if dns_result == dnf.dnssec.Validity.VALID:
        logger.critical(_('Verified using DNS record with DNSSEC signature.'))
    else:
        logger.critical(_('NOT verified using DNS record.'))

@contextlib.contextmanager
def pubring_dir(pubring_dir):
    orig = os.environ.get(GPG_HOME_ENV, None)
    os.environ[GPG_HOME_ENV] = pubring_dir
    try:
        yield
    finally:
        if orig is None:
            del os.environ[GPG_HOME_ENV]
        else:
            os.environ[GPG_HOME_ENV] = orig


def rawkey2infos(key_fo):
    pb_dir = tempfile.mkdtemp()
    keyinfos = []
    with pubring_dir(pb_dir), Context() as ctx:
        ctx.op_import(key_fo)
        for key in ctx.keylist():
            subkey = _extract_signing_subkey(key)
            if subkey is None:
                continue
            keyinfos.append(Key(key, subkey))
        ctx.armor = True
        for info in keyinfos:
            with Data() as sink:
                ctx.op_export(info.id_, 0, sink)
                sink.seek(0, os.SEEK_SET)
                info.raw_key = sink.read()
    dnf.util.rm_rf(pb_dir)
    return keyinfos


def retrieve(keyurl, repo=None):
    if keyurl.startswith('http:'):
        logger.warning(_("retrieving repo key for %s unencrypted from %s"), repo.id, keyurl)
    with dnf.util._urlopen(keyurl, repo=repo) as handle:
        keyinfos = rawkey2infos(handle)
    for keyinfo in keyinfos:
        keyinfo.url = keyurl
    return keyinfos


class Key(object):
    def __init__(self, key, subkey):
        self.id_ = subkey.keyid
        self.fingerprint = subkey.fpr
        self.raw_key = None
        self.timestamp = subkey.timestamp
        self.url = None
        self.userid = key.uids[0].uid

    @property
    def short_id(self):
        rj = '0' if dnf.pycomp.PY3 else b'0'
        return self.id_[-8:].rjust(8, rj)

    @property
    def rpm_id(self):
        return self.short_id.lower()

type or paste code here
1 Like

It’s not a good idea to mix system wide packages (those installed with dnf) with direct installations via pip and so on. Please do not advise folks to do the latter, it breaks systems because tools such as dnf are python based and only work with system versions of python libraries.

2 Likes

You now have 2 versions of gpgme installed, which will certainly cause problems at some point.

I suggest that if possible you do dnf distro-sync --allowerasing --refresh to attempt and get everything back to the proper config.

As noted by Ankur above, when using pip you should always install python packages as user mode only and install system-wide packages from the repo as system packages. This avoids conflicts which may occur when a file gets overwritten by pip and does not match the system version. Pip does not check nor verify that the file is provided by and needed by installed packages while dnf does so.

This should not happen, and usually indicates a failed transaction.

Yeh, this may be the case here, but i think checking why there are two gpgme packages is our first task. (my reply was to @picopress to prevent them from suggesting folks download these libraries separately etc.).

python3-gpg requires gpgme version 1.17.0-4 (gpgme and python3-gpg are from the same source package, and so are strongly linked version wise):

rpm -q python3-gpg
python3-gpg-1.17.0-4.fc36.x86_64

$ rpm -q python3-gpg --requires
gpgme(x86-64) = 1.17.0-4.fc36
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libgpgme.so.11()(64bit)
libgpgme.so.11(GPGME_1.0)(64bit)
libgpgme.so.11(GPGME_1.1)(64bit)
python(abi) = 3.10
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsZstd) <= 5.4.18-1
rtld(GNU_HASH)

So the presence of an older version of gpgme is probably causing it.

@thisistheinternet have you had a failed update at any point? or just a failed dnf transaction?

What does:

rpm -qa --qf "%{NAME}\n" | sort | uniq -c | sort

say? It should tell us if there are any duplicate packages.

1 Like

I think i might have failed an update last week. :confused:

1 Like
2 alsa-lib
      2 amd-gpu-firmware
      2 atk
      2 at-spi2-atk
      2 at-spi2-core
      2 avahi-libs
      2 bluez-libs
      2 bzip2-libs
      2 cairo
      2 cairo-gobject
      2 colord-libs
      2 cups-libs
      2 cyrus-sasl-lib
      2 dbus-libs
      2 dconf
      2 dnf-data
      2 elfutils-debuginfod-client
      2 elfutils-libelf
      2 elfutils-libs
      2 expat
      2 fdk-aac-free
      2 flac-libs
      2 fontconfig
      2 freetype
      2 fribidi
      2 gamemode
      2 gdbm-libs
      2 gdk-pixbuf2
      2 gdk-pixbuf2-modules
      2 glib2
      2 glibc
      2 glibc-gconv-extra
      2 glib-networking
      2 gmp
      2 gnutls
      2 gpgme
      2 graphite2
      2 gsm
      2 gstreamer1
      2 gtk2
      2 gtk3
      2 harfbuzz
      2 inih
      2 intel-gpu-firmware
      2 iwl7260-firmware
      2 iwlax2xx-firmware
      2 jbigkit-libs
      2 json-glib
      2 keyutils-libs
      2 krb5-libs
      2 langtable
      2 lcms2
      2 libasyncns
      2 libatomic
      2 libblkid
      2 libblockdev
      2 libblockdev-btrfs
      2 libblockdev-crypto
      2 libblockdev-dm
      2 libblockdev-fs
      2 libblockdev-kbd
      2 libblockdev-loop
      2 libblockdev-lvm
      2 libblockdev-mdraid
      2 libblockdev-mpath
      2 libblockdev-nvdimm
      2 libblockdev-part
      2 libblockdev-swap
      2 libblockdev-utils
      2 libbrotli
      2 libcap
      2 libcloudproviders
      2 libcom_err
      2 libcurl
      2 libdatrie
      2 libdbusmenu
      2 libdbusmenu-gtk3
      2 libdrm
      2 libedit
      2 libepoxy
      2 libevent
      2 libffi
      2 libgcrypt
      2 libglvnd
      2 libglvnd-glx
      2 libgpg-error
      2 libgusb
      2 libicu
      2 libidn2
      2 libjpeg-turbo
      2 libldac
      2 libmount
      2 libnghttp2
      2 libnsl
      2 libogg
      2 libpciaccess
      2 libpng
      2 libpng12
      2 libproxy
      2 libpsl
      2 libreport
      2 libreport-filesystem
      2 libreport-plugin-reportuploader
      2 libreport-web
      2 libsbc
      2 libselinux
      2 libsepol
      2 libsmbclient
      2 libsndfile
      2 libsoup
      2 libssh
      2 libstemmer
      2 libtasn1
      2 libtdb
      2 libthai
      2 libtiff
      2 libtool-ltdl
      2 libtracker-sparql
      2 libunistring
      2 libunwind
      2 libusb1
      2 libuuid
      2 libva
      2 libvdpau
      2 libverto
      2 libvorbis
      2 libwayland-client
      2 libwayland-cursor
      2 libwayland-egl
      2 libwbclient
      2 libwebp
      2 libX11
      2 libX11-xcb
      2 libXau
      2 libxcb
      2 libXcomposite
      2 libxcrypt
      2 libxcrypt-compat
      2 libXcursor
      2 libXdamage
      2 libXext
      2 libXfixes
      2 libXft
      2 libXi
      2 libXinerama
      2 libxkbcommon
      2 libxml2
      2 libXrandr
      2 libXrender
      2 libXScrnSaver
      2 libxshmfence
      2 libXtst
      2 libXxf86vm
      2 libzstd
      2 lilv-libs
      2 linux-firmware
      2 linux-firmware-whence
      2 llvm-libs
      2 lz4-libs
      2 mesa-dri-drivers
      2 mesa-filesystem
      2 mesa-libGL
      2 mesa-libglapi
      2 mesa-vulkan-drivers
      2 ncurses-libs
      2 nettle
      2 NetworkManager-libnm
      2 nss
      2 nss-softokn
      2 nss-softokn-freebl
      2 nss-sysinit
      2 nss-util
      2 nvidia-gpu-firmware
      2 openldap
      2 openssl-libs
      2 openssl-pkcs11
      2 opus
      2 p11-kit
      2 pango
      2 pcre
      2 pcre2
      2 pixman
      2 qemu-audio-alsa
      2 qemu-audio-oss
      2 qemu-audio-pa
      2 qemu-audio-sdl
      2 qemu-audio-spice
      2 qemu-block-curl
      2 qemu-block-dmg
      2 qemu-block-gluster
      2 qemu-block-iscsi
      2 qemu-block-nfs
      2 qemu-block-rbd
      2 qemu-block-ssh
      2 qemu-char-baum
      2 qemu-char-spice
      2 qemu-common
      2 qemu-device-display-qxl
      2 qemu-device-display-vhost-user-gpu
      2 qemu-device-display-virtio-gpu
      2 qemu-device-display-virtio-gpu-gl
      2 qemu-device-display-virtio-gpu-pci
      2 qemu-device-display-virtio-gpu-pci-gl
      2 qemu-device-display-virtio-vga
      2 qemu-device-display-virtio-vga-gl
      2 qemu-device-usb-host
      2 qemu-device-usb-redirect
      2 qemu-device-usb-smartcard
      2 qemu-system-x86-core
      2 qemu-ui-curses
      2 qemu-ui-egl-headless
      2 qemu-ui-gtk
      2 qemu-ui-opengl
      2 qemu-ui-sdl
      2 qemu-ui-spice-app
      2 qemu-ui-spice-core
      2 samba-client-libs
      2 samba-common
      2 samba-common-libs
      2 selinux-policy
      2 selinux-policy-targeted
      2 serd
      2 shadow-utils
      2 sord
      2 sqlite-libs
      2 sratom
      2 systemd-libs
      2 vulkan-loader
      2 webrtc-audio-processing
      2 xz-libs
      2 zlib
      3 kernel
      3 kernel-core
      3 kernel-modules
      3 kernel-modules-extra
      3 libgcc
      3 libstdc++
      3 nspr
      7 gpg-pubkey

These are just the dupes.

1 Like

The duplicates could perhaps be 32 bit packages.

Run

rpm -qa --qf "%{NAME}.%{ARCH}\n" | sort | uniq -c | sort

to find out.

Running pip could be the real cause of the problem in the first place.

1 Like

A failed update can result in dupes because you’ll have both the old and the new version “installed” partially, and this makes the system in an inconsistent state.

Unlikely for there to be so many 32bit packages, but yeh, best to double check before suggesting next steps.

@thisistheinternet could you run this (tweaked version of what Villy has suggested):

rpm -qa --qf "%{NAME}.%{ARCH}\n" | sort

it should give you the sorted list of packages, and if there are multiple versions of each package, then that’s what we need to fix.

The path forward would be to fix the packages required (by solving errors one by one) to get dnf working, and once that is done, to use dnf to fix the rest of the packages.


Yeh, but I don’t see a mention of pip being used here yet.

Just to be sure, though: @thisistheinternet have you used pip to install python packages globally on this system? sudo pip install ...? that would overwrite system python packages and also cause these issues.

2 Likes

Here is the pastebin for that

Honestly this forum thread is the first time i’m hearing about pip so to answer your question, no :confused:

1 Like

This is the sorted list of those that have multiple copies. Some of these may not be actual duplicates since some packages are normally installed for both 64 & 32 bit versions, but this is a starting point to recover.

I will post another list that does not include those that are 32 bit but only the dupes in 64 bit packages.

alsa-lib
amd-gpu-firmware
atk
at-spi2-atk
at-spi2-core
avahi-libs
bluez-libs
bzip2-libs
cairo
cairo-gobject
colord-libs
cups-libs
cyrus-sasl-lib
dbus-libs
dconf
dnf-data
elfutils-debuginfod-client
elfutils-libelf
elfutils-libs
expat
fdk-aac-free
flac-libs
fontconfig
freetype
fribidi
gamemode
gdbm-libs
gdk-pixbuf2
gdk-pixbuf2-modules
glib2
glibc
glibc-gconv-extra
glib-networking
gmp
gnutls
gpgme
graphite2
gsm
gstreamer1
gtk2
gtk3
harfbuzz
inih
intel-gpu-firmware
iwl7260-firmware
iwlax2xx-firmware
jbigkit-libs
json-glib
keyutils-libs
krb5-libs
langtable
lcms2
libasyncns
libatomic
libblkid
libblockdev
libblockdev-btrfs
libblockdev-crypto
libblockdev-dm
libblockdev-fs
libblockdev-kbd
libblockdev-loop
libblockdev-lvm
libblockdev-mdraid
libblockdev-mpath
libblockdev-nvdimm
libblockdev-part
libblockdev-swap
libblockdev-utils
libbrotli
libcap
libcloudproviders
libcom_err
libcurl
libdatrie
libdbusmenu
libdbusmenu-gtk3
libdrm
libedit
libepoxy
libevent
libffi
libgcc
libgcrypt
libglvnd
libglvnd-glx
libgpg-error
libgusb
libicu
libidn2
libjpeg-turbo
libldac
libmount
libnghttp2
libnsl
libogg
libpciaccess
libpng
libpng12
libproxy
libpsl
libreport
libreport-filesystem
libreport-plugin-reportuploader
libreport-web
libsbc
libselinux
libsepol
libsmbclient
libsndfile
libsoup
libssh
libstdc++
libstemmer
libtasn1
libtdb
libthai
libtiff
libtool-ltdl
libtracker-sparql
libunistring
libunwind
libusb1
libuuid
libva
libvdpau
libverto
libvorbis
libwayland-client
libwayland-cursor
libwayland-egl
libwbclient
libwebp
libX11
libX11-xcb
libXau
libxcb
libXcomposite
libxcrypt
libxcrypt-compat
libXcursor
libXdamage
libXext
libXfixes
libXft
libXi
libXinerama
libxkbcommon
libxml2
libXrandr
libXrender
libXScrnSaver
libxshmfence
libXtst
libXxf86vm
libzstd
lilv-libs
linux-firmware
linux-firmware-whence
llvm-libs
lz4-libs
mesa-dri-drivers
mesa-filesystem
mesa-libGL
mesa-libglapi
mesa-vulkan-drivers
ncurses-libs
nettle
NetworkManager-libnm
nspr
nss
nss-softokn
nss-softokn-freebl
nss-sysinit
nss-util
nvidia-gpu-firmware
openldap
openssl-libs
openssl-pkcs11
opus
p11-kit
pango
pcre
pcre2
pixman
qemu-audio-alsa
qemu-audio-oss
qemu-audio-pa
qemu-audio-sdl
qemu-audio-spice
qemu-block-curl
qemu-block-dmg
qemu-block-gluster
qemu-block-iscsi
qemu-block-nfs
qemu-block-rbd
qemu-block-ssh
qemu-char-baum
qemu-char-spice
qemu-common
qemu-device-display-qxl
qemu-device-display-vhost-user-gpu
qemu-device-display-virtio-gpu
qemu-device-display-virtio-gpu-gl
qemu-device-display-virtio-gpu-pci
qemu-device-display-virtio-gpu-pci-gl
qemu-device-display-virtio-vga
qemu-device-display-virtio-vga-gl
qemu-device-usb-host
qemu-device-usb-redirect
qemu-device-usb-smartcard
qemu-system-x86-core
qemu-ui-curses
qemu-ui-egl-headless
qemu-ui-gtk
qemu-ui-opengl
qemu-ui-sdl
qemu-ui-spice-app
qemu-ui-spice-core
samba-client-libs
samba-common
samba-common-libs
selinux-policy
selinux-policy-targeted
serd
shadow-utils
sord
sqlite-libs
sratom
systemd-libs
vulkan-loader
webrtc-audio-processing
xz-libs
zlib
1 Like

This list is those that are dupes in the x86_64 and noarch versions only.

dnf-data.noarch
gpgme.x86_64
langtable.noarch
libblockdev-btrfs.x86_64
libblockdev-crypto.x86_64
libblockdev-dm.x86_64
libblockdev-fs.x86_64
libblockdev-kbd.x86_64
libblockdev-loop.x86_64
libblockdev-lvm.x86_64
libblockdev-mdraid.x86_64
libblockdev-mpath.x86_64
libblockdev-nvdimm.x86_64
libblockdev-part.x86_64
libblockdev-swap.x86_64
libblockdev-utils.x86_64
libblockdev.x86_64
libgcc.x86_64
libreport-filesystem.noarch
libreport-plugin-reportuploader.x86_64
libreport-web.x86_64
libreport.x86_64
libsmbclient.x86_64
libsndfile.x86_64
libstdc++.x86_64
libwbclient.x86_64
nspr.x86_64
nss-softokn-freebl.x86_64
nss-softokn.x86_64
nss-sysinit.x86_64
nss-util.x86_64
nss.x86_64
qemu-audio-alsa.x86_64
qemu-audio-oss.x86_64
qemu-audio-pa.x86_64
qemu-audio-sdl.x86_64
qemu-audio-spice.x86_64
qemu-block-curl.x86_64
qemu-block-dmg.x86_64
qemu-block-gluster.x86_64
qemu-block-iscsi.x86_64
qemu-block-nfs.x86_64
qemu-block-rbd.x86_64
qemu-block-ssh.x86_64
qemu-char-baum.x86_64
qemu-char-spice.x86_64
qemu-common.x86_64
qemu-device-display-qxl.x86_64
qemu-device-display-vhost-user-gpu.x86_64
qemu-device-display-virtio-gpu-gl.x86_64
qemu-device-display-virtio-gpu-pci-gl.x86_64
qemu-device-display-virtio-gpu-pci.x86_64
qemu-device-display-virtio-gpu.x86_64
qemu-device-display-virtio-vga-gl.x86_64
qemu-device-display-virtio-vga.x86_64
qemu-device-usb-host.x86_64
qemu-device-usb-redirect.x86_64
qemu-device-usb-smartcard.x86_64
qemu-system-x86-core.x86_64
qemu-ui-curses.x86_64
qemu-ui-egl-headless.x86_64
qemu-ui-gtk.x86_64
qemu-ui-opengl.x86_64
qemu-ui-sdl.x86_64
qemu-ui-spice-app.x86_64
qemu-ui-spice-core.x86_64
samba-client-libs.x86_64
samba-common-libs.x86_64
samba-common.noarch
selinux-policy.noarch
selinux-policy-targeted.noarch
shadow-utils.x86_64

I stripped out a few that can easily be cleaned up after dnf is functional again when you do dnf distro-sync --allowerasing --refresh as they are not directly related to the dnf issue you are currently experiencing. I do not know which of these are causing the problems with dnf so you will have to work through the packages until dnf works then dnf can be used to finish the cleanup.

1 Like

ELI5 here… so basically i need to delete all of those files until dnf works? just going down the list, one by one?

1 Like

Not delete, but fix. We need to re-install the newer versions of the packages, and this will install the correct files, and remove the older versions—bringing your system back in a consistent state where all your system wide packages are correctly installed.

I’d start with the python-gpg packages—they’re hopefully the only ones that require fixing to get dnf back working. You’ll have to use rpm in the meantime.

So,

  • go here: gpgme-1.17.0-4.fc36 | Build Info | koji
  • under the architecture you are using, download the gpgme package (looks like the only gpg related package that’s got a duplicate) to a particular directory on your system
  • enter the directory where you’ve downloaded these, and reinstall the packages using rpm -Uvh ./*.rpm (this should work because you should already have the correct dependencies installed)

Then check if dnf works. If it does, run a dnf reinstall <all packages that we've found duplicates of>. That’ll re-install them, again placing the correct files and removing the older versions.

Then we’d run rpm -Va to verify all the packages installed on the system, and fix them if required too.


A failed ugprade, as we’re seeing here, is quite an issue since it leaves the packages in an inconsistent state. There’s unfortunately no simple way of fixing this, especially if one is unlucky enough to have a broken dnf/rpm. This may not be trivial—manually solving dependencies is very hard.

The simplest “fix” here is usually a fresh install. If you have your data backed up or you’re using a separate /home partition that you can re-use during the installation, that’s perhaps an easier, less time consuming thing to do. You can even use the re-spins to install an already fairly up to date system:

https://dl.fedoraproject.org/pub/alt/live-respins/

3 Likes
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
	package gpgme-1.17.0-4.fc36.x86_64 is already installed

I am about to chuck my computer out a window lol. I think I’m going to have to reinstall.

1 Like