Basic Usage

The spack command has many subcommands. You’ll only need a small subset of them for typical usage.

Note that Spack colorizes output. less -R should be used with Spack to maintain this colorization. E.g.:

$ spack find | less -R

It is recommended that the following be put in your .bashrc file:

alias less='less -R'

Listing available packages

To install software with Spack, you need to know what software is available. You can see a list of available package names at the Package List webpage, or using the spack list command.

spack list

The spack list command prints out a list of all of the packages Spack can install:

$ spack list
abinit                           mvapich2                               r-bumphunter
abyss                            mxml                                   r-c50
accfft                           mxnet                                  r-cairo
ack                              nag                                    r-callr
activeharmony                    nalu                                   r-car
adept-utils                      nalu-wind                              r-caret
adios                            namd                                   r-category
adios2                           nano                                   r-catools
adlbx                            nanoflann                              r-cdcfluview
adol-c                           nanopb                                 r-cellranger
aegean                           nasm                                   r-checkmate
aida                             nauty                                  r-checkpoint
albany                           ncbi-magicblast                        r-chemometrics
albert                           ncbi-rmblastn                          r-chron
alglib                           ncbi-toolkit                           r-circlize
allinea-forge                    nccl                                   r-class
allinea-reports                  nccmp                                  r-classint
allpaths-lg                      ncdu                                   r-cli
alquimia                         ncftp                                  r-clipr
alsa-lib                         ncl                                    r-cluster
aluminum                         nco                                    r-clustergeneration
amg                              ncurses                                r-clusterprofiler
amg2013                          ncview                                 r-cner
amp                              ndiff                                  r-coda
ampliconnoise                    nek5000                                r-codetools
amrex                            nekbone                                r-coin
amrvis                           nekcem                                 r-colorspace
andi                             nektar                                 r-combinat
angsd                            neovim                                 r-complexheatmap
ant                              nest                                   r-compositions
antlr                            netcdf                                 r-convevol
ants                             netcdf-cxx                             r-corhmm
ape                              netcdf-cxx4                            r-corpcor
aperture-photometry              netcdf-fortran                         r-corrplot
apex                             netgauge                               r-covr
apple-libunwind                  netgen                                 r-cowplot
applewmproto                     netlib-lapack                          r-crayon
appres                           netlib-scalapack                       r-crosstalk
apr                              netlib-xblas                           r-ctc
apr-util                         nettle                                 r-cubature
aragorn                          neuron                                 r-cubist
archer                           nextflow                               r-curl
argobots                         nfft                                   r-data-table
argp-standalone                  nghttp2                                r-dbi
argtable                         nginx                                  r-dbplyr
arlecore                         ngmlr                                  r-delayedarray
armadillo                        ninja                                  r-deldir
arpack-ng                        ninja-fortran                          r-dendextend
arrow                            nlohmann-json                          r-deoptim
ascent                           nlopt                                  r-deoptimr
asciidoc                         nmap                                   r-deseq
asciidoctor                      nnvm                                   r-deseq2
aspa                             node-js                                r-desolve
aspcud                           notmuch                                r-devtools
aspect                           npb                                    r-diagrammer
aspell                           npm                                    r-dicekriging
aspell6-de                       npth                                   r-dichromat
aspell6-en                       nspr                                   r-diffusionmap
aspell6-es                       numactl                                r-digest
aspera-cli                       numdiff                                r-diptest
assimp                           nut                                    r-dirichletmultinomial
astra                            nvptx-tools                            r-dismo
astral                           nwchem                                 r-diversitree
astyle                           nyancat                                r-dnacopy
at-spi2-atk                      ocaml                                  r-do-db
at-spi2-core                     occa                                   r-domc
atk                              oce                                    r-doparallel
atlas                            oclint                                 r-dorng
atom-dft                         oclock                                 r-dose
atompaw                          octave                                 r-downloader
atop                             octave-optim                           r-dplyr
augustus                         octave-splines                         r-dt
autoconf                         octave-struct                          r-dtw
autodock-vina                    octopus                                r-dygraphs
autofact                         of-adios-write                         r-e1071
autogen                          of-catalyst                            r-edger
automaded                        of-precice                             r-ellipse
automake                         omega-h                                r-energy
axel                             ompss                                  r-ensembldb
axl                              ompt-openmp                            r-ergm
bamdst                           oniguruma                              r-evaluate
bamtools                         ont-albacore                           r-expint
bamutil                          opa-psm2                               r-expm
barrnap                          opam                                   r-factoextra
bash                             opari2                                 r-factominer
bash-completion                  openbabel                              r-fastcluster
bats                             openblas                               r-fastmatch
bazel                            opencoarrays                           r-ff
bbcp                             opencv                                 r-fftwtools
bbmap                            openexr                                r-fgsea
bc                               openfast                               r-filehash
bcftools                         openfoam-com                           r-findpython
bcl2fastq2                       openfoam-org                           r-fit-models
bdftopcf                         openfst                                r-flashclust
bdw-gc                           opengl                                 r-flexclust
bear                             openglu                                r-flexmix
beast1                           openimageio                            r-fnn
beast2                           openjpeg                               r-forcats
bedops                           openmc                                 r-foreach
bedtools2                        openmpi                                r-forecast
beforelight                      opennurbs                              r-foreign
benchmark                        openpa                                 r-formatr
berkeley-db                      openpmd-api                            r-formula
bertini                          openscenegraph                         r-fpc
bib2xhtml                        openslide                              r-fracdiff
bigreqsproto                     openspeedshop                          r-futile-logger
binutils                         openspeedshop-utils                    r-futile-options
bioawk                           openssh                                r-gbm
biobloom                         openssl                                r-gcrma
biopieces                        opium                                  r-gdata
bismark                          optional-lite                          r-gdsfmt
bison                            opus                                   r-geiger
bitmap                           orca                                   r-genefilter
blasr                            orfm                                   r-genelendatabase
blasr-libcpp                     orthofinder                            r-geneplotter
blast-plus                       orthomcl                               r-genie3
blat                             osmctools                              r-genomeinfodb
blaze                            osu-micro-benchmarks                   r-genomeinfodbdata
blis                             otf                                    r-genomicalignments
bliss                            otf2                                   r-genomicfeatures
blitz                            p4est                                  r-genomicranges
bmake                            p7zip                                  r-gensa
bml                              pacbio-daligner                        r-geomorph
bohrium                          pacbio-damasker                        r-geoquery
bolt                             pacbio-dazz-db                         r-geor
bookleaf-cpp                     pacbio-dextractor                      r-geosphere
boost                            packmol                                r-getopt
boostmplcartesianproduct         pacvim                                 r-getoptlong
bowtie                           pagit                                  r-ggally
bowtie2                          pagmo                                  r-ggbio
boxlib                           paml                                   r-ggdendro
bpp-core                         panda                                  r-ggjoy
bpp-phyl                         pandaseq                               r-ggmap
bpp-seq                          pango                                  r-ggplot2
bpp-suite                        pangomm                                r-ggpubr
bracken                          papi                                   r-ggrepel
braker                           papyrus                                r-ggridges
branson                          paradiseo                              r-ggsci
breakdancer                      parallel                               r-ggvis
breseq                           parallel-netcdf                        r-gistr
brigand                          paraver                                r-git2r
bsseeker2                        paraview                               r-glimma
bucky                            parmetis                               r-glmnet
bumpversion                      parmgridgen                            r-globaloptions
busco                            parquet                                r-glue
butter                           parsimonator                           r-gmodels
bwa                              parsplice                              r-gmp
bwtool                           partitionfinder                        r-go-db
byobu                            patch                                  r-googlevis
bzip2                            patchelf                               r-goplot
c-blosc                          pathfinder                             r-gosemsim
c-lime                           pax-utils                              r-goseq
cabana                           pbbam                                  r-gostats
caffe                            pbmpi                                  r-gplots
cairo                            pbsuite                                r-graph
cairomm                          pcma                                   r-gridbase
caliper                          pcre                                   r-gridextra
callpath                         pcre2                                  r-gseabase
camellia                         pdf2svg                                r-gss
candle-benchmarks                pdftk                                  r-gsubfn
cantera                          pdsh                                   r-gtable
canu                             pdt                                    r-gtools
cap3                             pegtl                                  r-gtrellis
cares                            pennant                                r-gviz
cask                             percept                                r-haven
casper                           perl                                   r-hexbin
catalyst                         perl-algorithm-diff                    r-highr
catch                            perl-app-cmd                           r-hmisc
cbench                           perl-array-utils                       r-hms
cblas                            perl-b-hooks-endofscope                r-htmltable
cbtf                             perl-bio-perl                          r-htmltools
cbtf-argonavis                   perl-bit-vector                        r-htmlwidgets
cbtf-argonavis-gui               perl-cairo                             r-httpuv
cbtf-krell                       perl-capture-tiny                      r-httr
cbtf-lanl                        perl-carp-clan                         r-hwriter
ccache                           perl-cgi                               r-hypergraph
cctools                          perl-class-data-inheritable            r-ica
cdbfasta                         perl-class-inspector                   r-igraph
cdd                              perl-class-load                        r-illuminaio
cddlib                           perl-class-load-xs                     r-impute
cdhit                            perl-clone                             r-influencer
cdo                              perl-compress-raw-bzip2                r-inline
ceed                             perl-compress-raw-zlib                 r-interactivedisplaybase
cereal                           perl-config-general                    r-ipred
ceres-solver                     perl-contextual-return                 r-iranges
cfitsio                          perl-cpan-meta-check                   r-irdisplay
cgal                             perl-data-optlist                      r-irkernel
cgm                              perl-data-stag                         r-irlba
cgns                             perl-dbd-mysql                         r-iso
channelflow                      perl-dbd-sqlite                        r-iterators
charliecloud                     perl-dbfile                            r-janitor
charmpp                          perl-dbi                               r-jaspar2018
chatterbug                       perl-devel-cycle                       r-jomo
check                            perl-devel-globaldestruction           r-jpeg
chlorop                          perl-devel-overloadinfo                r-jsonlite
chombo                           perl-devel-stacktrace                  r-kegg-db
chrpath                          perl-digest-md5                        r-kegggraph
circos                           perl-dist-checkconflicts               r-keggrest
cistem                           perl-encode-locale                     r-kernlab
citcoms                          perl-eval-closure                      r-kernsmooth
cityhash                         perl-exception-class                   r-kknn
clamr                            perl-exporter-tiny                     r-knitr
clapack                          perl-extutils-config                   r-ks
claw                             perl-extutils-depends                  r-labeling
cleaveland4                      perl-extutils-helpers                  r-lambda-r
cleverleaf                       perl-extutils-installpaths             r-laplacesdemon
clfft                            perl-extutils-makemaker                r-lars
clhep                            perl-extutils-pkgconfig                r-lattice
clingo                           perl-file-copy-recursive               r-latticeextra
cloc                             perl-file-listing                      r-lava
cloog                            perl-file-pushd                        r-lazyeval
cloverleaf                       perl-file-sharedir-install             r-leaflet
cloverleaf3d                     perl-file-slurp-tiny                   r-leaps
clp                              perl-file-slurper                      r-learnbayes
clustalo                         perl-file-which                        r-lhs
clustalw                         perl-font-ttf                          r-limma
cmake                            perl-gd                                r-lme4
cmocka                           perl-gd-graph                          r-lmtest
cmor                             perl-gd-text                           r-locfit
cnmem                            perl-gdgraph-histogram                 r-log4r
cnpy                             perl-graph                             r-lpsolve
cntk                             perl-graph-readwrite                   r-lsei
cntk1bitsgd                      perl-html-parser                       r-lubridate
codar-cheetah                    perl-html-tagset                       r-magic
codes                            perl-http-cookies                      r-magrittr
coevp                            perl-http-daemon                       r-makecdfenv
cohmm                            perl-http-date                         r-maldiquant
coinhsl                          perl-http-message                      r-manipulatewidget
colm                             perl-http-negotiate                    r-mapproj
colordiff                        perl-inline                            r-maps
comd                             perl-inline-c                          r-maptools
commons-lang                     perl-intervaltree                      r-markdown
commons-lang3                    perl-io-compress                       r-mass
commons-logging                  perl-io-html                           r-matr
compiz                           perl-io-sessiondata                    r-matrix
compositeproto                   perl-io-socket-ssl                     r-matrixmodels
conduit                          perl-io-string                         r-matrixstats
constype                         perl-json                              r-mclust
converge                         perl-libwww-perl                       r-mcmcglmm
coreutils                        perl-list-moreutils                    r-mco
corset                           perl-log-log4perl                      r-mda
cosmomc                          perl-lwp                               r-memoise
cosp2                            perl-lwp-mediatypes                    r-mergemaid
cp2k                             perl-lwp-protocol-https                r-methodss3
cppad                            perl-math-bezier                       r-mgcv
cppcheck                         perl-math-cdf                          r-mgraster
cppgsl                           perl-math-cephes                       r-mice
cpprestsdk                       perl-math-matrixreal                   r-mime
cppunit                          perl-math-round                        r-minfi
cppzmq                           perl-math-vecstat                      r-miniui
cpu-features                     perl-module-build                      r-minqa
cpuinfo                          perl-module-build-tiny                 r-misc3d
cram                             perl-module-implementation             r-mitml
cryptopp                         perl-module-runtime                    r-mixtools
cscope                           perl-module-runtime-conflicts          r-mlbench
csdp                             perl-moose                             r-mlinterfaces
ctffind                          perl-mozilla-ca                        r-mlr
cub                              perl-mro-compat                        r-mlrmbo
cube                             perl-namespace-clean                   r-mmwrweek
cubelib                          perl-net-http                          r-mnormt
cubew                            perl-net-scp-expect                    r-modelmetrics
cuda                             perl-net-ssleay                        r-modelr
cuda-memtest                     perl-number-format                     r-modeltools
cudnn                            perl-package-deprecationmanager        r-mpm
cufflinks                        perl-package-stash                     r-msnbase
cups                             perl-package-stash-xs                  r-multcomp
curl                             perl-padwalker                         r-multicool
cvs                              perl-parallel-forkmanager              r-multitaper
czmq                             perl-params-util                       r-multtest
dakota                           perl-params-validate                   r-munsell
daligner                         perl-parse-recdescent                  r-mvtnorm
damageproto                      perl-pdf-api2                          r-mzid
damaris                          perl-pegex                             r-mzr
damselfly                        perl-perl4-corelibs                    r-nanotime
darshan-runtime                  perl-perl6-slurp                       r-ncbit
darshan-util                     perl-perlio-gzip                       r-ncdf4
dash                             perl-perlio-utf8-strict                r-network
datamash                         perl-readonly                          r-networkd3
dataspaces                       perl-regexp-common                     r-nlme
davix                            perl-scalar-list-utils                 r-nloptr
dbcsr                            perl-scalar-util-numeric               r-nmf
dbus                             perl-set-intspan                       r-nnet
dcmtk                            perl-soap-lite                         r-nnls
dealii                           perl-star-fusion                       r-nor1mix
dealii-parameter-gui             perl-statistics-basic                  r-np
deconseq-standalone              perl-statistics-descriptive            r-numderiv
dejagnu                          perl-statistics-pca                    r-oligoclasses
delly2                           perl-sub-exporter                      r-oo
denovogear                       perl-sub-exporter-progressive          r-openssl
dftfe                            perl-sub-identify                      r-optparse
dia                              perl-sub-install                       r-org-hs-eg-db
dialign-tx                       perl-sub-name                          r-organismdbi
diamond                          perl-sub-uplevel                       r-packrat
diffsplice                       perl-svg                               r-pacman
diffutils                        perl-swissknife                        r-paleotree
direnv                           perl-task-weaken                       r-pamr
discovar                         perl-term-readkey                      r-pan
discovardenovo                   perl-test-cleannamespaces              r-parallelmap
dislin                           perl-test-deep                         r-paramhelpers
diy                              perl-test-differences                  r-party
dlpack                           perl-test-exception                    r-partykit
dmd                              perl-test-fatal                        r-pathview
dmlc-core                        perl-test-memory-cycle                 r-pbapply
dmtcp                            perl-test-most                         r-pbdzmq
dmxproto                         perl-test-needs                        r-pbkrtest
docbook-xml                      perl-test-requires                     r-pcamethods
docbook-xsl                      perl-test-requiresinternet             r-pcapp
dos2unix                         perl-test-warn                         r-permute
dotnet-core-sdk                  perl-test-warnings                     r-pfam-db
double-conversion                perl-text-csv                          r-phangorn
doxygen                          perl-text-diff                         r-phantompeakqualtools
dri2proto                        perl-text-format                       r-phyloseq
dri3proto                        perl-text-simpletable                  r-phytools
ds                               perl-text-soundex                      r-picante
dsdp                             perl-text-unidecode                    r-pkgconfig
dsrc                             perl-time-hires                        r-pkgmaker
dtcmp                            perl-time-piece                        r-plogr
dyninst                          perl-try-tiny                          r-plot3d
ea-utils                         perl-uri                               r-plotly
easybuild                        perl-uri-escape                        r-plotrix
ebms                             perl-version                           r-pls
eccodes                          perl-want                              r-plyr
ecflow                           perl-www-robotrules                    r-pmcmr
eclipse-gcj-parser               perl-xml-parser                        r-png
ecp-proxy-apps                   perl-xml-parser-lite                   r-popgenome
ed                               perl-xml-simple                        r-powerlaw
editres                          perl-yaml-libyaml                      r-prabclus
eigen                            petsc                                  r-praise
elasticsearch                    pexsi                                  r-preprocesscore
elemental                        pfft                                   r-prettyunits
elfutils                         pflotran                               r-processx
elk                              pfunit                                 r-prodlim
elpa                             pgdspider                              r-progress
elsd                             pgi                                    r-protgenerics
elsdc                            pgmath                                 r-proto
emacs                            phantompeakqualtools                   r-proxy
ember                            phast                                  r-pryr
emboss                           phasta                                 r-ps
encodings                        phist                                  r-psych
energyplus                       phylip                                 r-ptw
environment-modules              phyluce                                r-purrr
eospac                           picard                                 r-quadprog
er                               picsar                                 r-quantmod
erne                             picsarlite                             r-quantreg
es                               pidx                                   r-quantro
esmf                             pigz                                   r-qvalue
essl                             pilon                                  r-r6
ethminer                         pindel                                 r-randomfields
etsf-io                          piranha                                r-randomfieldsutils
everytrace                       pism                                   r-randomforest
everytrace-example               pixman                                 r-ranger
evieext                          pkg-config                             r-rappdirs
exabayes                         pkgconf                                r-raster
examinimd                        planck-likelihood                      r-rbgl
exampm                           plasma                                 r-rbokeh
exasp2                           platypus                               r-rcolorbrewer
exchanger                        plink                                  r-rcpp
exmcutils                        plplot                                 r-rcpparmadillo
exodusii                         plumed                                 r-rcppblaze
exonerate                        pmgr-collective                        r-rcppcctz
expat                            pmix                                   r-rcppcnpy
expect                           pnfft                                  r-rcppeigen
express                          pngwriter                              r-rcppprogress
extrae                           pnmpi                                  r-rcurl
exuberant-ctags                  poamsa                                 r-rda
eztrace                          pocl                                   r-readr
f18                              polymake                               r-readxl
f90cache                         poppler                                r-registry
fabtests                         poppler-data                           r-rematch
falcon                           porta                                  r-reordercluster
fast-global-file-status          portage                                r-reportingtools
fasta                            portcullis                             r-repr
fastjar                          postgresql                             r-reprex
fastmath                         ppl                                    r-reshape
fastme                           pplacer                                r-reshape2
fastphase                        prank                                  r-rex
fastq-screen                     precice                                r-rgdal
fastqc                           presentproto                           r-rgenoud
fastqvalidator                   preseq                                 r-rgeos
fasttree                         price                                  r-rgl
fastx-toolkit                    primer3                                r-rgooglemaps
fenics                           prinseq-lite                           r-rgraphviz
fermi                            printproto                             r-rhdf5
fermikit                         prng                                   r-rhtslib
fermisciencetools                probconsrna                            r-rinside
ferret                           prodigal                               r-rjags
ffmpeg                           proj                                   r-rjava
fftw                             protobuf                               r-rjson
figtree                          proxymngr                              r-rjsonio
fimpute                          pruners-ninja                          r-rlang
findutils                        ps-lite                                r-rmarkdown
fio                              psi4                                   r-rminer
fish                             pslib                                  r-rmpfr
fixesproto                       psm                                    r-rmpi
flac                             psmc                                   r-rmysql
flang                            pstreams                               r-rngtools
flann                            pugixml                                r-robustbase
flash                            pumi                                   r-rocr
flatbuffers                      pv                                     r-rodbc
flatcc                           pvm                                    r-rots
flecsale                         pxz                                    r-roxygen2
flecsi                           py-3to2                                r-rpart
flex                             py-4suite-xml                          r-rpart-plot
flint                            py-abipy                               r-rpostgresql
flit                             py-adios                               r-rprojroot
fltk                             py-affine                              r-rrpp
flux-core                        py-alabaster                           r-rsamtools
flux-sched                       py-apache-libcloud                     r-rsnns
fluxbox                          py-apipkg                              r-rsolnp
fmt                              py-appdirs                             r-rsqlite
foam-extend                      py-appnope                             r-rstan
folly                            py-apscheduler                         r-rstudioapi
font-adobe-100dpi                py-argcomplete                         r-rtracklayer
font-adobe-75dpi                 py-argparse                            r-rtsne
font-adobe-utopia-100dpi         py-ase                                 r-rvcheck
font-adobe-utopia-75dpi          py-asn1crypto                          r-rvest
font-adobe-utopia-type1          py-astroid                             r-rzmq
font-alias                       py-astropy                             r-s4vectors
font-arabic-misc                 py-atomicwrites                        r-samr
font-bh-100dpi                   py-attrs                               r-sandwich
font-bh-75dpi                    py-autopep8                            r-scales
font-bh-lucidatypewriter-100dpi  py-avro                                r-scatterplot3d
font-bh-lucidatypewriter-75dpi   py-avro-json-serializer                r-sdmtools
font-bh-ttf                      py-babel                               r-segmented
font-bh-type1                    py-backcall                            r-selectr
font-bitstream-100dpi            py-backports-abc                       r-seqinr
font-bitstream-75dpi             py-backports-functools-lru-cache       r-seqlogo
font-bitstream-speedo            py-backports-shutil-get-terminal-size  r-seurat
font-bitstream-type1             py-backports-ssl-match-hostname        r-sf
font-cronyx-cyrillic             py-basemap                             r-sfsmisc
font-cursor-misc                 py-bcbio-gff                           r-shape
font-daewoo-misc                 py-beautifulsoup4                      r-shiny
font-dec-misc                    py-binwalk                             r-shinydashboard
font-ibm-type1                   py-biom-format                         r-shortread
font-isas-misc                   py-biopython                           r-siggenes
font-jis-misc                    py-bitarray                            r-simpleaffy
font-micro-misc                  py-bitstring                           r-sm
font-misc-cyrillic               py-bleach                              r-smoof
font-misc-ethiopic               py-blessings                           r-sn
font-misc-meltho                 py-bokeh                               r-snow
font-misc-misc                   py-boltons                             r-snowfall
font-mutt-misc                   py-bottleneck                          r-snprelate
font-schumacher-misc             py-breakseq2                           r-som
font-screen-cyrillic             py-breathe                             r-somaticsignatures
font-sony-misc                   py-brian                               r-sourcetools
font-sun-misc                    py-brian2                              r-sp
font-util                        py-bsddb3                              r-sparsem
font-winitzki-cyrillic           py-bx-python                           r-spdep
font-xfree86-type1               py-cartopy                             r-speedglm
fontcacheproto                   py-cclib                               r-spem
fontconfig                       py-cdat-lite                           r-splancs
fontsproto                       py-cdo                                 r-splitstackshape
fonttosfnt                       py-certifi                             r-sqldf
fp16                             py-cffi                                r-squash
fpc                              py-cftime                              r-sseq
fr-hit                           py-chardet                             r-stanheaders
freebayes                        py-checkm-genome                       r-statmod
freeglut                         py-cheetah                             r-statnet-common
freetype                         py-click                               r-stringi
freexl                           py-click-plugins                       r-stringr
fseq                             py-cligj                               r-strucchange
fsl                              py-cloudpickle                         r-subplex
fslsfonts                        py-cogent                              r-summarizedexperiment
fstobdf                          py-colorama                            r-survey
fstrack                          py-colormath                           r-survival
ftgl                             py-configparser                        r-sva
funhpc                           py-counter                             r-tarifx
fyba                             py-coverage                            r-tclust
gapbs                            py-cpuinfo                             r-tensora
gapcloser                        py-crispresso                          r-testit
gapfiller                        py-cryptography                        r-testthat
gasnet                           py-csvkit                              r-tfbstools
gatk                             py-current                             r-tfmpvalue
gaussian                         py-cutadapt                            r-th-data
gawk                             py-cvxopt                              r-threejs
gblocks                          py-cycler                              r-tibble
gcc                              py-cython                              r-tidycensus
gccmakedep                       py-dask                                r-tidyr
gccxml                           py-dateutil                            r-tidyselect
gconf                            py-dbf                                 r-tidyverse
gcta                             py-decorator                           r-tiff
gdal                             py-deeptools                           r-tigris
gdb                              py-dendropy                            r-timedate
gdbm                             py-descartes                           r-tmixclust
gdk-pixbuf                       py-dill                                r-topgo
gdl                              py-discover                            r-trimcluster
geant4                           py-dlcpar                              r-truncnorm
gearshifft                       py-docopt                              r-trust
gemmlowp                         py-docutils                            r-tseries
genemark-et                      py-doxypy                              r-tsne
genomefinisher                   py-doxypypy                            r-ttr
genometools                      py-dryscrape                           r-udunits2
geopm                            py-dxchange                            r-units
geos                             py-dxfile                              r-utils
gettext                          py-easybuild-easyblocks                r-uuid
gflags                           py-easybuild-easyconfigs               r-variantannotation
ghost                            py-easybuild-framework                 r-varselrf
ghostscript                      py-edffile                             r-vcd
ghostscript-fonts                py-editdistance                        r-vegan
giflib                           py-elasticsearch                       r-vgam
git                              py-elephant                            r-vipor
git-fat-git                      py-emcee                               r-viridis
git-imerge                       py-entrypoints                         r-viridislite
git-lfs                          py-enum34                              r-visnetwork
gl2ps                            py-epydoc                              r-vsn
glew                             py-espresso                            r-webshot
glfmultiples                     py-espressopp                          r-whisker
glib                             py-et-xmlfile                          r-withr
glibmm                           py-eventlet                            r-xde
glimmer                          py-execnet                             r-xgboost
glm                              py-fastaindex                          r-xlconnect
global                           py-fasteners                           r-xlconnectjars
globalarrays                     py-faststructure                       r-xlsx
globus-toolkit                   py-filelock                            r-xlsxjars
glog                             py-fiona                               r-xmapbridge
gloo                             py-fiscalyear                          r-xml
glpk                             py-flake8                              r-xml2
glproto                          py-flake8-polyfill                     r-xnomial
glvis                            py-flask                               r-xtable
gmake                            py-flask-compress                      r-xts
gmap-gsnap                       py-flask-socketio                      r-xvector
gmime                            py-flexx                               r-yaml
gmodel                           py-fn                                  r-yapsa
gmp                              py-fparser                             r-yaqcaffy
gmsh                             py-funcsigs                            r-yarn
gmt                              py-functools32                         r-zlibbioc
gnat                             py-future                              r-zoo
gnu-prolog                       py-futures                             r3d
gnupg                            py-fypp                                racon
gnuplot                          py-gdbgui                              raft
gnutls                           py-genders                             ragel
go                               py-genshi                              raja
go-bootstrap                     py-geopandas                           randfold
gobject-introspection            py-gevent                              random123
googletest                       py-git-review                          randrproto
gotcha                           py-git2                                range-v3
gource                           py-gnuplot                             rankstr
gperf                            py-goatools                            rapidjson
gperftools                       py-gpaw                                ravel
gpgme                            py-greenlet                            raxml
gplates                          py-griddataformats                     ray
grackle                          py-guidata                             rclone
gradle                           py-guiqwt                              rdma-core
grandr                           py-h5glance                            rdp-classifier
graph500                         py-h5py                                re2c
graphicsmagick                   py-hdfs                                readfq
graphlib                         py-hepdata-validator                   readline
graphmap                         py-html2text                           recordproto
graphviz                         py-html5lib                            redset
grass                            py-htseq                               redundans
grib-api                         py-httpbin                             regcm
grnboost                         py-hypothesis                          relion
groff                            py-idna                                rempi
gromacs                          py-igraph                              rename
gsl                              py-illumina-utils                      rendercheck
gslib                            py-imageio                             renderproto
gtkmm                            py-imagesize                           repeatmasker
gtkorvo-atl                      py-iminuit                             resourceproto
gtkorvo-cercs-env                py-importlib                           revbayes
gtkorvo-dill                     py-ipaddress                           rgb
gtkorvo-enet                     py-ipdb                                rhash
gtkplus                          py-ipykernel                           rlwrap
gts                              py-ipython                             rmats
guidance                         py-ipython-genutils                    rmlab
guile                            py-ipywidgets                          rna-seqc
gurobi                           py-isort                               rngstreams
h5hut                            py-itsdangerous                        rocksdb
h5part                           py-jdcal                               rockstar
h5utils                          py-jedi                                root
h5z-zfp                          py-jinja2                              rose
hacckernels                      py-joblib                              ross
hadoop                           py-jprops                              rr
halc                             py-jpype                               rsbench
hapcut2                          py-jsonschema                          rsem
hapdip                           py-junit-xml                           rstart
haploview                        py-jupyter-client                      rsync
harfbuzz                         py-jupyter-console                     rtags
harminv                          py-jupyter-core                        rtax
hc                               py-jupyter-notebook                    ruby
hdf                              py-keras                               ruby-gnuplot
hdf5                             py-kiwisolver                          ruby-narray
hdf5-blosc                       py-lark-parser                         ruby-ronn
help2man                         py-latexcodec                          ruby-rubyinline
henson                           py-lazy                                ruby-svn2git
hepmc                            py-lazy-object-proxy                   ruby-terminal-table
heppdt                           py-lazy-property                       rust
hic-pro                          py-lazyarray                           rust-bindgen
highfive                         py-libconf                             sabre
highwayhash                      py-libensemble                         saga-gis
hiop                             py-line-profiler                       sailfish
hisat2                           py-linecache2                          salmon
hisea                            py-lit                                 sambamba
hmmer                            py-llvmlite                            samblaster
homer                            py-lmfit                               samrai
hoomd-blue                       py-localcider                          samtools
hpccg                            py-locket                              sandbox
hpctoolkit                       py-lockfile                            sas
hpgmg                            py-logilab-common                      satsuma2
hpl                              py-lrudict                             savanna
hpx                              py-lxml                                saws
hpx5                             py-lzstring                            sbt
hsakmt                           py-m2r                                 scala
hstr                             py-macholib                            scalasca
htop                             py-machotools                          scallop
htslib                           py-macs2                               scalpel
httpie                           py-maestrowf                           scan-for-matches
hub                              py-mako                                scons
hunspell                         py-mappy                               scorec-core
hwloc                            py-markdown                            scorep
hybpiper                         py-markupsafe                          scotch
hydra                            py-matplotlib                          scr
hydrogen                         py-mccabe                              screen
hypre                            py-mdanalysis                          scripts
i3                               py-meep                                scrnsaverproto
ibmisc                           py-memory-profiler                     sctk
iceauth                          py-merlin                              sdl2
icedtea                          py-methylcode                          sdl2-image
icet                             py-mg-rast-tools                       sdsl-lite
ico                              py-misopy                              seacas
icu4c                            py-mistune                             sed
id3lib                           py-mock                                sentieon-genomics
idba                             py-moltemplate                         seqan
igraph                           py-mongo                               seqprep
igvtools                         py-monotonic                           seqtk
ilmbase                          py-monty                               serf
image-magick                     py-more-itertools                      sessreg
imake                            py-mpi4py                              setxkbmap
imp                              py-mpmath                              sga
impute2                          py-multiprocess                        shapeit
infernal                         py-multiqc                             shared-mime-info
inputproto                       py-munch                               shiny-server
intel                            py-mx                                  shocklibs
intel-daal                       py-mxnet                               shoremap
intel-gpu-tools                  py-myhdl                               shortbred
intel-ipp                        py-mysqldb1                            shortstack
intel-mkl                        py-natsort                             showfont
intel-mkl-dnn                    py-nbconvert                           shuffile
intel-mpi                        py-nbformat                            sickle
intel-parallel-studio            py-neo                                 siesta
intel-tbb                        py-nestle                              signalp
intel-xed                        py-netcdf4                             signify
intltool                         py-netifaces                           silo
ior                              py-networkx                            simplemoc
iozone                           py-nose                                simul
iperf2                           py-nosexcover                          simulationio
iperf3                           py-numba                               singularity
ipopt                            py-numexpr                             skilion-onedrive
isaac                            py-numexpr3                            sleef
isaac-server                     py-numpy                               slepc
isl                              py-numpydoc                            slurm
itstool                          py-olefile                             smalt
itsx                             py-ont-fast5-api                       smproxy
jackcess                         py-openpmd-validator                   snakemake
jags                             py-openpyxl                            snap
jansson                          py-openslide-python                    snap-berkeley
jasper                           py-opentuner                           snap-korf
jbigkit                          py-ordereddict                         snappy
jchronoss                        py-oset                                snbone
jdk                              py-owslib                              sniffles
jellyfish                        py-packaging                           snpeff
jemalloc                         py-palettable                          snphylo
jmol                             py-pandas                              snptest
jq                               py-paramiko                            soap2
json-c                           py-partd                               soapdenovo-trans
json-cwx                         py-pathlib2                            soapdenovo2
json-glib                        py-pathos                              soapindel
jsoncpp                          py-pathspec                            soapsnp
judy                             py-patsy                               sofa-c
julia                            py-pbr                                 somatic-sniper
k8                               py-pep8-naming                         sortmerna
kahip                            py-perf                                sosflow
kaiju                            py-performance                         sowing
kaks-calculator                  py-periodictable                       sox
kaldi                            py-petsc4py                            spades
kallisto                         py-pexpect                             span-lite
karma                            py-phonopy                             spark
kbproto                          py-pickleshare                         sparsehash
kdiff3                           py-picrust                             sparta
kealib                           py-pil                                 spdlog
kentutils                        py-pillow                              spectrum-mpi
kibana                           py-pint                                speex
kim-api                          py-pip                                 spglib
kmergenie                        py-pipits                              sph2pipe
kokkos                           py-pkgconfig                           spherepack
kraken                           py-plotly                              spindle
krb5                             py-pluggy                              spm
krims                            py-ply                                 spot
kripke                           py-pmw                                 sqlite
kvasir-mpl                       py-poster                              sqlitebrowser
kvtree                           py-pox                                 squid
laghos                           py-ppft                                sra-toolkit
lammps                           py-prettytable                         ssht
last                             py-progress                            sspace-longread
lastz                            py-projectq                            sspace-standard
latte                            py-prompt-toolkit                      sst-core
launchmon                        py-protobuf                            sst-dumpi
lazyten                          py-psutil                              sst-macro
lbann                            py-psyclone                            stacks
lbxproxy                         py-psycopg2                            staden-io-lib
lbzip2                           py-ptyprocess                          star
lcals                            py-pudb                                star-ccm-plus
lcms                             py-py                                  startup-notification
ldc                              py-py2bit                              stat
ldc-bootstrap                    py-py2cairo                            stata
legion                           py-py2neo                              stc
lemon                            py-py4j                                steps
leveldb                          py-pyani                               stow
lftp                             py-pyarrow                             strace
libaec                           py-pyasn1                              stream
libaio                           py-pybigwig                            strelka
libapplewm                       py-pybind11                            stress
libarchive                       py-pybtex                              string-view-lite
libassuan                        py-pybtex-docutils                     stringtie
libatomic-ops                    py-pycairo                             structure
libbeagle                        py-pychecker                           strumpack
libbeato                         py-pycodestyle                         sublime-text
libbsd                           py-pycparser                           subread
libbson                          py-pycrypto                            subversion
libcanberra                      py-pycurl                              suite-sparse
libcap                           py-pydatalog                           sumaclust
libceed                          py-pydispatcher                        sundials
libcerf                          py-pydot                               superlu
libcheck                         py-pyelftools                          superlu-dist
libcint                          py-pyepsg                              superlu-mt
libcircle                        py-pyfasta                             supernova
libconfig                        py-pyfftw                              sw4lite
libcroco                         py-pyflakes                            swap-assembler
libctl                           py-pygdbmi                             swarm
libdivsufsort                    py-pygments                            swfft
libdmx                           py-pygobject                           swiftsim
libdrm                           py-pygpu                               swig
libdwarf                         py-pygresql                            symengine
libedit                          py-pygtk                               sympol
libelf                           py-pylint                              sz
libemos                          py-pymatgen                            tabix
libepoxy                         py-pyminifier                          talass
libev                            py-pymol                               talloc
libevent                         py-pympler                             tantan
libevpath                        py-pymysql                             tar
libfabric                        py-pynio                               targetp
libffi                           py-pynn                                task
libffs                           py-pypar                               taskd
libfontenc                       py-pyparsing                           tasmanian
libfs                            py-pypeflow                            tassel
libgcrypt                        py-pyprof2html                         tau
libgd                            py-pyproj                              tcl
libgeotiff                       py-pyqi                                tcl-itcl
libgit2                          py-pyqt                                tcl-tcllib
libgpg-error                     py-pyrad                               tcl-tclxml
libgpuarray                      py-pysam                               tclap
libgridxc                        py-pyscaf                              tcoffee
libgtextutils                    py-pyserial                            tcptrace
libharu                          py-pyshp                               tcsh
libhio                           py-pyside                              tealeaf
libiberty                        py-pysocks                             templight
libice                           py-pyspark                             templight-tools
libiconv                         py-pysqlite                            tetgen
libint                           py-pytables                            tethex
libjpeg                          py-pytest                              texinfo
libjpeg-turbo                    py-pytest-cov                          texlive
libksba                          py-pytest-flake8                       tfel
liblbxutil                       py-pytest-httpbin                      the-platinum-searcher
liblockfile                      py-pytest-mock                         the-silver-searcher
libmatheval                      py-pytest-runner                       thornado-mini
libmaxminddb                     py-pytest-xdist                        thrift
libmesh                          py-pythia                              thrust
libmng                           py-python-daemon                       tig
libmongoc                        py-python-engineio                     time
libmonitor                       py-python-gitlab                       tinyxml
libnbc                           py-python-htmlgen                      tinyxml2
libnl                            py-python-levenshtein                  tioga
libnova                          py-python-socketio                     tk
libogg                           py-pythonqwt                           tldd
liboldx                          py-pytorch                             tmalign
libpcap                          py-pytz                                tmhmm
libpciaccess                     py-pyutilib                            tmux
libpfm4                          py-pywavelets                          tmuxinator
libpipeline                      py-pyyaml                              tophat
libpng                           py-qtawesome                           tppred
libpsl                           py-qtconsole                           tracer
libpthread-stubs                 py-qtpy                                transabyss
libquo                           py-quantities                          transdecoder
librom                           py-quast                               transposome
libsharp                         py-radical-utils                       transset
libshm                           py-ranger                              trapproto
libsigcpp                        py-rasterio                            tree
libsigsegv                       py-readme-renderer                     treesub
libsm                            py-regex                               trf
libsodium                        py-reportlab                           triangle
libspatialindex                  py-requests                            trilinos
libspatialite                    py-requests-toolbelt                   trimal
libsplash                        py-restview                            trimgalore
libssh                           py-rope                                trimmomatic
libssh2                          py-rpy2                                trinity
libsvm                           py-rsa                                 trinotate
libszip                          py-rseqc                               trnascan-se
libtermkey                       py-rtree                               turbine
libtiff                          py-saga-python                         turbomole
libtool                          py-scandir                             tut
libunistring                     py-scientificpython                    twm
libunwind                        py-scikit-image                        tycho2
libuuid                          py-scikit-learn                        typhon
libuv                            py-scipy                               typhonio
libvorbis                        py-seaborn                             uberftp
libvterm                         py-setuptools                          ucx
libwebsockets                    py-setuptools-git                      udunits2
libwindowswm                     py-setuptools-scm                      ufo-core
libx11                           py-sfepy                               ufo-filters
libxau                           py-sh                                  umpire
libxaw                           py-shapely                             unblur
libxaw3d                         py-shiboken                            uncrustify
libxc                            py-simplegeneric                       unibilium
libxcb                           py-simplejson                          unifycr
libxcomposite                    py-singledispatch                      unison
libxcursor                       py-sip                                 units
libxdamage                       py-six                                 unixodbc
libxdmcp                         py-slepc4py                            unuran
libxevie                         py-slurm-pipeline                      unzip
libxext                          py-sncosmo                             usearch
libxfixes                        py-snowballstemmer                     util-linux
libxfont                         py-snuggs                              util-macros
libxfont2                        py-spectra                             uuid
libxfontcache                    py-spefile                             valgrind
libxft                           py-spglib                              vampirtrace
libxi                            py-sphinx                              vardictjava
libxinerama                      py-sphinx-bootstrap-theme              varscan
libxkbcommon                     py-sphinx-rtd-theme                    vc
libxkbfile                       py-sphinxautomodapi                    vcftools
libxkbui                         py-sphinxcontrib-bibtex                vcsh
libxml2                          py-sphinxcontrib-programoutput         vdt
libxmu                           py-sphinxcontrib-websupport            vecgeom
libxp                            py-spyder                              veclibfort
libxpm                           py-spykeutils                          vegas2
libxpresent                      py-sqlalchemy                          veloc
libxprintapputil                 py-statsmodels                         velvet
libxprintutil                    py-stevedore                           verilator
libxrandr                        py-storm                               verrou
libxrender                       py-subprocess32                        videoproto
libxres                          py-symengine                           viennarna
libxscrnsaver                    py-symfit                              viewres
libxshmfence                     py-sympy                               vim
libxslt                          py-tabulate                            virtualgl
libxsmm                          py-tappy                               visit
libxstream                       py-terminado                           vizglow
libxt                            py-testinfra                           vmatch
libxtrap                         py-tetoolkit                           voropp
libxtst                          py-theano                              votca-csg
libxv                            py-tifffile                            votca-ctp
libxvmc                          py-toml                                votca-tools
libxxf86dga                      py-tomopy                              votca-xtp
libxxf86misc                     py-toolz                               vpfft
libxxf86vm                       py-tornado                             vpic
libyogrt                         py-tqdm                                vsearch
libzip                           py-traceback2                          vt
lighttpd                         py-traitlets                           vtk
likwid                           py-tuiview                             vtkh
linkphase3                       py-twisted                             vtkm
linux-headers                    py-typing                              wannier90
listres                          py-tzlocal                             warpx
llvm                             py-udunits                             wcslib
llvm-openmp-ompt                 py-umi-tools                           wget
lmdb                             py-unittest2                           wgsim
lmod                             py-unittest2py3k                       windowswmproto
lndir                            py-urllib3                             wireshark
log4cplus                        py-urwid                               workrave
log4cxx                          py-vcversioner                         wt
loki                             py-virtualenv                          wx
lordec                           py-virtualenv-clone                    wxpropgrid
lrslib                           py-virtualenvwrapper                   x11perf
lrzip                            py-vsc-base                            xapian-core
lsof                             py-vsc-install                         xauth
ltrace                           py-wcsaxes                             xbacklight
lua                              py-wcwidth                             xbiff
lua-bitlib                       py-webencodings                        xbitmaps
lua-jit                          py-webkit-server                       xbraid
lua-lpeg                         py-weblogo                             xcalc
lua-luafilesystem                py-werkzeug                            xcb-demo
lua-luaposix                     py-wheel                               xcb-proto
lua-mpack                        py-widgetsnbextension                  xcb-util
luit                             py-wrapt                               xcb-util-cursor
lulesh                           py-xarray                              xcb-util-errors
lumpy-sv                         py-xattr                               xcb-util-image
lwgrp                            py-xdot                                xcb-util-keysyms
lwm2                             py-xlrd                                xcb-util-renderutil
lz4                              py-xlsxwriter                          xcb-util-wm
lzma                             py-xmlrunner                           xcb-util-xrm
lzo                              py-xopen                               xclip
m4                               py-xpyb                                xclipboard
macsio                           py-xvfbwrapper                         xclock
mad-numdiff                      py-yamlreader                          xcmiscproto
mafft                            py-yapf                                xcmsdb
magics                           py-yt                                  xcompmgr
magma                            py-ytopt                               xconsole
makedepend                       py-zmq                                 xcursor-themes
mallocmc                         py-zope-event                          xcursorgen
man-db                           py-zope-interface                      xdbedizzy
manta                            pythia6                                xditview
mapserver                        python                                 xdm
maq                              qbank                                  xdpyinfo
mariadb                          qbox                                   xdriinfo
masa                             qca                                    xedit
masurca                          qhull                                  xerces-c
matio                            qjson                                  xeus
matlab                           qmcpack                                xev
maven                            qmd-progress                           xextproto
maverick                         qorts                                  xeyes
mawk                             qrupdate                               xf86bigfontproto
mbedtls                          qt                                     xf86dga
mc                               qt-creator                             xf86dgaproto
mcl                              qtgraph                                xf86driproto
mdtest                           qthreads                               xf86miscproto
med                              quantum-espresso                       xf86rushproto
meep                             quinoa                                 xf86vidmodeproto
mefit                            qwt                                    xfd
megahit                          r                                      xfindproxy
memaxes                          r-a4                                   xfontsel
meme                             r-a4base                               xfs
memkind                          r-a4classif                            xfsinfo
meraculous                       r-a4core                               xfwp
mercurial                        r-a4preproc                            xgamma
mercury                          r-a4reporting                          xgboost
mesa                             r-abadata                              xgc
mesa-glu                         r-abaenrichment                        xhmm
meshkit                          r-abind                                xhost
meson                            r-absseq                               xineramaproto
mesquite                         r-acde                                 xinit
metabat                          r-acepack                              xinput
metaphysicl                      r-acgh                                 xios
metis                            r-acme                                 xkbcomp
mfem                             r-ada                                  xkbdata
mgis                             r-adabag                               xkbevd
microbiomeutil                   r-ade4                                 xkbprint
migrate                          r-adegenet                             xkbutils
minced                           r-adsplit                              xkeyboard-config
mindthegap                       r-aer                                  xkill
miniaero                         r-affxparser                           xload
miniamr                          r-affy                                 xlogo
miniasm                          r-affycomp                             xlsatoms
miniconda2                       r-affycompatible                       xlsclients
miniconda3                       r-affycontam                           xlsfonts
minife                           r-affycoretools                        xmag
minighost                        r-affydata                             xman
minigmg                          r-affyexpress                          xmessage
minimap2                         r-affyilm                              xmh
minimd                           r-affyio                               xmlf90
miniqmc                          r-affypdnn                             xmlto
minisign                         r-affyplm                              xmodmap
minismac2d                       r-affyqcreport                         xmore
minitri                          r-affyrnadegradation                   xorg-cf-files
minivite                         r-agdex                                xorg-docs
minixyce                         r-agilp                                xorg-gtest
minuit                           r-agimicrorna                          xorg-server
mira                             r-aims                                 xorg-sgml-doctools
mirdeep2                         r-aldex2                               xphelloworld
mitofates                        r-allelicimbalance                     xplor-nih
mitos                            r-alpine                               xplsprinters
mixcr                            r-als                                  xpr
mkfontdir                        r-alsace                               xprehashprinterlist
mkfontscale                      r-altcdfenvs                           xprop
mlhka                            r-amap                                 xproto
moab                             r-ampliqueso                           xproxymanagementprotocol
modern-wheel                     r-analysispageserver                   xqilla
mofem-cephas                     r-anaquin                              xrandr
mofem-fracture-module            r-aneufinder                           xrdb
mofem-minimal-surface-equation   r-aneufinderdata                       xrefresh
mofem-users-modules              r-animation                            xrootd
molcas                           r-annaffy                              xrx
mongo-cxx-driver                 r-annotate                             xsbench
mono                             r-annotationdbi                        xscope
mosh                             r-annotationfilter                     xsd
mothur                           r-annotationforge                      xsdk
motif                            r-annotationhub                        xsdktrilinos
motioncor2                       r-ape                                  xset
mount-point-attributes           r-argparse                             xsetmode
mozjs                            r-assertthat                           xsetpointer
mpark-variant                    r-backports                            xsetroot
mpc                              r-bamsignals                           xsimd
mpe2                             r-base64                               xsm
mpest                            r-base64enc                            xstdcmap
mpfr                             r-bayesm                               xtensor
mpibash                          r-bbmisc                               xtensor-python
mpiblast                         r-beanplot                             xterm
mpich                            r-bh                                   xtl
mpifileutils                     r-biasedurn                            xtrans
mpilander                        r-bindr                                xtrap
mpileaks                         r-bindrcpp                             xts
mpip                             r-biobase                              xvidtune
mpir                             r-biocgenerics                         xvinfo
mpix-launch-swift                r-biocinstaller                        xwd
mrbayes                          r-biocparallel                         xwininfo
mrnet                            r-biocstyle                            xwud
mrtrix3                          r-biom-utils                           xxhash
mscgen                           r-biomart                              xz
msgpack-c                        r-biomformat                           yajl
mshadow                          r-biostrings                           yambo
msmc                             r-biovizbase                           yaml-cpp
multitail                        r-bit                                  yasm
multitime                        r-bit64                                yorick
multiverso                       r-bitops                               z3
mummer                           r-blob                                 zeromq
mumps                            r-blockmodeling                        zfp
munge                            r-bookdown                             zip
muparser                         r-boot                                 zlib
muscle                           r-brew                                 zoltan
muse                             r-broom                                zsh
muster                           r-bsgenome                             zstd

