Orphaned - akeeba/onthos GitHub Wiki
An extension was found which is neither marked as belonging to a package, nor does it have an update site.
Why is it a problem?
When you are updating Joomla to a new minor version (e.g. 5.0 to 5.1) or major version (e.g. 5.x to 6.x) it needs to check whether your installed extensions are compatible with the new Joomla version. To do that, Joomla checks the update information provided by the extension's update site, part of which is compatibility with specific Joomla and database versions. If this information is missing Joomla is unsure about the extension's compatiblity and will tell you so.
Suggested fix
Onthos will propose one or more of the following solutions, depending on furhter information detected about the extension.
Adopt. If a package is installed on the site which claims that this extension belongs to it Onthos lets you have the package “adopt” the extension. That is to say, the extension's parent package ID will be set to the package's extension ID.
Uninstall. You should only do that if you suspect this is a leftover extension, e.g. an extension that used to be included in a package but has since been removed from that package. This happens because Joomla will NOT remove installed extensions marked as belonging to a package if the package no longer includes them in its manifest. In fact, extension developers have to write custom code to uninstall obsolete extensions – something which may or may not work out there in the messy real world of mass distributed software.
Rebuild update sites. If Onthos detects that the XML manifest of the extension declares an update site but the update site is not present in Joomla's database it will propose haing Joomla! rebuild the update sites. This tells Joomla to go through the manifests of all installed extensions and install any missing update sites into Joomla's database.
Reinstall. Reinstall the package extension will make sure any orphaned extensions belonging to the package will be reassigned to the package. It is recommended that you install the package which contains the extension twice in a row, without uninstalling it before or in between.
Notes
Extensions fulfilling these criteria are called “orphans” because they neither have a “parent” package extension, nor do they have an update site (which would make them emancipated, grown-up extensions, I guess?).
There are several reasons why you may end up with an orphaned extension:
- Custom / bespoke / private extensions. These extensions are purpose-built for a specific site and lack a publicly available update site. This is the least problematic reason for this issue, as you already know it's a bespoke extension and have hopefully taken the necessary steps to make it compatible with a future version of Joomla before upgrading the site to said version.
- The extension is no longer included in the package. As explained above discussing the Uninstall option.
- Someone messed with the database. Someone –or a third party extension– may have edited the
#__extensions
table directly, unsetting the parent package extension ID of this extension. - You installed the extensions contained in a package instead of the package itself. This is very common with Mac users using Safari with its default configuration values. It's not a jab to Mac users –we are avid Mac users ourselves– but to the unfortunate (nay, idiotic!) defaults of Safari. By default, Safari is set up to open “safe” files after download. This includes ZIP files; they open with Archive Utility, which extracts them in a new directory, deleting the downloaded ZIP file. When you do that with package files you end up with a directory containing lots of installable extension ZIP files, so you might be tempted to install them separately on your site. DO NOT DO THAT! IT BREAKS YOUR EXTENSIONS! Instead, go to Safari, click on Safari, Settings in the menu bar, click on General and uncheck ‘Open “safe” files after downloading’. Re-download the extension's package file. Now you have an installable package ZIP file which you need to install twice in a row as explained above.
- The extension has been packaged as a legacy component with custom code to install plugins and modules. Back in the Joomla! 1.0 and 1.5 days we had no package extensions. As a result, the only way to distribute multiple extensions which had to be installed together was to create a component and write custom code to install the plugins and modules. This method does NOT set a parent package ID and has been rendered obsolete since Joomla! 2.5, released in 2012. If you still see this kind of extension packaging please report it to its developer as a priority 1 bug: it ends up giving you misleading information when updating your site to a newer Joomla version, and you can't do anything about it.
- Erroneous packaging of “package” type extensions. The extensions included in a package MUST NOT have their own update sites. Moreover, they need to be listed in the XML manifest, not installed with custom code (which makes it equivalent to the reason above). Unfortunately, some developers –even a couple of well-known ones– still do this kind of wrong packaging. While this may have been necessary during the first betas of Joomla! 1.6, these issues have been fixed in Joomla! since 2011. There's no reason to break Joomla updates by abusing the package extension type like this anymore.