I am trying to delete all the older version of code packages installed in Author/Publishers and specifically trying to delete packages under /etc/packages with package name "cq-ui-5.1.45-SNAPSHOT.zip"..
"cq-ui-5.1.45-SNAPSHOT.zip" is the latest version installed on the system and we have similar old package versions
and this version starts from the year 2016 with package name - "cq-ui-5.0.00-SNAPSHOT.zip" .
The problem here is, all these packages are NOT under any group & these packages are not installed as a separate packages.
When i select the latest package "cq-ui-5.1.45-SNAPSHOT.zip" and then click "Older Versions"(below screenshot refers old versions) and i could see all these older version packages are under the same package since 2016. Now the concern is, these packages are not installed separately and all the old version packages from 2016 are under one package.
I have run the below command to uninstall one older version package alone and it shows uninstalled successfully. But when i check in package manager, i don't see any changes
Packages are stored in the JCR like any other node. You can find them all under /etc/packages. For example, here are multiple versions of AEM Core Components on my instance:
For every package on your system, my script will keep only the most recent version and delete (no uninstall) all the others.
If you run the script, it will first analyse your packages and tell you
How many outdated packages are to be deleted
How much space it will save
You can then choose to continue or not:
$ python3 aem-purge-packages.py Namespace(date=None, force=False, host=None, path=None, user=None, verbose=False) Getting package list from AEM ... Done 913 packages found 110 outdated packages found Getting package list from AEM ... Done Purging outdated packages will remove 1.49 GB / 4.31 GB of package data Do you wish to continue? (y/n):
In my case, I chose to continue, and you can see that it removed the older versions of each package:
Run the script with the -f flag to prevent it from asking for confirmation for every single deletion. Run it with the -h flag to see more options.
However please BEWARE!
I recommend that you back up your system before making any kind of large automated purges as a general rule of thumb, including this script.
There is a dependency system for packages. Future packages (including official Adobe ones) might have references to older packages that my script would purge (not the case on my instance, but if you have a old instance that was upgraded many times, it could happen). For example, here are the dependencies for the latest ACS Commons content package: If I delete a dependency, here is what happens: This is a sort of "false positive" because the dependency package is gone, but the content of the package had already been installed, so everything works fine.
If you want to improve my script to exclude packages from the purge if they are dependencies of other packages, you are more than welcome!