Nothing provides

Greetings to the Rocky Linux Forum.

I appreciate this forum because i get to learn alot of stuff.

Am running on Rocky Linux 9.

$ cat /etc/os-release 
NAME="Rocky Linux"
VERSION="9.2 (Blue Onyx)"
ID_LIKE="rhel centos fedora"
PRETTY_NAME="Rocky Linux 9.2 (Blue Onyx)"

I run into this problem while updating my system packages.

$ sudo dnf update -y
Last metadata expiration check: 0:23:01 ago on Sat 18 Nov 2023 10:28:31 PM EAT.
 Problem 1: cannot install the best update candidate for package kf5-ki18n-5.105.0-1.el9.x86_64
  - nothing provides needed by kf5-ki18n-5.108.0-1.el9.x86_64
 Problem 2: cannot install the best update candidate for package kf5-kiconthemes-5.105.0-1.el9.x86_64
  - nothing provides needed by kf5-kiconthemes-5.108.0-1.el9.x86_64
 Problem 3: cannot install the best update candidate for package kf5-kxmlgui-5.105.0-1.el9.x86_64
  - nothing provides needed by kf5-kxmlgui-5.108.0-1.el9.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

i know this might be a straight forward question, but how do we solve the commands that throws in “nothing provide” error?
Please help me understand.

You will need to wait for Rocky Linux 9.3 to release, pending for Monday, as it will come up with updated qt5 libraries.

Thank you very much.

How do we solve the “nothing provides” when i encounter the error while running other commands?

@Jil as @nazunalika said, you have to wait for Rocky 9.3 to be released, since EPEL has the packages released that match RHEL 9.3. That package exists in Rocky 9.3 which isn’t released yet, and Rocky 9.2 doesn’t have it. So all you can do is wait until Rocky 9.3 is released and then update.

1 Like

Not sure what you do mean by “other commands”, but …

  • Each RPM package contains two lists: “provides” and “requires” – what this package has and what it needs from some other packages
  • When you install a package, the dnf reads the “requires” from it and looks at the “provides” lists of all packages that are currently installed or available in enabled repositories
    • If an available package provides what is required, then it is added to packages to install and its “requires” are checked too
    • If no package provides what is required, then transaction is not possible and you do get the “nothing provides”
  • When you remove a package, the “requires” of all other installed packages are checked
    • If the removed package is the only one to provide what some other package requires, then that other package must be removed too

The “nothing provides” shows that no enabled repo has package that would provide what is required.

  • The required packages may be in different repo. Typical example is that some packages in EPEL do depend on packages that are in CRB and CRB was disabled by default. (Occasionally EPEL releases packages that depend on other EPEL packages that are not released yet; EPEL has many maintainers.)
  • In this case the “different repo” is Rocky 9.3 that does not exist quite yet (because EPEL package has been built with/for RHEL 9.3)
1 Like

Thank you so much @jlehtone and @iwalker

This is what i wanted to understand, its now very clear. Thank you for this, much appreciated.

Good. One more thing …

Avoid the -y option. It is no more difficult to type y when dnf asks “Do you want to do this?”,
but it can be way more difficult to undo the transaction if you afterwards notice that it was a mistake.

(Then again, I do often call dnf via Ansible playbooks and those do not ask, they go “yes” …)

Thank you for taking your time to explain this. Its a learning curve.

I think there is a problem with the app discover which installs the packages without the missing dependencies and makes the system fail to boot which happened to my laptop.
Only on my pc I used terminal instead and noticed these messages of missing depencies/packages so I was not able to install and my pc is still running.