How to uninstall or manually remove a Joomla extension. …
Back up your installation before uninstalling anything. While waiting for the backup to finish, dust off the extension's documentation and see if there are any nonstandard uninstallation instructions you need to follow.
Most extensions are uninstalled at Extensions – Extension Manager – Manage; select the extension and press "Uninstall". Note any messages the uninstaller provides, such as "The folder /images/extension_name has been left on the system. You can remove it manually." Such orphan data can be left alone or deleted as appropriate for your situation. Along the same lines, you may wish to inspect Extensions – Module Manager, Extensions – Plug-in Manager, and the database tables, but beware of becoming overenthusiastic and breaking something.
If you were following the extension's changelog or security news in a feed reader, your Twitter account, or wherever, you can now remove it.
Document anything unusual about the uninstallation process for future reference.
MANUALLY REMOVING AN EXTENSION
Sometimes you will want to manually remove an extension. Perhaps you are cleaning up after a failed partial install, or you have reason to believe that the normal uninstall process did not cleanly remove it. We'll be looking for two types of data to remove: directories and files in Joomla, and database records.
Directories and files
I SSH into the server and use find to locate what needs to be deleted. For example, to find and delete all CiviCRM files from the server:
%find . -name civicrm ./administrator/components/com_civicrm/civicrm ./administrator/components/com_civicrm/civicrm/drupal/modules/views/civicrm ./tmp/com_civicrm/admin/civicrm ./tmp/com_civicrm/admin/civicrm/drupal/modules/views/civicrm ./media/civicrm %rm -rf administrator/components/com_civicrm/ %rm -rf tmp/com_civicrm/ %rm -rf media/civicrm/
If the dynamic duo of SSH and find isn't an option for you, then you'll have to manually poke around with SFTP. Taking the Joomla root as base and assuming an extension name of foobar, good places to look include:
In the database, drop any extension-specific tables. Extensions often have table names prefixed with something allusive to the extension. For example, CiviCRM's table names begin with civicrm_. Some tables may fail to drop the first time, but repeatedly dropping will eventually get rid of them all.
Then remove or edit the rows that reference the extension in Joomla's tables. For example, when removing Gantry I found one reference each to com_gantry and gantry in the name and element columns of the table jos_extensions. Keep in mind that beginning with Joomla 1.6, "jos" has been replaced by a random 5 character name assigned at installation time.
When finished, check your work and insure that the extension no longer appears in Joomla's administrative backend.
These notes were last updated 12 March 2013 and refer to Joomla 2.5.9.