Installing isilmar-ports in your home directory

The isilmar ports collection can also be used to install software completely in user land, without ever needing increased privileges. This page describes such a user-land installation.

Choosing your directory layout

Isilmar-ports take the directory layout they follow from environment variables, so you better set them once and for all. Also, to make your installation useful, you have to add the place you install to into your path.

In the following copy-and-paste example we assume that your shell is the bash (the most popular one on GNU/Linux systems) and use the following layout. Everything we do (apart from setting these environment variables) happens in a directory software in your home directory. In that directory, we have a directory install where everything is installed into, a directory distfiles where upstream sources are collected and a directory ports for the ports tree. Hence you might add the following to your .bashrc.

export PORTSDIR=$HOME/software/ports
export DISTDIR=$HOME/software/distfiles
export PREFIXBASE=$HOME/software/install

Don't forget to source the configuration again, to have these variables set (for fresh shells this will happen automatically once you've changed your configuration file).

$ . ~/.bashrc

Bootstrapping stow and cvs

The isilmar ports use stow(1) as packaging tool and the usual way to get a your ports tree is to do a checkout of a local copy of the ports cvs repository. So stow(1) and cvs(1) are needed; fortunately, they are both provided by the ports tree. However, that means that the first installation is slightly different, to avoid the chicken-egg problem.

Note:All files hosted on are also hosted on, and vice versa.

Get your ports tree as shell archive.

$ mkdir -p $PORTSDIR
$ wget
$ /bin/sh ports.shar
$ rm ports.shar

Then install the port stow by hand.

$ cd $PORTSDIR/stow && make install clean
$ cd $PREFIXBASE/stow
$ ./stow-*/bin/stow stow-*/

Then the port cvs can be installed in the usual way.

$ $PORTSDIR/bin/reinstallport cvs

Obtaining the ports repository

Now it is time to replace the bootstrap ports tree by a proper cvs checkout. In that way, you have full history and can also choose to use older versions.

First remove the bootstrap ports tree

$ rm -rf $PORTSDIR

Then download the cvs repository. In our example we place it in software/isilmar in your home directory; any other place works equally well, so adapt to your needs.

$ mkdir -p $HOME/software/isilmar
$ cd $HOME/software/isilmar
$ wget
$ tar xvfz ports.cvs.tar.gz 
$ rm ports.cvs.tar.gz
$ CVSROOT=`pwd`/ports.cvs
$ cd $HOME/software # the parent of $PORTSDIR
$ cvs -d $CVSROOT checkout ports

Now you can walk around in $PORTSDIR and use the usual cvs commands, like log or update to learn about the history of a port or get an older version.

Installing Software

That's it! Now $PORTDIR/bin/reinstallport is the tool to install or upgrade a port. It takes precisely one argument, the name of the port. E.g., if you want to install units, simply type
$PORTSDIR/bin/reinstallport units

Feedback and further questions

...can be directed to