Sometimes, I want to install and test bleeding-edge-software, like snapshots of ECL in the days when it didnt support gray-streams in the stable version. Always creating a new Package and installing it is a lot of work, especially when having to compile multiple times. Maintaining several paths of different versions of software can also be a pain, but installing them on a central place can cause problems, for example it can be non-trivial to remove them again.
A very good solution for that problem seems to be stow and xstow. It can be used to create symlinks from a directory to /usr/local, and remove them again afterwards.
Lets say you want to install
Mizar. Well, this project is not open source, nor does it come in a really useful format. So firstly, after downloading and expanding, I am creating a directory /usr/local/stow/mizar. Then I run the installer to install it into this directory
$ sudo ./install.sh
Installation of Mizar System Version 7.9.03 (Linux/FPC) (MML 4.110.1033)
Enter the path for installing Mizar executables
[default is /usr/local/bin]
/usr/local/stow/mizar/bin
Unpacking to /usr/local/stow/mizar/bin
Enter the path for installing Mizar shared files
[default is /usr/local/share/mizar]
/usr/local/stow/mizar/share/mizar
Unpacking to /usr/local/stow/mizar/share/mizar
It may take some time...
Enter the path for installing Mizar documentation
[default is /usr/local/doc/mizar]
/usr/local/stow/mizar/doc/mizar
Unpacking to /usr/local/stow/mizar/doc/mizar
The installation process of the Mizar system is completed.
(...)
That being done, lets go to xstow:
$ cd /usr/local/stow
$ sudo xstow mizar
$ which mizf
/usr/local/bin/mizfThat worked well so far. Of course, we have to change the MIZFILES environment variable properly, but anyway, now mizar is sort of installed.
To uninstall it again:
$ cd /usr/local/stow
$ sudo xstow -D mizar
$ which mizfIt is not installed anymore (well, the files are still in /usr/local/stow/mizar, but not in any default directory). This is very helpful, especially for software like mizar, which is not really cooperative with the system.