upgrade_amavis () {
local conf
- # remove init script diversion
- if [ -L /etc/init.d/amavis -a -f /etc/init.d/amavis.amavisd-new ]; then
- rm -vf /etc/init.d/amavis
- dpkg-divert --quiet --remove /etc/init.d/amavis
+ # remove init script diversion before upgrade
+ if pkg amavisd-cn lt 3:2.4.2-4; then
+ if [ -L /etc/init.d/amavis -a -f /etc/init.d/amavis.amavisd-new ]; then
+ rm -vf /etc/init.d/amavis
+ dpkg-divert --remove /etc/init.d/amavis
+ fi
fi
# move old config aside
's/^\(clamd.*\)5.clamav.log$/\14\tsocket/g' \
/etc/init.d/amavisd-cn || true
+ # check if link got lost
+ if pkg amavisd-cn && [ ! -L /etc/init.d/amavis ]; then
+ apt-get install --reinstall --yes amavisd-cn
+ fi
+
# start new packages
/etc/init.d/amavis restart
}
available_disk_space=$(free_space /var/cache/apt/archives/)
archives_size=$(download_size dist-upgrade)
+ if [ $? -ne 0 ]; then
+ log "Failed to get download size, skipping check."
+ return 0
+ fi
+
log "Archives space: ${available_disk_space}MB"
log "Download size: ${archives_size}MB"
available_disk_space=$(free_space /)
kernel_size=$(installed_size kernel-2.6-cn)
+ if [ $? -ne 0 ]; then
+ log "Failed to get installed size, skipping check."
+ return 0
+ fi
+
log "Free space in /: ${available_disk_space}MB"
log "Kernel size: ${kernel_size}MB"
download_size() {
local size
size=$(LC_ALL=C apt-get --yes --print-uris "$@" \
- | sed -n '/^Need to get / {s///; s/B\/.*//; p}')
+ | grep '^Need to get ')
- size_to_mb $size
+ if [ $? -ne 0 ]; then
+ log "Failed to get download size for 'apt-get $@'."
+ return 1
+ fi
+
+ size=${size#Need to get }
+ size=${size%%B*}
+
+ size_to_mb "${size}B"
}
installed_size() {
local package size
package=$1
size=$(apt-cache show $package \
- | awk '$1 == "Installed-Size:" {print $2; exit}')
+ | grep '^Installed-Size:')
+
+ if [ $? -ne 0 ]; then
+ log "Failed to get installed size for '$package'."
+ return 1
+ fi
+
+ size=${size#*: }
- size_to_mb "${size}k"
+ size_to_mb "${size}kB"
}
size_to_mb() {
size=0;
fi
- if [ "${size%k}" != "$size" ]; then
- size=$(round ${size%k})
+ if [ "${size%kB}" != "$size" ]; then
+ size=$(round ${size%kB})
size=$(($size/1024+1))
- elif [ "${size%M}" != "$size" ]; then
- size=$(round ${size%M})
- elif [ "${size%G}" != "$size" ]; then
- size=$(round ${size%G})
+ elif [ "${size%MB}" != "$size" ]; then
+ size=$(round ${size%MB})
+ elif [ "${size%GB}" != "$size" ]; then
+ size=$(round ${size%GB})
size=$(($size*1024))
- elif [ "${size%[0-9]}" != "$size" ]; then
- size=$(round $size)
+ elif [ "${size%[0-9]B}" != "$size" ]; then
+ size=$(round ${size%B})
size=$(($size/1024/1024+1))
else
log "unrecognized size unit: $size"