diff options
| author | Micah Anderson <micah@riseup.net> | 2008-06-24 18:57:39 +0000 | 
|---|---|---|
| committer | Micah Anderson <micah@riseup.net> | 2008-06-24 18:57:39 +0000 | 
| commit | 33ff4f7506fcaab09fd7ad898507f37b7777ba8f (patch) | |
| tree | 56b429f5b7dcfd2a1a7cccacacfd4dd46d7012ae | |
| parent | ca12e5617b1c7a600324e2c6437444627720c62c (diff) | |
| download | backupninja-33ff4f7506fcaab09fd7ad898507f37b7777ba8f.tar.gz backupninja-33ff4f7506fcaab09fd7ad898507f37b7777ba8f.tar.bz2  | |
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
| -rw-r--r-- | ChangeLog | 2 | ||||
| -rw-r--r-- | examples/example.sys | 18 | ||||
| -rw-r--r-- | handlers/sys.helper.in | 3 | ||||
| -rwxr-xr-x | handlers/sys.in | 43 | 
4 files changed, 49 insertions, 17 deletions
@@ -45,6 +45,8 @@ version 0.9.6 -- unreleased  	   (Closes: Trac#39)  	 . support selection of VServers to run on, in the same way as in the  	   dup handler, with the new vsnames configuration option ; (Closes: Trac#45) +	 . add support for capturing the package debconf selection states using +	   debconf-get-selections  version 0.9.5 -- December 2, 2007      backupninja changes diff --git a/examples/example.sys b/examples/example.sys index 2a6bf0f..af28fd6 100644 --- a/examples/example.sys +++ b/examples/example.sys @@ -2,20 +2,27 @@  # this config file will save various reports of vital system information.  # by default, all the reports are enabled and are saved in /var/backups.  # -# requires dpkg, sfdisk, and hwinfo +# requires dpkg, debconf-utils, sfdisk, and hwinfo  # -# (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.   #     detailed information on most important aspects of the hardware.  # @@ -25,6 +32,7 @@  # parentdir = /var/backups  # packages = yes  # packagesfile = /var/backups/dpkg-selections.txt +# selectionsfile = /var/backups/debconfsel.txt  # partitions = yes  # NOTE: the __star__ below will be replaced by the disks found on the 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 ##############################  | 
