uninstall : updated documentation and error messages
This commit is contained in:
parent
401dcb3635
commit
f40b0f52e0
2 changed files with 35 additions and 16 deletions
|
@ -149,26 +149,46 @@ customize an installation in :ref:`sec-specs`.
|
||||||
``spack uninstall``
|
``spack uninstall``
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
To uninstall a package, type ``spack uninstall <package>``. This will
|
To uninstall a package, type ``spack uninstall <package>``. This will ask the user for
|
||||||
completely remove the directory in which the package was installed.
|
confirmation, and in case will completely remove the directory in which the package was installed.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
spack uninstall mpich
|
spack uninstall mpich
|
||||||
|
|
||||||
If there are still installed packages that depend on the package to be
|
If there are still installed packages that depend on the package to be
|
||||||
uninstalled, spack will refuse to uninstall it. You can override this
|
uninstalled, spack will refuse to uninstall it.
|
||||||
behavior with ``spack uninstall -f <package>``, but you risk breaking
|
|
||||||
other installed packages. In general, it is safer to remove dependent
|
|
||||||
packages *before* removing their dependencies.
|
|
||||||
|
|
||||||
A line like ``spack uninstall mpich`` may be ambiguous, if multiple
|
To uninstall a package and every package that depends on it, you may give the
|
||||||
``mpich`` configurations are installed. For example, if both
|
`--dependents` option.
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
spack uninstall --dependents mpich
|
||||||
|
|
||||||
|
will display a list of all the packages that depends on `mpich` and, upon confirmation,
|
||||||
|
will uninstall them in the right order.
|
||||||
|
|
||||||
|
A line like
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
spack uninstall mpich
|
||||||
|
|
||||||
|
may be ambiguous, if multiple ``mpich`` configurations are installed. For example, if both
|
||||||
``mpich@3.0.2`` and ``mpich@3.1`` are installed, ``mpich`` could refer
|
``mpich@3.0.2`` and ``mpich@3.1`` are installed, ``mpich`` could refer
|
||||||
to either one. Because it cannot determine which one to uninstall,
|
to either one. Because it cannot determine which one to uninstall,
|
||||||
Spack will ask you to provide a version number to remove the
|
Spack will ask you either to provide a version number to remove the
|
||||||
ambiguity. As an example, ``spack uninstall mpich@3.1`` is
|
ambiguity or use the ``--all`` option to uninstall all of the matching packages.
|
||||||
unambiguous in this scenario.
|
|
||||||
|
You may force uninstall a package with the `--force` option
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
spack uninstall --force mpich
|
||||||
|
|
||||||
|
but you risk breaking other installed packages. In general, it is safer to remove dependent
|
||||||
|
packages *before* removing their dependencies or use the `--dependents` option.
|
||||||
|
|
||||||
|
|
||||||
Seeing installed packages
|
Seeing installed packages
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
import sys
|
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
import llnl.util.tty as tty
|
import llnl.util.tty as tty
|
||||||
|
@ -48,8 +47,8 @@ def ask_for_confirmation(message):
|
||||||
if choice == 'y':
|
if choice == 'y':
|
||||||
break
|
break
|
||||||
elif choice == 'n':
|
elif choice == 'n':
|
||||||
sys.exit(1)
|
raise SystemExit('Operation aborted')
|
||||||
tty.warning('Please reply either "y" or "n"')
|
tty.warn('Please reply either "y" or "n"')
|
||||||
|
|
||||||
|
|
||||||
def setup_parser(subparser):
|
def setup_parser(subparser):
|
||||||
|
@ -164,7 +163,7 @@ def uninstall(parser, args):
|
||||||
specs = spack.cmd.parse_specs(args.packages)
|
specs = spack.cmd.parse_specs(args.packages)
|
||||||
# Gets the list of installed specs that match the ones give via cli
|
# Gets the list of installed specs that match the ones give via cli
|
||||||
uninstall_list = concretize_specs(specs, args.all, args.force) # takes care of '-a' is given in the cli
|
uninstall_list = concretize_specs(specs, args.all, args.force) # takes care of '-a' is given in the cli
|
||||||
dependent_list = installed_dependents(uninstall_list) # takes care of '-r'
|
dependent_list = installed_dependents(uninstall_list) # takes care of '-d'
|
||||||
|
|
||||||
# Process dependent_list and update uninstall_list
|
# Process dependent_list and update uninstall_list
|
||||||
has_error = False
|
has_error = False
|
||||||
|
@ -182,7 +181,7 @@ def uninstall(parser, args):
|
||||||
uninstall_list = list(set(uninstall_list))
|
uninstall_list = list(set(uninstall_list))
|
||||||
|
|
||||||
if has_error:
|
if has_error:
|
||||||
tty.die('You can use spack uninstall -r to uninstall these dependencies as well')
|
tty.die('You can use spack uninstall --dependents to uninstall these dependencies as well')
|
||||||
|
|
||||||
if not args.yes_to_all:
|
if not args.yes_to_all:
|
||||||
tty.msg("The following packages will be uninstalled : ")
|
tty.msg("The following packages will be uninstalled : ")
|
||||||
|
|
Loading…
Reference in a new issue