|
@@ -2,6 +2,33 @@
|
|
|
#
|
|
#
|
|
|
|
|
|
|
|
#set -e
|
|
#set -e
|
|
|
|
|
+#
|
|
|
|
|
+# This file understands the following apt configuration variables:
|
|
|
|
|
+#
|
|
|
|
|
+# "APT::Periodic::Update-Package-Lists=1"
|
|
|
|
|
+# - Do "apt-get update" automatically every n-days (0=disable)
|
|
|
|
|
+#
|
|
|
|
|
+# "APT::Periodic::Download-Upgradeable-Packages=0",
|
|
|
|
|
+# - Do "apt-get upgrade --download-only" every n-days (0=disable)
|
|
|
|
|
+#
|
|
|
|
|
+# "APT::Periodic::AutocleanInterval"
|
|
|
|
|
+# - Do "apt-get autoclean" every n-days (0=disable)
|
|
|
|
|
+#
|
|
|
|
|
+# "APT::Archives::MaxAge",
|
|
|
|
|
+# - Set maximum allowed age of a cache package file. If a cache
|
|
|
|
|
+# package file is older it is deleted (0=disable)
|
|
|
|
|
+#
|
|
|
|
|
+# "APT::Archives::MaxSize",
|
|
|
|
|
+# - Set maximum size of the cache in MB (0=disable). If the cache
|
|
|
|
|
+# is bigger, cached package files are deleted until the size
|
|
|
|
|
+# requirement is met (the biggest packages will be deleted
|
|
|
|
|
+# first).
|
|
|
|
|
+#
|
|
|
|
|
+# "APT::Archives::MinAge"
|
|
|
|
|
+# - Set minimum age of a package file. If a file is younger it
|
|
|
|
|
+# will not be deleted (0=disable). Usefull to prevent races
|
|
|
|
|
+# and to keep backups of the packages for emergency.
|
|
|
|
|
+#
|
|
|
|
|
|
|
|
check_stamp()
|
|
check_stamp()
|
|
|
{
|
|
{
|
|
@@ -21,6 +48,11 @@ check_stamp()
|
|
|
now=$(date --date=$(date --iso-8601) +%s)
|
|
now=$(date --date=$(date --iso-8601) +%s)
|
|
|
delta=$(($now-$stamp))
|
|
delta=$(($now-$stamp))
|
|
|
|
|
|
|
|
|
|
+ # intervall is in days,
|
|
|
|
|
+ interval=$(($interval*60*60*24))
|
|
|
|
|
+ #echo "stampfile: $1"
|
|
|
|
|
+ #echo "interval=$interval, now=$now, stamp=$stamp, delta=$delta"
|
|
|
|
|
+
|
|
|
if [ $delta -ge $interval ]; then
|
|
if [ $delta -ge $interval ]; then
|
|
|
return 0
|
|
return 0
|
|
|
fi
|
|
fi
|
|
@@ -80,6 +112,75 @@ check_size_constraints()
|
|
|
|
|
|
|
|
check_size_constraints
|
|
check_size_constraints
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+# we check here if autoclean was enough sizewise
|
|
|
|
|
+check_size_constraints()
|
|
|
|
|
+{
|
|
|
|
|
+ # min-age in days
|
|
|
|
|
+ MaxAge=0
|
|
|
|
|
+ MinAge=1
|
|
|
|
|
+ MaxSize=0
|
|
|
|
|
+ CacheDir="var/cache/apt"
|
|
|
|
|
+ CacheArchive="archives/"
|
|
|
|
|
+ eval $(apt-config shell MaxAge APT::Archives::MaxAge)
|
|
|
|
|
+ eval $(apt-config shell MinAge APT::Archives::MinAge)
|
|
|
|
|
+ eval $(apt-config shell MaxSize APT::Archives::MaxSize)
|
|
|
|
|
+ eval $(apt-config shell Dir Dir)
|
|
|
|
|
+ eval $(apt-config shell CacheDir Dir::Cache)
|
|
|
|
|
+ eval $(apt-config shell CacheArchive Dir::Cache::archives)
|
|
|
|
|
+
|
|
|
|
|
+ # sanity check
|
|
|
|
|
+ if [ -z "$CacheDir" -o -z "$CacheArchive" ]; then
|
|
|
|
|
+ echo "empty Dir::Cache or Dir::Cache::archives, exiting"
|
|
|
|
|
+ exit
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ Cache="${Dir%/}/${CacheDir%/}/${CacheArchive%/}/"
|
|
|
|
|
+
|
|
|
|
|
+ # check age
|
|
|
|
|
+ if [ ! $MaxAge -eq 0 ] && [ ! $MinAge -eq 0 ]; then
|
|
|
|
|
+ find $Cache -name "*.deb" -mtime +$MaxAge -and -not -mtime -$MinAge -print0 | xargs -r -0 rm -f
|
|
|
|
|
+ elif [ ! $MaxAge -eq 0 ]; then
|
|
|
|
|
+ find $Cache -name "*.deb" -mtime +$MaxAge -print0 | xargs -r -0 rm -f
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ # check size
|
|
|
|
|
+ if [ ! $MaxSize -eq 0 ]; then
|
|
|
|
|
+ # maxSize is in MB
|
|
|
|
|
+ MaxSize=$(($MaxSize*1024))
|
|
|
|
|
+
|
|
|
|
|
+ #get current time
|
|
|
|
|
+ now=$(date --date=$(date --iso-8601) +%s)
|
|
|
|
|
+ MinAge=$(($MinAge*24*60*60))
|
|
|
|
|
+
|
|
|
|
|
+ # reverse-sort by mtime
|
|
|
|
|
+ for file in $(ls -rt $Cache/*.deb); do
|
|
|
|
|
+ du=$(du -s $Cache)
|
|
|
|
|
+ size=${du%%/*}
|
|
|
|
|
+ # check if the cache is small enough
|
|
|
|
|
+ if [ $size -lt $MaxSize ]; then
|
|
|
|
|
+ break
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ # check for MinAge of the file
|
|
|
|
|
+ if [ ! $MinAge -eq 0 ]; then
|
|
|
|
|
+ mtime=$(date --date=$(date -r $file --iso-8601) +%s)
|
|
|
|
|
+ delta=$(($now-$mtime))
|
|
|
|
|
+ #echo "$file ($delta), $MinAge"
|
|
|
|
|
+ if [ $delta -le $MinAge ]; then
|
|
|
|
|
+ #echo "Skiping $file (delta=$delta)"
|
|
|
|
|
+ continue
|
|
|
|
|
+ fi
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ # delete oldest file
|
|
|
|
|
+ rm -f $file
|
|
|
|
|
+ done
|
|
|
|
|
+ fi
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
UpdateInterval=0
|
|
UpdateInterval=0
|
|
|
DownloadUpgradeableInterval=0
|
|
DownloadUpgradeableInterval=0
|
|
|
eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
|
|
eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
|
|
@@ -120,3 +221,6 @@ if check_stamp $AUTOCLEAN_STAMP $AutocleanInterval; then
|
|
|
check_size_contrains
|
|
check_size_contrains
|
|
|
update_stamp $AUTOCLEAN_STAMP
|
|
update_stamp $AUTOCLEAN_STAMP
|
|
|
fi
|
|
fi
|
|
|
|
|
+
|
|
|
|
|
+# check cache size
|
|
|
|
|
+check_size_constraints
|