跳转至

分析brew无用的包


"""分析指定包的依赖, 得出可以删除的无用的包"""

from os import popen

my_package = ['mariadb', 'postgresql@14', 'redis', 'python@3.10']
brew_list = [i.strip() for i in popen('brew list').readlines()]
dependencies = []
done = []


def demo(packages):
    for package in packages:
        if package in done:
            continue
        done.append(package)
        cmd = f'brew info {package}|grep Required:|cut -d : -f 2'
        ret = popen(cmd).read().strip()
        if ret:
            depend_packages = [_.strip() for _ in ret.split(',')]

            for depend_package in depend_packages:
                if depend_package.strip() not in dependencies:
                    dependencies.append(depend_package)

            demo(depend_packages)


demo(my_package)


brew_list_set = set(brew_list)
my_package.extend(dependencies)
dependencies_set = set(my_package)

print('这些包需要使用brew uninstall命令删除:')
print(brew_list_set - dependencies_set)