Import Debian version 0.6
[apt-update.git] / apt-update
1 #!/bin/sh
2 #
3 # apt-update
4 #
5 # Simple wrapper script for cron to use - check for updated packages
6 # and mail admin with any recommended upgrades.
7
8 # Assumes that apt is configured correctly before we start...
9 #
10 # Steve McIntyre 26/09/2001
11
12 unset LANGUAGE
13 unset LANG
14 unset LC_ALL
15
16 TMPFILE=/etc/apt/update.tmp
17
18 . /etc/apt/update.conf
19
20 if [ "$MAILTO"x = ""x ] ; then
21     MAILTO=postmaster
22 fi
23
24 for CHROOT in $CHROOTS
25 do
26   if [ $CHROOT = / ] ; then
27       CHR=""
28   else
29       CHR="chroot $CHROOT"
30   fi
31   $CHR apt-get update > $TMPFILE 2>&1
32   error=$?
33   if [ $error -ne 0 ] ; then
34       echo $CHR update failed with error $error
35       echo
36   fi
37   # And also check for warnings:
38   grep -q ^W $TMPFILE
39   if [ $? -eq 0 ] ; then
40       echo "$CHR update gave the following warnings:"
41       grep ^W $TMPFILE
42   fi
43   rm -f $TMPFILE
44
45   THIS_LIST=`$CHR apt-get -s -u upgrade | awk '/^Inst/ {print $2}'`
46   if [ "$THIS_LIST"x != ""x ] ; then
47       UPDATE_LIST="$UPDATE_LIST\n$CHROOT:\n"
48       for PKG in $THIS_LIST
49       do
50           UPDATE_LIST="$UPDATE_LIST $PKG\n"
51       done
52       CHROOT_UPDATED="$CHROOT_UPDATED $CHROOT"
53   fi
54 done
55
56 if [ "$UPDATE_LIST"x != ""x ] ; then
57     HOST=`uname -n`
58
59     # If we've been configured to download packages, grab them now
60     # before we send mail
61     if [ "$DOWNLOAD_DEBS"x = "yes"x ] ; then
62         for CHROOT in $CHROOT_UPDATED
63             do
64             if [ $CHROOT = / ] ; then
65                 CHR=""
66             else
67                 CHR="chroot $CHROOT"
68             fi
69             $CHR apt-get -d -y dist-upgrade > /dev/null
70             error=$?
71             if [ $error -ne 0 ] ; then
72                 echo $CHR package download failed with error $error
73             fi
74         done
75         UPDATE_LIST="$UPDATE_LIST\n\nPackage(s) downloaded and ready to install\n"
76     fi
77
78     # Now send mail to the local admin
79     UPDATE_LIST="On $HOST the following packages need upgrading:\n$UPDATE_LIST"
80     echo -e $UPDATE_LIST | mail -s "$HOST needs software updates" $MAILTO
81 fi
82