1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
#!/bin/sh -e
# Copyright (C) 2002-2004 Masato Taruishi <taru@debian.org>
# Copyright (C) 2006 Junichi Uekawa <dancer@debian.org>
# Copyright (C) 2007 Jean Lepropre <jlepropre@gmail.com>
# Copyright (C) 2013-2024 Francesco Poli <invernomuto@paranoici.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License with
# the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL-2;
# if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
prefclean()
{
file="/etc/apt/preferences.d/apt-listbugs"
backup="/var/backups/apt-listbugs.preferences"
test -x /usr/libexec/apt-listbugs/aptcleanup || return 0
test -x /usr/bin/apt-listbugs || return 0
test -f "$file" || return 0
tmp=$(mktemp --tmpdir apt-listbugs_tmp_preferences.XXXXXX)
/usr/libexec/apt-listbugs/aptcleanup > "$tmp" || return 1
if ! diff -B "$tmp" "$file" > /dev/null
then
if test -f "$backup"
then
savelog -q "$backup"
fi
cp -aH "$file" "$backup"
cp "$tmp" "$file"
fi
/bin/rm -f "$tmp"
}
dailyprefclean()
{
# consider "days" as if they started at 07:00 a.m.
today=$(date +%Y%m%d -d 'now - 7 hours')
lastrunfile="/var/spool/apt-listbugs/lastprefclean"
lastrunday=$(cat $lastrunfile 2> /dev/null || true)
test "$today" -le "$lastrunday" 2> /dev/null && return 0
if prefclean
then
printf '%s\n' "$today" > $lastrunfile
fi
}
if test -d /run/systemd/system
then
if test -x /usr/sbin/sendmail
then
wantmail="true"
res=$(apt-config shell wantmail AptListbugs::TimerOutputMail/b)
eval $res
fi
if test "$wantmail" = "true"
then
myoutput=$(dailyprefclean 2>&1)
if test "$myoutput" != ""
then
myhost=$(hostname)
/usr/sbin/sendmail -t -odi << EOM
To: root
From: apt-listbugs timer <root@$myhost>
Subject: prefclean output on $myhost
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
${0}:
$myoutput
EOM
fi
else
dailyprefclean
fi
else
prefclean
fi
|