subprocess pre-removal script returned error exit status 2? error

Recently, I encountered a package management related error in Ubuntu Jaunty Jackalope 32bit.

The package was sharutils and the error was: “E: sharutils: subprocess pre-removal script returned error exit status 2? and details showed:
“dpkg (subprocess): unable to execute pre-removal script: Exec format error
dpkg: error processing sharutils (–remove):
subprocess pre-removal script returned error exit status 2
dpkg (subprocess): unable to execute post-installation script: Exec format error
dpkg: error while cleaning up:
subprocess post-installation script returned error exit status 2
Errors were encountered while processing:
sharutils
E: Sub-process /usr/bin/dpkg returned an error code (1)”

I managed to fix it. Read on for how I did it.

Precaution: The process can break your system if not followed as mentioned (you may get into problems even if you follow the process). Please proceed at your own risk.

First, please try the following in terminal:

sudo aptitude update
sudo aptitude -f install 

If it does not work, then you may want to try:

sudo dpkg --force all --remove

If both of them still produce similar errors, then continue. If the above commands fix your problem, you should not continue.

1. Close Synaptic or any package manager. Wait for or cancel any updates or install\uninstall.
2. Make Backups of current /var/lib/dpkg/status file. Just copy and paste to your home directory or Desktop.
3. Alt+F2 and launch type in gksu gedit /var/lib/dpkg/status and run it. Gedit will be launched with a text file open.
4. Now, search for the exact name of the package with problems and find it.
5. In my case, it I found the entry for the package sharutils:

Package: sharutils
Status: deinstall ok half-configured
Priority: standard
Section: utils
Installed-Size: 968
Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 1:4.6.3-1build1
Depends: libc6 (>= 2.6-1)
Suggests: mailx
Conflicts: shar, uuencode
Description: shar, unshar, uuencode, uudecode
`shar' makes so-called shell archives out of many files, preparing
them for transmission by electronic mail services.  `unshar' helps
unpacking shell archives after reception.  Other related utility
programs help with other tasks.
.
`uuencode' prepares a file for transmission over an electronic
channel which ignores or otherwise mangles the eight bit (high
order bit) of bytes.  `uudecode' does the converse transformation.
Original-Maintainer: Santiago Vila <sanvila@debian.org>

6. Select and delete that information and that much information only, i.e. you will remove “Package: culprit-package-name” to “Description: culprit package description”. Remmber, “culprit package description” may be multiline and you will need to remove all the lines till a blank line. Don’t forget to leave a line blank between the package description above and the one below. Be careful delete only the culprit package information. As i have mentioned in the highlighted box.

7. Launch Synaptic (or any package manager) and then search for package. You will see the package as not installed. Mark it for installation and install it. If you start to see the same error, restart the same process from Step 1 but the next time, stop at step 6.
8. Now, you should be able to remove it if you no longer want the package. If you can’t, restart the same process from Step 1 but the next time, stop at step 6.

This resolved  my problem, hope will resolve yours too…

NOTE: All credit goes to http://www.khattam.info/2009/08/04/solved-subprocess-pre-removal-script-returned-error-exit-status-2-error/

I'm happy to use Increase Sociability.