9 |
9 |
10 unset LC_ALL |
10 unset LC_ALL |
11 export LANG=C |
11 export LANG=C |
12 export LC_CTYPE=en_US.UTF-8 |
12 export LC_CTYPE=en_US.UTF-8 |
13 |
13 |
14 APT_LOG="/var/log/apt/history.log" |
14 LOGBUCH_OPTS="" |
15 LINES_COUNT="/tmp/lines_count.dat" |
|
16 LOGBUCH_OPT="" |
|
17 |
15 |
18 if test -f /etc/default/ius.upgrade.conf; then |
16 if test -f /etc/default/ius.upgrade.conf; then |
19 . /etc/default/ius.upgrade.conf |
17 . /etc/default/ius.upgrade.conf |
20 fi |
18 fi |
21 |
19 |
|
20 TMPFILE1=$(tempfile) |
|
21 TMPFILE2=$(tempfile) |
|
22 trap "rm -f $TMPFILE1 $TMPFILE2" EXIT |
|
23 |
22 APT_CMD=$(ps -p $1 -o args=) |
24 APT_CMD=$(ps -p $1 -o args=) |
23 APT_TMP="/tmp/$$.tmp" |
|
24 APT_OUT="/tmp/$$.out" |
|
25 |
25 |
26 if [ $APT_LOG -nt $LINES_COUNT ]; then |
26 APT=`echo $APT_CMD | awk '{ print $1 }'` |
27 BEFOR=$(cat $LINES_COUNT) |
27 |
28 AFTER=$(wc -l < $APT_LOG) |
28 if [ "$APT" = "aptitude" ]; then |
29 LINES=$(($AFTER - $BEFOR - 1)) |
29 APT_OPTS="--assume-yes --quiet --verbose --show-versions" |
30 echo APT: $APT_CMD > $APT_OUT |
30 else |
31 tail -n $LINES $APT_LOG | sed -e '/^Start-Date:/d;/^Commandline:/d;/^End-Date:/d' >> $APT_TMP |
31 APT_OPTS="--yes" |
32 perl -ne 'chomp; ($action, $packages) = split " ", $_, 2; print map { "- $action $_\n" } $packages =~ /\S+\s\(.*?\)/g' $APT_TMP >> $APT_OUT |
|
33 logbuch $LOGBUCH_OPT --message=@$APT_OUT |
|
34 # cleanup |
|
35 rm -f $APT_TMP $LINES_COUNT $APT_OUT |
|
36 fi |
32 fi |
|
33 |
|
34 APT_ARGS=$(echo $APT_CMD | sed "s/$APT[[:space:]]\+//") |
|
35 |
|
36 # Simulation |
|
37 $APT --simulate $APT_OPTS $APT_ARGS > $TMPFILE1 2>&1 |
|
38 if tail -1 $TMPFILE1 | grep --quiet --ignore-case abort; then |
|
39 exit |
|
40 fi |
|
41 |
|
42 grep '^Inst\|Conf\|Remv\|Purg' $TMPFILE1 > $TMPFILE2 |
|
43 |
|
44 logbuch $LOGBUCH_OPTS --message=apt:"$APT_CMD"@$TMPFILE2 |