Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

When installing a software via dpkg -i packageA.deb, will the dependencies required by packageA be downloaded and installed automatically? How is this different from using apt-get or aptitude?

share|improve this question

2 Answers 2

up vote 57 down vote accepted

No, 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 dpkg.

I like to think of the timeline this way:

  • 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.

    A .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 (so apt-get is 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, and it's nothing but a front-end for apt-get [so, it's a front-end of a front-end]. aptitude is a UI (user interface) for apt-get. If you want to see this UI, simply type aptitude in the terminal; that's aptitude, that's what it was originally created for. aptitude leverages the apt tools 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 is 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 and apt-get.

Also, aptitude does not have Super Cow Powers.

aptitude might not be installed by default. To install it, do sudo apt-get install aptitude or click this: aptitude Install aptitude.


Extra

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 apt-get and 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 Install 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 apt-get.

From Paddy Landau's comment below:

alien is a tool that converts between .rpm and .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 .deb to .rpm) using alien -r packageName.deb.

share|improve this answer
    
That was very useful and exactly what I was looking for. Tx! –  Aniket Thakur Jun 17 '13 at 13:59
2  
Also, you can use gdebi (apt-get install gdebi-core) that mixes apt-get/aptitude with dpkg. You call it with gdebi some_package.deb and it will analyze its dependencies, call apt-get to install the missing ones and when all dependencies are fulfilled, then call dpkg to finally install your package. –  Carlos Campderrós Jun 17 '13 at 14:25
    
@CarlosCampderrós, I've added gdebi in my answer. –  Alaa Ali Jun 18 '13 at 12:07
1  
@Alaa Under Extra, you can also mention that alien converts packages between .rpm and .deb. This is useful for packages available for RPM but not for DEB (or vice-versa). For example, alien packagename.rpm to make it usable for Ubuntu. –  Paddy Landau Jun 25 '13 at 9:44
    
@PaddyLandau added alien info. Apologies for the late addition, I guess I saw your comment and forgot to add the info. You can always edit posts yourself =). –  Alaa Ali Aug 8 '13 at 18:08

apt-get

Package management via apt-get runs hand-in-hand with the /etc/apt/sources.list file.

apt-get install <package_name> installs a new package onto your computer.

apt-get build-dep <package_name> This command searches the repositories and installs the build dependencies for . If the package is not in the repositories it will return an error.

apt-get install <package1_name> <package2_name> <package3_name> apt-get allows multiple package installation. separate the packages with a space.

auto-apt run <command_string> When invoked, the auto-apt command automatically installs packages upon missing file access. If a program tries to access a file known to belong in an uninstalled package, auto-apt will install that package using apt-get. This feature requires apt and sudo to work.

Visit the apt-get instruction page

aptitude

aptitude provides the functionality of dselect and apt-get as well as many additional features not found in either program.

aptitude has a shell of its own which is keyboard or mouse activated and runs in a terminal window

aptitude build-dep <package> - Install the build-dependencies of packages - which means the packages needed to compile (or build) its source package. For example, many packages need debhelper or autotools to be built, but don't need them to run.

Visit the aptitude instruction page

dpkg

is a tool to install, build, remove and manage Debian packages. link

dpkg -i <package.deb> installs a Debian package onto your computer. It does not install any dependencies as far as I can find out from the help files.

For details type dpkg --help into a terminal window.

Guides

a guide to file management can be found here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.