Currently, I work on a compiler and I use GNU Bison to generate a parser. It is very painful to manage the different versions of Bison (I switch between several versions). Not long ago, I discovered a great tool named GNU Stow that simplifies managing different versions of a software package.
What is the usefulness to use Stow?
It is true that there are already package manager but Stow is very interesting to manage packages, which need to be installed by hand (for example, unofficial packages).
It is very easy to install Stow on Linux (and on Mac). Indeed, Stow is included in every major Linux repository. For example, on Ubuntu, you need to run this line:
After that, you have to create a folder named stow at /usr/local/:
Stow in action
###Installing a package with Stow###
Stow requires that you change the default installation path by /usr/local/stow. With a make install, you can specify an argument (prefix=) that indicates where the package will be installed:
###Enabling (Stowing) a package###
After installing, you need to enable the package by running this command:
###Disabling (Unstowing) a package###
You just need to add -D argument in Stow command to disable a package:
Uninstalling a package
Removing /usr/local/stow/(package-name) folder is a good to uninstall definitively or to upgrade a package. Before doing this, you need to remove symbolic links created by Stow:
I hope I could help people who had issues to manage different application of a software. Indeed, Stow is certainly a great tool to handle this.