The packages are listed by name in alphabetical order. A pattern to match with no wildcards, * or ?, will be treated as though it started and ended with *, so util is equivalent to *util*. All patterns will be treated as case-insensitive. You can also add the -d to search the description of the package in addition to the name. Some examples:

All packages whose names contain “sql”:

$ spack list sql
perl-dbd-mysql   postgresql   py-pygresql  py-pysqlite    r-rmysql       r-rsqlite  sqlite
perl-dbd-sqlite  py-mysqldb1  py-pymysql   py-sqlalchemy  r-rpostgresql  r-sqldf    sqlitebrowser

All packages whose names or descriptions contain documentation:

$ spack list --search-description documentation
compositeproto     libxfixes     py-docutils          py-sphinxcontrib-websupport  r-roxygen2     xorg-sgml-doctools
damageproto        libxpresent   py-epydoc            r-ggplot2                    r-stanheaders
double-conversion  man-db        py-markdown          r-quadprog                   sowing
doxygen            perl-dbfile   py-sphinx            r-rcpp                       texinfo
gflags             py-alabaster  py-sphinxautomodapi  r-rinside                    xorg-docs

spack info

To get more information on a particular package from spack list, use spack info. Just supply the name of a package:

$ spack info mpich
AutotoolsPackage:   mpich

