433ce09ff7245268ca262a91bdda9c8938445efc
[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 # Copyright 2001-2019 Steve McIntyre <steve@einval.com>
11 # GPL-2+
12
13 unset LANGUAGE
14 unset LANG
15 unset LC_ALL
16
17 TMPFILE=/etc/apt/update.tmp
18
19 . /etc/apt/update.conf
20
21 for CHROOT in $CHROOTS
22 do
23   if [ $CHROOT = / ] ; then
24       CHR=""
25   else
26       CHR="chroot $CHROOT"
27   fi
28   $CHR apt-get update > $TMPFILE 2>&1
29   error=$?
30   if [ $error -ne 0 ] ; then
31       echo $CHR update failed with error $error
32       echo
33   fi
34   # And also check for warnings:
35   grep -q ^W $TMPFILE
36   if [ $? -eq 0 ] ; then
37       echo "$CHR update gave the following warnings:"
38       grep ^W $TMPFILE
39   fi
40   rm -f $TMPFILE
41
42   THIS_LIST=`$CHR apt-get -s -u dist-upgrade | awk '/^Inst/ {print $2}'`
43   if [ "$THIS_LIST"x != ""x ] ; then
44       UPDATE_LIST="$UPDATE_LIST\n$CHROOT:\n"
45       for PKG in $THIS_LIST
46       do
47           UPDATE_LIST="$UPDATE_LIST $PKG\n"
48       done
49       CHROOT_UPDATED="$CHROOT_UPDATED $CHROOT"
50   fi
51 done
52
53 if [ "$UPDATE_LIST"x != ""x ] ; then
54     # If we've been configured to download packages, grab them now
55     # before we finish
56     if [ "$DOWNLOAD_DEBS"x = "yes"x ] ; then
57         for CHROOT in $CHROOT_UPDATED
58             do
59             if [ $CHROOT = / ] ; then
60                 CHR=""
61             else
62                 CHR="chroot $CHROOT"
63             fi
64             $CHR apt-get -d -y dist-upgrade > /dev/null
65             error=$?
66             if [ $error -ne 0 ] ; then
67                 echo $CHR package download failed with error $error
68             fi
69         done
70         UPDATE_LIST="$UPDATE_LIST\n\nPackage(s) downloaded and ready to install\n"
71     fi
72
73     printf "$UPDATE_LIST\n"
74 fi
75