]> git.saurik.com Git - apt.git/commitdiff
merged from the debian-sid branch
authorMichael Vogt <michael.vogt@ubuntu.com>
Wed, 28 May 2008 12:05:04 +0000 (14:05 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Wed, 28 May 2008 12:05:04 +0000 (14:05 +0200)
1  2 
debian/apt.cron.daily
debian/changelog

index acecd29ac4d3a39612a786b57664f32034e57fbe,a87fca79b2ff70c55b3492428475e27f3e809bd5..cdb970521ec978cd4f041a0038561525ebaa26bd
@@@ -185,185 -199,41 +185,185 @@@ if [ -z "$CacheArchive" ]; the
      exit 0
  fi
  
 -# sleep random amount of time
 -random_sleep
 +BackupArchiveInterval=0
 +eval $(apt-config shell BackupArchiveInterval APT::Periodic::BackupArchiveInterval)
  
 -# check again if we can access the cache
 -if ! apt-get check -q -q 2>/dev/null; then
 -    exit 1
 +BackupLevel=3
 +eval $(apt-config shell BackupLevel APT::Periodic::BackupLevel)
 +if [ $BackupLevel -le 1 ]; then BackupLevel=2 ; fi
 +
 +CacheBackup="backup/"
 +eval $(apt-config shell CacheBackup Dir::Cache::Backup)
 +CacheBackup=${CacheBackup%/}
 +if [ -z "$CacheBackup" ]; then
 +    echo "practically empty Dir::Cache::Backup, exiting" 1>&2
 +    exit 0
  fi
  
 -UPDATE_STAMP=/var/lib/apt/periodic/update-stamp
 -if check_stamp $UPDATE_STAMP $UpdateInterval; then
 -    if apt-get -qq update 2>/dev/null; then
 -        if pidof dbus-daemon >/dev/null; then
 -            dbus-send --system / app.apt.dbus.updated boolean:true
 -        fi
 -        update_stamp $UPDATE_STAMP
 +# Support old Archive for compatibility.
 +# Document only Periodic for all controling parameters of this script.
 +MaxAge=0
 +eval $(apt-config shell MaxAge APT::Archives::MaxAge)
 +eval $(apt-config shell MaxAge APT::Periodic::MaxAge)
 +
 +MinAge=2
 +eval $(apt-config shell MinAge APT::Archives::MinAge)
 +eval $(apt-config shell MinAge APT::Periodic::MinAge)
 +
 +MaxSize=0
 +eval $(apt-config shell MaxSize APT::Archives::MaxSize)
 +eval $(apt-config shell MaxSize APT::Periodic::MaxSize)
 +
 +UpdateInterval=0
 +eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists)
 +
 +DownloadUpgradeableInterval=0
 +eval $(apt-config shell DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
 +
 +UnattendedUpgradeInterval=0
 +eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
 +
 +AutocleanInterval=0
 +eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval)
 +
 +Cache="${Dir}/${CacheDir}/${CacheArchive}/"
 +Back="${Dir}/${CacheDir}/${CacheBackup}/"
 +BackX="${Back}${CacheArchive}/"
 +for x in $(seq 0 1 $((${BackupLevel}-1))); do 
 +    eval "Back${x}=${Back}${x}/"
 +done
 +
 +# backup after n-days if archive contents changed.
 +# (This uses hardlink to save disk space)
 +BACKUP_ARCHIVE_STAMP=/var/lib/apt/periodic/backup-archive-stamp
 +if check_stamp $BACKUP_ARCHIVE_STAMP $BackupArchiveInterval; then
 +    if [ $({(cd $Cache 2>/dev/null; find . -name "*.deb"); (cd $Back0 2>/dev/null;find . -name "*.deb") ;}| sort|uniq -u|wc -l) -ne 0 ]; then
 +      mkdir -p $Back
 +      rm -rf $Back$((${BackupLevel}-1))
 +      for y in $(seq $((${BackupLevel}-1)) -1 1); do 
 +          eval BackY=${Back}$y
 +          eval BackZ=${Back}$(($y-1))
 +          if [ -e $BackZ ]; then mv -f $BackZ $BackY ; fi
 +      done
 +      cp -la $Cache $Back ; mv -f $BackX $Back0
 +      update_stamp $BACKUP_ARCHIVE_STAMP
 +      debug_echo "backup with hardlinks. (success)"
 +    else
 +
 +      debug_echo "skip backup since same content."
      fi
 +else
 +      debug_echo "skip backup since too new."
  fi
  
 -DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp
 -if check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then
 -    apt-get -qq -d dist-upgrade 2>/dev/null
 -    update_stamp $DOWNLOAD_UPGRADEABLE_STAMP
 +# package archive contnts removal by package age
 +if [ $MaxAge -ne 0 ] && [ $MinAge -ne 0 ]; then
 +    find $Cache -name "*.deb"  \( -mtime +$MaxAge -and -ctime +$MaxAge \) -and -not \( -mtime -$MinAge -or -ctime -$MinAge \) -print0 | xargs -r -0 rm -f
 +    debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge and ctime>$MinAge and mtime>$MinAge"
 +elif [ $MaxAge -ne 0 ]; then
 +    find $Cache -name "*.deb"  -ctime +$MaxAge -and -mtime +$MaxAge -print0 | xargs -r -0 rm -f
 +    debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge only"
 +else
 +    debug_echo "skip aging since MaxAge is 0"
  fi
 +    
 +# package archive contnts removal down to $MaxSize
 +if [ $MaxSize -ne 0 ]; then
 +
 +    MinAgeSec=$(($MinAge*24*60*60))
 +
 +    # reverse-sort by mtime
 +    for file in $(ls -rt $Cache/*.deb 2>/dev/null); do 
 +      du=$(du -m -s $Cache)
 +      size=${du%%/*}
 +      # check if the cache is small enough
 +      if [ $size -lt $MaxSize ]; then
 +          debug_echo "end remove by archive size:  size=$size < $MaxSize"
 +          break
 +      fi
 +
 +      # check for MinAge in second of the file
 +      if [ $MinAgeSec -ne 0 ]; then 
 +          # check both ctime and mtime 
 +          mtime=$(stat -c %Y $file)
 +          ctime=$(stat -c %Z $file)
 +          if [ $mtime -gt $ctime ]; then
 +              delta=$(($now-$mtime))
 +          else
 +              delta=$(($now-$ctime))
 +          fi
 +          if [ $delta -le $MinAgeSec ]; then
 +              debug_echo "skip remove by archive size:  $file, delta=$delta < $MinAgeSec"
 +          else
 +              # delete oldest file
 +              debug_echo "remove by archive size: $file, delta=$delta >= $MinAgeSec (sec), size=$size >= $MaxSize"
 +              rm -f $file
 +          fi
 +      fi
  
 -UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp
 -if check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then
 -    unattended-upgrade
 -    update_stamp $UPGRADE_STAMP
 +    done
  fi
  
-       if which dbus-send >/dev/null; then
 +# update package lists
 +UPDATE_STAMP=/var/lib/apt/periodic/update-stamp
 +if check_stamp $UPDATE_STAMP $UpdateInterval; then
 +    if eval apt-get $XAPTOPT -y update $XSTDERR; then
 +      debug_echo "download updated metadata (success)."
++      if which dbus-send >/dev/null && pidof dbus-daemon >/dev/null; then
 +          if dbus-send --system / app.apt.dbus.updated boolean:true ; then
 +              debug_echo "send dbus signal (success)"
 +          else
 +              debug_echo "send dbus signal (error)"
 +          fi
 +      else
 +          debug_echo "dbus signal not send (command not available)"
 +      fi
 +      update_stamp $UPDATE_STAMP
 +      # download all upgradeable packages if it is requested
 +      DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp
 +      if check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then
 +          if eval apt-get $XAPTOPT -y -d dist-upgrade $XSTDERR; then
 +              update_stamp $DOWNLOAD_UPGRADEABLE_STAMP
 +              debug_echo "download upgradable (success)."
 +              # auto upgrade all upgradeable packages
 +              UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp
 +              if which unattended-upgrade >/dev/null && check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then
 +                  if unattended-upgrade $XUUPOPT; then
 +                      update_stamp $UPGRADE_STAMP
 +                      debug_echo "unattended-upgrade (success)."
 +                  else
 +                      debug_echo "unattended-upgrade (error)."
 +                  fi
 +              else
 +                  debug_echo "unattended-upgrade (not run)."
 +              fi
 +          else
 +              debug_echo "download upgradable (error)."
 +          fi
 +      else
 +          debug_echo "download upgradable (not run)."
 +      fi
 +    else
 +      debug_echo "download updated metadata (error)."
 +    fi
 +else
 +    debug_echo "download updated metadata (not run)."
 +fi
 +
 +# autoclean package archive
  AUTOCLEAN_STAMP=/var/lib/apt/periodic/autoclean-stamp
  if check_stamp $AUTOCLEAN_STAMP $AutocleanInterval; then
 -    apt-get -qq autoclean
 -    update_stamp $AUTOCLEAN_STAMP
 +    if apt-get $XAPTOPT -y autoclean $XSTDERR; then
 +      debug_echo "autoclean (success)."
 +      update_stamp $AUTOCLEAN_STAMP
 +    else
 +      debug_echo "autoclean (error)."
 +    fi
 +else
 +    debug_echo "autoclean (not run)."
  fi
  
 -# check cache size 
 -check_size_constraints
 +#
 +#     vim: set sts=4 ai :
 +#
 +
Simple merge