Description:
    MPICH is a high performance and widely portable implementation of the
    Message Passing Interface (MPI) standard.

Homepage: http://www.mpich.org

Tags: 
    None

Preferred version:  
    3.3        http://www.mpich.org/static/downloads/3.3/mpich-3.3.tar.gz

Safe versions:  
    develop    [git] https://github.com/pmodels/mpich.git
    3.3        http://www.mpich.org/static/downloads/3.3/mpich-3.3.tar.gz
    3.2.1      http://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1.tar.gz
    3.2        http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz
    3.1.4      http://www.mpich.org/static/downloads/3.1.4/mpich-3.1.4.tar.gz
    3.1.3      http://www.mpich.org/static/downloads/3.1.3/mpich-3.1.3.tar.gz
    3.1.2      http://www.mpich.org/static/downloads/3.1.2/mpich-3.1.2.tar.gz
    3.1.1      http://www.mpich.org/static/downloads/3.1.1/mpich-3.1.1.tar.gz
    3.1        http://www.mpich.org/static/downloads/3.1/mpich-3.1.tar.gz
    3.0.4      http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz

Variants:
    Name [Default]    Allowed values        Description


    device [ch3]      ch3, ch4              Abstract Device Interface
                                            (ADI) implementation. The ch4
                                            device is currently in
                                            experimental state
    hydra [on]        True, False           Build the hydra process
                                            manager
    netmod [tcp]      tcp, mxm, ofi, ucx    Network module. Only single
                                            netmod builds are supported.
                                            For ch3 device configurations,
                                            this presumes the ch3:nemesis
                                            communication channel.
                                            ch3:sock is not supported by
                                            this spack package at this
                                            time.
    pmi [on]          True, False           Build with PMI support
    romio [on]        True, False           Enable ROMIO MPI I/O
                                            implementation
    verbs [off]       True, False           Build support for OpenFabrics
                                            verbs.

