How can I remove the record of an installed package without deleting any files?
Solution 1:
The 'best' way to do this, is by manipulating /var/lib/dpkg/status
.
HOWEVER!
That file has a sensitive syntax; Doing it the wrong way may break your package management.
Here is what you have to do:
Find a block that looks a little like this (The actual look may depend on the package you're trying to make 'invisible'):
Package: xserver-xorg-input-vmmouse
Status: install ok installed
Priority: optional
Section: x11
Installed-Size: 136
Maintainer: Ubuntu Developers <[email protected]>
Architecture: amd64
Version: 1:12.7.0-2
Provides: xorg-driver-input
Depends: libc6 (>= 2.7), xorg-input-abi-12, xserver-xorg-core (>= 2:1.10.0-0ubuntu1~), xserver-xorg-input-mouse, udev
Description: X.Org X server -- VMMouse input driver to use with VMWare
This package provides the driver for the X11 vmmouse input device.
.
The VMMouse driver enables support for the special VMMouse protocol
that is provided by VMware virtual machines to give absolute pointer
positioning.
.
The vmmouse driver is capable of falling back to the standard "mouse"
driver if a VMware virtual machine is not detected. This allows for
dual-booting of an operating system from a virtual machine to real hardware
without having to edit xorg.conf every time.
.
More information about X.Org can be found at:
<URL:http://www.X.org>
.
This package is built from the X.org xf86-input-vmmouse driver module.
Original-Maintainer: Debian X Strike Force <[email protected]>
The first statement Package: <name>
is where you have to look for, where <name>
is the name of the package you want to remove.
Each block begins with a Package: <name>
line, and ends with the next Package:
line, BUT do not remove the next Package:
statement!
If you keep that in mind, the package will no longer appear to be installed to dpkg; despite all the files still being available.
This is a terrible hack at best, but works just fine, I've done it a few times in the past myself, in a time when Ubuntu was still struggling with broken packages sometimes. I do not recommend it, it's a last resort option.
Solution 2:
Still very helpful even if a hack. An added suggestion is to similarly remove the unwanted package from /var/lib/dpkg/available and to remove all of the {package}.* files from /var/lib/dpkg/info/
I used this when I decided to install a newer version of a piece of software from source, that had previously been installed as the Ubuntu-released version. First I downloaded and built / installed the new version that I wanted, then used this hack to make dpkg forget about the older Ubuntu-released version.