apt-get vs. aptitude .vs synaptic compatibility

All of those use dpkg as a backend. Neither one uses any specialized database that breaks when you use something else.

It's definitely urban legend.

If you want to install something from source code, cleanest way is to use checkinstall, or install it to /usr/local. Using package manager is better, because then removing that package is much easier.


The only real difference is Aptitude.

  • If you use it interactively install something, then remove that package in something else and then go back to Aptitude, it will think you want to reinstall it. You just have to clear selections when it loads (easy enough through the menu).

  • It will also run an autoremove so old dependencies are cleaned up. This can be dangerous if you accidentally remove something that is a dependant of a metapackage and you remove it and all its deps. This isn't an issue if you know what you're doing.


Synaptic and apt-get are compatible. Aptitude is not compatible with synaptic. This is fact, not "urban legend" as another poster claimed.

Today I wanted to find out which Java runtime my system has. Googling turned up the following suggestion: in a command shell, type:

aptitude search "?provides(java-runtime)"

This generated (among other lines) the following:

pi  gcj-4.4-jre
pi  gcj-jre

What the "pi" means is that it's not currently installed, but is marked for installation. So if I went into aptitude and just asked it to install requested packages, it would install gcj-4.4-jre. However, in Synaptic, it is neither installed nor marked for installation. If I ask Synaptic to install requested packages, it does nothing.

I'm no expert on this stuff, and I have no idea where aptitude is stashing its notions of package states, but it's obvious that it's not compatible with Synaptic.