Installation Phases:
    autoreconf    configure    build    install

Build Dependencies:
    findutils  libfabric

Link Dependencies:
    libfabric

Run Dependencies:
    None

Virtual Packages: 
    mpich@3: provides mpi@:3.0
    mpich@1: provides mpi@:1.3
    mpich provides mpi

Most of the information is self-explanatory. The safe versions are versions that Spack knows the checksum for, and it will use the checksum to verify that these versions download without errors or viruses.

Dependencies and virtual dependencies are described in more detail later.

spack versions

To see more available versions of a package, run spack versions. For example:

$ spack versions libelf
  0.8.13  0.8.12
  0.8.11  0.8.10  0.8.9  0.8.8  0.8.7  0.8.6  0.8.5  0.8.4  0.8.3  0.8.2  0.8.0  0.7.0  0.6.4  0.5.2

There are two sections in the output. Safe versions are versions for which Spack has a checksum on file. It can verify that these versions are downloaded correctly.

In many cases, Spack can also show you what versions are available out on the web—these are remote versions. Spack gets this information by scraping it directly from package web pages. Depending on the package and how its releases are organized, Spack may or may not be able to find remote versions.

Installing and uninstalling

spack install

spack install will install any package shown by spack list. For example, To install the latest version of the mpileaks package, you might type this:

