| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- #!/bin/sh
- #
- # BEGIN COPYRIGHT BLOCK
- # This Program is free software; you can redistribute it and/or modify it under
- # the terms of the GNU General Public License as published by the Free Software
- # Foundation; version 2 of the License.
- #
- # This Program is distributed in the hope that it will be useful, but WITHOUT
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License along with
- # this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- # Place, Suite 330, Boston, MA 02111-1307 USA.
- #
- # In addition, as a special exception, Red Hat, Inc. gives You the additional
- # right to link the code of this Program with code not covered under the GNU
- # General Public License ("Non-GPL Code") and to distribute linked combinations
- # including the two, subject to the limitations in this paragraph. Non-GPL Code
- # permitted under this exception must only link to the code of this Program
- # through those well defined interfaces identified in the file named EXCEPTION
- # found in the source code files (the "Approved Interfaces"). The files of
- # Non-GPL Code may instantiate templates or use macros or inline functions from
- # the Approved Interfaces without causing the resulting work to be covered by
- # the GNU General Public License. Only Red Hat, Inc. may make changes or
- # additions to the list of Approved Interfaces. You must obey the GNU General
- # Public License in all respects for all of the Program code and other code used
- # in conjunction with the Program except the Non-GPL Code covered by this
- # exception. If you modify this file, you may extend this exception to your
- # version of the file, but you are not obligated to do so. If you do not wish to
- # provide this exception without modification, you must delete this exception
- # statement from your version and license this file solely under the GPL without
- # exception.
- #
- #
- # Copyright (C) 2005 Red Hat, Inc.
- # All rights reserved.
- # END COPYRIGHT BLOCK
- #
- ###########################
- #
- # This shell script provides a way to set up a new installation after
- # the binaries have already been extracted. This is typically after
- # using native packaging support to install the package e.g. RPM,
- # pkgadd, depot, etc. This script will show the license, readme,
- # dsktune, then run the usual setup pre and post installers. This
- # script should be run from the server root directory since it uses
- # pwd to get the server root directory.
- #
- ##########################
- # get command line arguments
- # see if silent mode
- counter=0
- doMktmp() {
- tmpfile=`mktemp /tmp/${1}XXXXXX 2> /dev/null`
- if ! [ $tmpfile ] ; then
- tmpfile=/tmp/$1.$counter.$$
- counter=`expr $counter + 1`
- fi
- echo $tmpfile
- }
- doExit() {
- echo "ERROR Exiting . . ." | tee -a $logfile
- if [ $tmpinffile ]; then
- rm -f $inffile
- fi
- echo "Log file is $logfile"
- exit 1
- }
- askYN() {
- prompt="$1"
- finished=
- while ! [ $finished ]; do
- echo ""
- echo -n "$prompt (yes/no) " | tee -a $logfile
- read ans
- echo $ans >> $logfile
- case "$ans" in
- y*|Y*) finished=1 ;;
- n*|N*) exit 1 ;;
- *) echo "Please answer yes or no" | tee -a $logfile ;;
- esac
- done
- }
- ask123() {
- prompt=$2
- default=$1
- finished=
- ans=
- while ! [ $finished ]; do
- echo -n ""
- echo ""
- echo -n $prompt "" | tee -a $logfile
- read ans
- echo $ans >> $logfile
- if ! [ $ans ]; then
- return $default
- fi
- case "$ans" in
- 1|2|3) finished=1 ;;
- *) echo "Please answer 1, 2, or 3" | tee -a $logfile ;;
- esac
- done
- return $ans
- }
- getFQDN() {
- max=0
- maxhost=
- defhost=`hostname`
- echo "getFQDN: hostname = $defhost" >> $logfile
- hosthost=`host $defhost | grep -v "not found" | awk '{print $1}'`
- echo "getFQDN: host $defhost = $hosthost" >> $logfile
- for host in $defhost $hosthost `hostname -f` `hostname -a` ; do
- len=`echo $host | wc -c`
- echo "getFQDN: host $host has length $len" >> $logfile
- if [ $len -gt $max ]; then
- max=$len
- maxhost=$host
- echo "getFQDN: new max host $host has length $max" >> $logfile
- fi
- done
- echo $maxhost
- }
- logfile=`doMktmp log`
- myargs=
- silent=
- inffile=
- tmpinffile=
- nextisinffile=
- keepinffile=
- for arg in "$@" ; do
- if [ "$arg" = "-s" ]; then
- silent=1
- elif [ "$arg" = "-k" ]; then
- keepinffile=1
- elif [ "$arg" = "-f" ]; then
- nextisinffile=1
- elif [ $nextisinffile ]; then
- inffile="$arg"
- nextisinffile=
- else
- myargs="$myargs $arg"
- fi
- done
- # figure out where we are and make sure we cd to the serverroot dir
- setupdir=`dirname $0`
- sroot=`dirname $setupdir`
- cd $sroot
- currentdir=`pwd`
- if [ "$currentdir" != "$sroot" ]; then
- # running setup using a relative path
- bname=`basename $setupdir`
- if [ "$bname" = "." ]; then
- setupdir=$currentdir
- else
- setupdir=`echo $currentdir/$bname`
- fi
- sroot=`dirname $setupdir`
- cd $sroot
- fi
- rm -f $sroot/setup/install.inf
- echo "INFO Begin Setup . . ." | tee -a $logfile
- # cat LICENSE.txt
- if ! [ $silent ]; then
- echo "" | tee -a $logfile
- echo "" | tee -a $logfile
- echo "" | tee -a $logfile
- cat LICENSE.txt | tee -a $logfile
- askYN "Do you accept the license terms?"
- fi
- # cat README.txt
- if ! [ $silent ]; then
- cat README.txt | tee -a $logfile
- askYN "Continue?"
- fi
- # dsktune
- if ! [ $silent ]; then
- bin/slapd/server/dsktune | tee -a $logfile
- askYN "Continue?"
- fi
- # install mode
- if ! [ $silent ]; then
- echo ""
- echo "Please select the install mode:"
- echo " 1 - Express - minimal questions"
- echo " 2 - Typical - some customization (default)"
- echo " 3 - Custom - lots of customization"
-
- ask123 "2" "Please select 1, 2, or 3 (default: 2) "
- installmode=$?
- fi
- # if silent mode, do not run the pre-installer programs
- # otherwise, create a temp file for their use
- if ! [ $silent ]; then
- inffile=`doMktmp setup`
- tmpinffile=1
- # put some common answers in the file
- hostname=`getFQDN`
- if ! [ $hostname ] ; then
- hostname=localhost.localdomain
- fi
- echo "" | tee -a $logfile
- echo -n "Hostname to use (default: $hostname) " | tee -a $logfile
- read ans
- echo $ans >> $logfile
- if [ "$ans" ]; then
- hostname="$ans"
- fi
- user=nobody
- group=nobody
- echo ""
- echo -n "Server user ID to use (default: $user) " | tee -a $logfile
- read ans
- echo $ans >> $logfile
- if [ "$ans" ]; then
- user="$ans"
- fi
- echo ""
- echo -n "Server group ID to use (default: $group) " | tee -a $logfile
- read ans
- echo $ans >> $logfile
- if [ "$ans" ]; then
- group="$ans"
- fi
- echo '[General]' >> $inffile
- echo "FullMachineName = $hostname" >> $inffile
- echo "SuiteSpotUserID = $user" >> $inffile
- echo "SuiteSpotGroup = $group" >> $inffile
- echo ServerRoot = `pwd` >> $inffile
- # first, run ds
- cd bin/slapd/admin/bin
- ./ns-config -f $inffile -l $logfile -m $installmode || doExit
- cd ../../../..
- # next, run admin
- cd bin/admin
- ./ns-config -f $inffile -l $logfile -m $installmode || doExit
- cd ../..
- fi
- # do the post installers
- silentarg=""
- if ! [ $silent ] ; then
- silentarg="-s"
- fi
- `pwd`/bin/slapd/admin/bin/ns-update $silentarg $myargs -f $inffile | tee -a $logfile || doExit
- `pwd`/bin/admin/ns-update $silentarg $myargs -f $inffile | tee -a $logfile || doExit
- echo "INFO Finished with setup, logfile is setup/setup.log" | tee -a $logfile
- if [ -f setup/setup.log ] ; then
- cat $logfile >> setup/setup.log
- else
- cp $logfile setup/setup.log
- fi
- rm -f $logfile
- if [ $tmpinffile ]; then
- if [ $keepinffile ]; then
- if [ -f setup/install.inf ]; then
- cat $inffile >> setup/install.inf
- else
- cp $inffile setup/install.inf
- fi
- chmod 600 setup/install.inf
- fi
- rm -f $inffile
- fi
- exit 0
|