Removing broken packages in Ubuntu
UbuntuAptUbuntu Problem Overview
There was an error when I tried to remove a package, so it was left in a broken state. I tried the following:
sudo dpkg --remove --force-remove-reinstreq rvm
Output:
(Reading database ... 41743 files and directories currently installed.)
Removing rvm (1.29.3-1) ...
bash: rvm: command not found
dpkg: error processing package rvm (--purge):
subprocess installed pre-removal script returned error exit status 127
Errors were encountered while processing:
rvm
.
sudo dpkg --purge rvm
Output: same as above
sudo dpkg -i --force-overwrite package
Output:
dpkg: error processing archive rvm (--install):
cannot access archive: No such file or directory
Errors were encountered while processing:
rvm
Is there a way to force remove it, ignoring all errors? I'm using Ubuntu 16.04 on WSL.
Ubuntu Solutions
Solution 1 - Ubuntu
I faced this problem with a broken package, rvm. I tried many things like sudo apt install -f
and sudo dpkg --purge --force-all rvm
but nothing worked. Finally I managed to find a blog post that explains how to remove broken packages on Debian/Ubuntu.
Here are the steps.
-
Find your package in
/var/lib/dpkg/info
, for example using:ls -l /var/lib/dpkg/info | grep <package>
-
Move the package folder to another location, like suggested in the blog post I mentioned before.
sudo mv /var/lib/dpkg/info/<package>.* /tmp/
-
Run the following command:
sudo dpkg --remove --force-remove-reinstreq <package>
So as an example I solved my problem by executing the following commands in a terminal:
sudo mv /var/lib/dpkg/info/rvm.* /tmp/
sudo dpkg --remove --force-remove-reinstreq rvm
Solution 2 - Ubuntu
-
Install synaptic package manager.
sudo apt-get install synaptic
-
Open synaptic package manager and search for the package which you want to remove or install or change
Done!
Solution 3 - Ubuntu
so in my case perl-modules-5.22
was corrupt.
I followed the steps in the accepted answer, but this did not resolve my issue.
to fix I additionally had to:
sudo apt remove -f perl-modules-5.22
sudo apt upgrade -y
Solution 4 - Ubuntu
sudo apt remove -f <package_name>
Ex: sudo apt remove mongo*
will remove all mongo db packages.
Solution 5 - Ubuntu
I had a similar issue where a package was missing files, and hence could not be removed. The error message was "Stopping Service. Cannot stop ***.service, service is not running" Service is not running since service file is missing.
Shouldn't it be easier to purge the package then? I guess not.
Still: run aptitude
sudo aptitude
find the package in question, check its info, verify which versions exist. Install a different version from the one you have presently (ideally one patch version up or down from what you have to avoid too much change) - it will ask you what to do with the missing files - choose to replace from the version being installed
sudo apt-get install <package>=<version>
Once all such missing files are replaced, you should be able to do standard purge
sudo apt-get purge <package>
Solution 6 - Ubuntu
Execute the command as a root
sudo apt-get install -f
You need elevated privileges for the package manager.