add the ability to save the debconf package selection states in the sys handler,...
authorMicah Anderson <micah@riseup.net>
Tue, 24 Jun 2008 18:57:39 +0000 (18:57 +0000)
committerMicah Anderson <micah@riseup.net>
Tue, 24 Jun 2008 18:57:39 +0000 (18:57 +0000)
ChangeLog
examples/example.sys
handlers/sys.helper.in
handlers/sys.in

index 80db11c51e1c4edaa1b52d53bbb465866e698013..b56cab9a0903ca5fe5b5193e7b56713b44ae5fe1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index 2a6bf0f303cd5b836b5c5d7ad72b62499d5a9032..af28fd613ee2ff7404e77b24bb9765d090e5222f 100644 (file)
@@ -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
index e39e5267a7fc12ad40f1927ec5e818ae710a6dfe..d3d99a5271bdb1a34d05e562ccf95677593af1ab 100644 (file)
@@ -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
 
index 455234d8bf76c0b4139eade6bad6af1ff9abaf15..2c48883ce11576639a7ae7231249b59ccd840c6f 100755 (executable)
@@ -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 ##############################