How to Fix "ERROR RUN microdnf -y install curl" in Containers
Are you facing the dreaded ERROR RUN microdnf -y install curl while building your container images or deploying microservices? You're not alone. This guide explains why this error occurs, how to diagnose it, and provides proven solutions to help you get back on track.
What Is microdnf and Why Use It?
microdnf is a minimal, fast package manager optimized for container images based on Red Hat's Universal Base Images (UBI) and Fedora minimal. It allows you to install packages like curl
quickly with one simple command:
microdnf -y install curl
But sometimes this command fails, causing build disruptions. Let's understand why.
Common Reasons for "microdnf -y install curl" Errors
1. Package Conflicts (curl vs curl-minimal)
Many minimal base images come with curl-minimal
pre-installed. Attempting to install the full curl
package can trigger a conflict error:
error: Error running transaction: curl conflicts with curl-minimal
curl conflicts with (installed) curl-minimal
Solution:
Remove curl-minimal
first, then install curl
:
RUN microdnf remove curl-minimal && microdnf install curl -y
Or, use curl-minimal
if it provides the functionality you need.
2. Repository and Network Issues
microdnf relies on enabled repositories and internet connectivity. If repositories are missing or your build environment doesn't have outbound network access, you may see errors like:
Error downloading metadata, Curl error (23): Failed writing received data to disk/application
Solution:
<ul> <li>Ensure your base image has the correct repository configuration.</li> <li>Check network access during build.</li> <li>Try running microdnf update -y
before installing curl.</li> </ul>
3. Other Installation Errors
Sometimes issues stem from misconfigured OS trees, missing dependencies, or locked files:
Start: microdnf install Directory /var/lib/mock/fedora-rawhide-microdnf/root doesn't look like it has an OS tree. Refusing...
Solution:
<ul> <li>Confirm your container environment is correctly set up.</li> <li>If using custom builds/scripts, follow official guidelines for base OS images.</li> </ul>
Troubleshooting Steps
- Check Installed Packages
See ifrpm -qa | grep curl
curl-minimal
orcurl
is present. Remove conflicts before installing. - Update Repositories
Ensures package metadata is fresh.microdnf update -y
- Verify Network Connection Make sure the build process can reach public repos.
- Consult Image Documentation Sometimes base images (like UBI or Keycloak) change which packages are pre-installed. Review README or Dockerfile examples for best practices.
- Alternative Approach for Keycloak and Custom Images
If
microdnf
fails, consider copying binaries from a build layer or using multi-stage builds as recommended by maintainers.
Example Dockerfile Fix
FROM registry.access.redhat.com/ubi9/ubi-minimal USER root RUN microdnf update -y && \\ microdnf remove curl-minimal && \\ microdnf install curl -y && \\ microdnf clean all
Conclusion
The "ERROR RUN microdnf -y install curl" is typically a package conflict or environment issue.
- Remove curl-minimal before installing curl.
- Verify repositories and network connectivity.
- Consult your base image and microdnf documentation for container best practices.
By following these steps, you'll resolve the error and keep your builds and deployments running smoothly.