Skip to content
Search Fedora

    Browse this documentation

    Fedora error lookup: exact message → cause → fix

    The slow part of troubleshooting is usually not “how do I fix it” but “what does this line mean”. This page is indexed by the exact message: find your line, then read four steps up.

    Every entry was triggered on Fedora 45 and the text is copied verbatim. If yours is not here, post it together with dnf --version and rpm -q rpm dnf5 — F44 and F45 differ on signatures and repository paths.

    1. Use in-page find for the fragment you see;
    2. read the cause;
    3. apply the fix, then verify.
    No match for argument: nosuchpkg-xyz
    You can try to add to command line:
    --skip-unavailable to skip unavailable packages

    Cause: The package name does not exist in the enabled repositories. Usually a library name used as a package name (libssl is really openssl-libs), or the repository is disabled.

    Fix: dnf search <term>, dnf provides '*/<filename>' to look up by file, dnf repolist to confirm the repository.

    No matching repositories for nosuchrepo. Add "--help" for more information about the arguments.

    Cause: The repo ID in --repo / --enablerepo does not exist. The ID is the line in square brackets, not the name= value.

    Fix: dnf repolist --all lists every ID; copy one exactly.

    No matching repository to modify: nosuchrepo

    Cause: Unknown repo ID passed to config-manager setopt.

    Fix: Same as above: dnf repolist --all first.

    >>> Curl error (37): Could not read a file:// file for file:///nonexistent/path/repodata/repomd.xml
    >>> Usable URL not found

    Cause: The baseurl path has no repodata/. A local repository where createrepo_c was never run, or a wrong path.

    Fix: sudo createrepo_c /srv/your-repo, then confirm ls /srv/your-repo/repodata/repomd.xml exists.

    Section titled “Could not resolve hostname (metalink failure)”
    >>> Download failed: Curl error (6): Could not resolve hostname for https://mirrors.fedoraproject.org/metalink?repo=fedora-45&arch=x86_64 [Could not resolve host: mirrors.fedoraproject.org]
    Cannot prepare internal mirrorlist: Parse error at line: 1 (Document is empty)

    Cause: DNS cannot resolve mirrors.fedoraproject.org. On restricted networks this is the most common cause of “I cannot install anything” — the repository is not broken.

    Fix: Point at a mirror or fix DNS first: cat /etc/resolv.conf, ping mirrors.aliyun.com; mirror substitution is covered in repositories.

    Nothing to do.

    Cause: dnf remove on a package that was never installed. dnf5 does not treat this as an error and exits 0.

    Fix: Nothing to handle. Confirm state with rpm -q <pkg>.

    package utest-1.0-1.noarch does not verify: no signature

    Cause: Since F45, rpm 6.1 enforces signature checking, so rpm -i refuses unsigned packages.

    Fix: Sign the package, or sudo rpm -i --nosignature <pkg> to override explicitly.

    Transaction failed: Signature verification failed.
    OpenPGP check for package "..." from repo "..." has failed: The package is not signed.

    Cause: The repository has gpgcheck=1 and the package is unsigned. This is expected behaviour.

    Fix: Sign the package; for a one-off, --setopt=<repo>.gpgcheck=0.

    Warning: skipped OpenPGP checks for 1 package from repository: @commandline

    Cause: dnf install ./x.rpm treats the local file as a temporary repository, so it only warns and still installs.

    Fix: If you want a hard block, do not use the local-file path; go through a repository.

    /tmp/urpms/noarch/utest-1.0-1.noarch.rpm: digests SIGNATURES NOT OK

    Cause: This is rpm -K reporting state, not an install failure.

    Fix: Verify where the package came from; see signature enforcement.

    error: /tmp/bad.key: import read failed(0).

    Cause: The file passed to rpm --import is not a GPG public key.

    Fix: Check it first with gpg --show-keys <file>.

    Failed to resolve the transaction:
    Problem: The operation would result in removing the following protected packages: dnf5

    Cause: The package is in protected_packages, which includes dnf5, systemd and kernel by default.

    Fix: Do not remove it. If you genuinely must, edit protected_packages= in /etc/dnf/dnf.conf — that lowers the system self-protection.

    Need a --releasever greater than the current system version.

    Cause: dnf system-upgrade download without --releasever, or with a version at or below the current one.

    Fix: grep VERSION_ID /etc/os-release, then pass --releasever=<higher release>.

    No matching transaction ID found, exactly one required.

    Cause: The ID passed to dnf history undo does not exist.

    Fix: dnf history list | head -10 and copy a real ID.

    Unit nosuch.service could not be found.

    Cause: Wrong unit name, or the package providing it is not installed.

    Fix: systemctl list-unit-files | grep <term>, or dnf provides '*/<unit>.service'.

    Failed to enable unit: Unit nosuch.service does not exist

    Cause: The unit file for enable does not exist at all. Note it says “does not exist”, not “permission denied”.

    Fix: Confirm the unit exists, then sudo systemctl enable.

    Failed to start nosuch.service: Access denied
    See system logs and 'systemctl status nosuch.service' for details.

    Cause: systemctl start without root. A missing unit name can also land on a permission-shaped error, so do not be misled.

    Fix: Add sudo; if it still fails, read the real reason with systemctl status.

    -- No entries --

    Cause: journalctl -u <unit> found nothing: wrong unit name, or that unit logged nothing this boot.

    Fix: Drop -u and try journalctl -b -p err; confirm names with systemctl list-units.

    The param /boot/vmlinuz-nosuch is incorrect

    Cause: The path passed to grubby --set-default does not exist. It must match a filename under /boot verbatim.

    Fix: sudo ls /boot | grep vmlinuz for the full name, then sudo grubby --set-default /boot/<full-name>.

    Error: unknown connection 'nosuch'.

    Cause: The connection name passed to nmcli con up does not exist. Names are case sensitive.

    Fix: nmcli con show lists them all.

    Error: Device 'nosuch0' not found.

    Cause: Wrong NIC name. Virtual machines usually have ens18 or enp1s0, not eth0.

    Fix: nmcli dev status or ip -br link shows the real name.

    Error: short-name resolution enforced but cannot prompt without a TTY

    Cause: Podman 6 requires short image names to be resolved, and cannot prompt in a non-interactive context (scripts, CI).

    Fix: Use the full name: registry.fedoraproject.org/fedora-minimal:45; or configure unqualified-search-registries in /etc/containers/registries.conf.

    Use the '--container' option to select a Toolbx.
    Run 'toolbox --help' for usage.

    Cause: Toolbx 0.3 refuses to guess when it cannot identify a single container.

    Fix: toolbox enter --container <name>; toolbox list shows what exists.

    Error: failed to inspect container nosuchcontainer

    Cause: The container name passed to toolbox rm does not exist.

    Fix: toolbox list to confirm the name.

    bash: line 2: toolbox: command not found

    Cause: Cloud and minimal Server images do not preinstall Toolbx or Flatpak.

    Fix: sudo dnf install toolbox flatpak.

    mount: /mnt: fsconfig() failed: /dev/nosuchdev: Can't lookup blockdev.

    Cause: The device node does not exist: disk not attached, VM has no extra disk, or a typo.

    Fix: lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS, ls /dev/disk/by-id/.

    df: /nosuchpath: No such file or directory

    Cause: The path does not exist. df only accepts an existing mount point or file.

    Fix: df -h lists every mount point.

    tar: This does not look like a tar archive
    tar: Exiting with failure status due to previous errors

    Cause: The file is not a tar archive, or the download is incomplete — common when a .tar.xz is handed to tar without the right flag.

    Fix: file <name> for the real type; use tar -tJf for xz, tar -tzf for gzip.

    Failed to parse timestamp: notadate

    Cause: The time format passed to journalctl --since is invalid.

    Fix: Use absolute time --since "2026-10-27 08:00:00", or --since "-1h".

    <no matches>

    Cause: ausearch -m AVC found no SELinux denials. Could be genuinely none, or the audit service is not running.

    Fix: systemctl status auditd; sudo ausearch -m AVC -ts recent.

    No matches found: no repositories are enabled

    Section titled “No matches found: no repositories are enabled”
    No matches found: no repositories are enabled.

    Cause: Every repository is disabled (--disablerepo='*', or all turned off by overrides).

    Fix: dnf repolist --all shows what exists, then enable with --enablerepo=<id>.

    Unit nosuch.service does not exist, proceeding anyway.
    Created symlink '/etc/systemd/system/nosuch.service' -> '/dev/null'.
    Failed to start nosuch.service: Unit nosuch.service is masked.

    Cause: The unit is masked, meaning a symlink to /dev/null, so every start is refused — mask is stronger than disable.

    Fix: sudo systemctl unmask <unit>, then enable or start it.

    No journal boot entry found for the specified boot (+99).

    Cause: The boot index passed to journalctl -b does not exist. -b -1 is the previous boot, -b 0 the current one.

    Fix: journalctl --list-boots shows the real range.

    Failed to open a temporary file for .../fss

    Section titled “Failed to open a temporary file for .../fss”
    Generating sealing key...
    Failed to open a temporary file for /var/log/journal/0b38bf1284bf4e7b8edfc9c703d01d0c/fss: Permission denied

    Cause: journalctl --setup-keys must write into the journal directory and fails without permission.

    Fix: Run it with sudo; also check ownership of /var/log/journal.

    chmod: invalid mode: ‘999’
    Try 'chmod --help' for more information.

    Cause: Permission bits are octal, each digit 0–7, so 999 is not a valid mode.

    Fix: Use octal chmod 755, or symbolic form chmod u+x.

    dd: error writing '/mnt/full/big': No space left on device
    105+0 records in
    104+0 records out

    Cause: The target filesystem is full. Note that df can show free space while inodes are exhausted.

    Fix: df -h <path> for space and df -i <path> for inodes; find the culprit with du -xh --max-depth=1 | sort -h.

    mount: /mnt: failed to set up loop device for /tmp/nosuch.img.

    Cause: The file given to -o loop does not exist or is not a mountable image.

    Fix: ls -l to confirm it exists, then file to see whether it is a filesystem image.

    fsck.ext2: No such file or directory while trying to open /dev/mapper/pve-root
    Possibly non-existent device?

    Cause: The device node given to fsck does not exist (common in VMs where names differ from the host).

    Fix: lsblk -f shows real devices and filesystems, then read-only check with sudo fsck -n <device>.

    Volume group "pve" not found
    Cannot process volume group pve

    Cause: The LVM volume group name is wrong, or this machine has no such group (pve belongs to a Proxmox host, not a Fedora guest).

    Fix: sudo vgs lists real groups; without LVM just use lsblk.

    ping: nosuchhost.invalid: Name or service not known

    Cause: DNS resolution failed: the hostname does not exist, or no usable resolver is configured.

    Fix: cat /etc/resolv.conf, getent hosts <name>; if IPs work but names do not, it is DNS.

    curl: (6) Could not resolve host: nosuch.invalid

    Cause: Same root cause: name resolution failed. The short curl message is often misread as “the network is down”.

    Fix: Use getent hosts <name> to separate DNS from connectivity; test connectivity against a raw IP with ping -c1 <IP>.

    chcon: failed to change context of '/etc/hostname' to ‘system_u:object_r:nosuch_t:s0’: Invalid argument

    Cause: The SELinux type being set does not exist in the loaded policy.

    Fix: Look it up with seinfo -t | grep <term> or semanage fcontext -l; for denials use ausearch -m AVC.

    cat: /etc/shadow: Permission denied

    Cause: /etc/shadow is readable only by root. Nothing is broken; that is the design.

    Fix: sudo cat /etc/shadow, or sudo getent shadow <user> for one entry.

    useradd: user 'labuser' already exists

    Cause: The user already exists; useradd never overwrites.

    Fix: Change attributes with usermod; to recreate, userdel -r first.

    groupadd: group 'labuser' already exists

    Cause: The group already exists (useradd usually creates a matching group).

    Fix: Confirm with getent group <name>; change it with groupmod.

    Failed to set time zone: Invalid or not installed time zone 'Nosuch/Zone'

    Cause: The zone name is not in tzdata; the form must be Area/Location.

    Fix: timedatectl list-timezones | grep <region>, then sudo timedatectl set-timezone <name>.

    /tmp/bad_sshd.conf line 1: Badly formatted port number.

    Cause: sshd -t found a non-numeric port. -t only validates, which makes it the right check before restarting.

    Fix: Set Port 22, re-run sudo sshd -t -f <file>, and always validate before restarting.

    Invalid RSA key length: minimum is 1024 bits

    Cause: The key size is below the minimum. RSA is usually 3072 bits or more; 2048 is a common floor.

    Fix: Use ssh-keygen -t ed25519 (preferred) or -t rsa -b 3072.

    Could not find or decode certificate from /etc/hostname

    Cause: openssl x509 was given plain text, not a PEM or DER certificate.

    Fix: Point it at the real certificate; head -1 <file> should show -----BEGIN CERTIFICATE-----.

    bash: line 5: crontab: command not found

    Cause: Minimal images do not ship cron. On F45 the more common approach is a systemd timer.

    Fix: Install cronie if you want cron; otherwise write a *.timer plus *.service and inspect with systemctl list-timers.

    Before searching for an unfamiliar message, do two things:

    Terminal window
    dnf --version
    rpm -q rpm dnf5

    Quote the versions with the error. F44 and F45 differ on signature enforcement and repository paths, so an error posted without versions often gets an answer for the wrong release. See signature enforcement and repository configuration moves to /usr.