Posted on
Administration

Blacklisting packages in DNF/YUM

Author
  • User
    Linux Bash
    Posts by this author
    Posts by this author

How to Manage Blacklisted Packages in Linux Package Managers: A Guide for apt, dnf, and zypper

Managing software packages efficiently is crucial for maintaining the stability, performance, and security of Linux systems. One advanced technique system administrators often use is package blacklisting. This approach prevents specific packages from being inadvertently installed or updated, which can be vital for compatibility reasons, or to avoid software with known issues. In this blog post, we'll discuss how to blacklist packages using popular package managers like apt (used in Debian and Ubuntu), dnf (used in Fedora), and zypper (used in openSUSE).

Understanding Package Blacklisting

Package blacklisting is a method to exclude specific packages from being managed through system updates or installations. It's particularly useful in environments where certain software versions need to be maintained, or when packages might interfere with custom-built software.

1. Blacklisting Packages in DNF/YUM

DNF (Dandified YUM) is the next-generation version of the Yellowdog Updater, Modified (YUM), and it is predominantly used in Fedora systems. Here’s how to blacklist packages in DNF:

  • Edit the DNF Configuration File: Open the main DNF configuration file in a text editor. For example, you can use nano:

    sudo nano /etc/dnf/dnf.conf
    
  • Add the Exclude Directive: To blacklist packages, use the exclude directive. For example, if you want to blacklist all versions of a package named examplepackage, add this line:

    exclude=examplepackage*
    
  • Save and Close: After adding all exclusions, save the file and exit the editor.

Whenever you now run dnf update or dnf install, DNF will not consider the blacklisted packages.

2. Blacklisting Packages in YUM

For systems still using YUM, the process is similar to DNF:

  • Edit the YUM Configuration File:

    sudo nano /etc/yum.conf
    
  • Add the Exclude Directive in the file:

    exclude=examplepackage*
    

YUM will now skip these packages during installations and updates.

3. Blacklisting Packages in APT (Debian, Ubuntu)

APT does not have a direct, standard method for permanently blacklisting packages as DNF/YUM does, but you can hold packages at a current version which effectively prevents updating:

  • Hold a Package:

    sudo apt-mark hold examplepackage
    

This command tells APT to keep the package at its current installed version and not update it, no matter what. To unhold it, use:

sudo apt-mark unhold examplepackage

4. Blacklisting Packages in Zypper (openSUSE)

Zypper also allows excluding packages through the Zypper configuration:

  • Add a Lock: Zypper uses a locking mechanism to exclude packages. You can add a lock using:

    sudo zypper addlock examplepackage
    
  • List Locks: To see what packages are locked, you can run:

    sudo zypper locks
    
  • Remove Lock: If you need to remove a lock later, use:

    sudo zypper removelock examplepackage
    

Conclusion

Blacklisting (or effectively managing updates for specific packages) is an excellent way to maintain control over a system's software, especially in production environments where stability is paramount. Whether you’re using dnf, yum, apt, or zypper, there are methods to ensure that you maintain the desired state of software packages, preventing updates from introducing incompatibilities or other issues.

Always remember to test these configurations on a development system before applying them in a production environment to avoid unexpected package conflicts or behavior.

Happy package managing!