jlumbroso / free-disk-space

:octocat:⚙️🗑️ A GitHub Action to free disk space on an Ubuntu runner.
MIT License
386 stars 72 forks source link

Feature request: add whitelist for "Large misc. packages" #6

Open ingomueller-net opened 1 year ago

ingomueller-net commented 1 year ago

Thanks a lot for this awesome packages! It's an easy work-around for an annoying limitation :)

I have one idea to improve it for my current situation: I really need the space by all options, i.e., I need large-packages: true. However, I also need llvm-12 and friends, which is removed by that option. Of course, I can work around this by installing it again in another step but I think it would be more convenient and faster if it weren't removed in the first place. One idea to achieve this is to add a whitelist feature that allows to filter out packages that are going to be uninstalled. What do you think?

jlumbroso commented 1 year ago

Hello @ingomueller-net,

Thank you for your kind words and the very nice suggestion, I think this is an excellent idea!

The code for large file removal currently is here:

sudo apt-get remove -y '^dotnet-.*'
sudo apt-get remove -y '^llvm-.*'
sudo apt-get remove -y 'php.*'
sudo apt-get remove -y '^mongodb-.*'
sudo apt-get remove -y '^mysql-.*'
sudo apt-get remove -y azure-cli google-cloud-sdk google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri

A few questions for you:

ingomueller-net commented 1 year ago

Yes, I think 'large-packages-whitelist' would be a good idea. Maybe an actual list of regexes rather than a poor-man's list encoded as a string?

I have been able to reduce my disk usage by other means in the meantime, so I won't be using this action anymore for the time being. I did, however, spent a few minutes thinking about how I would implement this.

I found this post asking the same question I had: how to get a list of packages defined by a wildcard and then remove some with another wildcard. However, I think that that solution isn't quite what we want yet: it only whitelists packages that match the regex of packages that should be removed. However, apt-get remove may remove further packages, which should also be retained.

gmij commented 1 year ago

add a bug. when dotnet set false, and Large is true, shell will be clean all dotnet runtime . please fix. It would be even better to provide a. Net runtime environment that retains the specified version.