dpkg only installs a package, so doing
dpkg -i packageName.deb will only install this Deb package, and will notify you of any dependencies that need to be installed, but it will not install them, and it will not configure the
packageName.deb because well...the dependencies are not there.
apt-get is a Package Management System that handles the installation of Deb packages on Debian-based Linux distributions. A Package Management System is a set of tools that will help you install, remove, and change packages easily. So
apt-get is like a clever
I like to think of the timeline this way (the following is just me speaking from experience. It is meant to only give you an idea of this whole thing):
They came up with a way to "store" the files of an application in a "package" so that it can be easily installed. So, the Deb package (
.deb extension file) was born.
.deb file contains the files needed by an application to run, as well as (I like to call it) "meta-data" that holds other information, such as the names of the dependencies the application needs. If you want to see the contents of a
.deb file, you can use the command
dpkg -c packageName.deb, and if you want to see this "meta-data" information, use the command
dpkg -I pacakgeName.deb (and if you want to only see the dependencies, do
dpkg -I packageName.deb | grep Depends).
They needed a tool to install these
.deb files, so they came up with the
dpkg tool. This tool, however, will just install the
.deb file, but will not install its dependencies because it doesn't have those files and it does not have access to "repositories" to go pull the dependencies from.
- Then, they came up with
apt-get, which automates the problems in the previous point. Underneath the hood,
apt-get is basically
dpkg (I like to think of it as
apt-get being a front-end for
dpkg), but a clever one that will look for the dependencies and install them. It even looks at the currently installed dependencies and determines ones that are not being used by any other packages, and will inform you that you can remove them.
aptitude then came along. It uses the libraries
apt-get uses and actually has an interactive UI (user interface). If you want to see this UI, simply type
aptitude in the terminal. That's
aptitude. It leverages the libraries to provide more options and perks than
apt-get. For example,
aptitude will automatically remove eligible packages, while
apt-get needs a separate command to do so. But, in the end, doing
sudo aptitude install packageName.deb should at least be the same as
sudo apt-get install packageName.deb. There might be subtle differences here and there that I do not know about, but they will both look for the dependencies and do all that stuff. You can read the answer here for more information on the differences between
aptitude does not have Super Cow Powers.
EDIT: Apparently, it does.
aptitude -v[v[v[v[v]]]] moo.
aptitude might not be installed by default. To install it, do
sudo apt-get install aptitude or click this: aptitude .
The following information doesn't really directly answer "What is the difference between dpkg and aptitude/apt-get?" but it contributes to the big picture.
From Carlos Campderrós' comment below:
gdebi is another tool that is kind of a mixture between
aptitude. When you use it to install a
.deb package (
gdebi packageName.deb), it will identify the missing dependencies, install them using
apt-get, and then finally install and configure the package using
dpkg. It even has a simple and neat GUI that gives you information about the
.deb package, the files included in the package, and what dependencies need to be installed. To see this GUI, you would do
gdebi-gtk packageName.deb. You can give
gdebi a try by installing it with
sudo apt-get install gdebi or click this: gdebi .
I don't want to confuse anyone, but just to give you another part of the picture, there is another popular Linux package format called RPM, and its files have the
.rpm extension. This package format is used on RPM-based Linux distributions (such as Red Hat, CentOS, and Fedora). They use the command
rpm to install a package, and
yum is the front-end for it, it's the clever one. So their
.rpm files are our
.deb files, their
rpm tool is our
dpkg tool, and their
yum is our
From Paddy Landau's comment below:
alien is a tool that converts between
.deb packages. So if you ever fall into the situation where you have an
.rpm package, and you want to install in on your Ubuntu (or any other Debian-based distro), you can use the command
alien rpm_packageName.rpm to convert it to
.deb, and then install it using
dpkg. You can do the reverse (convert
alien -r packageName.deb.