Lost/Deleted dpkg (package manager for Debian). How do I get it back?
Depending exactly what you removed, you may be able to rescue the situation by extracting the necessary parts from a manually downloaded .deb
file. The trick, of course, is finding a way to unpack the .deb
file without a working dpkg
- fortunately there's a solution here
How to extract and install .deb without the command dpkg?
First go to packages.ubuntu.com and download the appropriate .deb
file for your OS version and architecture e.g.
mkdir debroot && cd debroot
wget http://mirrors.kernel.org/ubuntu/pool/main/d/dpkg/dpkg_1.18.4ubuntu1_amd64.deb
Now unpack the deb file using ar
in place of the usual dpkg -x
ar -x dpkg_1.18.4ubuntu1_amd64.deb
(replace dpkg_1.18.4ubuntu1_amd64.deb
with name of the actual deb that you downloaded). You should now have the following contents
control.tar.gz data.tar.gz debian-binary dpkg_1.18.4ubuntu1_amd64.deb
The package's files should be located in the data.tar.gz
so to extract the dpkg
binary file locally
tar xf data.tar.gz ./usr/bin/dpkg
If that worked, you should have a file at ./usr/bin/dpkg
which you can copy to your /usr/bin
directory
sudo cp ./usr/bin/dpkg /usr/bin/
[Note that you could untar the file directly relative to /
using sudo tar -C ...
but doing it in two steps just feels a little safer.]
If that works, I'd recommend re-installing the whole thing from the repository for consistency i.e.
sudo apt-get update
sudo apt-get install --reinstall dpkg
(on newer systems, you can replace apt-get
by apt
).
Download the dpkg package for your release from https://launchpad.net/ubuntu/+source/dpkg/.
Extract the file.
cd
to the root of the dpkg source directory.
./configure
make
sudo make install
You may need to download some packages if ./configure
fails