$ spack install mpileaks

If mpileaks depends on other packages, Spack will install the dependencies first. It then fetches the mpileaks tarball, expands it, verifies that it was downloaded without errors, builds it, and installs it in its own directory under $SPACK_ROOT/opt. You’ll see a number of messages from spack, a lot of build output, and a message that the packages is installed:

$ spack install mpileaks
==> Installing mpileaks
==> mpich is already installed in ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/mpich@3.0.4.
==> callpath is already installed in ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/callpath@1.0.2-5dce4318.
==> adept-utils is already installed in ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/adept-utils@1.0-5adef8da.
==> Trying to fetch from https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
######################################################################## 100.0%
==> Staging archive: ~/spack/var/spack/stage/mpileaks@1.0%gcc@4.4.7 arch=linux-debian7-x86_64-59f6ad23/mpileaks-1.0.tar.gz
==> Created stage in ~/spack/var/spack/stage/mpileaks@1.0%gcc@4.4.7 arch=linux-debian7-x86_64-59f6ad23.
==> No patches needed for mpileaks.
==> Building mpileaks.

... build output ...

==> Successfully installed mpileaks.
  Fetch: 2.16s.  Build: 9.82s.  Total: 11.98s.
[+] ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/mpileaks@1.0-59f6ad23

The last line, with the [+], indicates where the package is installed.

Building a specific version

Spack can also build specific versions of a package. To do this, just add @ after the package name, followed by a version:

$ spack install mpich@3.0.4

Any number of versions of the same package can be installed at once without interfering with each other. This is good for multi-user sites, as installing a version that one user needs will not disrupt existing installations for other users.

In addition to different versions, Spack can customize the compiler, compile-time options (variants), compiler flags, and platform (for cross compiles) of an installation. Spack is unique in that it can also configure the dependencies a package is built with. For example, two configurations of the same version of a package, one built with boost 1.39.0, and the other version built with version 1.43.0, can coexist.

This can all be done on the command line using the spec syntax. Spack calls the descriptor used to refer to a particular package configuration a spec. In the commands above, mpileaks and mpileaks@3.0.4 are both valid specs. We’ll talk more about how you can use them to customize an installation in Specs & dependencies.

spack uninstall

To uninstall a package, type spack uninstall <package>. This will ask the user for confirmation before completely removing the directory in which the package was installed.

$ spack uninstall mpich

If there are still installed packages that depend on the package to be uninstalled, spack will refuse to uninstall it.

To uninstall a package and every package that depends on it, you may give the --dependents option.

$ spack uninstall --dependents mpich

will display a list of all the packages that depend on mpich and, upon confirmation, will uninstall them in the right order.

A command like

$ 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 to either one. Because it cannot determine which one to uninstall, Spack will ask you either to provide a version number to remove the ambiguity or use the --all option to uninstall all of the matching packages.

You may force uninstall a package with the --force option

$ 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.

Non-Downloadable Tarballs

The tarballs for some packages cannot be automatically downloaded by Spack. This could be for a number of reasons:

  1. The author requires users to manually accept a license agreement before downloading (jdk and galahad).
  2. The software is proprietary and cannot be downloaded on the open Internet.

To install these packages, one must create a mirror and manually add the tarballs in question to it (see Mirrors):

  1. Create a directory for the mirror. You can create this directory anywhere you like, it does not have to be inside ~/.spack:

    $ mkdir ~/.spack/manual_mirror
    
  2. Register the mirror with Spack by creating ~/.spack/mirrors.yaml:

    mirrors:
      manual: file://~/.spack/manual_mirror
    
  3. Put your tarballs in it. Tarballs should be named <package>/<package>-<version>.tar.gz. For example:

    $ ls -l manual_mirror/galahad
    
    -rw-------. 1 me me 11657206 Jun 21 19:25 galahad-2.60003.tar.gz
    
  4. Install as usual:

    $ spack install galahad
    

Seeing installed packages

