Dnf skipping packages with broken dependencies

I seem to be having issues with curl not updating in a Toolbox container because libnghttp2 can’t seem to update?

This is the error I’m seeing.

➜  ~
> sudo dnf update -y
Repository packages-microsoft-com-prod is listed more than once in the configuration
Last metadata expiration check: 0:05:37 ago on Thu Dec 15 07:27:35 2022.
Dependencies resolved.

 Problem 1: package libcurl-7.82.0-11.fc36.x86_64 requires libnghttp2(x86-64) >= 1.51.0, but none of the providers can be installed
  - cannot install the best update candidate for package libcurl-7.82.0-9.fc36.x86_64
  - package libnghttp2-1.51.0-1.fc36.x86_64 is filtered out by modular filtering
 Problem 2: package curl-7.82.0-11.fc36.x86_64 requires libcurl(x86-64) >= 7.82.0-11.fc36, but none of the providers can be installed
  - package libcurl-7.82.0-11.fc36.x86_64 requires libnghttp2(x86-64) >= 1.51.0, but none of the providers can be installed
  - package libcurl-minimal-7.82.0-11.fc36.x86_64 requires libnghttp2(x86-64) >= 1.51.0, but none of the providers can be installed
  - cannot install the best update candidate for package curl-7.82.0-9.fc36.x86_64
  - package libnghttp2-1.51.0-1.fc36.x86_64 is filtered out by modular filtering
=====================================================================================================================================================================================================================
 Package                                                 Architecture                                   Version                                                Repository                                       Size
=====================================================================================================================================================================================================================
Skipping packages with broken dependencies:
 curl                                                    x86_64                                         7.82.0-11.fc36                                         updates                                         309 k
 libcurl                                                 x86_64                                         7.82.0-11.fc36                                         updates                                         301 k
 libcurl-minimal                                         x86_64                                         7.82.0-11.fc36                                         updates                                         233 k

Transaction Summary
=====================================================================================================================================================================================================================
Skip  3 Packages

Nothing to do.
Complete!

So, I searched around and saw I should use --allowerasing --best and got a different error. These I’ve never figured out how to fix.

➜  ~
> sudo dnf update -y --allowerasing --best
Repository packages-microsoft-com-prod is listed more than once in the configuration
Last metadata expiration check: 0:05:45 ago on Thu Dec 15 07:27:35 2022.
Error:
 Problem 1: cannot install the best update candidate for package libcurl-7.82.0-9.fc36.x86_64
  - problem with installed package libcurl-7.82.0-9.fc36.x86_64
  - package libcurl-7.82.0-11.fc36.x86_64 requires libnghttp2(x86-64) >= 1.51.0, but none of the providers can be installed
  - package libnghttp2-1.51.0-1.fc36.x86_64 is filtered out by modular filtering
 Problem 2: cannot install the best update candidate for package curl-7.82.0-9.fc36.x86_64
  - problem with installed package curl-7.82.0-9.fc36.x86_64
  - package curl-7.82.0-11.fc36.x86_64 requires libcurl(x86-64) >= 7.82.0-11.fc36, but none of the providers can be installed
  - package libcurl-7.82.0-11.fc36.x86_64 requires libnghttp2(x86-64) >= 1.51.0, but none of the providers can be installed
  - package libcurl-minimal-7.82.0-11.fc36.x86_64 requires libnghttp2(x86-64) >= 1.51.0, but none of the providers can be installed
  - package libnghttp2-1.51.0-1.fc36.x86_64 is filtered out by modular filtering
(try to add '--skip-broken' to skip uninstallable packages)

Then I think I saw someone say try to install it, but that failed. I’m hesitant to uninstall curl as I think most of this depends on that anyways.

➜  ~
> sudo dnf install curl --assumeyes --allowerasing --best
Repository packages-microsoft-com-prod is listed more than once in the configuration
Last metadata expiration check: 0:05:51 ago on Thu Dec 15 07:27:35 2022.
Package curl-7.82.0-9.fc36.x86_64 is already installed.
Error:
 Problem: package curl-7.82.0-11.fc36.x86_64 requires libcurl(x86-64) >= 7.82.0-11.fc36, but none of the providers can be installed
  - package libcurl-7.82.0-11.fc36.x86_64 requires libnghttp2(x86-64) >= 1.51.0, but none of the providers can be installed
  - package libcurl-minimal-7.82.0-11.fc36.x86_64 requires libnghttp2(x86-64) >= 1.51.0, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package libnghttp2-1.51.0-1.fc36.x86_64 is filtered out by modular filtering
(try to add '--skip-broken' to skip uninstallable packages)

I’m working in a Toolbox container currently that is running Fedora 36. The host is running Fedora 37.

That is the key. Modular filtering.

One of the first things I do with any install is disable the fedora-modular and modular-updates repos.

I do not have any of these issues with packages since they are never installed in modular form.

You can search on this forum for how to handle the modular filtering. I have seen some posts with the same error and some fixes but have never personally had to deal with the issue.

You probably want to look and see what is installed.
sudo dnf module list | grep "\[e\]\|\[i\]"

Once you identify the module you’ll want to disable it.

The other instance of this occurring for libnghttp2 was the nodejs module.

3 Likes

You are correct, it’s the nodejs Module. This is part of the NodeJS install docs. Sure, I could setup nvm, but I was in a toolbox container and didn’t want to plant things on my host system I didn’t need.

➜  ~
> sudo dnf module list | grep "\[e\[\|\[i\]"
Repository packages-microsoft-com-prod is listed more than once in the configuration
nodejs             16 [e]           common [d] [i], development, minimal Javascript runtime
nodejs             16 [e]           common [d] [i], development, minimal Javascript runtime

Then I disabled it.

➜  ~
> sudo dnf module disable nodejs:16
Repository packages-microsoft-com-prod is listed more than once in the configuration
Last metadata expiration check: 0:05:11 ago on Fri Dec 16 08:01:42 2022.
Only module name is required. Ignoring unneeded information in argument: 'nodejs:16'
Dependencies resolved.
=====================================================================================================================================================================================================================
 Package                                            Architecture                                      Version                                               Repository                                          Size
=====================================================================================================================================================================================================================
Disabling module profiles:
 nodejs/common
Disabling modules:
 nodejs

Transaction Summary
=====================================================================================================================================================================================================================

Is this ok [y/N]: y
Complete!

Then I was able to perform my sudo dnf update -y. It also seemed to update nodejs as well?

I guess this would be a new question, but why provide this from a module if it eventually does this?