From 33ff4f7506fcaab09fd7ad898507f37b7777ba8f Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Tue, 24 Jun 2008 18:57:39 +0000 Subject: add the ability to save the debconf package selection states in the sys handler, which aides in restoring installed packages with the right choices made --- handlers/sys.helper.in | 3 ++- handlers/sys.in | 43 ++++++++++++++++++++++++++++++++----------- 2 files changed, 34 insertions(+), 12 deletions(-) (limited to 'handlers') diff --git a/handlers/sys.helper.in b/handlers/sys.helper.in index e39e526..d3d99a5 100644 --- a/handlers/sys.helper.in +++ b/handlers/sys.helper.in @@ -3,7 +3,7 @@ HELPERS="$HELPERS sys:general_hardware_and_system_info" sys_wizard() { - require_packages hwinfo + require_packages hwinfo debconf-utils checkBox "new sys action" "check options" \ "packages" "list of all installed packages." on \ "partitions" "the partition table of all disks." on \ @@ -30,6 +30,7 @@ $partitions $sfdisk $hardware # packagesfile = /var/backups/dpkg-selections.txt +# selectionsfile = /var/backups/debconfsel.txt # partitionsfile = /var/backups/partitions.__star__.txt # hardwarefile = /var/backups/hardware.txt diff --git a/handlers/sys.in b/handlers/sys.in index 455234d..2c48883 100755 --- a/handlers/sys.in +++ b/handlers/sys.in @@ -3,18 +3,25 @@ # this handler will save various reports of vital system information. # by default, all the reports are enabled and are saved in /var/backups. # -# (1) a list of all the packages installed and removed. +# (1) a capture of the debconf package selection states. This file +# can be used to restore the answers to debconf questions for +# packages that you will be installing through (2) below. To +# do this, run: "debconf-set-selections < debconfsel.txt" +# +# (2) a list of all the packages installed and removed. # this file can be used to restore the state of installed packages -# by running "dpkg --set-selections < dpkg-selections.txt +# by running "dpkg --set-selections < dpkg-selections.txt and +# then run "apt-get -u dselect-upgrade". If you have the +# debconf-set-selections file from (1), you should restore those first. # -# (2) the partition table of all disks. +# (3) the partition table of all disks. # this partition table can be used to format another disk of # the same size. this can be handy if using software raid and # you have a disk go bad. just replace the disk and partition it # by running "sfdisk /dev/sdb < partitions.sdb.txt" # (MAKE SURE YOU PARTITION THE CORRECT DISK!!!) # -# (3) hardware information. +# (4) hardware information. # write to a text file the important things which hwinfo can gleen. # @@ -46,6 +53,8 @@ then getconf packagesfile $parentdir/dpkg-selections.txt getconf packagemgr `which dpkg` getconf packagemgroptions ' --get-selections *' + getconf selectionsfile $parentir/debconfsel.txt + getconf debconfgetselections `debconf-get-selections` elif [ $os = "redhat" ] then getconf packagesfile $parentdir/rpmpackages.txt @@ -109,13 +118,20 @@ if [ "$packages" == "yes" ]; then # is $packagemgr available inside $vserver ? if [ ! -x "$VROOTDIR/$vserver`$VSERVER $vserver exec which $packagemgr`" ]; then warning "can't find $packagemgr in vserver $vserver, skipping installed packages report." - continue + else + # don't expand * since it can be used in $packagemgroptions + set -o noglob + debug "$VSERVER $vserver exec $packagemgr $packagemgroptions > $VROOTDIR/$vserver$packagesfile" + $VSERVER $vserver exec $packagemgr $packagemgroptions > $VROOTDIR/$vserver$packagesfile || fatal "can not save $packagemgr info to $packagesfile" + set +o noglob + fi + # is $debconfgetselections available inside $vserver ? + if [ ! -x "$VROOTDIR/$vserver`$VSERVER $vserver exec which $debconfgetselections`" ]; then + warning "can't find $debconfgetselections in vserver $vserver, skipping package selection states." + else + debug "$VSERVER $vserver exec $debconfgetselections > $VROOTDIR/$vserver$selectionsfile" + $VSERVER $vserver exec $debconfgetselections > $VROOTDIR/$vserver$selectionsfile || fatal "can not save $debconfgetselections info to $selectionsfile" fi - # don't expand * since it can be used in $packagemgroptions - set -o noglob - debug "$VSERVER $vserver exec $packagemgr $packagemgroptions > $VROOTDIR/$vserver$packagesfile" - $VSERVER $vserver exec $packagemgr $packagemgroptions > $VROOTDIR/$vserver$packagesfile || fatal "can not save $packagemgr info to $packagesfile" - set +o noglob done fi @@ -129,7 +145,12 @@ if [ "$packages" == "yes" ]; then $packagemgr $packagemgroptions > $packagesfile || fatal "can not save $packagemgr info to $packagesfile" set +o noglob fi - + if [ -z "$debconfgetselections" ]; then + warning "can't find ${debconfgetselections}, skilling package selection states." + else + debug "$debconfgetselections > $selectionsfile" + $debconfgetselections > $selectionsfile || fatal "can not save $debconfgetselections info to $selectionsfile" + fi fi ## System report ############################## -- cgit v1.2.3