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:
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
,
"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:
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.