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?
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, under the hood 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.
.deb
file, you can install it by:Using:
sudo dpkg -i /path/to/deb/file
sudo apt-get install -f
Using:
sudo apt install ./name.deb
Or
sudo apt install /path/to/package/name.deb
With old 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.
First installing gdebi
and then opening 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 (/var/cache/apt/*.bin
) 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 -f
after sudo dpkg -i /path/to/deb/file
(as mentioned in method 1)?From man apt-get
:
-f, --fix-broken
Fix; attempt to correct a system with broken dependencies in place.
When dpkg
installs a package and a package dependency is not satisfied, it leaves the package in an "unconfigured" state and that package is considered broken.
The sudo apt-get install -f
command tries to fix this broken package by installing the missing dependency.
apt-cache search <package name>
. You can also use apt-cache policy <package name>
, which will give some additional information as well.
– g_p
Jan 29 '16 at 15:10
sudo dpkg -i /path/to/deb/file
is followed by sudo apt-get install -f
?
– Tim
Apr 24 '17 at 03:19
apt-get install /path/to/package/name.deb
. It would be neat if the author of this answer decided to integrate that. If not, I'll go add that answer sometime when I have enough rep here
– Sam Hartman
May 31 '17 at 19:10
apt-get install -f
does. Thorough answer!
– Mathias
Sep 15 '17 at 17:44
Unable to locate package
. I used as in Windows just name of package after switching to archive
folder. Forgot ./
for Unix...
– Alex Martian
May 28 '18 at 04:14
sudo apt install libstdc++6_8-20180414-1ubuntu2_amd64.deb
apt: error while loading shared libraries: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: invalid ELF header
– mvladk Jan 31 '19 at 08:20/path/to/package/name.deb
. But what is that path? How to find it?
– Agent Zebra
Mar 11 '19 at 18:26
.deb
to your ~/Downloads
folder, just cd ~/Downloads
then the path is just "." (here); e.g, sudo apt install ./install-me.deb
, or if you prefer, sudo apt install ~/Downloads/install-me.deb
– michael
May 13 '19 at 03:19
sudo dpkg --force-depends -i /path/to/package.deb
– billyjmc
Mar 05 '20 at 14:38
sudo apt install ./foo.deb
way I always get Note, selecting 'on_repo_foo' instead of './foo.deb'. dpkg -i
seems the only way to force the installation of the .deb.
– Pablo A
Jan 15 '21 at 07:27
sudo apt install ./package.deb
on my Ubuntu 22.04, I get an error as follows (the original german and my translation into english)N: Der Download wird als root und nicht Sandbox-geschützt durchgeführt, da auf die Datei »/home/user/Downloads/package.deb« durch den Benutzer »_apt« nicht zugegriffen werden kann. - pkgAcquire::Run (13: Keine Berechtigung)
N: The download is conducted as root and is not Sandbox-protected, since the file »/home/user/Downloads/package.deb« can not be opened by the user »_apt«. - pkgAcquire::Run (13: no permission)
– Dohn Joe
Mar 16 '23 at 10:19
Install your foo.deb
file with dpkg -i foo.deb
. If there are some errors with unresolved dependencies, run apt-get install -f
afterwards.
Unable to locate package
trying this way and got puzzled. I used as in Windows just name of package after switching to archive folder. Should be ./<file name>
for Unix if in current folder or full path. That is if deb
is not in folder present in PATH
.
– Alex Martian
May 28 '18 at 04:18
apt update && dpkg -i foo.deb || apt install -f -y
to make sure that foo.deb
is not removed by apt install -y
.
– jpsecher
Oct 23 '19 at 13:38
You can install a local .deb package by:
sudo apt install ./foo.deb
Make sure to specify a local relative or absolute path (./
if in current dir), otherwise it will look for foo.deb
in the remote repos and fail.
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 compiz
and unity
! 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
Doesn't work, my.deb
in /var/cache/apt/archives
and install it directly with apt-get
but I never tried.apt-get
and dpkg
are looking for packages listed in archives.
apt-get install my.deb
by apt-get install
? Is it to install from the deb file? Why do we need dpkg -i my.deb
after that?
– Tim
Oct 03 '14 at 16:04
.deb
s with dpkg -i
, my understanding is that apt
doesn't have an option to install them, apart the directory in /var/cache/...
where are downloaded (I may be wrong)
– Alex
Oct 03 '14 at 16:08
apt-get install ./my.deb
will do something, because it outputs a lot of things. What does it do?
– Tim
Oct 03 '14 at 16:11
-f
– Alex
Oct 03 '14 at 16:20
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.
apt-get install
with a local package file, you must install it in /var/cache/apt/archives
, otherwise apt-get
may decide to download it anyway.
– Anthony Williams
Jan 15 '20 at 11:58
Modern apt-get can be used to install a package simply with apt-get install /path/to/package/name.deb
.
(should be done as edit to the top answer but it was rejected - see https://unix.stackexchange.com/posts/159114/edit)
apt 1.0.9.8.4 for amd64 compiled on Dec 11 2016 09:48:19
– Bruno Bronosky
Sep 28 '17 at 22:10
The shortest way to install a local package with all required dependencies that worked for me:
sudo apt --fix-broken install ./name.deb
It is --fix-broken
option that makes dependencies to be installed.
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.
aptitude
which removes unnecessary packages as well. – Ramesh Oct 03 '14 at 16:12dpkg
. In case of single deb, go with gdebi and in case of multiple debs, go for APT local repository. – Pandya Apr 18 '15 at 10:53dpkg
doesn't resolve dependencies. – Pandya Apr 18 '15 at 11:05