Okay I haven't tried this, but it should work I think.
First boot from a live CD.
Next open a terminal and type
sudo fdisk -l
From this you want to determine the partition that your Ubuntu installation is on. If you have only one hard drive it will be /dev/sdaX
, where X
is the partition number.
Next mount the Ubuntu installation's partition replacing X
with the correct partition number.
sudo mount /dev/sdaX /mnt
Next navigate to the directory where dpkg_1.16.1.2ubuntu7_amd64.deb
is and use this command:
sudo dpkg --root=/mnt -i dpkg_1.16.1.2ubuntu7_amd64.deb
Hopefully this will work, and you can reboot into your Ubuntu installation and find that dpkg
has been reinstalled. If there are any errors let me know and I will try to help you.
edit:
I've been reading through the dpkg
manpage and I think the command I suggested above might not work. Here are the relevant sections of the manpage for reference.
--admindir=dir
Change default administrative directory, which contains
many files that give information about status of
installed or uninstalled packages, etc. (Defaults to
/var/lib/dpkg)
--instdir=dir
Change default installation directory which refers to the
directory where packages are to be installed. instdir is
also the directory passed to chroot(2) before running
package's installation scripts, which means that the
scripts see instdir as a root directory. (Defaults to /)
--root=dir
Changing root changes instdir to dir and admindir to
dir/var/lib/dpkg.
using --root=dir
as I suggested would set the admin folder to /mnt/var/lib/dpkg
--the folder that you deleted.
Instead try this:
sudo dpkg --force-overwrite --instdir=/mnt -i dpkg_1.16.1.2ubuntu7_amd64.deb
This will use the liveCD's /var/lib/dpkg
folder, but the --force-overwrite
flag should make it install even though it thinks the package is already installed.
Good luck!
edit2
While this should work to reinstall dpkg
I don't think it will rebuild the package lists that are in /var/lib/dpkg
. Following the advice in izx's comment to copy the directories/file from a liveCD and go from their is probably your best bet.
mv
it to somewhere else, or install thetrash-cli
and usetrash-put <file>
which will move the file to the trash folder, allowing you to easily restore it from trash if you ever mess up./var/lib/dpkg
directory to your system.