Skip to content

spack gc: remove packages not used by an environment #14695

@adamjstewart

Description

@adamjstewart

I would like spack gc to have the additional functionality that would allow it to uninstall all packages that are not currently activated by some environment.

Rationale

I use Spack as a replacement for Homebrew. I would like functionality similar to brew cleanup that would allow me to uninstall all old versions of software that are no longer used by my environment.

Description

Preferably, this wouldn't include build dependencies needed to install my environment, since I will need to reinstall the environment from time-to-time , and since Spack currently automatically installs build dependencies even when they aren't needed (#7695).

In the meantime, @becker33 came up with the following script that could likely be adapted to work for spack gc:

#!/usr/bin/env spack-python
from spack.cmd.uninstall import dependent_environments
import spack.store
installed = spack.store.db.query()
for spec in installed:
    if not dependent_environments([spec]):
        spec.package.do_uninstall()

@alalazo

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions