How to remove a deb without removing its dependencies

Use dpkg directly, not apt-get or aptitude:

sudo dpkg -r --force-depends "packagename-version"

or

sudo dpkg -r --force-depends "packagename"

I know this is an old post, but since I recently had a similar problem I would like to share my solution in the hopes that someone in the future finds it useful.

If you installed a package via aptitude it automatically assigns flags to the dependencies (auto) and when you try to remove your package again it tries to remove all its dependencies that have the auto flag still set.

As you can see in my case it's zabbix that i want to remove:

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php
The following packages will be REMOVED:  
  apache2{u} dbconfig-common{u} fping{u} javascript-common{u} libhtml-template-perl{u} libiksemel3{u} libjs-prototype{u} 
  libjs-scriptaculous{u} libopenipmi0{u} libt1-5{u} mysql-server{u} mysql-server-5.1{u} mysql-server-core-5.1{u} php5{u} php5-gd{u} 
  php5-mysql{u} snmpd{u} wwwconfig-common{u} zabbix-frontend-php{p} zabbix-server-mysql{p} 
0 packages upgraded, 0 newly installed, 20 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 44.9 MB will be freed.
Do you want to continue? [Y/n/?]

And if we look up the apache package it looks like this

uman@mango:~$ aptitude search ^apache2
i A apache2        - Apache HTTP Server metapackage
<snip>

the first flag "i" tells us that apache is installed
The next flag "A" stands for automatically installed

So in order to fix this and not having apache, mysql and php uninstalled, we can just remove the auto flag with aptitude like this:

uman@mango:~$ sudo aptitude unmarkauto apache2 mysql-server php5
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.

Now it looks like this when removing the zabbix package:

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php
The following packages will be REMOVED:  
  dbconfig-common{u} fping{u} javascript-common{u} libiksemel3{u} libjs-prototype{u} libjs-scriptaculous{u} libopenipmi0{u} libt1-5{u} 
  php5-gd{u} wwwconfig-common{u} zabbix-frontend-php{p} zabbix-server-mysql{p} 
0 packages upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 16.6 MB will be freed.
Do you want to continue? [Y/n/?] 

Please check out the man page for aptitude for more details


You can create a dummy .deb package using the equivs utility, it will provide the dependency without installing any files. Then just replace the currently installed package to the dummy version using dpkg -i fake.deb.

Tags:

Apt