How do I exclude specific packages from installation with apt-get?

So, mate-core depends on mate-desktop-environment-core which in turn depends on mate-terminal. A depend cannot be broken easily. Nor apt-get nor aptitude supports a --without or --exclude option and "holding" the packages won't help:

$ echo "mate-terminal hold" | sudo dpkg --set-selections
$ sudo apt-get install mate-core
[...]
Some packages could not be installed...
The following packages have unmet dependencies:

Sure, one can use dpkg --force-depends to install a package, but that's maybe not what you want.

A possibility would be to fullfill the Depends: flag with a dummy package:

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi mate-terminal
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: mate-terminal
Version: 1.8.0
Description: Dummy package for mate-terminal
:x

$ equivs-build mate-terminal
$ sudo dpkg -i mate-terminal_1.8.0_all.deb

Now mate-core should be able to install w/o mate-terminal. Repeat the same for other packages to be excluded.

Admittedly this is quite an effort and a --without option would be nice. Maybe a wishlist bug can be opened to provide such functionality in the future, but I somehow doubt that this will be implemented.

However, a more realistic option would be to petition the PPA owner to provide another meta package for MATE with lesser Depends packages set.


If you use aptitude or a graphical package manager (Synaptic, etc.), then you can unselect which packages should be installed as long as it doesn't cause a dependency issue.

In the case of aptitude, before installing a package (in the graphical view), it will show you why a dependent package is being installed. In my case, I use KDE, and so don't have any MATE packages. If I tell it to install mate-core, I get the following:

enter image description here

Notice that mate-core is marked as being manually installed, and many other packages are being installed. For the mate-terminal package, in the bottom, it says, "mate-desktop-environment-core [universe] depends on mate-terminal (>= 1.0.0)". Going over to the entry for mate-desktop-environment-core,

enter image description here

"mate-core [universe] depends on mate-desktop-environment-core (>= 1.8.0+9)". This is why mate-terminal is being installed.

If, instead, a recommended package is being installed (rather than something that is dependent on another package), aptitude will tell you so, and you can tell it not to install that package without any broken dependencies. For example:

enter image description here


There's a special apt syntax for scenarios like this: appending a hyphen (minus sign) to a package will remove/not install it, so the closest to your sudo apt-get install xorg mate-core --without xterm mate-terminal is sudo apt-get install xorg mate-core xterm- mate-terminal- (spotted on https://askubuntu.com/a/1011439/182923)

It will not help in this case, as you will run into

The following packages have unmet dependencies:
 mate-desktop-environment-core : Depends: mate-terminal (>= 1.20) but it is not going to be installed                                                                        
E: Unable to correct problems, you have held broken packages.

but it seems to be the answer to your specific question. So for reference, this cross-post.