home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / rescue / sbin / SuSEconfig < prev    next >
Text File  |  2006-11-29  |  6KB  |  240 lines

  1. #! /bin/sh
  2. # Copyright (c) 1996-2002 SuSE Linux AG, Nuernberg, Germany.
  3. # All rights reserved.
  4. #
  5. # Author: Burchard Steinbild, 1996-97
  6. #         Florian La Roche, 1996
  7. # i18n support added by Aleksey Smirnov <smi@logic.ru>
  8. #  & Aleksey Novodvorsky <aen@logic.ru> from IPLabs Linux Team, Moscow.
  9. # Attention! The shell must be restarted before localisation takes effect!
  10. #
  11. # Rewrote i18n support to use RC_LANG and RC_LC_* sysconfig variables
  12. # Bernhard Kaindl <bk@suse.de>, 1999
  13. #
  14. # Change ROOT_LOGIN_REMOTE support to edit PAM config files.
  15. # Thorsten Kukuk <kukuk@suse.de>, 1999
  16. #
  17. # Move PAM configuration into SuSEconfig.pam
  18. # Thorsten Kukuk <kukuk@suse.de>, 2000
  19. #
  20. # For feedback, please use http://www.suse.de/feedback
  21.  
  22. echo "Starting SuSEconfig, the SuSE Configuration Tool..."
  23. umask 022
  24.  
  25. # check if we are started as root
  26. # only one of UID and USER must be set correctly
  27. if test "$UID" != "0" -a "$USER" != root -a -z "$ROOT" ; then
  28.     echo "You must be root to start $0."
  29.     exit 1
  30. fi
  31.  
  32. # The environment variable ROOT indicates the root of the system to be
  33. # managed by SuSEconfig when that root is not '/'
  34. r=$ROOT
  35.  
  36.  
  37. FASTRUN=false
  38. export FASTRUN
  39. CHECK_NEWPACKAGE=true
  40. export CHECK_NEWPACKAGE
  41. FORCE_REPLACE=false
  42. export FORCE_REPLACE
  43. VERBOSE=false
  44. export VERBOSE
  45. DO_RESTARTS=true
  46. export DO_RESTARTS
  47.  
  48. while test $# -gt 0; do
  49.   case $1 in
  50.     *-verbose)
  51.       VERBOSE=true
  52.       echo Running in verbose mode.
  53.     ;;
  54.     *-quick)
  55.       FASTRUN=true
  56.       echo Running in quick mode.
  57.     ;;
  58.     *-nonewpackage)
  59.       CHECK_NEWPACKAGE=false
  60.       echo Skipping new package checks.
  61.     ;;
  62.     *-force)
  63.       FORCE_REPLACE=true
  64.     ;;
  65.     *-norestarts)
  66.       DO_RESTARTS=false
  67.     ;;
  68.     *-nomodule)
  69.       ONLY_MODULE="none"
  70.       shift
  71.     ;;
  72.     *-module)
  73.       FASTRUN=true
  74.       ONLY_MODULE=$2
  75.       echo Running module $ONLY_MODULE only
  76.       shift
  77.     ;;
  78.     *)
  79.       echo Unknown parameter $1.
  80.       echo Usage: SuSEconfig "[--quick|--nonewpackage|--force|--verbose] [--module name]"
  81.       exit 1
  82.     ;;
  83.   esac
  84.   shift
  85. done
  86.  
  87. test "$FASTRUN" = false -a "$CHECK_NEWPACKAGE" = true && \
  88.     echo Running in full featured mode.
  89.  
  90. #
  91. # where can SuSEconfig store data in running system?
  92. #
  93. LIBDIR=$r/var/adm/SuSEconfig
  94. MD5DIR=$LIBDIR/md5
  95. export MD5DIR
  96. IS_RUNNING=$r/var/lock/SuSEconfig-is-running
  97.  
  98. test -f $r/lib/YaST/SuSEconfig.functions || {
  99.     echo "ERROR - can not find $r/lib/YaST/SuSEconfig.functions!!"
  100.     echo "This should not happen.  Exit..."
  101.     exit 1
  102. }
  103.  
  104. . $r/lib/YaST/SuSEconfig.functions
  105.  
  106. echo "Reading $r/etc/sysconfig and updating the system..."
  107.  
  108. for i in $r/etc/sysconfig/suseconfig ; do
  109.   test -f $i && . $i
  110. done
  111.  
  112. if test -n "$ENABLE_SUSECONFIG" -a "$ENABLE_SUSECONFIG" = "no" ; then
  113.     echo "SuSEconfig is disabled in $r/etc/sysconfig/suseconfig. Exit..."
  114.     exit 0
  115. fi
  116.  
  117. # set a new PATH
  118. if test "$r" != ""; then
  119.         PATH=$PATH:$r/bin:$r/usr/bin:$r/sbin:$r/usr/sbin
  120.         export PATH
  121. fi
  122.  
  123. #
  124. # first of all test if we have space.  If not abort.
  125. #
  126. my_test_for_space $r/etc || exit 1
  127.  
  128.  
  129. #
  130. # delete very old lock files
  131. #
  132.  
  133. if test -x /usr/bin/find -a -x /usr/bin/xargs ; then
  134.     /usr/bin/find $IS_RUNNING -cmin +1000 2> /dev/null \
  135.     | /usr/bin/xargs --no-run-if-empty rm -f
  136. fi
  137.  
  138. #
  139. # check locking
  140. #
  141.  
  142. if test -e $IS_RUNNING ; then
  143.     echo -n "Another SuSEconfig seems to run.  Waiting up to 60 seconds"
  144.     for i in 1 2 3 4 5 6 7 8 9 0 ; do
  145.         for j in 1 2 3 4 5 6 ; do
  146.             echo -n .
  147.             sleep 1
  148.             test -e $IS_RUNNING || break
  149.         done
  150.         test -e $IS_RUNNING || break
  151.     done
  152.     if test -e $IS_RUNNING ; then
  153.         echo
  154.         echo
  155.         echo "Giving up..."
  156.         echo
  157.         echo "ps a | grep SuSEconfig"
  158.         ps a | grep SuSEconfig
  159.         echo
  160.         echo "If You think, there is no other SuSEconfig running, please call"
  161.         echo
  162.         echo "    rm $IS_RUNNING "
  163.         echo
  164.         echo "Then you can start SuSEconfig again."
  165.         echo
  166.         exit 1
  167.     fi
  168.     echo
  169. fi
  170.  
  171. echo $$ > $IS_RUNNING
  172.  
  173. trap "rm -f $IS_RUNNING ; exit 1" 1 2 15
  174.  
  175. #
  176. # the following stuff should be done in running system...
  177. #
  178. # first things, that have to be done in 'normal' systems as well as in
  179. # 'demo mode' system.
  180.  
  181. if test -z "$r" -o "$FASTRUN" = "true" ; then
  182.     SUB_SCRIPTS=""
  183.     if test "$ONLY_MODULE" = "none" ; then
  184.        echo skipping modules
  185.        # do nothing, only keep FASTRUN off
  186.     elif test -n "$ONLY_MODULE" ; then
  187.         if test -f /sbin/conf.d/SuSEconfig.$ONLY_MODULE ; then
  188.             SUB_SCRIPTS=/sbin/conf.d/SuSEconfig.$ONLY_MODULE
  189.         else
  190.             echo Module $ONLY_MODULE does not exist
  191.         fi
  192.     elif test "$FASTRUN" = "true" ; then
  193.     # to be deleted ... all other scripts do not exist any more
  194.         SUB_SCRIPTS="$r/sbin/conf.d/SuSEconfig.sendmail"
  195.     else
  196.         SUB_SCRIPTS="/sbin/conf.d/SuSEconfig.*"
  197.     fi
  198.     #
  199.     # Now start the package skripts
  200.     #
  201.     for SKRIPT in $SUB_SCRIPTS ; do
  202.         test -f $SKRIPT || continue
  203.         case "$SKRIPT" in
  204.           *~|*.swp|*.bak|*.sav|*.save|*.rpmsave|*.rpmorig|*.rpmnew|*.orig)
  205.             continue
  206.             ;;
  207.           *)
  208.             echo Executing $SKRIPT...
  209.             bash $SKRIPT
  210.             ;;
  211.         esac
  212.     done
  213. fi
  214.  
  215.  
  216. #
  217. # Now do things, only allowed in running 'normal' system.
  218. #
  219. if test -z "$r" -a ! -e $r/usr/lib/YaST/.DemoMode ; then
  220.     #
  221.     # we have only one package with a /usr/bin/vi symlink, but several vi
  222.     # packages. If it does not exist, create it
  223.     #
  224.     if test ! -e /usr/bin/vi ; then
  225.         rm -f /usr/bin/vi
  226.         test -e /usr/bin/xvi && ln -s xvi /usr/bin/vi
  227.         test -e /usr/bin/nvi && ln -s nvi /usr/bin/vi
  228.         test -e /usr/bin/elvis && ln -s elvis /usr/bin/vi
  229.         test -e /usr/bin/vim && ln -s vim /usr/bin/vi
  230.     fi
  231. fi
  232.  
  233. #
  234. # we have finished and can remove our lock file.
  235. #
  236. rm -f $IS_RUNNING
  237.  
  238. echo "Finished."
  239. exit 0
  240.