I have a deb package for installation.
Shall I install by
dpkg -i my.deb, or by apt?
Will both handle the software dependency problem well?
If by apt, how can I install from the deb by apt?
When you use
apt to install a package, internally it uses
dpkg. When you install a package using apt, it first creates a list of all the dependencies and downloads it from the repository.
Once the download is finished it calls
dpkg to install all those files, satisfying all the dependencies.
So if you have a
You can install it using
sudo dpkg -i /path/to/deb/file followed by
sudo apt-get install -f.
You can install it using
sudo apt install ./name.deb (or
apt-get versions you must first move your deb file to
/var/cache/apt/archives/ directory. For both, after executing this command, it will automatically download its dependencies.
gdebi and open your .deb file using it (Right-click -> Open with). It will install your .deb package with all its dependencies.
(Note: APT maintains the package index which is a database of available packages available in repo defined in
/etc/apt/sources.list file and in the
/etc/apt/sources.list.d directory. All these methods will fail to satisfy the software dependency if the dependencies required by the deb is not present in the package index.)
sudo apt-get install -fafter
sudo dpkg -i /path/to/deb/file(mentioned in first method).
-f, --fix-broken Fix; attempt to correct a system with broken dependencies in place.
dpkg install a package and package dependency is not satisfied, it leaves the package in
unconfigured state and that package is considered as broken.
sudo apt-get install -f command tries to fix this broken package by installing the missing dependency.
Here's the best way to install a
.deb file on Ubuntu on the command-line:
sudo gdebi skype.deb
If you don't have
gdebi installed already, install it using
sudo apt install gdebi-core.
gdebi will look for all the dependencies of the
.deb file, and will install them before attempting to install the
.deb file. I find this much preferable than
sudo dpkg -i skype.deb && sudo apt install -f. The latter is much too eager to remove dependencies in certain situations. For instance, when I tried to install Skype, it attempted to remove 96 (!) packages, including packages like
gdebi gave a much clearer error message:
$ sudo gdebi skype.deb Cannot install 'libqtgui:i386'
(Here is the solution to that particular issue, by the way.)
Check the dependencies with
dpkg -I my.deb and
apt-get install the dependencies before
dpkg -i my.deb.
May be you can copy the
/var/cache/apt/archives and install it directly with
apt-get but I never tried.
dpkg are looking for packages listed in archives.
The simplest answer would be to use dpkg by running
dpkg -i packagename.deb. You could then uninstall it by running
dpkg -r packagename.deb.
apt-get is a higher level installer based off of dpkg, and as such you could
apt-get install packagename.deb.
It would be beneficial for add it to your apt-get archives directory (
/var/cache/apt/archives) so you could reference it as a package with dependencies and not a standalone .deb archive.
Also, by adding it to your apt-get archives directory, you have the opportunity to use dependencies with
apt-get install packagename. This would let you install it with any manually added dependencies instead of dpkg's standalone archive-based system.
It is very simple if I want to install Chrome.
Install your Chrome file as:
dpkg -i googlechrome.deb.
Sometimes there is a chance of getting some dependency errors like the following:
dpkg: dependency problems prevent configuration of google-chrome-stable: google-chrome-stable depends on libappindicator1; however: Package libappindicator1 is not installed.
So to resolve above issues, you need to add dependencies; give the following command:
apt-get install -f
After giving the above command, dependencies will be added to your machine and your Debian package (
.deb) file will be installed.
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?