We know that spack list shows you the names of available packages, but how do you figure out which are already installed?

spack find

spack find shows the specs of installed packages. A spec is like a name, but it has a version, compiler, architecture, and build options associated with it. In spack, you can have many installations of the same package with different specs.

Running spack find with no arguments lists installed packages:

$ spack find
==> 74 installed packages.
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
ImageMagick@6.8.9-10  libdwarf@20130729  py-dateutil@2.4.0
adept-utils@1.0       libdwarf@20130729  py-ipython@2.3.1
atk@2.14.0            libelf@0.8.12      py-matplotlib@1.4.2
boost@1.55.0          libelf@0.8.13      py-nose@1.3.4
bzip2@1.0.6           libffi@3.1         py-numpy@1.9.1
cairo@1.14.0          libmng@2.0.2       py-pygments@2.0.1
callpath@1.0.2        libpng@1.6.16      py-pyparsing@2.0.3
cmake@3.0.2           libtiff@4.0.3      py-pyside@1.2.2
dbus@1.8.6            libtool@2.4.2      py-pytz@2014.10
dbus@1.9.0            libxcb@1.11        py-setuptools@11.3.1
dyninst@8.1.2         libxml2@2.9.2      py-six@1.9.0
fontconfig@2.11.1     libxml2@2.9.2      python@2.7.8
freetype@2.5.3        llvm@3.0           qhull@1.0
gdk-pixbuf@2.31.2     memaxes@0.5        qt@4.8.6
glib@2.42.1           mesa@8.0.5         qt@5.4.0
graphlib@2.0.0        mpich@3.0.4        readline@6.3
gtkplus@2.24.25       mpileaks@1.0       sqlite@3.8.5
harfbuzz@0.9.37       mrnet@4.1.0        stat@2.1.0
hdf5@1.8.13           ncurses@5.9        tcl@8.6.3
icu@54.1              netcdf@4.3.3       tk@src
jpeg@9a               openssl@1.0.1h     vtk@6.1.0
launchmon@1.0.1       pango@1.36.8       xcb-proto@1.11
lcms@2.6              pixman@0.32.6      xz@5.2.0
libdrm@2.4.33         py-dateutil@2.4.0  zlib@1.2.8

-- linux-debian7-x86_64 / gcc@4.9.2 --------------------------------
libelf@0.8.10  mpich@3.0.4

Packages are divided into groups according to their architecture and compiler. Within each group, Spack tries to keep the view simple, and only shows the version of installed packages.

spack find can filter the package list based on the package name, spec, or a number of properties of their installation status. For example, missing dependencies of a spec can be shown with --missing, packages which were explicitly installed with spack install <package> can be singled out with --explicit and those which have been pulled in only as dependencies with --implicit.

In some cases, there may be different configurations of the same version of a package installed. For example, there are two installations of libdwarf@20130729 above. We can look at them in more detail using spack find --deps, and by asking only to show libdwarf packages:

$ spack find --deps libdwarf
==> 2 installed packages.
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
    libdwarf@20130729-d9b90962
        ^libelf@0.8.12
    libdwarf@20130729-b52fac98
        ^libelf@0.8.13

Now we see that the two instances of libdwarf depend on different versions of libelf: 0.8.12 and 0.8.13. This view can become complicated for packages with many dependencies. If you just want to know whether two packages’ dependencies differ, you can use spack find --long:

$ spack find --long libdwarf
==> 2 installed packages.
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
libdwarf@20130729-d9b90962  libdwarf@20130729-b52fac98

Now the libdwarf installs have hashes after their names. These are hashes over all of the dependencies of each package. If the hashes are the same, then the packages have the same dependency configuration.

If you want to know the path where each package is installed, you can use spack find --paths:

$ spack find --paths
==> 74 installed packages.
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
    ImageMagick@6.8.9-10  ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/ImageMagick@6.8.9-10-4df950dd
    adept-utils@1.0       ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/adept-utils@1.0-5adef8da
    atk@2.14.0            ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/atk@2.14.0-3d09ac09
    boost@1.55.0          ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/boost@1.55.0
    bzip2@1.0.6           ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/bzip2@1.0.6
    cairo@1.14.0          ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/cairo@1.14.0-fcc2ab44
    callpath@1.0.2        ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/callpath@1.0.2-5dce4318
...

And, finally, you can restrict your search to a particular package by supplying its name:

$ spack find --paths libelf
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
    libelf@0.8.11  ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.11
    libelf@0.8.12  ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.12
    libelf@0.8.13  ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.13

spack find actually does a lot more than this. You can use specs to query for specific configurations and builds of each package. If you want to find only libelf versions greater than version 0.8.12, you could say:

$ spack find libelf@0.8.12:
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
    libelf@0.8.12  libelf@0.8.13

Finding just the versions of libdwarf built with a particular version of libelf would look like this:

$ spack find --long libdwarf ^libelf@0.8.12
==> 1 installed packages.
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
libdwarf@20130729-d9b90962

We can also search for packages that have a certain attribute. For example, spack find libdwarf +debug will show only installations of libdwarf with the ‘debug’ compile-time option enabled.

The full spec syntax is discussed in detail in Specs & dependencies.

Specs & dependencies

We know that spack install, spack uninstall, and other commands take a package name with an optional version specifier. In Spack, that descriptor is called a spec. Spack uses specs to refer to a particular build configuration (or configurations) of a package. Specs are more than a package name and a version; you can use them to specify the compiler, compiler version, architecture, compile options, and dependency options for a build. In this section, we’ll go over the full syntax of specs.

Here is an example of a much longer spec than we’ve seen thus far:

mpileaks @1.2:1.4 %gcc@4.7.5 +debug -qt arch=bgq_os ^callpath @1.1 %gcc@4.7.2

If provided to spack install, this will install the mpileaks library at some version between 1.2 and 1.4 (inclusive), built using gcc at version 4.7.5 for the Blue Gene/Q architecture, with debug options enabled, and without Qt support. Additionally, it says to link it with the callpath library (which it depends on), and to build callpath with gcc 4.7.2. Most specs will not be as complicated as this one, but this is a good example of what is possible with specs.

More formally, a spec consists of the following pieces:

  • Package name identifier (mpileaks above)
  • @ Optional version specifier (@1.2:1.4)
  • % Optional compiler specifier, with an optional compiler version (gcc or gcc@4.7.3)
  • + or - or ~ Optional variant specifiers (+debug, -qt, or ~qt) for boolean variants
  • name=<value> Optional variant specifiers that are not restricted to boolean variants
  • name=<value> Optional compiler flag specifiers. Valid flag names are cflags, cxxflags, fflags, cppflags, ldflags, and ldlibs.
  • target=<value> os=<value> Optional architecture specifier (target=haswell os=CNL10)
  • ^ Dependency specs (^callpath@1.1)

There are two things to notice here. The first is that specs are recursively defined. That is, each dependency after ^ is a spec itself. The second is that everything is optional except for the initial package name identifier. Users can be as vague or as specific as they want about the details of building packages, and this makes spack good for beginners and experts alike.

To really understand what’s going on above, we need to think about how software is structured. An executable or a library (these are generally the artifacts produced by building software) depends on other libraries in order to run. We can represent the relationship between a package and its dependencies as a graph. Here is the full dependency graph for mpileaks:

digraph { mpileaks -> mpich mpileaks -> callpath -> mpich callpath -> dyninst dyninst -> libdwarf -> libelf dyninst -> libelf }

Each box above is a package and each arrow represents a dependency on some other package. For example, we say that the package mpileaks depends on callpath and mpich. mpileaks also depends indirectly on dyninst, libdwarf, and libelf, in that these libraries are dependencies of callpath. To install mpileaks, Spack has to build all of these packages. Dependency graphs in Spack have to be acyclic, and the depends on relationship is directional, so this is a directed, acyclic graph or DAG.

The package name identifier in the spec is the root of some dependency DAG, and the DAG itself is implicit. Spack knows the precise dependencies among packages, but users do not need to know the full DAG structure. Each ^ in the full spec refers to some dependency of the root package. Spack will raise an error if you supply a name after ^ that the root does not actually depend on (e.g. mpileaks ^emacs@23.3).

Spack further simplifies things by only allowing one configuration of each package within any single build. Above, both mpileaks and callpath depend on mpich, but mpich appears only once in the DAG. You cannot build an mpileaks version that depends on one version of mpich and on a callpath version that depends on some other version of mpich. In general, such a configuration would likely behave unexpectedly at runtime, and Spack enforces this to ensure a consistent runtime environment.

The point of specs is to abstract this full DAG from Spack users. If a user does not care about the DAG at all, she can refer to mpileaks by simply writing mpileaks. If she knows that mpileaks indirectly uses dyninst and she wants a particular version of dyninst, then she can refer to mpileaks ^dyninst@8.1. Spack will fill in the rest when it parses the spec; the user only needs to know package names and minimal details about their relationship.

When spack prints out specs, it sorts package names alphabetically to normalize the way they are displayed, but users do not need to worry about this when they write specs. The only restriction on the order of dependencies within a spec is that they appear after the root package. For example, these two specs represent exactly the same configuration:

mpileaks ^callpath@1.0 ^libelf@0.8.3
mpileaks ^libelf@0.8.3 ^callpath@1.0

You can put all the same modifiers on dependency specs that you would put on the root spec. That is, you can specify their versions, compilers, variants, and architectures just like any other spec. Specifiers are associated with the nearest package name to their left. For example, above, @1.1 and %gcc@4.7.2 associates with the callpath package, while @1.2:1.4, %gcc@4.7.5, +debug, -qt, and target=haswell os=CNL10 all associate with the mpileaks package.

In the diagram above, mpileaks depends on mpich with an unspecified version, but packages can depend on other packages with constraints by adding more specifiers. For example, mpileaks could depend on mpich@1.2: if it can only build with version 1.2 or higher of mpich.

Below are more details about the specifiers that you can add to specs.

Version specifier

A version specifier comes somewhere after a package name and starts with @. It can be a single version, e.g. @1.0, @3, or @1.2a7. Or, it can be a range of versions, such as @1.0:1.5 (all versions between 1.0 and 1.5, inclusive). Version ranges can be open, e.g. :3 means any version up to and including 3. This would include 3.4 and 3.4.2. 4.2: means any version above and including 4.2. Finally, a version specifier can be a set of arbitrary versions, such as @1.0,1.5,1.7 (1.0, 1.5, or 1.7). When you supply such a specifier to spack install, it constrains the set of versions that Spack will install.

If the version spec is not provided, then Spack will choose one according to policies set for the particular spack installation. If the spec is ambiguous, i.e. it could match multiple versions, Spack will choose a version within the spec’s constraints according to policies set for the particular Spack installation.

Details about how versions are compared and how Spack determines if one version is less than another are discussed in the developer guide.

Compiler specifier

A compiler specifier comes somewhere after a package name and starts with %. It tells Spack what compiler(s) a particular package should be built with. After the % should come the name of some registered Spack compiler. This might include gcc, or intel, but the specific compilers available depend on the site. You can run spack compilers to get a list; more on this below.

The compiler spec can be followed by an optional compiler version. A compiler version specifier looks exactly like a package version specifier. Version specifiers will associate with the nearest package name or compiler specifier to their left in the spec.

If the compiler spec is omitted, Spack will choose a default compiler based on site policies.

Variants

Variants are named options associated with a particular package. They are optional, as each package must provide default values for each variant it makes available. Variants can be specified using a flexible parameter syntax name=<value>. For example, spack install libelf debug=True will install libelf build with debug flags. The names of particular variants available for a package depend on what was provided by the package author. spack info <package> will provide information on what build variants are available.

For compatibility with earlier versions, variants which happen to be boolean in nature can be specified by a syntax that represents turning options on and off. For example, in the previous spec we could have supplied libelf +debug with the same effect of enabling the debug compile time option for the libelf package.

