[Slapt-get-user] wrap_slapt_get.sh

Dan Barber slapt-get-user@software.jaos.org
Wed, 5 May 2004 09:37:08 -0400 (EDT)


Hello all,

Here is a script I've been using to manage my servers via disk set.  It
has made my life easy and can hopefully do the same for you.  Please send
me any comments/updates.

Jason, This script is a bit different than what you've seen.  I've added
comments and modified some of the tests.

Dan


---------------- wrap_slapt-get.sh script follows -----------------------

#!/bin/sh
# Dan Barber <danb at mojolin dot com>
#
# 	Slackware 9.1 Disk Sets
#
    #### A : Basic Linux System
    #### AP : Applications that don't need X
    #### D : Development tools and utilities
    #### E : Emacs
    #### F : FAQs and HOWTOs
    #### GNOME: The GNOME desktop and GTK+
    #### KDE : The K Desktop Environment and Qt
    #### KDEI : KDE international packages
    #### L : Various libraries, including GLIBC
    #### N : Network programs, utilities, servers, and clients
    #### T : teTeX, LaTeX, and related typesetting software
    #### TCL : TCL and Tk
    #### X : Base X Window system
    #### XAP : X Window system applications and window managers
    #### Y : BSD games

#  ------- Start User Configurable Section
# Actions on Disk Sets
 include_dir="a,ap,d,f,gnome,kde,l,n,tcl,x,xap,y"
 remove_dir="e,kdei,t"
 ignore_dir="k"

# Uncomment if you are using Todd Kulesza's Dropline Gnome
 USE_DROPLINE=true
#
# Uncomment to actually remove the packages in the $remove_dir from your
system
 DO_REMOVE=true
# ------- End User Configurable Section

# ------- Start Main Program

## Check for slapt-get
if [ -z "`which slapt-get`" ]; then
        echo "slapt-get not found in PATH"
        exit 1
fi

## Update Transaction Engine
echo ""
echo -e "Updating the slapt-get transaction engine."
echo ""
slapt-get --update

echo ""
echo "Creating temp list of currently installed dropline packages."
echo ""

## If using Dropline Gnome, update it's package list
if [ $USE_DROPLINE ]; then

        if [ -e /tmp/dropline_package_list.txt ]; then
                rm -rf /tmp/dropline_package_list.txt
        else
                touch /tmp/dropline_package_list.txt
        fi

        for i in `ls /var/log/packages/*[0-9]dl `
        do

                test7=`echo $i | awk -F"-" '{print $7}'`
                test6=`echo $i | awk -F"-" '{print $6}'`
                test5=`echo $i | awk -F"-" '{print $5}'`
                test4=`echo $i | awk -F"-" '{print $4}'`

                if [ -n "$test7" ]; then
                        package=`echo $i | awk -F"-" '{print $1 "-" $2 "-"
$3}'`
                        echo "$package " | sed
"s/\/var\/log\/packages\///g" >> /tmp/dropline_package_list.txt
                elif [ -n "$test6" ]; then
                        package=`echo $i | awk -F"-" '{print $1 "-" $2 "-"
$3}'`
                        echo "$package " | sed
"s/\/var\/log\/packages\///g" >> /tmp/dropline_package_list.txt
                elif [ -n "$test5" ]; then
                        package=`echo $i | awk -F"-" '{print $1 "-" $2}'`
                        echo "$package " | sed
"s/\/var\/log\/packages\///g" >> /tmp/dropline_package_list.txt
                elif [ -n "$test4" ]; then
                        package=`echo $i | awk -F"-" '{print $1}'`
                        echo "$package " | sed
"s/\/var\/log\/packages\///g" >> /tmp/dropline_package_list.txt
                fi

        done

        	echo ""
        	echo "Installing all non-dropline packages in include
directories."
        	echo ""

        for i in `echo $include_dir | tr "," "\012" `
        do

                for package in `slapt-get --search "^\.\/slackware\/$i\$"
| grep -v devs | grep -v kernel | grep -v lilo | awk '{print $1}'`
                do
                        search_term=`grep "^$package "
/tmp/dropline_package_list.txt`
			echo "#"
			echo "#"
			echo "----------------------------"
echo "          #### $package $package $package $package ####"
		if [ -n "$search_term" ]; then
			echo ""
			echo "$package IS DROPLINE: No action taken."
			echo ""
			echo "----------------------------"
		elif [ -z "$search_term" ];then
			echo $package | xargs -r slapt-get --install
--no-prompt
			echo "----------------------------"
		fi

                done

        done


else # USE_DROPLINE is not set
        echo ""
        echo "Installing all packages in include directories."
        echo ""

        for i in `echo $include_dir | tr "," "\012" `
        do

                package=`slapt-get --search "^\.\/slackware\/$i\$" | grep
-v devs | grep -v kernel | grep -v lilo | awk '{print $1}'`
                echo $package
                echo "Including Slackware Disk Set $i"
                echo $package | xargs -r slapt-get --install --no-prompt

        done

fi


if [ $DO_REMOVE ]; then
        echo ""
        echo "Removing all packages in remove directories."
        echo ""

        for i in `echo $remove_dir | tr "," "\012" `
        do
                echo "Removing Slackware Disk Set $i"
                slapt-get --search "^\.\/slackware\/$i\$" | awk '{print
$1}' | xargs -r slapt-get --remove --no-prompt
        done
fi


echo ""
echo "You have finished upgrading your system using wrap_slapt_get.sh"
echo ""