In looking at his script, which is an excellent start, it seems clear that a truly comprehensive script is going to have to be flexible in several ways:
1. It needs to support all the major *NIX variants, which will mean that paths and commands will be somewhat OS-specific
2. It should support customized installs, so that someone who already has Postgres installed, for example, can skip that piece
3. It should be easy to run it multiple times on an already set-up system without worrying about clobbering anything
4. Although it should use defaults that mirror our installation documentation, it should allow the user to use different locations and names if s/he chooses to.
David's script does not actually install OpenACS, just everything you need to prepare for the install. I know that an automated installer for OpenACS/dotLRN exists, because the Collaboraid test servers get reinstalled automagically every night. I would like it to be possible to invoke that process from this script, when it's ready for prime time.
My thought at this point is to split the install into at least two parts. The top-level script would allow the user to specify what pieces they want to install, and the second one would ask the user for desired names, locations etc, always offering reasonable defaults which mirror the recommendations in the install docs, and then do the install. If it's too much to do in one script it could easily be split up into one script per package to be installed.
I'm not sure what to do about OS differences in paths, commands, etc because I'm not sure yet how extensive they will be. I would prefer to keep it all in one set of scripts, using variables to work around the differences, but it remains to be seen if that approach will work or if it will end up being unreadable.
The consensus when David wrote his TIP for this (http://openacs.org/forums/message-view?message_id=117914) was that the scripts should be written in Bourne shell (sh) so I'll stick with that.
Any comments or suggestions on how I should (or should not) proceed?