Depending on the package a variant may have any default value. For libelf here, debug is False by default, and we turned it on with debug=True or +debug. If a variant is True by default you can turn it off by either adding -name or ~name to the spec.

There are two syntaxes here because, depending on context, ~ and - may mean different things. In most shells, the following will result in the shell performing home directory substitution:

mpileaks ~debug   # shell may try to substitute this!
mpileaks~debug    # use this instead

If there is a user called debug, the ~ will be incorrectly expanded. In this situation, you would want to write libelf -debug. However, - can be ambiguous when included after a package name without spaces:

mpileaks-debug     # wrong!
mpileaks -debug    # right

Spack allows the - character to be part of package names, so the above will be interpreted as a request for the mpileaks-debug package, not a request for mpileaks built without debug options. In this scenario, you should write mpileaks~debug to avoid ambiguity.

When spack normalizes specs, it prints them out with no spaces boolean variants using the backwards compatibility syntax and uses only ~ for disabled boolean variants. The - and spaces on the command line are provided for convenience and legibility.

Compiler Flags

Compiler flags are specified using the same syntax as non-boolean variants, but fulfill a different purpose. While the function of a variant is set by the package, compiler flags are used by the compiler wrappers to inject flags into the compile line of the build. Additionally, compiler flags are inherited by dependencies. spack install libdwarf cppflags="-g" will install both libdwarf and libelf with the -g flag injected into their compile line.

