≡ Menu

Debian / Ubuntu Linux apt-get: Blacklist a Package From Installing

I‘ve build my own lighttpd .deb package and I do not want to upgrade it using the apt-get command. Also, I do not want to upgrade a few more packages such as php5-cgi, httpd and so on. How do I blacklist a package or packages so that when I run apt-get upgrade, it will ignore blacklisted packages and install the rest of updates under Debian or Ubuntu Linux server system?


You need use the dpkg command – a tool to install, build, remove and manage Debian packages. Each package under Debian or Ubuntu Linux has the following selection stats:

  1. install – The package is selected for installation.
  2. hold – A package marked to be on hold is not handled by dpkg, unless forced to do that with option –force-hold.
  3. deinstall – The package is selected for deinstallation (i.e. we want to remove all files, except configuration files).
  4. purge – The package is selected to be purged (i.e. we want to remove everything from system directories, even configuration files).

Option #1: dpkg command syntax

To blacklist a Debian / Ubuntu package use the following command:

echo "packageName hold" | dpkg --set-selections
echo "lighttpd hold" | dpkg --set-selections

To remove package hold and install/upgrade again:

echo "packageName install” | dpkg --set-selections
echo "lighttpd install” | dpkg --set-selections

Option #2: /etc/apt/apt.conf.d/01autoremove

Another option is to edit a file called /etc/apt/apt.conf.d/01autoremove, enter:
# vi /etc/apt/apt.conf.d/01autoremove
Sample outputs:

APT
{
  NeverAutoRemove
  {
        "^firmware-linux.*";
        "^linux-firmware$";
        "^linux-image.*";
        "^kfreebsd-image.*";
        "^linux-restricted-modules.*";
        "^linux-ubuntu-modules-.*";
  };

  Never-MarkAuto-Sections
  {
        "metapackages";
        "restricted/metapackages";
        "universe/metapackages";
        "multiverse/metapackages";
        "oldlibs";
        "restricted/oldlibs";
        "universe/oldlibs";
        "multiverse/oldlibs";
  };
};

Move cursor at the the bottom of the section called “Never-MarkAuto-Sections” and append and entry to the section to block grub I entered “php5-cgi*”:

  Never-MarkAuto-Sections
  {
        "metapackages";
        "restricted/metapackages";
        "universe/metapackages";
        "multiverse/metapackages";
        "oldlibs";
        "restricted/oldlibs";
        "universe/oldlibs";
        "multiverse/oldlibs";
        "php5-cgi*";
  };

Save and close the file.

A note about RHEL / CentOS / SL / Fedora Linux users

You need to edit a file called name.repo see, how to blacklist a package under RHEL / CentOS for more information.

Share this tutorial on:

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:



{ 3 comments… add one }
  • Stephan Hughson September 30, 2012, 8:26 am

    There’s another way to do this under Ubuntu and Debian which I like as I’m quite lazy.

    You have to install a package called wajig, but it’s small and doesn’t interfere.

    sudo apt-get install wajig

    and then can just do :

    sudo wajig hold packagename

    wajig can do lots of other things too, but I haven’t investigated them yet.

  • Ritesh Raj Sarraf September 30, 2012, 7:15 pm

    Another option is to use equivs and add all those packages that you never want to see installed into its Conflicts: list.

  • Jens Stomber October 8, 2012, 9:35 pm

    Hi,

    I suggest to use apt pinning to blacklist packages or set certain versions of a package on hold.

    wiki.debian.org
    debian-handbook.info

Security: Are you a robot or human?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">


   Tagged with: , , , , , ,