]> git.saurik.com Git - apt.git/commitdiff
* apt-pkg/acquire.cc:
authorMichael Vogt <michael.vogt@ubuntu.com>
Tue, 21 Jul 2009 14:05:52 +0000 (16:05 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Tue, 21 Jul 2009 14:05:52 +0000 (16:05 +0200)
  - make the max pipeline depth of the acquire queue configurable
    via Acquire::Max-Pipeline-Depth
* apt-pkg/deb/dpkgpm.cc:
  - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3
    (off by default)
  - send "dpkg-exec" message on the status fd when dpkg is run
  - provide DPkg::Chroot-Directory config option (useful for testing)
  - fix potential hang when in a backgroud process group
* apt-pkg/algorithms.cc:
  - consider recommends when making the scores for the problem
    resolver
* apt-pkg/acquire-worker.cc:
  - show error details of failed methods
* apt-pkg/contrib/fileutl.cc:
  - if a process aborts with signal, show signal number
* methods/http.cc:
  - ignore SIGPIPE, we deal with EPIPE from write in
    HttpMethod::ServerDie() (LP: #385144)
* apt-pkg/indexcopy.cc:
  - support having CDs with no Packages file (just a Packages.gz)
    by not forcing a verification on non-existing files
   (LP: #255545)
  - remove the gettext from a string that consists entirely
    of variables (LP: #56792)
* apt-pkg/cacheiterators.h:
  - add missing checks for Owner == 0 in end()
* apt-pkg/indexrecords.cc:
  - fix some i18n issues
* apt-pkg/contrib/strutl.h:
  - add new strprintf() function to make i18n strings easier
  - fix compiler warning
* apt-pkg/deb/debsystem.cc:
  - make strings i18n able
* fix problematic use of tolower() when calculating the version
  hash by using locale independant tolower_ascii() function.
  Thanks to M. Vefa Bicakci (LP: #80248)
* build fixes for g++-4.4
* cmdline/apt-mark:
  - add "showauto" option to show automatically installed packages
* document --install-recommends and --no-install-recommends
  (thanks to Dereck Wonnacott, LP: #126180)
* Updated cron script to support backups by hardlinks and
  verbose levels.  All features turned off by default.
* Added more error handlings.  Closes: #438803, #462734, #454989,
* Refactored condition structure to make download and upgrade performed
  if only previous steps succeeded. Closes: #341970
* Documented all cron script related configuration items in
  configure-index.
* apt-ftparchive might write corrupt Release files (LP: #46439)
* Apply --important option to apt-cache depends (LP: #16947)

14 files changed:
1  2 
apt-pkg/acquire.cc
apt-pkg/algorithms.cc
apt-pkg/cacheiterators.h
apt-pkg/contrib/strutl.cc
apt-pkg/contrib/strutl.h
apt-pkg/deb/deblistparser.cc
apt-pkg/deb/debsystem.cc
apt-pkg/pkgcache.cc
cmdline/apt-cache.cc
debian/apt.cron.daily
debian/changelog
doc/apt-get.8.xml
doc/examples/configure-index
po/apt-all.pot

Simple merge
index 2ad0643199fac6f034a3f554a9c97012a4d57791,b6f4705f33665e26ac367cb501c6af2ef03f8d24..1fd3d39a4dd9ad967decfaf2203fa2bf429bb878
@@@ -489,34 -489,6 +489,36 @@@ void pkgProblemResolver::MakeScores(
     unsigned long Size = Cache.Head().PackageCount;
     memset(Scores,0,sizeof(*Scores)*Size);
  
 +   // Important Required Standard Optional Extra
 +   signed short PrioMap[] = {
 +      0,
 +      _config->FindI("pkgProblemResolver::Scores::Important",3),
 +      _config->FindI("pkgProblemResolver::Scores::Required",2),
 +      _config->FindI("pkgProblemResolver::Scores::Standard",1),
 +      _config->FindI("pkgProblemResolver::Scores::Optional",-1),
 +      _config->FindI("pkgProblemResolver::Scores::Extra",-2)
 +   };
 +   signed short PrioEssentials = _config->FindI("pkgProblemResolver::Scores::Essentials",100);
 +   signed short PrioInstalledAndNotObsolete = _config->FindI("pkgProblemResolver::Scores::NotObsolete",1);
 +   signed short PrioDepends = _config->FindI("pkgProblemResolver::Scores::Depends",1);
++   signed short PrioRecommends = _config->FindI("pkgProblemResolver::Scores::Recommends",1);
 +   signed short AddProtected = _config->FindI("pkgProblemResolver::Scores::AddProtected",10000);
 +   signed short AddEssential = _config->FindI("pkgProblemResolver::Scores::AddEssential",5000);
 +
 +   if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true)
 +      clog << "Settings used to calculate pkgProblemResolver::Scores::" << endl
 +         << "  Important => " << PrioMap[1] << endl
 +         << "  Required => " << PrioMap[2] << endl
 +         << "  Standard => " << PrioMap[3] << endl
 +         << "  Optional => " << PrioMap[4] << endl
 +         << "  Extra => " << PrioMap[5] << endl
 +         << "  Essentials => " << PrioEssentials << endl
 +         << "  InstalledAndNotObsolete => " << PrioInstalledAndNotObsolete << endl
 +         << "  Depends => " << PrioDepends << endl
++         << "  Recommends => " << PrioRecommends << endl
 +         << "  AddProtected => " << AddProtected << endl
 +         << "  AddEssential => " << AddEssential << endl;
 +
     // Generate the base scores for a package based on its properties
     for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
     {
        
        for (pkgCache::DepIterator D = Cache[I].InstVerIter(Cache).DependsList(); D.end() == false; D++)
        {
-        if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
-           Scores[D.TargetPkg()->ID]+= PrioDepends;
+        if (D->Type == pkgCache::Dep::Depends || 
 -           D->Type == pkgCache::Dep::PreDepends || 
 -           D->Type == pkgCache::Dep::Recommends) 
 -          Scores[D.TargetPkg()->ID]++;
++           D->Type == pkgCache::Dep::PreDepends)
++          Scores[D.TargetPkg()->ID] += PrioDepends;
++       else if (D->Type == pkgCache::Dep::Recommends)
++          Scores[D.TargetPkg()->ID] += PrioRecommends;
        }
     }   
     
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index b40bb2c30613bc08f97c84417cef1b8d9397ed93,cdec7eea00315e0d5c3896448498c740a37396a3..7e4214775c8235075e19c910f5156642f2e0eb4d
@@@ -42,47 -69,26 +69,51 @@@ check_stamp(
      interval="$2"
  
      if [ $interval -eq 0 ]; then
 -      debug_echo "check_stamp: interval=0."
++      debug_echo "check_stamp: interval=0"
+       # treat as no time has passed
          return 1
      fi
  
      if [ ! -f $stamp ]; then
 -      debug_echo "check_stamp: missing time stamp file: $stamp."
+       update_stamp $stamp
++      debug_echo "check_stamp: missing time stamp file: $stamp"
+       # treat as enough time has passed
          return 0
      fi
  
      # compare midnight today to midnight the day the stamp was updated
 -    stamp=$(date -r $stamp '+%s')
 +    stamp_file="$stamp"
 +    stamp=$(date --date=$(date -r $stamp_file --iso-8601) +%s 2>/dev/null)
 +    if [ "$?" != "0" ]; then
 +        # Due to some timezones returning 'invalid date' for midnight on
 +        # certain dates (eg America/Sao_Paulo), if date returns with error
 +        # remove the stamp file and return 0. See coreutils bug:
 +        # http://lists.gnu.org/archive/html/bug-coreutils/2007-09/msg00176.html
 +        rm -f "$stamp_file"
 +        return 0
 +    fi
 +
 +    now=$(date --date=$(date --iso-8601) +%s 2>/dev/null)
 +    if [ "$?" != "0" ]; then
 +        # As above, due to some timezones returning 'invalid date' for midnight
 +        # on certain dates (eg America/Sao_Paulo), if date returns with error
 +        # return 0.
 +        return 0
 +    fi
 +
      delta=$(($now-$stamp))
  
-     # intervall is in days,
+     # intervall is in days, convert to sec.
      interval=$(($interval*60*60*24))
-     #echo "stampfile: $1"
-     #echo "interval=$interval, now=$now, stamp=$stamp, delta=$delta"
+     debug_echo "check_stamp: interval=$interval, now=$now, stamp=$stamp, delta=$delta (sec)"
  
 +    # remove timestamps a day (or more) in the future and force re-check
 +    if [ $stamp -gt $(($now+86400)) ]; then
 +         echo "WARNING: file $stamp_file has a timestamp in the future: $stamp"
 +         rm -f "$stamp_file"
 +         return 0
 +    fi
 +
      if [ $delta -ge $interval ]; then
          return 0
      fi
@@@ -188,17 -191,128 +216,130 @@@ random_sleep(
      sleep $TIME
  }
  
- # main
  
- if ! which apt-config >/dev/null; then
+ debug_echo()
+ {
+     # Display message if $VERBOSE >= 1
+     if [ "$VERBOSE" -ge 1 ]; then
+       echo $1 1>&2
+     fi
+ }
 -# main
++
++# ----------------- main ----------------
+ # check apt-config exstance
+ if ! which apt-config >/dev/null ; then
        exit 0
  fi
  
 -      debug_echo "exit: system on main power."
+ # Set VERBOSE mode from  apt-config (or inherit from environment)
+ eval $(apt-config shell VERBOSE APT::Periodic::Verbose)
+ if [ -z "$VERBOSE" ]; then
+     VERBOSE="0"
+ fi
+ if [ "$VERBOSE" -le 2 ]; then
+     # quiet for 0,1,2
+     XSTDOUT=">/dev/null"
+     XSTDERR="2>/dev/null"
+     XAPTOPT="-qq"
+     XUUPOPT=""
+ else
+     XSTDOUT=""
+     XSTDERR=""
+     XAPTOPT=""
+     XUUPOPT="-d"
+ fi
+ if [ "$VERBOSE" -ge 3 ]; then
+     # trace output
+     set -x
+ fi
+ # laptop check, on_ac_power returns:
+ #       0 (true)    System is on main power
+ #       1 (false)   System is not on main power
+ #       255 (false) Power status could not be determined
+ # Desktop systems always return 255 it seems
+ if which on_ac_power >/dev/null; then
+     on_ac_power
+     POWER=$?
+     if [ $POWER -eq 1 ]; then
 -      debug_echo "exit: power status ($POWER) undetermined."
 -      exit 0
++      debug_echo "exit: system NOT on main power."
+       exit 0
+     elif [ $POWER -ne 0 ]; then
 -if which apt-get >/dev/null && ! eval apt-get check $XAPTOPT $XSTDERR ; then
++      debug_echo "power status ($POWER) undetermined."
+     fi
+     debug_echo "system is on main power."
+ fi
+ # check if we can lock the cache and if the cache is clean
 -if [ $BackupLevel -le 1 ]; then BackupLevel=2 ; fi
++if which apt-get >/dev/null && ! apt-get check $XAPTOPT $XSTDERR ; then
+     debug_echo "error encountered in cron job with \"apt-get check\"."
+     exit 0
+ fi
+ # No need to check for apt-get below
+ # Global current time in seconds since 1970-01-01 00:00:00 UTC
+ now=$(date +%s)
+ # Set default values and normalize
+ Dir="/"
+ eval $(apt-config shell Dir Dir)
+ Dir=${Dir%/}
+ CacheDir="var/cache/apt/"
+ eval $(apt-config shell CacheDir Dir::Cache)
+ CacheDir=${CacheDir%/}
+ if [ -z "$CacheDir" ]; then
+     debug_echo "practically empty Dir::Cache, exiting"
+     exit 0
+ fi
+ CacheArchive="archives/"
+ eval $(apt-config shell CacheArchive Dir::Cache::Archives)
+ CacheArchive=${CacheArchive%/}
+ if [ -z "$CacheArchive" ]; then
+     debug_echo "practically empty Dir::Cache::archives, exiting"
+     exit 0
+ fi
+ BackupArchiveInterval=0
+ eval $(apt-config shell BackupArchiveInterval APT::Periodic::BackupArchiveInterval)
+ BackupLevel=3
+ eval $(apt-config shell BackupLevel APT::Periodic::BackupLevel)
 -    echo "practically empty Dir::Cache::Backup, exiting" 1>&2
 -    exit 0
++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 "empty Dir::Cache::Backup, using default" 1>&2
++    CacheBackup="backup/"
+ fi
+ # 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 UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
- AutocleanInterval=$DownloadUpgradeableInterval
- eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval)
+ eval $(apt-config shell DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
  UnattendedUpgradeInterval=0
  eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
  
@@@ -210,61 -335,138 +362,141 @@@ if [ $UpdateInterval -eq 0 ] &
      exit 0
  fi
  
- # laptop check, on_ac_power returns:
- #       0 (true)    System is on mains power
- #       1 (false)   System is not on mains power
- #       255 (false) Power status could not be determined
- # Desktop systems always return 255 it seems
- if which on_ac_power >/dev/null; then
-     on_ac_power
-     if [ $? -eq 1 ]; then
-       exit 0
-     fi
- fi
 +# sleep random amount of time to avoid hitting the 
 +# mirrors at the same time
 +random_sleep
  
- # check if we can access the cache
- if ! apt-get check -q -q 2>/dev/null; then
-     # wait random amount of time before retrying
-     random_sleep
-     # check again
-     if ! apt-get check -q -q 2>/dev/null; then
-       echo "$0: could not lock the APT cache while performing daily cron job. "
-       echo "Is another package manager working?"
-       exit 1
+ # 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
  
- 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 which dbus-send >/dev/null && pidof dbus-daemon >/dev/null; then
-             dbus-send --system / app.apt.dbus.updated boolean:true
-         fi
-         update_stamp $UPDATE_STAMP
-     fi
+ # 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
  
- 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
+     done
  fi
  
- UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp
- if check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then
-     unattended-upgrade
-     update_stamp $UPGRADE_STAMP
+ # 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 :
+ #
index 6ce3b7c7d92269928456091eb1fc1b326c7ac4bf,cf92311053627a3b102d51721a190bd15b927fd7..6e03bbbd43f1f8f0ff503eb3069f4283d52ad805
 -apt (0.7.21) UNRELEASED; urgency=low
 +apt (0.7.22) UNRELEASED; urgency=low
  
 -  [ Osamu Aoki ]
 -  * Updated cron script to support backups by hardlinks and 
 -    verbose levels.  All features turned off by default. 
 -  * Added more error handlings.  Closes: #438803, #462734, #454989, 
 -  * Refactored condition structure to make download and upgrade performed 
 -    if only previous steps succeeded. Closes: #341970
 -  * Documented all cron script related configuration items in 
 -    configure-index.
 +  [ Christian Perrier ]
 +  * Documentation translations:
 +    - Fix a typo in apt-get(8) French translation. Closes: #525043
 +      Thanks to Guillaume Delacour for spotting it.
 +    - Updated apt.conf(5) manpgae French translation.
 +      Thanks to Aurélien Couderc.
 +  * Translations:
 +    - fr.po
 +    - sk.po. Closes: #525857 
 +    - ru.po. Closes: #526816
 +    - eu.po. Closes: #528985
 +    - zh_CN.po. Closes: #531390
 +    - fr.po
 +    - it.po. Closes: #531758
 +    - ca.po. Closes: #531921
 +    - de.po. Closes: #536430
 +  * Added translations
 +    - ast.po (Asturian by Marcos Alvareez Costales).
 +      Closes: #529007, #529730, #535328
 +  
 +  [ David Kalnischkies ]
 +  * [ABI break] support '#' in apt.conf and /etc/apt/preferences
 +    (closes: #189866)
 +  * [ABI break] Allow pinning by codename (closes: #97564)
 +  * support running "--simulate" as user
 +  * add depth information to the debug output and show what depends
 +    type triggers a autoinst (closes: #458389)
 +  * add Debug::pkgDepCache::Marker with more detailed debug output 
 +    (closes: #87520)
 +  * add Debug::pkgProblemResolver::ShowScores and make the scores
 +    adjustable
 +  * do not write state file in simulate mode (closes: #433007)
 +  * add hook for auto-install (closes: #470035)
 +  * support IsAutoInstallOk in the resolver too
 +  * fix typo in apt-pkg/acquire.cc which prevents Dl-Limit to work
 +    correctly when downloading from multiple sites (Closes: #534752)
  
    [ Michael Vogt ]
 -  * apt-pkg/deb/dpkgpm.cc:
 -    - provide DPkg::Chroot-Directory config option (useful for testing)
 -
 - -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 28 May 2009 17:51:42 +0200
 -
 -  [ Michael Vogt ]
 +  * honor the dpkg hold state in AutoInstOk (closes: #64141)
 +  * debian/apt.cron.daily:
 +    - if the timestamp is too far in the future, delete it
+   * apt-pkg/acquire.cc:
+     - make the max pipeline depth of the acquire queue configurable
+       via Acquire::Max-Pipeline-Depth
+   * apt-pkg/deb/dpkgpm.cc:
+     - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3
+       (off by default)
+     - send "dpkg-exec" message on the status fd when dpkg is run
++    - provide DPkg::Chroot-Directory config option (useful for testing)
++    - fix potential hang when in a backgroud process group
+   * apt-pkg/algorithms.cc:
+     - consider recommends when making the scores for the problem 
+       resolver
+   * apt-pkg/acquire-worker.cc:
+     - show error details of failed methods
+   * apt-pkg/contrib/fileutl.cc:
+     - if a process aborts with signal, show signal number
+   * methods/http.cc:
+     - ignore SIGPIPE, we deal with EPIPE from write in 
+       HttpMethod::ServerDie() (LP: #385144)
 -  * doc/makefile:
 -    - add examples/apt-https-method-example.conf
+   * apt-pkg/indexcopy.cc:
+     - support having CDs with no Packages file (just a Packages.gz)
+       by not forcing a verification on non-existing files
+      (LP: #255545)
+     - remove the gettext from a string that consists entirely 
+       of variables (LP: #56792)
 -  * apt-pkg/deb/dpkgpm.cc:
 -    - fix potential hang when in a backgroud process group
+   * apt-pkg/cacheiterators.h:
+     - add missing checks for Owner == 0 in end()
 -  * methods/gpgv.cc:
+   * apt-pkg/indexrecords.cc:
+     - fix some i18n issues
+   * apt-pkg/contrib/strutl.h:
+     - add new strprintf() function to make i18n strings easier
 -  * cmdline/apt-get.cc:
 -    - fix "apt-get source pkg=ver" if binary name != source name
 -      and show a message (LP: #202219)
 -    - fix "apt-get source pkg" if there is a binary package and
 -      a source package of the same name but from different 
 -      packages (LP: #330103)
+     - fix compiler warning
 -  * apt-pkg/contrib/strutl.cc:
 -    - fix TimeToStr i18n (LP: #289807)
 -  * [ABI break] merge support for http redirects, thanks to
 -    Jeff Licquia and Anthony Towns
 -  * [ABI break] use int for the package IDs (thanks to Steve Cotton)
 -  * apt-pkg/pkgcache.cc:
 -    - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
 -      state (LP: #322955)
 -  * methods/https.cc:
 -    - add Acquire::https::AllowRedirect support
 -  * methods/gpgv.cc:
 -    - properly check for expired and revoked keys (closes: #433091)
+   * apt-pkg/deb/debsystem.cc:
+     - make strings i18n able 
 -  * Clarify the --help for 'purge' (LP: #243948)
+   * fix problematic use of tolower() when calculating the version 
+     hash by using locale independant tolower_ascii() function. 
+     Thanks to M. Vefa Bicakci (LP: #80248)
+   * build fixes for g++-4.4
+   * cmdline/apt-mark:
+     - add "showauto" option to show automatically installed packages
++  * document --install-recommends and --no-install-recommends
++    (thanks to Dereck Wonnacott, LP: #126180)
 +  
 +  [ Julian Andres Klode ]
 +  * apt-pkg/contrib/configuration.cc: Fix a small memory leak in
 +    ReadConfigFile.
 +  * Introduce support for the Enhances field. (Closes: #137583) 
 +  * Support /etc/apt/preferences.d, by adding ReadPinDir() (Closes: #535512)
 +  * configure-index: document Dir::Etc::SourceParts and some other options
 +    (Closes: #459605)
 +  * Remove Eugene V. Lyubimkin from uploaders as requested.
 +  * apt-pkg/contrib/hashes.cc, apt-pkg/contrib/md5.cc:
 +    - Support reading until EOF if Size=0 to match behaviour of
 +      SHA1Summation and SHA256Summation
 +
++  [ Osamu Aoki ]
++  * Updated cron script to support backups by hardlinks and 
++    verbose levels.  All features turned off by default. 
++  * Added more error handlings.  Closes: #438803, #462734, #454989, 
++  * Refactored condition structure to make download and upgrade performed 
++    if only previous steps succeeded. Closes: #341970
++  * Documented all cron script related configuration items in 
++    configure-index.
+   [ Dereck Wonnacott ]
+   * apt-ftparchive might write corrupt Release files (LP: #46439)
+   * Apply --important option to apt-cache depends (LP: #16947) 
++
 + -- Julian Andres Klode <jak@debian.org>  Fri, 03 Jul 2009 08:27:35 +0200
 +
 +apt (0.7.21) unstable; urgency=low
 +
 +  [ Christian Perrier ]
 +  * Translations:
 +    - bg.po. Closes: #513211
 +    - zh_TW.po. Closes: #513311
 +    - nb.po. Closes: #513843
 +    - fr.po. Closes: #520430
 +    - sv.po. Closes: #518070
 +    - sk.po. Closes: #520403
 +    - it.po. Closes: #522222
 +    - sk.po. Closes: #520403
 +  
 +  [ Jamie Strandboge ]
 +  * apt.cron.daily: catch invalid dates due to DST time changes
 +    in the stamp files
 +
 +  [ Michael Vogt ]
 +  * methods/gpgv.cc:
 +    - properly check for expired and revoked keys (closes: #433091)
 +  * apt-pkg/contrib/strutl.cc:
 +    - fix TimeToStr i18n (LP: #289807)
 +  * [ABI break] merge support for http redirects, thanks to
 +    Jeff Licquia and Anthony Towns
 +  * [ABI break] use int for the package IDs (thanks to Steve Cotton)
 +  * apt-pkg/pkgcache.cc:
 +    - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
 +      state (LP: #322955)
 +  * methods/https.cc:
 +    - add Acquire::https::AllowRedirect support
 +  * Clarify the --help for 'purge' (LP: #243948)
 +  * cmdline/apt-get.cc
 +    - fix "apt-get source pkg" if there is a binary package and
 +      a source package of the same name but from different 
 +      packages (LP: #330103)
 +
    [ Colin Watson ]
    * cmdline/acqprogress.cc:
      - Call pkgAcquireStatus::Pulse even if quiet, so that we still get
Simple merge
Simple merge
diff --cc po/apt-all.pot
index d1b705837e24218aa78e4a46ecdecd55652712ff,ae7cb479566ed705a8159d2649d79489fee18857..b8305c25ce7b85f8f446c25a96b26d77c9a69a16
@@@ -7,7 -7,7 +7,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PACKAGE VERSION\n"
  "Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2009-06-30 14:09+0200\n"
 -"POT-Creation-Date: 2008-05-22 16:56+0200\n"
++"POT-Creation-Date: 2009-07-21 15:49+0200\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
  "Language-Team: LANGUAGE <LL@li.org>\n"
  "Content-Type: text/plain; charset=CHARSET\n"
  "Content-Transfer-Encoding: 8bit\n"
  
--#: cmdline/apt-cache.cc:143
++#: cmdline/apt-cache.cc:141
  #, c-format
  msgid "Package %s version %s has an unmet dep:\n"
  msgstr ""
  
--#: cmdline/apt-cache.cc:183 cmdline/apt-cache.cc:552 cmdline/apt-cache.cc:640
--#: cmdline/apt-cache.cc:796 cmdline/apt-cache.cc:1018
--#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
++#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:644
++#: cmdline/apt-cache.cc:800 cmdline/apt-cache.cc:1022
++#: cmdline/apt-cache.cc:1423 cmdline/apt-cache.cc:1575
  #, c-format
  msgid "Unable to locate package %s"
  msgstr ""
  
--#: cmdline/apt-cache.cc:247
++#: cmdline/apt-cache.cc:245
  msgid "Total package names: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:287
++#: cmdline/apt-cache.cc:285
  msgid "  Normal packages: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:288
++#: cmdline/apt-cache.cc:286
  msgid "  Pure virtual packages: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:289
++#: cmdline/apt-cache.cc:287
  msgid "  Single virtual packages: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:290
++#: cmdline/apt-cache.cc:288
  msgid "  Mixed virtual packages: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:291
++#: cmdline/apt-cache.cc:289
  msgid "  Missing: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:293
++#: cmdline/apt-cache.cc:291
  msgid "Total distinct versions: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:295
++#: cmdline/apt-cache.cc:293
  msgid "Total distinct descriptions: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:297
++#: cmdline/apt-cache.cc:295
  msgid "Total dependencies: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:300
++#: cmdline/apt-cache.cc:298
  msgid "Total ver/file relations: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:302
++#: cmdline/apt-cache.cc:300
  msgid "Total Desc/File relations: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:304
++#: cmdline/apt-cache.cc:302
  msgid "Total Provides mappings: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:316
++#: cmdline/apt-cache.cc:314
  msgid "Total globbed strings: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:330
++#: cmdline/apt-cache.cc:328
  msgid "Total dependency version space: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:335
++#: cmdline/apt-cache.cc:333
  msgid "Total slack space: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:343
++#: cmdline/apt-cache.cc:341
  msgid "Total space accounted for: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:471 cmdline/apt-cache.cc:1218
++#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1222
  #, c-format
  msgid "Package file %s is out of sync."
  msgstr ""
  
--#: cmdline/apt-cache.cc:1293
++#: cmdline/apt-cache.cc:1297
  msgid "You must give exactly one pattern"
  msgstr ""
  
--#: cmdline/apt-cache.cc:1447
++#: cmdline/apt-cache.cc:1451
  msgid "No packages found"
  msgstr ""
  
--#: cmdline/apt-cache.cc:1524
++#: cmdline/apt-cache.cc:1528
  msgid "Package files:"
  msgstr ""
  
--#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
++#: cmdline/apt-cache.cc:1535 cmdline/apt-cache.cc:1622
  msgid "Cache is out of sync, can't x-ref a package file"
  msgstr ""
  
--#: cmdline/apt-cache.cc:1532
--#, c-format
--msgid "%4i %s\n"
--msgstr ""
--
  #. Show any packages have explicit pins
--#: cmdline/apt-cache.cc:1544
++#: cmdline/apt-cache.cc:1549
  msgid "Pinned packages:"
  msgstr ""
  
--#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
++#: cmdline/apt-cache.cc:1561 cmdline/apt-cache.cc:1602
  msgid "(not found)"
  msgstr ""
  
  #. Installed version
--#: cmdline/apt-cache.cc:1577
++#: cmdline/apt-cache.cc:1582
  msgid "  Installed: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
++#: cmdline/apt-cache.cc:1584 cmdline/apt-cache.cc:1592
  msgid "(none)"
  msgstr ""
  
  #. Candidate Version
--#: cmdline/apt-cache.cc:1584
++#: cmdline/apt-cache.cc:1589
  msgid "  Candidate: "
  msgstr ""
  
--#: cmdline/apt-cache.cc:1594
++#: cmdline/apt-cache.cc:1599
  msgid "  Package pin: "
  msgstr ""
  
  #. Show the priority tables
--#: cmdline/apt-cache.cc:1603
++#: cmdline/apt-cache.cc:1608
  msgid "  Version table:"
  msgstr ""
  
--#: cmdline/apt-cache.cc:1618
++#: cmdline/apt-cache.cc:1623
  #, c-format
  msgid "       %4i %s\n"
  msgstr ""
  
--#: cmdline/apt-cache.cc:1714 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
++#: cmdline/apt-cache.cc:1719 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
  #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
 -#: cmdline/apt-get.cc:2571 cmdline/apt-sortpkgs.cc:144
 +#: cmdline/apt-get.cc:2586 cmdline/apt-sortpkgs.cc:144
  #, c-format
  msgid "%s %s for %s compiled on %s %s\n"
  msgstr ""
  
--#: cmdline/apt-cache.cc:1721
++#: cmdline/apt-cache.cc:1726
  msgid ""
  "Usage: apt-cache [options] command\n"
  "       apt-cache [options] add file1 [file2 ...]\n"
@@@ -780,7 -780,7 +775,7 @@@ msgstr "
  msgid "Do you want to continue [Y/n]? "
  msgstr ""
  
- #: cmdline/apt-get.cc:987 cmdline/apt-get.cc:2227 apt-pkg/algorithms.cc:1400
 -#: cmdline/apt-get.cc:984 cmdline/apt-get.cc:2214 apt-pkg/algorithms.cc:1344
++#: cmdline/apt-get.cc:987 cmdline/apt-get.cc:2227 apt-pkg/algorithms.cc:1407
  #, c-format
  msgid "Failed to fetch %s  %s\n"
  msgstr ""
@@@ -1386,9 -1370,9 +1381,9 @@@ msgstr "
  msgid "File %s/%s overwrites the one in the package %s"
  msgstr ""
  
 -#: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:821
 +#: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:822
  #: apt-pkg/contrib/cdromutl.cc:150 apt-pkg/sourcelist.cc:320
--#: apt-pkg/acquire.cc:418 apt-pkg/clean.cc:34
++#: apt-pkg/acquire.cc:419 apt-pkg/clean.cc:34 apt-pkg/policy.cc:268
  #, c-format
  msgid "Unable to read %s"
  msgstr ""
@@@ -1613,7 -1597,7 +1608,7 @@@ msgstr "
  msgid "Server closed the connection"
  msgstr ""
  
- #: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:538 methods/rsh.cc:190
 -#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:536 methods/rsh.cc:190
++#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:541 methods/rsh.cc:190
  msgid "Read error"
  msgstr ""
  
@@@ -1625,7 -1609,7 +1620,7 @@@ msgstr "
  msgid "Protocol corruption"
  msgstr ""
  
- #: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:577 methods/rsh.cc:232
 -#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:575 methods/rsh.cc:232
++#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:580 methods/rsh.cc:232
  msgid "Write error"
  msgstr ""
  
@@@ -2043,8 -1992,7 +2038,8 @@@ msgstr "
  msgid "Unable to stat the mount point %s"
  msgstr ""
  
 -#: apt-pkg/contrib/cdromutl.cc:146 apt-pkg/acquire.cc:424 apt-pkg/clean.cc:40
 +#: apt-pkg/contrib/cdromutl.cc:146 apt-pkg/contrib/cdromutl.cc:180
- #: apt-pkg/acquire.cc:424 apt-pkg/acquire.cc:449 apt-pkg/clean.cc:40
++#: apt-pkg/acquire.cc:425 apt-pkg/acquire.cc:450 apt-pkg/clean.cc:40
  #, c-format
  msgid "Unable to change to %s"
  msgstr ""
@@@ -2078,45 -2026,45 +2073,50 @@@ msgstr "
  msgid "Waited for %s but it wasn't there"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:454
 -#: apt-pkg/contrib/fileutl.cc:452
++#: apt-pkg/contrib/fileutl.cc:455
  #, c-format
  msgid "Sub-process %s received a segmentation fault."
  msgstr ""
  
 -#: apt-pkg/contrib/fileutl.cc:455
 +#: apt-pkg/contrib/fileutl.cc:457
 +#, c-format
++msgid "Sub-process %s received signal %u."
++msgstr ""
++
++#: apt-pkg/contrib/fileutl.cc:460
+ #, c-format
  msgid "Sub-process %s returned an error code (%u)"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:459
 -#: apt-pkg/contrib/fileutl.cc:457
++#: apt-pkg/contrib/fileutl.cc:462
  #, c-format
  msgid "Sub-process %s exited unexpectedly"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:503
 -#: apt-pkg/contrib/fileutl.cc:501
++#: apt-pkg/contrib/fileutl.cc:506
  #, c-format
  msgid "Could not open file %s"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:559
 -#: apt-pkg/contrib/fileutl.cc:557
++#: apt-pkg/contrib/fileutl.cc:562
  #, c-format
  msgid "read, still have %lu to read but none left"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:589
 -#: apt-pkg/contrib/fileutl.cc:587
++#: apt-pkg/contrib/fileutl.cc:592
  #, c-format
  msgid "write, still have %lu to write but couldn't"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:664
 -#: apt-pkg/contrib/fileutl.cc:662
++#: apt-pkg/contrib/fileutl.cc:667
  msgid "Problem closing the file"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:670
 -#: apt-pkg/contrib/fileutl.cc:668
++#: apt-pkg/contrib/fileutl.cc:673
  msgid "Problem unlinking the file"
  msgstr ""
  
- #: apt-pkg/contrib/fileutl.cc:681
 -#: apt-pkg/contrib/fileutl.cc:679
++#: apt-pkg/contrib/fileutl.cc:684
  msgid "Problem syncing the file"
  msgstr ""
  
@@@ -2302,40 -2246,40 +2302,40 @@@ msgid "
  "The package %s needs to be reinstalled, but I can't find an archive for it."
  msgstr ""
  
- #: apt-pkg/algorithms.cc:1147
 -#: apt-pkg/algorithms.cc:1106
++#: apt-pkg/algorithms.cc:1154
  msgid ""
  "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
  "held packages."
  msgstr ""
  
- #: apt-pkg/algorithms.cc:1149
 -#: apt-pkg/algorithms.cc:1108
++#: apt-pkg/algorithms.cc:1156
  msgid "Unable to correct problems, you have held broken packages."
  msgstr ""
  
- #: apt-pkg/algorithms.cc:1426 apt-pkg/algorithms.cc:1428
 -#: apt-pkg/algorithms.cc:1370 apt-pkg/algorithms.cc:1372
++#: apt-pkg/algorithms.cc:1433 apt-pkg/algorithms.cc:1435
  msgid ""
  "Some index files failed to download, they have been ignored, or old ones "
  "used instead."
  msgstr ""
  
--#: apt-pkg/acquire.cc:59
++#: apt-pkg/acquire.cc:60
  #, c-format
  msgid "Lists directory %spartial is missing."
  msgstr ""
  
--#: apt-pkg/acquire.cc:63
++#: apt-pkg/acquire.cc:64
  #, c-format
  msgid "Archive directory %spartial is missing."
  msgstr ""
  
  #. only show the ETA if it makes sense
  #. two days
- #: apt-pkg/acquire.cc:828
 -#: apt-pkg/acquire.cc:827
++#: apt-pkg/acquire.cc:829
  #, c-format
  msgid "Retrieving file %li of %li (%s remaining)"
  msgstr ""
  
- #: apt-pkg/acquire.cc:830
 -#: apt-pkg/acquire.cc:829
++#: apt-pkg/acquire.cc:831
  #, c-format
  msgid "Retrieving file %li of %li"
  msgstr ""
@@@ -2355,12 -2299,12 +2355,12 @@@ msgstr "
  msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
  msgstr ""
  
--#: apt-pkg/init.cc:124
++#: apt-pkg/init.cc:125
  #, c-format
  msgid "Packaging system '%s' is not supported"
  msgstr ""
  
--#: apt-pkg/init.cc:140
++#: apt-pkg/init.cc:141
  msgid "Unable to determine a suitable packaging system type"
  msgstr ""
  
@@@ -2381,16 -2325,16 +2381,17 @@@ msgstr "
  msgid "You may want to run apt-get update to correct these problems"
  msgstr ""
  
- #: apt-pkg/policy.cc:281
 -#: apt-pkg/policy.cc:267
--msgid "Invalid record in the preferences file, no Package header"
++#: apt-pkg/policy.cc:329
++#, c-format
++msgid "Invalid record in the preferences file %s, no Package header"
  msgstr ""
  
- #: apt-pkg/policy.cc:303
 -#: apt-pkg/policy.cc:289
++#: apt-pkg/policy.cc:351
  #, c-format
  msgid "Did not understand pin type %s"
  msgstr ""
  
- #: apt-pkg/policy.cc:311
 -#: apt-pkg/policy.cc:297
++#: apt-pkg/policy.cc:359
  msgid "No priority (or zero) specified for pin"
  msgstr ""
  
@@@ -2528,6 -2472,6 +2529,21 @@@ msgstr "
  msgid "Size mismatch"
  msgstr ""
  
++#: apt-pkg/indexrecords.cc:40
++#, c-format
++msgid "Unable to parse Release file %s"
++msgstr ""
++
++#: apt-pkg/indexrecords.cc:47
++#, c-format
++msgid "No sections in Release file %s"
++msgstr ""
++
++#: apt-pkg/indexrecords.cc:81
++#, c-format
++msgid "No Hash entry in Release file %s"
++msgstr ""
++
  #: apt-pkg/vendorlist.cc:66
  #, c-format
  msgid "Vendor block %s contains no fingerprint"
@@@ -2582,6 -2526,6 +2598,12 @@@ msgid "
  "zu signatures\n"
  msgstr ""
  
++#: apt-pkg/cdrom.cc:689
++msgid ""
++"Unable to locate any package files, perhaps this is not a Debian Disc or the "
++"wrong architecture?"
++msgstr ""
++
  #: apt-pkg/cdrom.cc:715
  #, c-format
  msgid "Found label '%s'\n"
@@@ -2610,103 -2554,100 +2632,119 @@@ msgstr "
  msgid "Source list entries for this disc are:\n"
  msgstr ""
  
--#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:823
++#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:833
  #, c-format
  msgid "Wrote %i records.\n"
  msgstr ""
  
--#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:825
++#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:835
  #, c-format
  msgid "Wrote %i records with %i missing files.\n"
  msgstr ""
  
--#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:828
++#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:838
  #, c-format
  msgid "Wrote %i records with %i mismatched files\n"
  msgstr ""
  
--#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:831
++#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:841
  #, c-format
  msgid "Wrote %i records with %i missing files and %i mismatched files\n"
  msgstr ""
  
 -#: apt-pkg/deb/dpkgpm.cc:486
 +#: apt-pkg/deb/dpkgpm.cc:49
  #, c-format
 -msgid "Directory '%s' missing"
 +msgid "Installing %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:612
 -#: apt-pkg/deb/dpkgpm.cc:569
++#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:642
  #, c-format
 -msgid "Preparing %s"
 +msgid "Configuring %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:627
 -#: apt-pkg/deb/dpkgpm.cc:570
++#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:649
  #, c-format
 -msgid "Unpacking %s"
 +msgid "Removing %s"
  msgstr ""
  
 -#: apt-pkg/deb/dpkgpm.cc:575
 +#: apt-pkg/deb/dpkgpm.cc:52
  #, c-format
 -msgid "Preparing to configure %s"
 +msgid "Running post-installation trigger %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:521
 -#: apt-pkg/deb/dpkgpm.cc:576 apt-pkg/deb/dpkgpm.cc:605
++#: apt-pkg/deb/dpkgpm.cc:546
  #, c-format
 -msgid "Configuring %s"
 +msgid "Directory '%s' missing"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:605
 -#: apt-pkg/deb/dpkgpm.cc:578 apt-pkg/deb/dpkgpm.cc:579
++#: apt-pkg/deb/dpkgpm.cc:635
  #, c-format
 -msgid "Processing triggers for %s"
 +msgid "Preparing %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:606
 -#: apt-pkg/deb/dpkgpm.cc:581
++#: apt-pkg/deb/dpkgpm.cc:636
  #, c-format
 -msgid "Installed %s"
 +msgid "Unpacking %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:611
 -#: apt-pkg/deb/dpkgpm.cc:586 apt-pkg/deb/dpkgpm.cc:588
 -#: apt-pkg/deb/dpkgpm.cc:589
++#: apt-pkg/deb/dpkgpm.cc:641
  #, c-format
 -msgid "Preparing for removal of %s"
 +msgid "Preparing to configure %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:614 apt-pkg/deb/dpkgpm.cc:615
- #, c-format
- msgid "Processing triggers for %s"
- msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:617
 -#: apt-pkg/deb/dpkgpm.cc:591 apt-pkg/deb/dpkgpm.cc:606
++#: apt-pkg/deb/dpkgpm.cc:643
  #, c-format
 -msgid "Removing %s"
 +msgid "Installed %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:622 apt-pkg/deb/dpkgpm.cc:624
- #: apt-pkg/deb/dpkgpm.cc:625
 -#: apt-pkg/deb/dpkgpm.cc:592
++#: apt-pkg/deb/dpkgpm.cc:648
 +#, c-format
 +msgid "Preparing for removal of %s"
 +msgstr ""
 +
- #: apt-pkg/deb/dpkgpm.cc:628
++#: apt-pkg/deb/dpkgpm.cc:650
  #, c-format
  msgid "Removed %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:633
 -#: apt-pkg/deb/dpkgpm.cc:597
++#: apt-pkg/deb/dpkgpm.cc:655
  #, c-format
  msgid "Preparing to completely remove %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:634
 -#: apt-pkg/deb/dpkgpm.cc:598
++#: apt-pkg/deb/dpkgpm.cc:656
  #, c-format
  msgid "Completely removed %s"
  msgstr ""
  
- #: apt-pkg/deb/dpkgpm.cc:789
 -#. populate the "processing" map
 -#: apt-pkg/deb/dpkgpm.cc:604
++#: apt-pkg/deb/dpkgpm.cc:820
 +msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
 +msgstr ""
 +
++#: apt-pkg/deb/dpkgpm.cc:848
++msgid "Running dpkg"
++msgstr ""
++
++#: apt-pkg/deb/debsystem.cc:70
+ #, c-format
 -msgid "Installing %s"
++msgid ""
++"Unable to lock the administration directory (%s), is another process using "
++"it?"
+ msgstr ""
 -#: apt-pkg/deb/dpkgpm.cc:607
++#: apt-pkg/deb/debsystem.cc:73
+ #, c-format
 -msgid "Triggering %s"
++msgid "Unable to lock the administration directory (%s), are you root?"
+ msgstr ""
 -#: apt-pkg/deb/dpkgpm.cc:756
 -msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
++#: apt-pkg/deb/debsystem.cc:82
++msgid ""
++"dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct "
++"the problem. "
++msgstr ""
++
 +#: apt-pkg/deb/debsystem.cc:100
 +msgid "Not locked"
  msgstr ""
  
  #: methods/rred.cc:219