I originally answered this question on askubuntu.com. I suggest you read it there so you can see community comments for additional insight.
From the ‘debsums’ man page:
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u) Reinstalls packages with changed files.
I just ran this on my system because the disk content was randomly corrupted while I was experimenting with a beta OS. Here’s what I did (and it seems to have worked well):
First, I installed ‘debsums’ and ran it to see if I had any corrupt files on my system:
peniwize@penibox-2:~$ sudo apt-get install debsums peniwize@penibox-2:~$ sudo apt-get clean peniwize@penibox-2:~$ sudo debsums_init peniwize@penibox-2:~$ sudo debsums -cs /usr/share/bash-completion/completions/ssh /usr/share/icons/hicolor/scalable/actions/cheese-take-photo.svg /usr/share/gnome/help/gnumeric/C/files-textopen.xml /usr/share/dbus-1/services/indicator-sound.service /lib/modules/3.11.0-12-generic/kernel/drivers/mtd/ubi/ubi.ko
As you can see, I have five corrupt files so I need to reinstall them. This is how I found which packages contain the corrupt files:
peniwize@penibox-2:~$ sudo dpkg -S $(sudo debsums -c) | cut -d : -f 1 | sort -u bash-completion cheese-common gnumeric-doc indicator-sound linux-image-extra-3.11.0-12-generic
If you have no corrupt packages the you will see this (or something like it):
peniwize@penibox-2:~$ sudo dpkg -S $(sudo debsums -c) | cut -d : -f 1 | sort -u dpkg-query: error: --search needs at least one file name pattern argument Use --help for help about querying packages.
Then I repaired the corruption by reinstalling the damaged packages:
peniwize@penibox-2:~$ sudo apt-get install --reinstall $(sudo dpkg -S $(sudo debsums -c) | cut -d : -f 1 | sort -u) Reading package lists... Done Building dependency tree Reading state information... Done The following package was automatically installed and is no longer required: linux-image-generic Use 'apt-get autoremove' to remove it. 0 upgraded, 0 newly installed, 5 reinstalled, 0 to remove and 0 not upgraded. Need to get 43.9 MB of archives. After this operation, 0 B of additional disk space will be used. Get:1 http://us.archive.ubuntu.com/ubuntu/ saucy/main bash-completion all 1:2.0-1ubuntu3 [173 kB] Get:2 http://us.archive.ubuntu.com/ubuntu/ saucy/main cheese-common all 3.8.3-0ubuntu1 [2,929 kB] Get:3 http://us.archive.ubuntu.com/ubuntu/ saucy/universe gnumeric-doc all 1.12.6-1 [7,295 kB] Get:4 http://us.archive.ubuntu.com/ubuntu/ saucy/main linux-image-extra-3.11.0-12-generic i386 3.11.0-12.19 [33.5 MB] Get:5 http://us.archive.ubuntu.com/ubuntu/ saucy/main indicator-sound i386 12.10.2+13.10.20131011-0ubuntu1 [55.7 kB] Fetched 43.9 MB in 10min 23s (70.4 kB/s) (Reading database ... 174913 files and directories currently installed.) Preparing to replace bash-completion 1:2.0-1ubuntu3 (using .../bash-completion_1%3a2.0-1ubuntu3_all.deb) ... Unpacking replacement bash-completion ... Preparing to replace cheese-common 3.8.3-0ubuntu1 (using .../cheese-common_3.8.3-0ubuntu1_all.deb) ... Unpacking replacement cheese-common ... Preparing to replace gnumeric-doc 1.12.6-1 (using .../gnumeric-doc_1.12.6-1_all.deb) ... Unpacking replacement gnumeric-doc ... Preparing to replace linux-image-extra-3.11.0-12-generic 3.11.0-12.19 (using .../linux-image-extra-3.11.0-12-generic_3.11.0-12.19_i386.deb) ... Unpacking replacement linux-image-extra-3.11.0-12-generic ... Examining /etc/kernel/postrm.d . run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.11.0-12-generic /boot/vmlinuz-3.11.0-12-generic run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.11.0-12-generic /boot/vmlinuz-3.11.0-12-generic Preparing to replace indicator-sound 12.10.2+13.10.20131011-0ubuntu1 (using .../indicator-sound_12.10.2+13.10.20131011-0ubuntu1_i386.deb) ... Unpacking replacement indicator-sound ... Processing triggers for man-db ... Processing triggers for libglib2.0-0:i386 ... No such key 'auto-launch' in schema 'com.ubuntu.update-notifier' as specified in override file '/usr/share/glib-2.0/schemas/20_xubuntu-default-settings.gschema.override'; ignoring override for this key. Processing triggers for hicolor-icon-theme ... Setting up bash-completion (1:2.0-1ubuntu3) ... Setting up cheese-common (3.8.3-0ubuntu1) ... Setting up gnumeric-doc (1.12.6-1) ... Setting up linux-image-extra-3.11.0-12-generic (3.11.0-12.19) ... Running depmod. update-initramfs: deferring update (hook will be called later) Not updating initrd symbolic links since we are being updated/reinstalled (3.11.0-12.19 was configured last, according to dpkg) Not updating image symbolic links since we are being updated/reinstalled (3.11.0-12.19 was configured last, according to dpkg) Examining /etc/kernel/postinst.d. run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.11.0-12-generic /boot/vmlinuz-3.11.0-12-generic run-parts: executing /etc/kernel/postinst.d/dkms 3.11.0-12-generic /boot/vmlinuz-3.11.0-12-generic run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.11.0-12-generic /boot/vmlinuz-3.11.0-12-generic update-initramfs: Generating /boot/initrd.img-3.11.0-12-generic run-parts: executing /etc/kernel/postinst.d/pm-utils 3.11.0-12-generic /boot/vmlinuz-3.11.0-12-generic run-parts: executing /etc/kernel/postinst.d/update-notifier 3.11.0-12-generic /boot/vmlinuz-3.11.0-12-generic run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.11.0-12-generic /boot/vmlinuz-3.11.0-12-generic Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.11.0-14-generic Found initrd image: /boot/initrd.img-3.11.0-14-generic Found linux image: /boot/vmlinuz-3.11.0-12-generic Found initrd image: /boot/initrd.img-3.11.0-12-generic Found memtest86+ image: /boot/memtest86+.bin Found Windows 7 (loader) on /dev/sda1 done Setting up indicator-sound (12.10.2+13.10.20131011-0ubuntu1) ...
Finally, I checked to make sure that no corrupt files remain:
peniwize@penibox-2:~$ sudo debsums -c
There was no output from this command, which means that no errors were found. 🙂
One final note: you should also check your packages’ config files to make sure they’re OK. This can be more difficult because config files often change, and the changes are legitimate, so you’ll need to manually inspect each changed config file to determine whether or not it’s actually corrupt. This is how you get a list of changed config files:
peniwize@penibox-2:~$ sudo debsums -as debsums: changed file /etc/gnome/defaults.list (from desktop-file-utils package) debsums: changed file /etc/default/rcS (from initscripts package) debsums: changed file /etc/subuid (from login package) debsums: changed file /etc/subgid (from login package) debsums: changed file /etc/sudoers (from sudo package)