Notice that the value of the compiler flags must be quoted if it contains any spaces. Any of cppflags=-O3, cppflags="-O3", cppflags='-O3', and cppflags="-O3 -fPIC" are acceptable, but cppflags=-O3 -fPIC is not. Additionally, if they value of the compiler flags is not the last thing on the line, it must be followed by a space. The commmand spack install libelf cppflags="-O3"%intel will be interpreted as an attempt to set cppflags=”-O3%intel”`.

The six compiler flags are injected in the order of implicit make commands in GNU Autotools. If all flags are set, the order is $cppflags $cflags|$cxxflags $ldflags <command> $ldlibs for C and C++ and $fflags $cppflags $ldflags <command> $ldlibs for Fortran.

Compiler environment variables and additional RPATHs

In the exceptional case a compiler requires setting special environment variables, like an explicit library load path. These can bet set in an extra section in the compiler configuration (the supported environment modification commands are: set, unset, append-path, and prepend-path). The user can also specify additional RPATHs that the compiler will add to all executables generated by that compiler. This is useful for forcing certain compilers to RPATH their own runtime libraries, so that executables will run without the need to set LD_LIBRARY_PATH.

compilers:
  - compiler:
      spec: gcc@4.9.3
      paths:
        cc: /opt/gcc/bin/gcc
        c++: /opt/gcc/bin/g++
        f77: /opt/gcc/bin/gfortran
        fc: /opt/gcc/bin/gfortran
      environment:
        unset:
          BAD_VARIABLE: # The colon is required but the value must be empty
        set:
          GOOD_VARIABLE_NUM: 1
          GOOD_VARIABLE_STR: good
        prepend-path:
          PATH: /path/to/binutils
        append-path:
          LD_LIBRARY_PATH: /opt/gcc/lib
      extra_rpaths:
      - /path/to/some/compiler/runtime/directory
      - /path/to/some/other/compiler/runtime/directory

Note

The section environment is interpreted as an ordered dictionary, which means two things. First, environment modification are applied in the order they are specified in the configuration file. Second, you cannot express environment modifications that require mixing different commands, i.e. you cannot set one variable, than prepend-path to another one, and than again set a third one.

Architecture specifiers

The architecture can be specified by using the reserved words target and/or os (target=x86-64 os=debian7). You can also use the triplet form of platform, operating system and processor.

$ spack install libelf arch=cray-CNL10-haswell

Users on non-Cray systems won’t have to worry about specifying the architecture. Spack will autodetect what kind of operating system is on your machine as well as the processor. For more information on how the architecture can be used on Cray machines, see Spack on Cray

Virtual dependencies

The dependence graph for mpileaks we saw above wasn’t quite accurate. mpileaks uses MPI, which is an interface that has many different implementations. Above, we showed mpileaks and callpath depending on mpich, which is one particular implementation of MPI. However, we could build either with another implementation, such as openmpi or mvapich.

Spack represents interfaces like this using virtual dependencies. The real dependency DAG for mpileaks looks like this:

digraph { mpi [color=red] mpileaks -> mpi mpileaks -> callpath -> mpi callpath -> dyninst dyninst -> libdwarf -> libelf dyninst -> libelf }

Notice that mpich has now been replaced with mpi. There is no real MPI package, but some packages provide the MPI interface, and these packages can be substituted in for mpi when mpileaks is built.

You can see what virtual packages a particular package provides by getting info on it:

$ spack info mpich
AutotoolsPackage:   mpich

Description:
    MPICH is a high performance and widely portable implementation of the
    Message Passing Interface (MPI) standard.

Homepage: http://www.mpich.org

Tags: 
    None

Preferred version:  
    3.3        http://www.mpich.org/static/downloads/3.3/mpich-3.3.tar.gz

Safe versions:  
    develop    [git] https://github.com/pmodels/mpich.git
    3.3        http://www.mpich.org/static/downloads/3.3/mpich-3.3.tar.gz
    3.2.1      http://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1.tar.gz
    3.2        http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz
    3.1.4      http://www.mpich.org/static/downloads/3.1.4/mpich-3.1.4.tar.gz
    3.1.3      http://www.mpich.org/static/downloads/3.1.3/mpich-3.1.3.tar.gz
    3.1.2      http://www.mpich.org/static/downloads/3.1.2/mpich-3.1.2.tar.gz
    3.1.1      http://www.mpich.org/static/downloads/3.1.1/mpich-3.1.1.tar.gz
    3.1        http://www.mpich.org/static/downloads/3.1/mpich-3.1.tar.gz
    3.0.4      http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz

Variants:
    Name [Default]    Allowed values        Description


    device [ch3]      ch3, ch4              Abstract Device Interface
                                            (ADI) implementation. The ch4
                                            device is currently in
                                            experimental state
    hydra [on]        True, False           Build the hydra process
                                            manager
    netmod [tcp]      tcp, mxm, ofi, ucx    Network module. Only single
                                            netmod builds are supported.
                                            For ch3 device configurations,
                                            this presumes the ch3:nemesis
                                            communication channel.
                                            ch3:sock is not supported by
                                            this spack package at this
                                            time.
    pmi [on]          True, False           Build with PMI support
    romio [on]        True, False           Enable ROMIO MPI I/O
                                            implementation
    verbs [off]       True, False           Build support for OpenFabrics
                                            verbs.

Installation Phases:
    autoreconf    configure    build    install

Build Dependencies:
    findutils  libfabric

Link Dependencies:
    libfabric

Run Dependencies:
    None

Virtual Packages: 
    mpich@3: provides mpi@:3.0
    mpich@1: provides mpi@:1.3
    mpich provides mpi

Spack is unique in that its virtual packages can be versioned, just like regular packages. A particular version of a package may provide a particular version of a virtual package, and we can see above that mpich versions 1 and above provide all mpi interface versions up to 1, and mpich versions 3 and above provide mpi versions up to 3. A package can depend on a particular version of a virtual package, e.g. if an application needs MPI-2 functions, it can depend on mpi@2: to indicate that it needs some implementation that provides MPI-2 functions.

Constraining virtual packages

When installing a package that depends on a virtual package, you can opt to specify the particular provider you want to use, or you can let Spack pick. For example, if you just type this:

$ spack install mpileaks

Then spack will pick a provider for you according to site policies. If you really want a particular version, say mpich, then you could run this instead:

$ spack install mpileaks ^mpich

This forces spack to use some version of mpich for its implementation. As always, you can be even more specific and require a particular mpich version:

$ spack install mpileaks ^mpich@3

The mpileaks package in particular only needs MPI-1 commands, so any MPI implementation will do. If another package depends on mpi@2 and you try to give it an insufficient MPI implementation (e.g., one that provides only mpi@:1), then Spack will raise an error. Likewise, if you try to plug in some package that doesn’t provide MPI, Spack will raise an error.

Specifying Specs by Hash

Complicated specs can become cumbersome to enter on the command line, especially when many of the qualifications are necessary to distinguish between similar installs. To avoid this, when referencing an existing spec, Spack allows you to reference specs by their hash. We previously discussed the spec hash that Spack computes. In place of a spec in any command, substitute /<hash> where <hash> is any amount from the beginning of a spec hash.

For example, lets say that you accidentally installed two different mvapich2 installations. If you want to uninstall one of them but don’t know what the difference is, you can run:

$ spack find --long mvapich2
==> 2 installed packages.
-- linux-centos7-x86_64 / gcc@6.3.0 ----------
qmt35td mvapich2@2.2%gcc
er3die3 mvapich2@2.2%gcc

You can then uninstall the latter installation using:

$ spack uninstall /er3die3

Or, if you want to build with a specific installation as a dependency, you can use:

$ spack install trilinos ^/er3die3

If the given spec hash is sufficiently long as to be unique, Spack will replace the reference with the spec to which it refers. Otherwise, it will prompt for a more qualified hash.

Note that this will not work to reinstall a dependency uninstalled by spack uninstall --force.

spack providers

You can see what packages provide a particular virtual package using spack providers. If you wanted to see what packages provide mpi, you would just run:

$ spack providers mpi
charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:         mpich      mvapich2        openmpi@2.0.0:
charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:         mpich@1:   openmpi         spectrum-mpi
charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:  intel-mpi              mpich@3:   openmpi@1.6.5
charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:  intel-parallel-studio  mpilander  openmpi@1.7.5:

And if you only wanted to see packages that provide MPI-2, you would add a version specifier to the spec:

$ spack providers mpi@2
charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:         mpich      openmpi         spectrum-mpi
charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:         mpich@3:   openmpi@1.6.5
charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:  intel-mpi              mpilander  openmpi@1.7.5:
charmpp@6.7.1:  charmpp@6.7.1:  charmpp@6.7.1:  intel-parallel-studio  mvapich2   openmpi@2.0.0:

Notice that the package versions that provide insufficient MPI versions are now filtered out.

Extensions & Python support

Spack’s installation model assumes that each package will live in its own install prefix. However, certain packages are typically installed within the directory hierarchy of other packages. For example, modules in interpreted languages like Python are typically installed in the $prefix/lib/python-2.7/site-packages directory.

Spack has support for this type of installation as well. In Spack, a package that can live inside the prefix of another package is called an extension. Suppose you have Python installed like so:

$ spack find python
==> 1 installed packages.
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
python@2.7.8

spack extensions

You can find extensions for your Python installation like this:

$ spack extensions python
==> python@2.7.8%gcc@4.4.7 arch=linux-debian7-x86_64-703c7a96
==> 36 extensions:
geos          py-ipython     py-pexpect    py-pyside            py-sip
py-basemap    py-libxml2     py-pil        py-pytz              py-six
py-biopython  py-mako        py-pmw        py-rpy2              py-sympy
py-cython     py-matplotlib  py-pychecker  py-scientificpython  py-virtualenv
py-dateutil   py-mpi4py      py-pygments   py-scikit-learn
py-epydoc     py-mx          py-pylint     py-scipy
py-gnuplot    py-nose        py-pyparsing  py-setuptools
py-h5py       py-numpy       py-pyqt       py-shiboken

==> 12 installed:
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
py-dateutil@2.4.0    py-nose@1.3.4       py-pyside@1.2.2
py-dateutil@2.4.0    py-numpy@1.9.1      py-pytz@2014.10
py-ipython@2.3.1     py-pygments@2.0.1   py-setuptools@11.3.1
py-matplotlib@1.4.2  py-pyparsing@2.0.3  py-six@1.9.0

==> None activated.

The extensions are a subset of what’s returned by spack list, and they are packages like any other. They are installed into their own prefixes, and you can see this with spack find --paths:

$ spack find --paths py-numpy
==> 1 installed packages.
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
    py-numpy@1.9.1  ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/py-numpy@1.9.1-66733244

However, even though this package is installed, you cannot use it directly when you run python:

$ spack load python
$ python
Python 2.7.8 (default, Feb 17 2015, 01:35:25)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named numpy
>>>

Using Extensions

There are three ways to get numpy working in Python. The first is to use Using module files via Spack. You can simply use or load the module for the extension, and it will be added to the PYTHONPATH in your current shell.

For tcl modules:

$ spack load python
$ spack load py-numpy

or, for dotkit:

$ spack use python
$ spack use py-numpy

Now import numpy will succeed for as long as you keep your current session open.

Activating Extensions in a View

The second way to use extensions is to create a view, which merges the python installation along with the extensions into a single prefix. See Filesystem Views for a more in-depth description of views and spack view for usage of the spack view command.

Activating Extensions Globally

As an alternative to creating a merged prefix with Python and its extensions, and prior to support for views, Spack has provided a means to install the extension into the Spack installation prefix for the extendee. This has typically been useful since extendable packages typically search their own installation path for addons by default.

Global activations are performed with the spack activate command:

spack activate

$ spack activate py-numpy
==> Activated extension py-setuptools@11.3.1%gcc@4.4.7 arch=linux-debian7-x86_64-3c74eb69 for python@2.7.8%gcc@4.4.7.
==> Activated extension py-nose@1.3.4%gcc@4.4.7 arch=linux-debian7-x86_64-5f70f816 for python@2.7.8%gcc@4.4.7.
==> Activated extension py-numpy@1.9.1%gcc@4.4.7 arch=linux-debian7-x86_64-66733244 for python@2.7.8%gcc@4.4.7.

Several things have happened here. The user requested that py-numpy be activated in the python installation it was built with. Spack knows that py-numpy depends on py-nose and py-setuptools, so it activated those packages first. Finally, once all dependencies were activated in the python installation, py-numpy was activated as well.

If we run spack extensions again, we now see the three new packages listed as activated:

$ spack extensions python
==> python@2.7.8%gcc@4.4.7  arch=linux-debian7-x86_64-703c7a96
==> 36 extensions:
geos          py-ipython     py-pexpect    py-pyside            py-sip
py-basemap    py-libxml2     py-pil        py-pytz              py-six
py-biopython  py-mako        py-pmw        py-rpy2              py-sympy
py-cython     py-matplotlib  py-pychecker  py-scientificpython  py-virtualenv
py-dateutil   py-mpi4py      py-pygments   py-scikit-learn
py-epydoc     py-mx          py-pylint     py-scipy
py-gnuplot    py-nose        py-pyparsing  py-setuptools
py-h5py       py-numpy       py-pyqt       py-shiboken

==> 12 installed:
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
py-dateutil@2.4.0    py-nose@1.3.4       py-pyside@1.2.2
py-dateutil@2.4.0    py-numpy@1.9.1      py-pytz@2014.10
py-ipython@2.3.1     py-pygments@2.0.1   py-setuptools@11.3.1
py-matplotlib@1.4.2  py-pyparsing@2.0.3  py-six@1.9.0

==> 3 currently activated:
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
py-nose@1.3.4  py-numpy@1.9.1  py-setuptools@11.3.1

Now, when a user runs python, numpy will be available for import without the user having to explicitly loaded. python@2.7.8 now acts like a system Python installation with numpy installed inside of it.

Spack accomplishes this by symbolically linking the entire prefix of the py-numpy into the prefix of the python package. To the python interpreter, it looks like numpy is installed in the site-packages directory.

The only limitation of global activation is that you can only have a single version of an extension activated at a time. This is because multiple versions of the same extension would conflict if symbolically linked into the same prefix. Users who want a different version of a package can still get it by using environment modules or views, but they will have to explicitly load their preferred version.

spack activate --force

If, for some reason, you want to activate a package without its dependencies, you can use spack activate --force:

$ spack activate --force py-numpy
==> Activated extension py-numpy@1.9.1%gcc@4.4.7 arch=linux-debian7-x86_64-66733244 for python@2.7.8%gcc@4.4.7.

spack deactivate

We’ve seen how activating an extension can be used to set up a default version of a Python module. Obviously, you may want to change that at some point. spack deactivate is the command for this. There are several variants:

  • spack deactivate <extension> will deactivate a single extension. If another activated extension depends on this one, Spack will warn you and exit with an error.

  • spack deactivate --force <extension> deactivates an extension regardless of packages that depend on it.

  • spack deactivate --all <extension> deactivates an extension and all of its dependencies. Use --force to disregard dependents.

  • spack deactivate --all <extendee> deactivates all activated extensions of a package. For example, to deactivate all python extensions, use:

    $ spack deactivate --all python
    

Filesystem requirements

By default, Spack needs to be run from a filesystem that supports flock locking semantics. Nearly all local filesystems and recent versions of NFS support this, but parallel filesystems or NFS volumes may be configured without flock support enabled. You can determine how your filesystems are mounted with mount. The output for a Lustre filesystem might look like this:

$ mount | grep lscratch
mds1-lnet0@o2ib100:/lsd on /p/lscratchd type lustre (rw,nosuid,lazystatfs,flock)
mds2-lnet0@o2ib100:/lse on /p/lscratche type lustre (rw,nosuid,lazystatfs,flock)

Note the flock option on both Lustre mounts.

If you do not see this or a similar option for your filesystem, you have a few options. First, you can move your Spack installation to a filesystem that supports locking. Second, you could ask your system administrator to enable flock for your filesystem.

If none of those work, you can disable locking in one of two ways:

  1. Run Spack with the -L or --disable-locks option to disable locks on a call-by-call basis.
  2. Edit config.yaml and set the locks option to false to always disable locking.

Warning

If you disable locking, concurrent instances of Spack will have no way to avoid stepping on each other. You must ensure that there is only one instance of Spack running at a time. Otherwise, Spack may end up with a corrupted database file, or you may not be able to see all installed packages in commands like spack find.

If you are unfortunate enough to run into this situation, you may be able to fix it by running spack reindex.

This issue typically manifests with the error below:

$ ./spack find
Traceback (most recent call last):
File "./spack", line 176, in <module>
  main()
File "./spack", line 154,' in main
  return_val = command(parser, args)
File "./spack/lib/spack/spack/cmd/find.py", line 170, in find
  specs = set(spack.installed_db.query(\**q_args))
File "./spack/lib/spack/spack/database.py", line 551, in query
  with self.read_transaction():
File "./spack/lib/spack/spack/database.py", line 598, in __enter__
  if self._enter() and self._acquire_fn:
File "./spack/lib/spack/spack/database.py", line 608, in _enter
  return self._db.lock.acquire_read(self._timeout)
File "./spack/lib/spack/llnl/util/lock.py", line 103, in acquire_read
  self._lock(fcntl.LOCK_SH, timeout)   # can raise LockError.
File "./spack/lib/spack/llnl/util/lock.py", line 64, in _lock
  fcntl.lockf(self._fd, op | fcntl.LOCK_NB)
IOError: [Errno 38] Function not implemented

A nicer error message is TBD in future versions of Spack.

Getting Help

spack help

If you don’t find what you need here, the help subcommand will print out out a list of all of spack’s options and subcommands:

$ spack help
usage: spack [-hkV] [--color {always,never,auto}] COMMAND ...

A flexible package manager that supports multiple versions,
configurations, platforms, and compilers.

These are common spack commands:

query packages:
  list                  list and search available packages
  info                  get detailed information on a particular package
  find                  list and search installed packages

build packages:
  install               build and install packages
  uninstall             remove installed packages
  spec                  show what would be installed, given a spec

environments:
  env                   manage virtual environments
  view                  project packages to a compact naming scheme on the filesystem.

modules:
  load                  add package to environment using `module load`
  module                manipulate module files
  unload                remove package from environment using `module unload`

create packages:
  create                create a new package file
  edit                  open package files in $EDITOR

system:
  arch                  print architecture information about this machine
  compilers             list available compilers

optional arguments:
  -h, --help            show this help message and exit
  -k, --insecure        do not check ssl certificates when downloading
  -V, --version         show version number and exit
  --color {always,never,auto}
                        when to colorize output (default: auto)

more help:
  spack help --all       list all commands and options
  spack help <command>   help on a specific command
  spack help --spec      help on the spec syntax
  spack docs             open http://spack.rtfd.io/ in a browser

Adding an argument, e.g. spack help <subcommand>, will print out usage information for a particular subcommand:

$ spack help install
usage: spack install [-hInvy] [--only {package,dependencies}] [-j JOBS] [--overwrite] [--keep-prefix] [--keep-stage]
                     [--dont-restage] [--use-cache | --no-cache] [--show-log-on-error] [--source] [--fake]
                     [--only-concrete] [-f SPEC_YAML_FILE] [--clean | --dirty] [--test {root,all} | --run-tests]
                     [--log-format {None,junit,cdash}] [--log-file LOG_FILE] [--cdash-upload-url CDASH_UPLOAD_URL]
                     [--cdash-build CDASH_BUILD] [--cdash-site CDASH_SITE] [--cdash-track CDASH_TRACK]
                     ...

build and install packages

positional arguments:
  package               spec of the package to install

optional arguments:
  -h, --help            show this help message and exit
  --only {package,dependencies}
                        select the mode of installation.
                        the default is to install the package along with all its dependencies.
                        alternatively one can decide to install only the package or only
                        the dependencies
  -j JOBS, --jobs JOBS  explicitly set number of make jobs, default is #cpus.
  -I, --install-status  show install status of packages. packages can be: installed [+], missing and needed by an installed package [-], or not installed (no annotation)
  --overwrite           reinstall an existing spec, even if it has dependents
  --keep-prefix         don't remove the install prefix if installation fails
  --keep-stage          don't remove the build stage if installation succeeds
  --dont-restage        if a partial install is detected, don't delete prior state
  --use-cache           check for pre-built Spack packages in mirrors (default)
  --no-cache            do not check for pre-built Spack packages in mirrors
  --show-log-on-error   print full build log to stderr if build fails
  --source              install source files in prefix
  -n, --no-checksum     do not use checksums to verify downloadeded files (unsafe)
  -v, --verbose         display verbose build output while installing
  --fake                fake install for debug purposes.
  --only-concrete       (with environment) only install already concretized specs
  -f SPEC_YAML_FILE, --file SPEC_YAML_FILE
                        install from file. Read specs to install from .yaml files
  --clean               unset harmful variables in the build environment (default)
  --dirty               preserve user environment in the spack build environment (danger!)
  --test {root,all}     If 'root' is chosen, run package tests during
                        installation for top-level packages (but skip tests for dependencies).
                        if 'all' is chosen, run package tests during installation for all
                        packages. If neither are chosen, don't run tests for any packages.
  --run-tests           run package tests during installation (same as --test=all)
  --log-format {None,junit,cdash}
                        format to be used for log files
  --log-file LOG_FILE   filename for the log file. if not passed a default will be used
  --cdash-upload-url CDASH_UPLOAD_URL
                        CDash URL where reports will be uploaded
  --cdash-build CDASH_BUILD
                        The name of the build that will be reported to CDash.
                        Defaults to spec of the package to install.
  --cdash-site CDASH_SITE
                        The site name that will be reported to CDash.
                        Defaults to current system hostname.
  --cdash-track CDASH_TRACK
                        Results will be reported to this group on CDash.
                        Defaults to Experimental.
  -y, --yes-to-all      assume "yes" is the answer to every confirmation request

Alternately, you can use spack --help in place of spack help, or spack <subcommand> --help to get help on a particular subcommand.