1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
<div class="hidden-warning"><a href="https://docs.haskellstack.org/"><img src="https://cdn.jsdelivr.net/gh/commercialhaskell/stack/doc/img/hidden-warning.svg"></a></div>
# 11. Locations used by Stack
Generally, you don't need to worry about where Stack stores various files. But
some people like to know this stuff. That's when the `stack path` command is
useful.
## The `stack path` command
`stack path --help` explains the available options and, consequently,
the output of the command:
~~~text
--stack-root Global Stack root directory
--global-config Global Stack configuration file
--project-root Project root (derived from stack.yaml file)
--config-location Configuration location (where the stack.yaml file is)
--bin-path PATH environment variable
--programs Install location for GHC and other core tools (see
'stack ls tools' command)
--compiler-exe Compiler binary (e.g. ghc)
--compiler-bin Directory containing the compiler binary (e.g. ghc)
--compiler-tools-bin Directory containing binaries specific to a
particular compiler
--local-bin Directory where Stack installs executables (e.g.
~/.local/bin (Unix-like OSs) or %APPDATA%\local\bin
(Windows))
--extra-include-dirs Extra include directories
--extra-library-dirs Extra library directories
--snapshot-pkg-db Snapshot package database
--local-pkg-db Local project package database
--global-pkg-db Global package database
--ghc-package-path GHC_PACKAGE_PATH environment variable
--snapshot-install-root Snapshot installation root
--local-install-root Local project installation root
--snapshot-doc-root Snapshot documentation root
--local-doc-root Local project documentation root
--local-hoogle-root Local project documentation root
--dist-dir Dist work directory, relative to package directory
--local-hpc-root Where HPC reports and tix files are stored
~~~
In addition, `stack path` accepts the flags above on the command line to state
which keys you're interested in. This can be convenient for scripting. As a
simple example, let's find out the sandboxed versions of GHC that Stack
installed:
=== "Unix-like"
Command:
~~~text
ls $(stack path --programs)/*.installed
/home/<user_name>/.stack/programs/x86_64-linux/ghc-9.0.2.installed
~~~
=== "Windows"
In PowerShell, command:
~~~text
dir "$(stack path --programs)/*.installed"
Directory: C:\Users\mikep\AppData\Local\Programs\stack\x86_64-windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 27/07/2022 5:40 PM 9 ghc-9.0.2.installed
-a--- 25/02/2022 11:39 PM 9 msys2-20210604.installed
~~~
While we're talking about paths, to wipe our Stack install completely, here's
what typically needs to be removed:
1. the Stack root folder (see `stack path --stack-root`, before you uninstall);
2. if different, the folder containing Stack's global configuration file (see
`stack path --global-config`, before you uninstall);
3. on Windows, the folder containing Stack's tools (see `stack path --programs`,
before you uninstall), which is located outside of the Stack root folder; and
4. the `stack` executable file (see `which stack`, on Unix-like operating
systems, or `where.exe stack`, on Windows).
You may also want to delete `.stack-work` folders in any Haskell projects that
you have built using Stack. The `stack uninstall` command provides information
about how to uninstall Stack.
|