Motivation

Motivation

The most difficult aspect of installing a particular software package is usually to get all the dependencies right. That is, the package requires the existence of a lot of other packages on the computer system. These packages also have their dependencies. In addition, some packages only work with certain versions of other packages. Getting dependencies and software versions right quickly becomes a challenging problem. Even more critical is the fact that installing a new set of packages brings in other versions of some software that affect the behavior of previously installed software on the computer system.

To be specific, think of package a that depends on packages b and c in their respective versions 1.0 and 1.2 or newer. Then we install package d, which also requires package c, but in an older version 0.6. Package c in v0.6 overwrites v1.2, causing package a to break.

A good solution to the problem of incompatible dependencies, and in fact a good solution to handle dependencies in general, is to create an isolated virtual environment where we can install the packages in the versions we want. We can have several such isolated environments on our system and none of them interfere with the global software system. Also, we can easily delete an environment when it is no longer needed.