By "default path", I mean "/usr/local", or other paths managed by root ("system paths").
I have to install many application packages (by that, I mean: svn, httpd, git, perl, python, ...) on a few Linux (RedHat) or Solaris (10, in local zones) servers.
But:
- those servers manage many different applications (sometimes using different versions of svn or perl or ...)
- I am not administrator on those servers (no
sudo rootfor me)
I tried using, for instance on Solaris, pkgadd -R to try an install pre-compiled packages in a custom path (namely within the homedir of a specific user, rather than in the normal default path of /usr/local/...), but said pre-compiled packages all comes with references to other resources in /usr/...:
A ldd /path/to/local/installed/packages will show many dependencies to system paths:
ldd /home/myuser/usr/local/git
libz.so => /usr/local/lib/libz.so
libiconv.so.2 => /usr/local/lib/libiconv.so.2
libsocket.so.1 => /usr/local/libsocket.so.1
...
That will not do, because:
- In Solaris, I have no way to write anything on
/usrwhich is only writable from the global zone, not from a local zone. - In Solaris or Linux, I am not root anyway, so I cannot write anything in system path.
- I don't manage the upgrades on those servers, so if any library changes, it can potentially breaks many of my installed services.
What would you recommend to do in order to install in an isolated way different "services" on a same (Linux or Solaris) server, each one potentially requiring their own version of (perl, python, ...)?
I propose a solution below, but if you have other alternatives, I am interested.