jlumbroso / free-disk-space

:octocat:⚙️🗑️ A GitHub Action to free disk space on an Ubuntu runner.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

ingomueller-net opened this issue · comments

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?

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:

  • Do you have any ideas on how you think this should be specified? So this could be an input flag, like large-packages-whitelist:, with a string of comma separated patterns? Like large-packages-whitelist: "llvm, dotnet" for instance?
  • Do you want to take a stab at implementing this?

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.

commented

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.