Using stow for simple package management
I have recently been introduced to a useful utility called
stow has been around for a long time and provides a simple way to manage compiled code.
This is the way I have used
stow: Create an unused directory tree. (I used
configure use --prefix=/opt/local/PACKAGES/package-1.2.3 where package-1.2.3 is the name of the package you are compiling e.g.openssl-0.9.7d.
When you have run
make install then
cd to /opt/local/PACKAGES/ and call
This creates a set of symbolic links two directories up, thus binaries in /opt/local/PACKAGES/package-1.2.3/bin are seen in /opt/local/bin.
The approach used by Stow is to install each package into its own tree, then use symbolic links to make it appear as though the files are installed in the common tree. Adminis- tration can be performed in the package's private tree in isolation from clutter from other packages. Stow can then be used to update the symbolic links. The structure of each private tree should reflect the desired structure in the common tree; i.e. (in the typical case) there should be a bin directory containing executables, a man/man1 directory containing section 1 man pages, and so on.
If all references to the package are made via the symbolic links, when it comes to updating a package you can simply make install the new package to e.g. /opt/local/PACKAGES/package-2.2.4.
[root@ldap]# stow -D package-1.2.3
[root@ldap]# stow package-2.2.4
If you find there is a problem with the new install you can easily revert back to the original
[root@ldap]# stow -D package-2.2.4
[root@ldap]# stow package-1.2.3
Author: Lance Rathbone
Last modified: Wednesday June 18, 2008