It may not appear sensible or even possible to do this, but it can be done,
providing the install tree (listed on the package Web page) is
different between the two versions. In general, we tend to install
successive versions of binaries into the same tree for convenience and,
if this is the case in the binary package you're looking at, then installing
two versions isn't possible (one will overwrite the other of course).
In that case, you have to swremove the original package before swinstalling
the new version.
However, on occasions we've found that there's been compatibility problems, particularly for library-only packages, between releases and we duly adjust the install tree for each incompatible release. The classic example of this problem are the tcl and tk packages, which are notorious for never being compatible with older releases, even when only the minor release number increases.
Using tcl and tk as an example (though this is no longer true for the new
combined tcltk package, it did used to apply to the separate tcl and tk
packages), we've installed into /usr/local/tcl-X.Y and /usr/local/tk-X.Y
trees for each release of version X.Y.Z of the packages. This means you can
install multiple versions of tcl for example like this (using versions
8.1.1 and 8.2.1 as an example):
# First we do tcl 8.1.1 - it's not going to clash with anything
swinstall -s /tmp/tcl-8.1.1-hppa-11.00.depot tcl
# Now we do tcl 8.2.1 - it needs an extra option to avoid clashing
swinstall -x allow_multiple_versions=true -s /tmp/tcl-8.2.1-hppa-11.00.depot tcl
This installs tcl 8.1.1 into /usr/local/tcl-8.1 and tcl 8.2.1 into /usr/local/tcl-8.2.
When you come to remove one of the tcl releases (e.g. 8.1.1), you'll need to
specify the version number when running swremove:
swremove tcl,r=8.1.1
Note that unless the oldest version of the multiple package versions is
a versioned dependency of another package, it will be deleted from our archive
after two months. This can actually mean that we can have three or more
versions of a dependency package on the archive, if other packages have
locked them in via versioned dependencies.