On rpmfind.net's page for glibc-2.28.9000-6.fc30 RPM for i686, libc.so.6(GLIBC_2.28) is listed under both "Provides" and "Requires", so it's impossible to satisfy the package dependency?


Actually, Nasir's answer is a bit wrong. As the correction is longer I decided to provide another answer instead of just comment.

Requires means that this functionality is needed for runtime. It can be a name of the package or something else what some package provides. It can be the name of library libc.so.6 or some functionality e.g., package httpd provides www-server.

Provides is something that the package provides. As stated above package httpd provides www-server. And glibc provides libc.so.6(GLIBC_2.28).

Usually, package does not require something and provides something else. However, the glibc package is different. It is very fundamental package and it both require and provides libc.so library. So it really need itself to build from sources. Weird? Yes. But it is similar to compilers. You need compiler to compile compiler. Usually you can use the older version to build the newer version. So it is actually not a problem. The only problem is when you want to get first instance. E.g., you want to build it for the fist time for new architecture. It is doable and the process is called bootstrap and it requires rather magicans than common programmer :)

  • My answer is not wrong. The question was basically "How can the package dependency be satisfied if it requires and provides that same file". I explained how such a thing is possible which is that it's not a package dependency that is being referred to but that the library is needed in order for it to function which is undeniably and demonstrably true. To show this, I confirmed that the package can indeed be installed and that there are, in fact, no dependencies that can't be met. Your answer may expand on that a bit but it doesn't make my answer wrong. – Nasir Riley Sep 23 '18 at 23:23
  • The rest of my answer explains the rest which is that the only reasons that package is needed are the ones that I've given. If that is needed then a simple dnf install glibc.i686 will work which is what I've explained and provided in my answer. – Nasir Riley Sep 23 '18 at 23:26

That simply means that it needs those libraries in order to function (as would a 32-bit Fedora system itself). It isn't referring to a package dependency.

Assuming that you have 64-bit Fedora, if you

dnf install glibc.i686

Then it will install with no problems. 64-bit Fedora (as well as RHEL and CentOS) will already have /usr/lib64/libc.so.6 which is just the 64-bit version (again, the system wouldn't function without them). That file itself is just a symbolic link to libc-2.27.so (the actual library) and if you run this command:

strings -d /usr/lib/libc.so.6 | grep GLIBC_2

You'll see all of the GLIBC strings available.

The only reasons that you'd need that package or those 32-bit libraries are:

1) You are running 32-bit Fedora such as the Netinstall or Live Image in which case they'll already be there.

2) You have something built against those libraries (the 32-bit versions aren't there by default).

3) You need to compile something with those 32-bit libraries.

In any event, installing it via dnf will work with no issues.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.