<div dir="ltr"><div>Hi David</div><div><br></div><div>As Ryan and other said,<br></div><div>you don't need to install everything in /usr/local or similar.</div><div>You can make a separate location to install the packages, <br></div><div>install them (using configure --prefix) in directories named after the package name, version, <br></div><div>and perhaps the compiler and version used, (say, /sw/openmpi/4.0.1/gnu/4.8.5/).<br></div><div><br></div><div>You can then use the traditional <br></div><div>Environment Modules (Tcl based) <a href="http://modules.sourceforge.net/">http://modules.sourceforge.net/</a></div><div>or the newer Lmod (Lua based) <a href="https://lmod.readthedocs.io/en/latest/">https://lmod.readthedocs.io/en/latest/</a></div><div>to set the environment properly <br></div><div>(i.e., prepending or appending to PATH, LD_LIBRARY_PATH, INCLUDE, MANPATH, etc),</div><div>pointing to the bin, lib, include, etc, subdirectories of your software installation directory</div><div>(say, /sw/openmpi/4.0.1/gnu/4.8.5/{bin,lib,include,man, ...}</div><div>There are prototype modules available out there, <br></div><div>to help you get started writing them for your installation.</div><div>On CentOS 7 environment-modules is available from the base repository, and Lmod is available from epel.</div><div>Or you can install the latest from the links above.<br></div><div> <br></div><div>Users can even create their own modules, to load the software of their choice.</div><div>Modules support requisites and conflicts.</div><div>Properly written modules produce a clean unique envirnoment for each different purpose.</div><div>Switching between different environments is also easy.</div><div><br></div><div>As Chris and others said, you can also use EasyBuild to streamline the configure/make/install procedure</div><div><a href="https://easybuild.readthedocs.io/en/latest/index.html">https://easybuild.readthedocs.io/en/latest/index.html</a> ,<br></div><div>but manual installs are perfectly fine.<br></div><div><br></div><div>I hope this helps,</div><div>Gus Correa<br></div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 20, 2019 at 2:50 PM Ryan Novosielski <<a href="mailto:novosirj@rutgers.edu">novosirj@rutgers.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Really sounds like you should be using environment modules. What I’d recommend to anyone starting out today would be Lmod: <a href="https://lmod.readthedocs.io/en/latest/" rel="noreferrer" target="_blank">https://lmod.readthedocs.io/en/latest/</a><br>
<br>
Most of the software building/installation packages interface with it.<br>
<br>
Generally the software installs are done into a place that’s unique for each package and version, and maybe even for what compiler it was built with (see hierarchical).<br>
<br>
--<br>
____<br>
|| \\UTGERS,     |---------------------------*O*---------------------------<br>
||_// the State  |         Ryan Novosielski - <a href="mailto:novosirj@rutgers.edu" target="_blank">novosirj@rutgers.edu</a><br>
|| \\ University | Sr. Technologist - 973/972.0922 (2x0922) ~*~ RBHS Campus<br>
||  \\    of NJ  | Office of Advanced Research Computing - MSB C630, Newark<br>
     `'<br>
<br>
> On Aug 20, 2019, at 1:11 PM, David Mathog <<a href="mailto:mathog@caltech.edu" target="_blank">mathog@caltech.edu</a>> wrote:<br>
> <br>
> On a system I am setting up there are a very large number of different software packages available.  The sources live in /usr/local/src and a small number of the most commonly used ones are installed in /usr/local/bin, /usr/local/lib and so forth.  The issue is that any of the target end users will only want a couple of these.  If they were all fully installed into /usr/local there would be some name conflicts.  They may also be bringing some of their own versions of these, and while $PATH order can help there, it would be best to avoid those possible conflicts too.  Users don't have priv's to modify /usr/local, so they cannot install/uninstall there themselves.<br>
> <br>
> So I'm looking for something like<br>
> <br>
>  setup software_name install<br>
>  setup software_name remove<br>
> <br>
> which would install/uninstall the packages (perhaps by symlinks) from<br>
> <br>
>  /usr/local/src/software_name<br>
> <br>
> under the user's home directory.  The goal is that the setup scripts NOT be constructed by hand.  It would have a<br>
> <br>
>  setup software_name install<br>
> <br>
> which would emulate a:<br>
> <br>
>  make install<br>
> <br>
> and automatically translate it into the appropriate setup commands.  Some of these packages have hundreds of programs, so anything manual is going to be very<br>
> painful.<br>
> <br>
> Anybody seen a piece of software like this?<br>
> <br>
> I don't expect this to work in all cases.  Some of these packages hard code paths into the binaries and/or scripts.  The only hope for them is for the user to do some variant of:<br>
> <br>
>    cd $HOMEDIR<br>
>    (cd /usr/local/src; tar -cf - software_name) | tar -xf -<br>
>    cd software_name<br>
>    make clean  #pray that it gets everything!!!<br>
>    ./configure --prefix=$HOMEDIR<br>
>    make<br>
>    make install<br>
> <br>
> There is a file which documents how to build each package, although it is nowhere near complete at this time.<br>
> <br>
> Docker is already available if the user wants to go that route, which avoids this whole issue, but at the cost of moving big images around.<br>
> <br>
> Thanks,<br>
> <br>
> David Mathog<br>
> <a href="mailto:mathog@caltech.edu" target="_blank">mathog@caltech.edu</a><br>
> Manager, Sequence Analysis Facility, Biology Division, Caltech<br>
> _______________________________________________<br>
> Beowulf mailing list, <a href="mailto:Beowulf@beowulf.org" target="_blank">Beowulf@beowulf.org</a> sponsored by Penguin Computing<br>
> To change your subscription (digest mode or unsubscribe) visit <a href="https://beowulf.org/cgi-bin/mailman/listinfo/beowulf" rel="noreferrer" target="_blank">https://beowulf.org/cgi-bin/mailman/listinfo/beowulf</a><br>
<br>
_______________________________________________<br>
Beowulf mailing list, <a href="mailto:Beowulf@beowulf.org" target="_blank">Beowulf@beowulf.org</a> sponsored by Penguin Computing<br>
To change your subscription (digest mode or unsubscribe) visit <a href="https://beowulf.org/cgi-bin/mailman/listinfo/beowulf" rel="noreferrer" target="_blank">https://beowulf.org/cgi-bin/mailman/listinfo/beowulf</a><br>
</blockquote></div>