This guide shows you the options you have to install Storm. For this, we are going to assume that all necessary dependencies have been installed on the machine in default locations so they can be found by our build machinery. Also, we are going to assume that your operating system is in the list of supported operating systems. If your operating system is not in this list but is Linux-based, chances are that you can install Storm but you may have to perform additional steps that we do not cover here. If you just want to quickly try Storm and/or are not able to install the dependencies, you might want to check out our virtual machine image or the Docker container.

We currently provide two ways of installing Storm:

If you just want to run Storm and you want to run it natively on your machine, then we recommend installing it via a package manager or using the Docker container. However, if you want or need to make changes to the Storm code base, you have to obtain the source code and build it yourself. While this is not always a breeze (depending on your operating system), we spent some effort on making this process as easy as possible.

Homebrew

If you are running a version of macOS that is newer than Mavericks, you can use homebrew, the “missing package manager for macOS”. Once you have installed Homebrew, you need to make Homebrew aware of how to install Storm. In brew-speak, you need to tap the Storm Homebrew formulas

$ brew tap moves-rwth/storm

Then, installing Storm is as easy as

$ brew install stormchecker

This will install Storm and all necessary and some recommended dependencies. More options provided by the package can be seen by invoking

$ brew info stormchecker

After installing the package, you should directly be able to invoke

$ storm

and continue with the guide on how to run Storm.

Building Storm from source

This guide helps you building a standard version of Storm. There are plenty of configuration options, please check our configuration guide if you want to build a non-standard version. Most notably, you will have to set additional options if you want to include solvers that are not shipped with Storm (for example Gurobi or MathSAT). However, the defaults should be suitable in most cases.

Before proceeding with the following steps, make sure that you have set up all dependencies as required.

Obtaining the source code

The source code of the latest stable release can be downloaded from GitHub. You can either clone the git repository

$ git clone -b stable https://github.com/moves-rwth/storm.git

or download a zip archive with the latest stable release:

$ wget https://github.com/moves-rwth/storm/archive/stable.zip
$ unzip stable.zip

If you want the most recent version of Storm rather than the stable version, you can replace the -b stable with -b master when cloning the repository or use the archive https://github.com/moves-rwth/storm/archive/master.zip, respectively.

In the following, we will use STORM_DIR to refer to the root directory of Storm. If you want, you can set an environment variable to ease the following steps via

$ export STORM_DIR=<path to Storm root>

Configuration step

Switch to the directory STORM_DIR and create a build folder that will hold all files related to the build (in other words, building is done out-of source, in-source builds are strongly discouraged and are likely to break). Finally change to the build directory.

$ cd STORM_DIR
$ mkdir build
$ cd build

Then, use cmake to configure the build of Storm on your system by invoking

$ cmake ..

Check the output carefully for errors and warnings. If all requirements are properly installed and found, you are ready to build Storm and move to the next step. In case of errors, check the requirements, consult the troubleshooting guide and, if necessary, file an issue.

Build step

If the configuration step went smoothly, the compilation step should run through. Feel free to use the compilation time for a coffee or stroll through the park.

To compile all of Storm’s binaries including all tests, enter

$ make

To only build the binaries (available from version 1.1 on), enter

$ make binaries

If you just want to compile Storm’s main command-line interface, typing make storm-main suffices. To see which targets you need to build, we refer to the table of available executables.

If you have multiple cores at your disposal and at least 8GB of memory, you can execute make storm-main -j${NUMBER_OF_CORES} to speed up compilation. You will still be able to get the coffee, no worries.

Adding Storm to your path optional

If you want to be able to run Storm from anywhere, you may want to add it to your path (in the tutorial on how to run Storm this is assumed). You can do so, by

$ export PATH=$PATH:$STORM_DIR/build/bin

where $STORM_DIR is the environment variable set earlier.

Test step optional

We recommend to execute it to verify that Storm produces correct results on your platform. Invoking

$ make check

will build and run the tests. In case of errors, please do not hesitate to file an issue.

Docker

For easy and fast access to Storm, we provide Docker containers containing Storm in different versions. The Docker containers are similar to the Virtual machine but come with less overhead and offer more recent versions of Storm.

To use the containers you first have to install Docker. On macOS you can use homebrew to install Docker.

$ brew cask install docker

Next you should start the Docker app and its tray icon should be visible.

Then you have to download the Docker image you want to use. All available images can be found on DockerHub. Currently we offer the latest release and the most recent development versions of Storm. The most recent versions are built automatically each day and indicated by the suffix travis. Furthermore we also provide debug builts indicated by the suffix -debug.

Download the Storm container you want to use:

$ docker pull movesrwth/storm:travis

We want to be able to share files between the container and the host system. Therefore you should change the directory to the one you want to share, for example:

$ cd ~/Desktop/data

The next command starts the previously downloaded image and enables the file sharing with the current directory:

$ docker run --mount type=bind,source="$(pwd)",target=/data -w /opt/storm/build/bin --rm -it --name storm movesrwth/storm:travis

After executing the command you are now within the Docker container indicated by a different prompt:

root@1234xyz:/opt/storm/build/bin#

The file sharing direcory is located at /data. Now you can start using Storm within this container:

$ ./storm --version

To try out file sharing execute:

$ ./storm --prism ../../resources/examples/testfiles/dtmc/die.pm --io:exportexplicit /data/die.drn

Afterwards there should be a file named die.drn in the shared directory now.

In the end exit the container and clean-up is performed automatically.

$ exit