]> git.saurik.com Git - apt.git/commitdiff
* merged from the apt--install-recommends branch
authorMichael Vogt <michael.vogt@ubuntu.com>
Thu, 7 Sep 2006 20:55:14 +0000 (22:55 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Thu, 7 Sep 2006 20:55:14 +0000 (22:55 +0200)
1  2 
apt-pkg/depcache.cc
configure.in
debian/changelog
po/apt-all.pot

diff --combined apt-pkg/depcache.cc
index 740d14426cffd447668c977aac2435c7567f916a,a031fa06810fa4551ffc8428d8f02215f727b8a4..15d7bac4397c8c8b3ace996a04673184e8dcbe31
  #include <apt-pkg/error.h>
  #include <apt-pkg/sptr.h>
  #include <apt-pkg/algorithms.h>
 +
 +#include <apt-pkg/fileutl.h>
  #include <apt-pkg/configuration.h>
 +#include <apt-pkg/pkgsystem.h>
 +#include <apt-pkg/tagfile.h>
 +
 +#include <iostream>
 +#include <sstream>    
 +#include <set>
 +
  #include <apti18n.h>    
 -                                                                      /*}}}*/
 +
 +pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) :
 +  cache(cache), released(false)
 +{
 +  ++cache.group_level;
 +}
 +
 +void pkgDepCache::ActionGroup::release()
 +{
 +  if(!released)
 +    {
 +      if(cache.group_level == 0)
 +      std::cerr << "W: Unbalanced action groups, expect badness" << std::endl;
 +      else
 +      {
 +        --cache.group_level;
 +
 +        if(cache.group_level == 0)
 +          cache.MarkAndSweep();
 +      }
 +
 +      released = false;
 +    }
 +}
 +
 +pkgDepCache::ActionGroup::~ActionGroup()
 +{
 +  release();
 +}
  
  // DepCache::pkgDepCache - Constructors                                       /*{{{*/
  // ---------------------------------------------------------------------
  /* */
  pkgDepCache::pkgDepCache(pkgCache *pCache,Policy *Plcy) :
 -                Cache(pCache), PkgState(0), DepState(0)
 +  group_level(0), Cache(pCache), PkgState(0), DepState(0)
  {
     delLocalPolicy = 0;
     LocalPolicy = Plcy;
@@@ -84,10 -47,6 +84,10 @@@ pkgDepCache::~pkgDepCache(
  /* This allocats the extension buffers and initializes them. */
  bool pkgDepCache::Init(OpProgress *Prog)
  {
 +   // Suppress mark updates during this operation (just in case) and
 +   // run a mark operation when Init terminates.
 +   ActionGroup actions(*this);
 +
     delete [] PkgState;
     delete [] DepState;
     PkgState = new StateCache[Head().PackageCount];
        // Find the proper cache slot
        StateCache &State = PkgState[I->ID];
        State.iFlags = 0;
 -      
 +
        // Figure out the install version
        State.CandidateVer = GetCandidateVer(I);
        State.InstallVer = I.CurrentVer();
  
     if(Prog != 0)
        Prog->Done();
 -   
 +
     return true;
  } 
                                                                        /*}}}*/
  
 +bool pkgDepCache::readStateFile(OpProgress *Prog)
 +{
 +   FileFd state_file;
 +   string state = _config->FindDir("Dir::State") + "extended_states";
 +   if(FileExists(state)) {
 +      state_file.Open(state, FileFd::ReadOnly);
 +      int file_size = state_file.Size();
 +      if(Prog != NULL)
 +       Prog->OverallProgress(0, file_size, 1, 
 +                             _("Reading state information"));
 +
 +      pkgTagFile tagfile(&state_file);
 +      pkgTagSection section;
 +      int amt=0;
 +      while(tagfile.Step(section)) {
 +       string pkgname = section.FindS("Package");
 +       pkgCache::PkgIterator pkg=Cache->FindPkg(pkgname);
 +       // Silently ignore unknown packages and packages with no actual
 +       // version.
 +       if(!pkg.end() && !pkg.VersionList().end()) {
 +          short reason = section.FindI("Auto-Installed", 0);
 +          if(reason > 0)
 +             PkgState[pkg->ID].Flags  |= Flag::Auto;
 +          if(_config->FindB("Debug::pkgAutoRemove",false))
 +             std::cout << "Auto-Installed : " << pkgname << std::endl;
 +          amt+=section.size();
 +          if(Prog != NULL)
 +             Prog->OverallProgress(amt, file_size, 1, 
 +                                   _("Reading state information"));
 +       }
 +       if(Prog != NULL)
 +          Prog->OverallProgress(file_size, file_size, 1, 
 +                                _("Reading state information"));
 +      }
 +   }
 +
 +   return true;
 +}
 +
 +bool pkgDepCache::writeStateFile(OpProgress *prog)
 +{
 +   if(_config->FindB("Debug::pkgAutoRemove",false))
 +      std::clog << "pkgDepCache::writeStateFile()" << std::endl;
 +
 +   FileFd StateFile;
 +   string state = _config->FindDir("Dir::State") + "extended_states";
 +
 +   // if it does not exist, create a empty one
 +   if(!FileExists(state)) 
 +   {
 +      StateFile.Open(state, FileFd::WriteEmpty);
 +      StateFile.Close();
 +   }
 +
 +   // open it
 +   if(!StateFile.Open(state, FileFd::ReadOnly))
 +      return _error->Error(_("Failed to open StateFile %s"),
 +                         state.c_str());
 +
 +   FILE *OutFile;
 +   string outfile = state + ".tmp";
 +   if((OutFile = fopen(outfile.c_str(),"w")) == NULL)
 +      return _error->Error(_("Failed to write temporary StateFile %s"),
 +                         outfile.c_str());
 +
 +   // first merge with the existing sections
 +   pkgTagFile tagfile(&StateFile);
 +   pkgTagSection section;
 +   std::set<string> pkgs_seen;
 +   const char *nullreorderlist[] = {0};
 +   while(tagfile.Step(section)) {
 +       string pkgname = section.FindS("Package");
 +       // Silently ignore unknown packages and packages with no actual
 +       // version.
 +       pkgCache::PkgIterator pkg=Cache->FindPkg(pkgname);
 +       if(pkg.end() || pkg.VersionList().end()) 
 +          continue;
 +       bool oldAuto = section.FindI("Auto-Installed");
 +       bool newAuto = (PkgState[pkg->ID].Flags & Flag::Auto);
 +       if(_config->FindB("Debug::pkgAutoRemove",false))
 +          std::clog << "Update exisiting AutoInstall info: " 
 +                    << pkg.Name() << std::endl;
 +       TFRewriteData rewrite[2];
 +       rewrite[0].Tag = "Auto-Installed";
 +       rewrite[0].Rewrite = newAuto ? "1" : "0";
 +       rewrite[0].NewTag = 0;
 +       rewrite[1].Tag = 0;
 +       TFRewrite(OutFile, section, nullreorderlist, rewrite);
 +       fprintf(OutFile,"\n");
 +       pkgs_seen.insert(pkgname);
 +   }
 +   
 +   // then write the ones we have not seen yet
 +   std::ostringstream ostr;
 +   for(pkgCache::PkgIterator pkg=Cache->PkgBegin(); !pkg.end(); pkg++) {
 +      if(PkgState[pkg->ID].Flags & Flag::Auto) {
 +       if (pkgs_seen.find(pkg.Name()) != pkgs_seen.end()) {
 +          if(_config->FindB("Debug::pkgAutoRemove",false))
 +             std::clog << "Skipping already written " << pkg.Name() << std::endl;
 +          continue;
 +       }
 +       if(_config->FindB("Debug::pkgAutoRemove",false))
 +          std::clog << "Writing new AutoInstall: " 
 +                    << pkg.Name() << std::endl;
 +       ostr.str(string(""));
 +       ostr << "Package: " << pkg.Name() 
 +            << "\nAuto-Installed: 1\n\n";
 +       fprintf(OutFile,ostr.str().c_str());
 +       fprintf(OutFile,"\n");
 +      }
 +   }
 +   fclose(OutFile);
 +
 +   // move the outfile over the real file
 +   rename(outfile.c_str(), state.c_str());
 +
 +   return true;
 +}
 +
  // DepCache::CheckDep - Checks a single dependency                    /*{{{*/
  // ---------------------------------------------------------------------
  /* This first checks the dependency against the main target package and
@@@ -273,7 -113,7 +273,7 @@@ bool pkgDepCache::CheckDep(DepIterator 
        we allow it anyhow because dpkg does. Technically it is a packaging
        bug. Conflicts may never self match */
     if (Dep.TargetPkg() != Dep.ParentPkg() || 
 -       (Dep->Type != Dep::Conflicts && Dep->Type != Dep::Obsoletes))
 +       (Dep->Type != Dep::Conflicts && Dep->Type != Dep::DpkgBreaks && Dep->Type != Dep::Obsoletes))
     {
        PkgIterator Pkg = Dep.TargetPkg();
        // Check the base package
     {
        /* Provides may never be applied against the same package if it is
           a conflicts. See the comment above. */
 -      if (P.OwnerPkg() == Pkg && Dep->Type == Dep::Conflicts)
 +      if (P.OwnerPkg() == Pkg &&
 +        (Dep->Type == Dep::Conflicts || Dep->Type == Dep::DpkgBreaks))
         continue;
        
        // Check if the provides is a hit
@@@ -458,9 -297,7 +458,9 @@@ void pkgDepCache::BuildGroupOrs(VerIter
  
        /* Invert for Conflicts. We have to do this twice to get the
           right sense for a conflicts group */
 -      if (D->Type == Dep::Conflicts || D->Type == Dep::Obsoletes)
 +      if (D->Type == Dep::Conflicts ||
 +        D->Type == Dep::DpkgBreaks ||
 +        D->Type == Dep::Obsoletes)
         State = ~State;
        
        // Add to the group if we are within an or..
         Group = 0;
        
        // Invert for Conflicts
 -      if (D->Type == Dep::Conflicts || D->Type == Dep::Obsoletes)
 +      if (D->Type == Dep::Conflicts ||
 +        D->Type == Dep::DpkgBreaks ||
 +        D->Type == Dep::Obsoletes)
         State = ~State;
     }   
  }
@@@ -606,9 -441,7 +606,9 @@@ void pkgDepCache::Update(OpProgress *Pr
               Group = 0;
  
            // Invert for Conflicts
 -          if (D->Type == Dep::Conflicts || D->Type == Dep::Obsoletes)
 +          if (D->Type == Dep::Conflicts ||
 +              D->Type == Dep::DpkgBreaks ||
 +              D->Type == Dep::Obsoletes)
               State = ~State;
         }       
        }
  
     if (Prog != 0)      
        Prog->Progress(Done);
 +
 +   readStateFile(Prog);
  }
                                                                        /*}}}*/
  // DepCache::Update - Update the deps list of a package                       /*{{{*/
  // ---------------------------------------------------------------------
  /* This is a helper for update that only does the dep portion of the scan. 
 -   It is mainly ment to scan reverse dependencies. */
 +   It is mainly meant to scan reverse dependencies. */
  void pkgDepCache::Update(DepIterator D)
  {
     // Update the reverse deps
        State = DependencyState(D);
      
        // Invert for Conflicts
 -      if (D->Type == Dep::Conflicts || D->Type == Dep::Obsoletes)
 +      if (D->Type == Dep::Conflicts ||
 +        D->Type == Dep::DpkgBreaks ||
 +        D->Type == Dep::Obsoletes)
         State = ~State;
  
        RemoveStates(D.ParentPkg());
@@@ -682,7 -511,7 +682,7 @@@ void pkgDepCache::Update(PkgIterator co
  // DepCache::MarkKeep - Put the package in the keep state             /*{{{*/
  // ---------------------------------------------------------------------
  /* */
 -void pkgDepCache::MarkKeep(PkgIterator const &Pkg,bool Soft)
 +void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser)
  {
     // Simplifies other routines.
     if (Pkg.end() == true)
         Pkg.CurrentVer().Downloadable() == false)
        return;
     
 +   /** \todo Can this be moved later in the method? */
 +   ActionGroup group(*this);
 +
     /* We changed the soft state all the time so the UI is a bit nicer
        to use */
     StateCache &P = PkgState[Pkg->ID];
     if (Pkg->VersionList == 0)
        return;
     
 -   P.Flags &= ~Flag::Auto;
 +   if(FromUser && !P.Marked)
 +     P.Flags &= ~Flag::Auto;
     RemoveSizes(Pkg);
     RemoveStates(Pkg);
  
@@@ -740,8 -565,6 +740,8 @@@ void pkgDepCache::MarkDelete(PkgIterato
     if (Pkg.end() == true)
        return;
  
 +   ActionGroup group(*this);
 +
     // Check that it is not already marked for delete
     StateCache &P = PkgState[Pkg->ID];
     P.iFlags &= ~(AutoKept | Purge);
     else
        P.Mode = ModeDelete;
     P.InstallVer = 0;
 -   P.Flags &= Flag::Auto;
  
     AddStates(Pkg);   
     Update(Pkg);
  // ---------------------------------------------------------------------
  /* */
  void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
 -                            unsigned long Depth, bool ForceImportantDeps)
 +                            unsigned long Depth, bool FromUser,
 +                            bool ForceImportantDeps)
  {
     if (Depth > 100)
        return;
     if (Pkg.end() == true)
        return;
     
 +   ActionGroup group(*this);
 +
     /* Check that it is not already marked for install and that it can be 
        installed */
     StateCache &P = PkgState[Pkg->ID];
        P.CandidateVer == (Version *)Pkg.CurrentVer()))
     {
        if (P.CandidateVer == (Version *)Pkg.CurrentVer() && P.InstallVer == 0)
 -       MarkKeep(Pkg);
 +       MarkKeep(Pkg, false, FromUser);
        return;
     }
  
     
     P.Mode = ModeInstall;
     P.InstallVer = P.CandidateVer;
 -   P.Flags &= ~Flag::Auto;
 +
 +   if(FromUser)
 +     {
 +       // Set it to manual if it's a new install or cancelling the
 +       // removal of a garbage package.
 +       if(P.Status == 2 || (!Pkg.CurrentVer().end() && !P.Marked))
 +       P.Flags &= ~Flag::Auto;
 +     }
 +   else
 +     {
 +       // Set it to auto if this is a new install.
 +       if(P.Status == 2)
 +       P.Flags |= Flag::Auto;
 +     }
     if (P.CandidateVer == (Version *)Pkg.CurrentVer())
        P.Mode = ModeKeep;
         
        /* This bit is for processing the possibilty of an install/upgrade
           fixing the problem */
        SPtrArray<Version *> List = Start.AllTargets();
 -      if ((DepState[Start->ID] & DepCVer) == DepCVer)
 +      if (Start->Type != Dep::DpkgBreaks &&
 +        (DepState[Start->ID] & DepCVer) == DepCVer)
        {
         // Right, find the best version to install..
         Version **Cur = List;
            }
         }
         
 -       if (InstPkg.end() == false)
 +       if (InstPkg.end() == false) 
         {
            if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true)
               std::clog << "Installing " << InstPkg.Name() 
                         << " as dep of " << Pkg.Name() 
                         << std::endl;
 -          MarkInstall(InstPkg,true,Depth + 1, ForceImportantDeps);
 +          MarkInstall(InstPkg,true,Depth + 1, false, ForceImportantDeps);
  
            // Set the autoflag, after MarkInstall because MarkInstall unsets it
            if (P->CurrentVer == 0)
               PkgState[InstPkg->ID].Flags |= Flag::Auto;
         }
 -       
         continue;
        }
 -      
 +
        /* For conflicts we just de-install the package and mark as auto,
 -         Conflicts may not have or groups */
 -      if (Start->Type == Dep::Conflicts || Start->Type == Dep::Obsoletes)
 +         Conflicts may not have or groups.  For dpkg's Breaks we try to
 +         upgrade the package. */
 +      if (Start->Type == Dep::Conflicts || Start->Type == Dep::Obsoletes ||
 +        Start->Type == Dep::DpkgBreaks)
        {
         for (Version **I = List; *I != 0; I++)
         {
            VerIterator Ver(*this,*I);
            PkgIterator Pkg = Ver.ParentPkg();
 -      
 -          MarkDelete(Pkg);
 -          PkgState[Pkg->ID].Flags |= Flag::Auto;
 +
 +          if (Start->Type != Dep::DpkgBreaks)
 +             MarkDelete(Pkg);
 +          else
 +             if (PkgState[Pkg->ID].CandidateVer != *I)
 +                MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps);
         }
         continue;
        }      
  /* */
  void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To)
  {
 +   ActionGroup group(*this);
 +
     RemoveSizes(Pkg);
     RemoveStates(Pkg);
     
  /* */
  void pkgDepCache::SetCandidateVersion(VerIterator TargetVer)
  {
 +   ActionGroup group(*this);
 +
     pkgCache::PkgIterator Pkg = TargetVer.ParentPkg();
     StateCache &P = PkgState[Pkg->ID];
 -   
 +
     RemoveSizes(Pkg);
     RemoveStates(Pkg);
  
     Update(Pkg);
     AddSizes(Pkg);
  }
 +
 +void pkgDepCache::MarkAuto(const PkgIterator &Pkg, bool Auto)
 +{
 +  StateCache &state = PkgState[Pkg->ID];
 +
 +  ActionGroup group(*this);
 +
 +  if(Auto)
 +    state.Flags |= Flag::Auto;
 +  else
 +    state.Flags &= ~Flag::Auto;
 +}
                                                                        /*}}}*/
  // StateCache::Update - Compute the various static display things     /*{{{*/
  // ---------------------------------------------------------------------
@@@ -1110,221 -897,6 +1110,221 @@@ pkgCache::VerIterator pkgDepCache::Poli
     return Last;
  }
                                                                        /*}}}*/
 +                                                                      /*}}}*/
 +
 +pkgDepCache::DefaultRootSetFunc::DefaultRootSetFunc()
 +  : constructedSuccessfully(false)
 +{
 +  Configuration::Item const *Opts;
 +  Opts = _config->Tree("APT::NeverAutoRemove");
 +  if (Opts != 0 && Opts->Child != 0)
 +    {
 +      Opts = Opts->Child;
 +      for (; Opts != 0; Opts = Opts->Next)
 +      {
 +        if (Opts->Value.empty() == true)
 +          continue;
 +
 +        regex_t *p = new regex_t;
 +        if(regcomp(p,Opts->Value.c_str(),
 +                   REG_EXTENDED | REG_ICASE | REG_NOSUB) != 0)
 +          {
 +            regfree(p);
 +            delete p;
 +            _error->Error("Regex compilation error for APT::NeverAutoRemove");
 +            return;
 +          }
 +
 +        rootSetRegexp.push_back(p);
 +      }
 +    }
 +
 +  constructedSuccessfully = true;
 +}
 +
 +pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()
 +{
 +  for(unsigned int i = 0; i < rootSetRegexp.size(); i++)
 +    {
 +      regfree(rootSetRegexp[i]);
 +      delete rootSetRegexp[i];
 +    }
 +}
 +
 +
 +bool pkgDepCache::DefaultRootSetFunc::InRootSet(const pkgCache::PkgIterator &pkg)
 +{
 +   for(unsigned int i = 0; i < rootSetRegexp.size(); i++)
 +      if (regexec(rootSetRegexp[i], pkg.Name(), 0, 0, 0) == 0)
 +       return true;
 +
 +   return false;
 +}
 +
 +pkgDepCache::InRootSetFunc *pkgDepCache::GetRootSetFunc()
 +{
 +  DefaultRootSetFunc *f = new DefaultRootSetFunc;
 +  if(f->wasConstructedSuccessfully())
 +    return f;
 +  else
 +    {
 +      delete f;
 +      return NULL;
 +    }
 +}
 +
 +bool pkgDepCache::MarkFollowsRecommends()
 +{
 +  return _config->FindB("APT::AutoRemove::RecommendsImportant", true);
 +}
 +
 +bool pkgDepCache::MarkFollowsSuggests()
 +{
 +  return _config->FindB("APT::AutoRemove::SuggestsImportant", false);
 +}
 +
 +// the main mark algorithm
 +bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc)
 +{
 +   bool follow_recommends;
 +   bool follow_suggests;
 +
 +   // init the states
 +   for(PkgIterator p = PkgBegin(); !p.end(); ++p)
 +   {
 +      PkgState[p->ID].Marked  = false;
 +      PkgState[p->ID].Garbage = false;
 +
 +      // debug output
 +      if(_config->FindB("Debug::pkgAutoRemove",false) 
 +       && PkgState[p->ID].Flags & Flag::Auto)
 +       std::clog << "AutoDep: " << p.Name() << std::endl;
 +   }
 +
 +   // init vars
 +   follow_recommends = MarkFollowsRecommends();
 +   follow_suggests   = MarkFollowsSuggests();
 +
 +
 +
 +   // do the mark part, this is the core bit of the algorithm
 +   for(PkgIterator p = PkgBegin(); !p.end(); ++p)
 +   {
 +      if(!(PkgState[p->ID].Flags & Flag::Auto) ||
 +        (p->Flags & Flag::Essential) ||
 +        userFunc.InRootSet(p))
 +          
 +      {
 +       // the package is installed (and set to keep)
 +       if(PkgState[p->ID].Keep() && !p.CurrentVer().end())
 +          MarkPackage(p, p.CurrentVer(),
 +                      follow_recommends, follow_suggests);
 +       // the package is to be installed 
 +       else if(PkgState[p->ID].Install())
 +          MarkPackage(p, PkgState[p->ID].InstVerIter(*this),
 +                      follow_recommends, follow_suggests);
 +      }
 +   }
 +
 +   return true;
 +}
 +
 +// mark a single package in Mark-and-Sweep
 +void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
 +                            const pkgCache::VerIterator &ver,
 +                            bool follow_recommends,
 +                            bool follow_suggests)
 +{
 +   pkgDepCache::StateCache &state = PkgState[pkg->ID];
 +   VerIterator candver            = state.CandidateVerIter(*this);
 +   VerIterator instver            = state.InstVerIter(*this);
 +
 +#if 0
 +   // If a package was garbage-collected but is now being marked, we
 +   // should re-select it 
 +   // For cases when a pkg is set to upgrade and this trigger the
 +   // removal of a no-longer used dependency.  if the pkg is set to
 +   // keep again later it will result in broken deps
 +   if(state.Delete() && state.RemoveReason = Unused) 
 +   {
 +      if(ver==candver)
 +       mark_install(pkg, false, false, NULL);
 +      else if(ver==pkg.CurrentVer())
 +       MarkKeep(pkg, false, false);
 +      
 +      instver=state.InstVerIter(*this);
 +   }
 +#endif
 +
 +   // Ignore versions other than the InstVer, and ignore packages
 +   // that are already going to be removed or just left uninstalled.
 +   if(!(ver == instver && !instver.end()))
 +      return;
 +
 +   // if we are marked already we are done
 +   if(state.Marked)
 +      return;
 +
 +   //std::cout << "Setting Marked for: " << pkg.Name() << std::endl;
 +   state.Marked=true;
 +
 +   if(!ver.end())
 +   {
 +     for(DepIterator d = ver.DependsList(); !d.end(); ++d)
 +     {
 +      if(d->Type == Dep::Depends ||
 +         d->Type == Dep::PreDepends ||
 +         (follow_recommends &&
 +          d->Type == Dep::Recommends) ||
 +         (follow_suggests &&
 +          d->Type == Dep::Suggests))
 +        {
 +         // Try all versions of this package.
 +         for(VerIterator V = d.TargetPkg().VersionList(); 
 +             !V.end(); ++V)
 +         {
 +            if(_system->VS->CheckDep(V.VerStr(), d->CompareOp, d.TargetVer()))
 +            {
 +               MarkPackage(V.ParentPkg(), V, 
 +                           follow_recommends, follow_suggests);
 +            }
 +         }
 +         // Now try virtual packages
 +         for(PrvIterator prv=d.TargetPkg().ProvidesList(); 
 +             !prv.end(); ++prv)
 +         {
 +            if(_system->VS->CheckDep(prv.ProvideVersion(), d->CompareOp, 
 +                                     d.TargetVer()))
 +            {
 +               MarkPackage(prv.OwnerPkg(), prv.OwnerVer(),
 +                           follow_recommends, follow_suggests);
 +            }
 +         }
 +      }
 +     }
 +   }
 +}
 +
 +bool pkgDepCache::Sweep()
 +{
 +   // do the sweep
 +   for(PkgIterator p=PkgBegin(); !p.end(); ++p)
 +  {
 +     StateCache &state=PkgState[p->ID];
 +
 +     // if it is not marked and it is installed, it's garbage 
 +     if(!state.Marked && (!p.CurrentVer().end() || state.Install()) &&
 +      !state.Delete())
 +     {
 +      state.Garbage=true;
 +      if(_config->FindB("Debug::pkgAutoRemove",false))
 +         std::cout << "Garbage: " << p.Name() << std::endl;
 +     }
 +  }   
 +
 +   return true;
 +}
 +
  // Policy::IsImportantDep - True if the dependency is important               /*{{{*/
  // ---------------------------------------------------------------------
  /* */
@@@ -1343,7 -915,7 +1343,7 @@@ bool pkgDepCache::Policy::IsImportantDe
        string s = _config->Find("APT::Install-Recommends-Section","");
        if(s.size() > 0) 
        {
-        const char *sec = Dep.TargetPkg().Section();
+        const char *sec = Dep.ParentVer().Section();
         if (sec && strcmp(sec, s.c_str()) == 0)
            return true;
        }
diff --combined configure.in
index 9fd92e84f345ee2636e3e193ec022bbcfa2cb15c,f0b0d6703af0f057455389e7258eefc6230852fd..58fc4f60dce2ace523f0b2614591fb12c015ab4e
@@@ -18,7 -18,7 +18,7 @@@ AC_CONFIG_AUX_DIR(buildlib
  AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
  
  dnl -- SET THIS TO THE RELEASE VERSION --
- AC_DEFINE_UNQUOTED(VERSION,"0.6.45ubuntu6")
 -AC_DEFINE_UNQUOTED(VERSION,"0.6.45.1")
++AC_DEFINE_UNQUOTED(VERSION,"0.6.45ubuntu7")
  PACKAGE="apt"
  AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
  AC_SUBST(PACKAGE)
diff --combined debian/changelog
index 0bd5e45329f199dd0938e0d01323cdff276505b5,65ec82cc1c37b25586ce04acbce9bf02c2128207..c76ca0f693248a70b2ef29eab0099af1818b535b
@@@ -1,59 -1,11 +1,66 @@@
 -apt (0.6.45.2) unstable; urgency=low
++apt (0.6.45ubuntu7) edgy; urgency=low
 -  * added "--install-recommends" to handle recommends as 
 -    dependencies (closes: #42266)
++  * apt-pkg/depcache.cc:
++    - fix a bug in the install-recommends-section code
 - --
++ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  7 Sep 2006 18:22:38 +0200
 -apt (0.6.45.1) unstable; urgency=low
 +apt (0.6.45ubuntu6) edgy; urgency=low
 +
 +  [Michael Vogt]
 +  * cmdline/apt-get.cc:
 +    - always show auto-removable packages and give a hint how to remove 
 +      them
 +  * debian/apt.conf.ubuntu:
 +    - exlucde linux-image and linux-restricted-modules from ever being 
 +      auto-removed
 +    - added "metapackages" as the section we want to install recommends
 +      by default
 +  * apt-pkg/depcache.cc:
 +    - added support to turn install-recommends selectively on/off by
 +      section
 +  [Ian Jackson]
 +  * Tests pass without code changes!  Except that we need this:
 +  * Bump cache file major version to force rebuild so that Breaks
 +    dependencies are included.
 +  * Don't depend on or suggest any particular dpkg or dpkg-dev versions;
 +    --auto-deconfigure is very very old and dpkg-dev's Breaks support
 +    is more or less orthogonal.
 +  * Initial draft of `Breaks' implementation.  Appears to compile,
 +    but as yet *completely untested*.
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  7 Sep 2006 11:50:52 +0200
 +
 +apt (0.6.45ubuntu5) edgy; urgency=low
 +
 +  * apt-pkg/pkgcachegen.cc:
 +    - increase the APT::Cache-Limit to deal with the increased demand due
 +      to the translated descriptions
 +  * apt-pkg/deb/dpkgpm.cc:
 +    - pass "--auto-deconfigure" to dpkg on install to support the
 +      new "breaks" in dpkg
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 15 Aug 2006 12:06:26 +0200
 +
 +apt (0.6.45ubuntu4) edgy; urgency=low
 +
 +  * cmdline/apt-get.cc:
 +    - fix in the new --fix-polciy code
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 14 Aug 2006 21:08:11 +0200
 +
 +apt (0.6.45ubuntu3) edgy; urgency=low
 +
 +  * ABI break
 +  * merged latest apt--install-recommends (closes: #559000)
 +  * added "--fix-policy" option to can be used as "--fix-broken" and
 +    will install missing weak depends (recommends, and/or suggests 
 +    depending on the settings)
 +  * merged the apt--ddtp branch
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 11 Aug 2006 12:53:23 +0200
 +
 +apt (0.6.45ubuntu2) edgy; urgency=low
  
    * debian/control:
      - switched to libdb4.4 for building (closes: #381019)
        versions of the package (closes: #257054)
      - properly handle recommends/suggests or-groups when printing the list of
        suggested/recommends packages (closes: #311619)
 +  * merged "apt--install-recommends" branch:
 +    - added "{no-}install-recommends" commandline option
 +    - added APT::Install-{Recommends,Suggests} option
 +    - currently Install-Recommends defaults to "False" 
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Wed,  9 Aug 2006 23:38:46 +0200
 +
 +apt (0.6.45ubuntu1) edgy; urgency=low
  
 - -- Michael Vogt <michael.vogt@ubuntu.com>  Wed,  9 Aug 2006 14:27:54 +0200
 +  * merged with debian/unstable
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue,  1 Aug 2006 15:43:22 +0200
  
  apt (0.6.45) unstable; urgency=low
  
  
   -- Michael Vogt <mvo@debian.org>  Thu, 27 Jul 2006 00:52:05 +0200
  
 -apt  (0.6.44.2) unstable; urgency=low 
 +apt (0.6.44.2ubuntu4) edgy; urgency=low
 +
 +  * Make apt-get dselect-upgrade happy again
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 21 Jul 2006 11:03:02 +0200
 +
 +apt (0.6.44.2ubuntu3) edgy; urgency=low
 +
 +  * Close extended_states file after writing it.
 +
 + -- Colin Watson <cjwatson@ubuntu.com>  Tue, 18 Jul 2006 00:12:13 +0100
 +
 +apt (0.6.44.2ubuntu2) edgy; urgency=low
 +
 +  * create a empty extended_states file if none exists already
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue,  4 Jul 2006 09:23:03 +0200
 +
 +apt (0.6.44.2ubuntu1) edgy; urgency=low
 +
 +  * merged with debian/unstable
 +  * merged the "auto-mark" branch to support aptitude like
 +    marking of automatically installed dependencies and added
 +    "apt-get remove --auto-remove" to remove unused auto-installed
 +    packages again
 +  * changed library version from 3.11 to 3.50 to make it clearly 
 +    different from the debian version (we are ABI incompatible because
 +    of the auto-mark patch)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Mon,  3 Jul 2006 18:30:46 +0200
 +
 +apt  (0.6.44.2) unstable; urgency=low
    
     * apt-pkg/depcache.cc:
       - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
@@@ -213,26 -124,6 +220,26 @@@ apt (0.6.44) unstable; urgency=lo
    
   -- Michael Vogt <mvo@debian.org>  Mon,  8 May 2006 22:28:53 +0200
  
 +apt (0.6.43.3ubuntu3) dapper; urgency=low
 +
 +  * methods/http.cc:
 +    - fix the user-agent string
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 26 May 2006 18:09:32 +0200
 +
 +apt (0.6.43.3ubuntu2) dapper; urgency=low
 +
 +  * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 18 Apr 2006 13:24:40 +0200
 +
 +apt (0.6.43.3ubuntu1) dapper; urgency=low
 +
 +  * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large in 
 +    the status-fd (ubuntu #28954)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 28 Mar 2006 20:34:46 +0200
 +
  apt (0.6.43.3) unstable; urgency=low
  
    * Merge bubulle@debian.org--2005/apt--main--0 up to patch-186:
      * pl.po: Completed to 512t. Closes: #349514
      * sk.po: Completed to 512t. Closes: #349474
      * gl.po: Completed to 512 strings Closes: #349407
 +    * vi.po: Completed to 512 strings
      * sv.po: Completed to 512 strings Closes: #349210
      * ru.po: Completed to 512 strings Closes: #349154
      * da.po: Completed to 512 strings Closes: #349084
      * fr.po: Completed to 512 strings
 +    * LINGUAS: Add Welsh
 +    * *.po: Updated from sources (512 strings)
      * vi.po: Completed to 511 strings  Closes: #348968
 -    * zh_CN.po: Completed to 512t. Closes: #353936
 -    * it.po: Completed to 512t. Closes: #352803
 -    * pt_BR.po: Completed to 512t. Closes: #352419
 +  * apt-pkg/deb/deblistparser.cc:
 +    - don't explode on a DepCompareOp in a Provides line, but warn about
 +      it and ignore it otherwise (thanks to James Troup for reporting it)
 +  * cmdline/apt-get.cc:
 +    - don't lock the lists directory in DoInstall, breaks --print-uri 
 +      (thanks to James Troup for reporting it)
 +  * debian/apt.dirs: create /etc/apt/sources.list.d 
 +  * make apt-cache madison work without deb-src entries (#352583)
 +  * cmdline/apt-get.cc: only run the list-cleaner if a update was 
 +    successfull
 +  * apt-get update errors are only warnings nowdays
 +  * be more careful with the signature file on network failures
 +
 + --  Michael Vogt <mvo@debian.org>  Wed, 22 Feb 2006 10:13:04 +0100
 +
 +apt (0.6.43.2ubuntu1) dapper; urgency=low
 +
 +  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-182:
 +  * ca.po: Completed to 512t. Closes: #351592
 +    * eu.po: Completed to 512t. Closes: #350483
 +    * ja.po: Completed to 512t. Closes: #349806
 +    * pl.po: Completed to 512t. Closes: #349514
 +    * sk.po: Completed to 512t. Closes: #349474
 +    * gl.po: Completed to 512 strings Closes: #349407
 +    * vi.po: Completed to 512 strings
 +    * sv.po: Completed to 512 strings Closes: #349210
 +    * ru.po: Completed to 512 strings Closes: #349154
 +    * da.po: Completed to 512 strings Closes: #349084
 +    * fr.po: Completed to 512 strings
      * LINGUAS: Add Welsh
      * *.po: Updated from sources (512 strings)
 +    * vi.po: Completed to 511 strings  Closes: #348968
    * apt-pkg/deb/deblistparser.cc:
      - don't explode on a DepCompareOp in a Provides line, but warn about
        it and ignore it otherwise (thanks to James Troup for reporting it)
    * make apt-cache madison work without deb-src entries (#352583)
    * cmdline/apt-get.cc: only run the list-cleaner if a update was 
      successfull
 +  * apt-get update errors are only warnings nowdays
 +  * be more careful with the signature file on network failures
  
 - -- Michael Vogt <mvo@debian.org>  Wed, 22 Feb 2006 10:13:04 +0100
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 20 Feb 2006 22:27:48 +0100
  
  apt (0.6.43.2) unstable; urgency=low
  
  
   -- Michael Vogt <mvo@debian.org>  Thu, 19 Jan 2006 00:06:33 +0100
  
 -apt (0.6.43.1) unstable; urgency=low
 +apt (0.6.43.1ubuntu1) dapper; urgency=low
 +
 +  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-159:
 +    - en_GB.po, de.po: fix spaces errors in "Ign " translations
 +      Closes: #347258
 +    - makefile: make update-po a pre-requisite of clean target so
 +              that POT and PO files are always up-to-date
 +    - sv.po: Completed to 511t. Closes: #346450
 +    - sk.po: Completed to 511t. Closes: #346369
 +    - fr.po: Completed to 511t
 +    - *.po: Updated from sources (511 strings)
 +  * add patch to fix http download corruption problem (thanks to
 +    Petr Vandrovec, closes: #280844, #290694)
 +  * added APT::Periodic::Unattended-Upgrade (requires the package
 +    "unattended-upgrade")
  
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 10 Jan 2006 17:09:31 +0100
 +
 +apt (0.6.43.1) unstable; urgency=low
 +  
    * Merge bubulle@debian.org--2005/apt--main--0 up to patch-148:
      * fr.po: Completed to 510 strings
      * it.po: Completed to 510t
  
   -- Michael Vogt <mvo@debian.org>  Fri,  6 Jan 2006 01:17:08 +0100
  
 +apt (0.6.43ubuntu2) dapper; urgency=low
 +
 +  * merged some missing bits that wheren't merged by baz in the previous
 +    upload (*grumble*)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  8 Dec 2005 18:35:58 +0100
 +
 +apt (0.6.43ubuntu1) dapper; urgency=low
 +
 +  * merged with debian
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 25 Nov 2005 11:36:29 +0100
 +
  apt (0.6.43) unstable; urgency=medium
  
    * Merge bubulle@debian.org--2005/apt--main--0 up to patch-132:  
    
   -- Michael Vogt <mvo@debian.org>  Tue, 29 Nov 2005 00:17:07 +0100
  
 +apt (0.6.42.3ubuntu2) dapper; urgency=low
 +
 +  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-131:  
 +    * zh_CN.po: Completed to 507 strings(Closes: #338267)
 +    * gl.po: Completed to 510 strings (Closes: #338356)
 +  * added support for "/etc/apt/sources.list.d" directory 
 +    (closes: #66325)
 +  
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 14 Nov 2005 15:30:12 +0100
 +
 +apt (0.6.42.3ubuntu1) dapper; urgency=low
 +
 +  * synced with debian
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 10 Nov 2005 05:05:56 +0100
 +
  apt (0.6.42.3) unstable; urgency=low
  
    * Merge bubulle@debian.org--2005/apt--main--0 up to patch-129:
@@@ -457,13 -269,13 +464,13 @@@ apt (0.6.42) unstable; urgency=lo
      - unmount the cdrom when apt failed to locate any package files
    * allow cdrom failures and fallback to other sources in that case
      (closes: #44135)
 -  * better error text when dpkg-source fails 
 +  * better error text when dpkg-source fails
    * Merge bubulle@debian.org--2005/apt--main--0 up to patch-115:
      - patch-99: Added Galician translation
      - patch-100: Completed Danish translation (Closes: #325686)
      - patch-104: French translation completed
      - patch-109: Italian translation completed
 -    - patch-112: Swedish translation update 
 +    - patch-112: Swedish translation update
      - patch-115: Basque translation completed (Closes: #333299)
    * applied french man-page update (thanks to Philippe Batailler)
      (closes: #316638, #327456)
    * apt-pkg/contrib/md5.cc:
      - fix a alignment problem on sparc64 that gives random bus errors
        (thanks to Fabbione for providing a test-case)
 -  * init the default ScreenWidth to 79 columns by default 
 +  * init the default ScreenWidth to 79 columns by default
      (Closes: #324921)
 -  * cmdline/apt-cdrom.cc: 
 +  * cmdline/apt-cdrom.cc:
      - fix some missing gettext() calls (closes: #334539)
    * doc/apt-cache.8.xml: fix typo (closes: #334714)
 -  
 +
   -- Michael Vogt <mvo@debian.org>  Wed, 19 Oct 2005 22:02:09 +0200
  
  apt (0.6.41) unstable; urgency=low
    * improved the support for "error" and "conffile" reporting from
      dpkg, added the format to README.progress-reporting
    * added README.progress-reporting to the apt-doc package
 -  * improved the network timeout handling, if a index file from a 
 -    sources.list times out or EAI_AGAIN is returned from getaddrinfo, 
 +  * improved the network timeout handling, if a index file from a
 +    sources.list times out or EAI_AGAIN is returned from getaddrinfo,
      don't try to get the other files from that entry
    * Support architecture-specific extra overrides
      (closes: #225947). Thanks to  Anthony Towns for idea and
    * Javier Fernandez-Sanguino Pen~a:
      - Added a first version of an apt-secure.8 manpage, and modified
        apt-key and apt.end accordingly. Also added the 'update'
 -      argument to apt-key which was previously not documented 
 +      argument to apt-key which was previously not documented
        (Closes: #322120)
    * Andreas Pakulat:
 -    - added example apt-ftparchive.conf file to doc/examples 
 +    - added example apt-ftparchive.conf file to doc/examples
        (closes: #322483)
    * Fix a incorrect example in the man-page (closes: #282918)
    * Fix a bug for very long lines in the apt-cdrom code (closes: #280356)
    * Change pkgPolicy::Pin from private to protected to let subclasses
      access it too (closes: #321799)
    * add default constructor for PrvIterator (closes: #322267)
 -  * Reread status configuration on debSystem::Initialize() 
 +  * Reread status configuration on debSystem::Initialize()
      (needed for apt-proxy, thanks to Otavio for this patch)
 -  
 +
   -- Michael Vogt <mvo@debian.org>  Mon,  5 Sep 2005 22:59:03 +0200
 +  
 +apt (0.6.40.1ubuntu8) breezy; urgency=low
 +
 +  * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-62:
 +    - fix for a bad memory/file leak in the mmap code (ubuntu #15603)
 +  * po/de.po, po/fr.po: 
 +    - updated the translations
 +  * po/makefile:
 +    - create a single pot file in each domain dir to make rosetta happy
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 28 Sep 2005 10:16:06 +0200
 +
 +apt (0.6.40.1ubuntu7) breezy; urgency=low
 +
 +  * updated the pot/po files , no code changes
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 27 Sep 2005 18:38:16 +0200
 +
 +apt (0.6.40.1ubuntu6) breezy; urgency=low
 +
 +  * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-56:
 +    - make it possible for apt to handle a failed MediaChange event and
 +      fall back to other sources (ubuntu #13713)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 13 Sep 2005 22:09:50 +0200
 +
 +apt (0.6.40.1ubuntu5) breezy; urgency=low
 +
 +  * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-{50,51}.
 +    This adds media-change reporting to the apt status-fd (ubuntu #15213)
 +  * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-55:
 +    apt-pkg/cdrom.cc:
 +    - unmount the cdrom when apt failed to locate any package files
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 12 Sep 2005 15:44:26 +0200
 +
 +apt (0.6.40.1ubuntu4) breezy; urgency=low
 +
 +  * debian/apt.cron.daily:
 +    - fix a embarrassing typo
 +  
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Wed,  7 Sep 2005 10:10:37 +0200
 +
 +apt (0.6.40.1ubuntu3) breezy; urgency=low
 +
 +  * debian/apt.cron.daily:
 +    - use the ctime as well when figuring what packages need to
 +      be removed. This fixes the problem that packages copied with    
 +      "cp -a" (e.g. from the installer) have old mtimes (ubuntu #14504)
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue,  6 Sep 2005 18:30:46 +0200
 +
 +apt (0.6.40.1ubuntu2) breezy; urgency=low
 +
 +  * improved the support for "error" and "conffile" reporting from
 +    dpkg, added the format to README.progress-reporting
 +  * added README.progress-reporting to the apt-doc package
 +  * Do md5sum checking for file and cdrom method (closes: #319142)
 +  * Change pkgPolicy::Pin from private to protected to let subclasses
 +    access it too (closes: #321799)
 +  * methods/connect.cc:
 +    - send failure reason for EAI_AGAIN (TmpResolveFailure) to acuire-item
 +  * apt-pkg/acquire-item.cc:
 +    - fail early if a FailReason is TmpResolveFailure (avoids hangs during
 +      the install when no network is available)
 +  * merged michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 23 Aug 2005 19:44:55 +0200
 +
 +apt (0.6.40.1ubuntu1) breezy; urgency=low
 +
 +  * Synchronize with Debian
 +
 + -- Michael Vogt <michael.vogt@ubuntu.com>  Fri,  5 Aug 2005 14:20:56 +0200
  
  apt (0.6.40.1) unstable; urgency=low
  
  
   -- Michael Vogt <mvo@debian.org>  Fri,  5 Aug 2005 13:24:58 +0200
  
 +apt (0.6.40ubuntu1) breezy; urgency=low
 +
 +  * Synchronize with Debian
 +
 + -- Matt Zimmerman <mdz@ubuntu.com>  Thu,  4 Aug 2005 15:53:22 -0700
 +
  apt (0.6.40) unstable; urgency=low
  
    * Patch from Jordi Mallach to mark some additional strings for translation
  
   -- Matt Zimmerman <mdz@debian.org>  Thu, 28 Jul 2005 11:57:32 -0700
  
 +apt (0.6.39ubuntu4) breezy; urgency=low
 +
 +  * Fix keyring paths in apt-key, apt.postinst (I swear I remember doing this
 +    before...)
 +
 + -- Matt Zimmerman <mdz@ubuntu.com>  Wed, 29 Jun 2005 08:39:17 -0700
 +
 +apt (0.6.39ubuntu3) breezy; urgency=low
 +
 +  * Fix keyring locations for Ubuntu in apt-key too.
 +
 + -- Colin Watson <cjwatson@ubuntu.com>  Wed, 29 Jun 2005 14:45:36 +0100
 +
 +apt (0.6.39ubuntu2) breezy; urgency=low
 +
 +  * Install ubuntu-archive.gpg rather than debian-archive.gpg as
 +    /etc/apt/trusted.gpg.
 +
 + -- Colin Watson <cjwatson@ubuntu.com>  Wed, 29 Jun 2005 11:53:34 +0100
 +
 +apt (0.6.39ubuntu1) breezy; urgency=low
 +
 +  * Michael Vogt
 +    - Change debian/bugscript to use #!/bin/bash (Closes: #313402)
 +    - Fix a incorrect example in the man-page (closes: #282918)
 +    - Support architecture-specific extra overrides
 +      (closes: #225947). Thanks to  Anthony Towns for idea and
 +      the patch, thanks to Colin Watson for testing it.
 +    - better report network timeouts from the methods to the acuire code,
 +      only timeout once per sources.list line
 +
 + -- Matt Zimmerman <mdz@ubuntu.com>  Tue, 28 Jun 2005 11:52:24 -0700
 +
  apt (0.6.39) unstable; urgency=low
  
    * Welsh translation update: daf@muse.19inch.net--2005/apt--main--0--patch-6
    * Update priority of apt-utils to important, to match the override file
    * Install only one keyring on each branch (Closes: #316119)
  
 - -- Matt Zimmerman <mdz@debian.org>  Tue, 28 Jun 2005 11:51:09 -0700
 + -- Matt Zimmerman <mdz@debian.org>  Tue, 28 Jun 2005 11:35:21 -0700
 +
 +apt (0.6.38ubuntu1) breezy; urgency=low
 +
 +  * First release from Ubuntu branch
 +  * Merge with --main--0, switch back to Ubuntu keyring
 +
 + -- Matt Zimmerman <mdz@ubuntu.com>  Sat, 25 Jun 2005 16:52:41 -0700
  
  apt (0.6.38) unstable; urgency=low
  
@@@ -702,7 -394,6 +709,7 @@@ apt (0.6.37) breezy; urgency=lo
    * Add Welsh translation from Dafydd Harries
      (daf@muse.19inch.net--2005/apt--main--0--patch-1)
    * Change debian/bugscript to use #!/bin/bash (Closes: #313402)
 +  * Fix a incorrect example in the man-page (closes: #282918)
  
   -- Matt Zimmerman <mdz@ubuntu.com>  Tue, 24 May 2005 14:38:25 -0700
  
diff --combined po/apt-all.pot
index 978b0c19155cf090a9e7a0ccdc170663750ce5ef,d6d146428b495bbc99642da362963fe1bf904148..a329525a6cc6df4b96d02e7c310202c11a901f01
@@@ -7,7 -7,7 +7,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PACKAGE VERSION\n"
  "Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2006-08-25 15:34+0100\n"
 -"POT-Creation-Date: 2006-08-09 18:35+0200\n"
++"POT-Creation-Date: 2006-08-09 23:46+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:135
  #, 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:175 cmdline/apt-cache.cc:527 cmdline/apt-cache.cc:615
+ #: cmdline/apt-cache.cc:771 cmdline/apt-cache.cc:989 cmdline/apt-cache.cc:1357
+ #: cmdline/apt-cache.cc:1508
  #, c-format
  msgid "Unable to locate package %s"
  msgstr ""
  
- #: cmdline/apt-cache.cc:247
+ #: cmdline/apt-cache.cc:232
  msgid "Total package names : "
  msgstr ""
  
- #: cmdline/apt-cache.cc:287
+ #: cmdline/apt-cache.cc:272
  msgid "  Normal packages: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:288
+ #: cmdline/apt-cache.cc:273
  msgid "  Pure virtual packages: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:289
+ #: cmdline/apt-cache.cc:274
  msgid "  Single virtual packages: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:290
+ #: cmdline/apt-cache.cc:275
  msgid "  Mixed virtual packages: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:291
+ #: cmdline/apt-cache.cc:276
  msgid "  Missing: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:293
+ #: cmdline/apt-cache.cc:278
  msgid "Total distinct versions: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:295
- msgid "Total Distinct Descriptions: "
- msgstr ""
- #: cmdline/apt-cache.cc:297
+ #: cmdline/apt-cache.cc:280
  msgid "Total dependencies: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:300
+ #: cmdline/apt-cache.cc:283
  msgid "Total ver/file relations: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:302
- msgid "Total Desc/File relations: "
- msgstr ""
- #: cmdline/apt-cache.cc:304
+ #: cmdline/apt-cache.cc:285
  msgid "Total Provides mappings: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:316
+ #: cmdline/apt-cache.cc:297
  msgid "Total globbed strings: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:330
+ #: cmdline/apt-cache.cc:311
  msgid "Total dependency version space: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:335
+ #: cmdline/apt-cache.cc:316
  msgid "Total slack space: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:343
+ #: cmdline/apt-cache.cc:324
  msgid "Total space accounted for: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:471 cmdline/apt-cache.cc:1218
+ #: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189
  #, c-format
  msgid "Package file %s is out of sync."
  msgstr ""
  
- #: cmdline/apt-cache.cc:1293
+ #: cmdline/apt-cache.cc:1231
  msgid "You must give exactly one pattern"
  msgstr ""
  
- #: cmdline/apt-cache.cc:1447
+ #: cmdline/apt-cache.cc:1385
  msgid "No packages found"
  msgstr ""
  
- #: cmdline/apt-cache.cc:1524
+ #: cmdline/apt-cache.cc:1462
  msgid "Package files:"
  msgstr ""
  
- #: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
+ #: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
  msgid "Cache is out of sync, can't x-ref a package file"
  msgstr ""
  
- #: cmdline/apt-cache.cc:1532
+ #: cmdline/apt-cache.cc:1470
  #, c-format
  msgid "%4i %s\n"
  msgstr ""
  
  #. Show any packages have explicit pins
- #: cmdline/apt-cache.cc:1544
+ #: cmdline/apt-cache.cc:1482
  msgid "Pinned packages:"
  msgstr ""
  
- #: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
+ #: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535
  msgid "(not found)"
  msgstr ""
  
  #. Installed version
- #: cmdline/apt-cache.cc:1577
+ #: cmdline/apt-cache.cc:1515
  msgid "  Installed: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
+ #: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525
  msgid "(none)"
  msgstr ""
  
  #. Candidate Version
- #: cmdline/apt-cache.cc:1584
+ #: cmdline/apt-cache.cc:1522
  msgid "  Candidate: "
  msgstr ""
  
- #: cmdline/apt-cache.cc:1594
+ #: cmdline/apt-cache.cc:1532
  msgid "  Package pin: "
  msgstr ""
  
  #. Show the priority tables
- #: cmdline/apt-cache.cc:1603
+ #: cmdline/apt-cache.cc:1541
  msgid "  Version table:"
  msgstr ""
  
- #: cmdline/apt-cache.cc:1618
+ #: cmdline/apt-cache.cc:1556
  #, c-format
  msgid "       %4i %s\n"
  msgstr ""
  
- #: cmdline/apt-cache.cc:1714 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
- #: cmdline/apt-extracttemplates.cc:225 cmdline/apt-get.cc:2476
- #: cmdline/apt-sortpkgs.cc:144
+ #: cmdline/apt-cache.cc:1652 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+ #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
 -#: cmdline/apt-get.cc:2389 cmdline/apt-sortpkgs.cc:144
++#: cmdline/apt-get.cc:2462 cmdline/apt-sortpkgs.cc:144
  #, c-format
  msgid "%s %s for %s %s compiled on %s %s\n"
  msgstr ""
  
- #: cmdline/apt-cache.cc:1721
+ #: cmdline/apt-cache.cc:1659
  msgid ""
  "Usage: apt-cache [options] command\n"
  "       apt-cache [options] add file1 [file2 ...]\n"
@@@ -251,7 -243,7 +243,8 @@@ msgid "
  "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
  msgstr ""
  
- #: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:819
 -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
++#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:714
++#: apt-pkg/pkgcachegen.cc:819
  #, c-format
  msgid "Unable to write to %s"
  msgstr ""
  msgid "Cannot get debconf version. Is debconf installed?"
  msgstr ""
  
 -#: cmdline/apt-get.cc:120
+ #: ftparchive/apt-ftparchive.cc:167 ftparchive/apt-ftparchive.cc:341
+ msgid "Package extension list is too long"
+ msgstr ""
+ #: ftparchive/apt-ftparchive.cc:169 ftparchive/apt-ftparchive.cc:183
+ #: ftparchive/apt-ftparchive.cc:206 ftparchive/apt-ftparchive.cc:256
+ #: ftparchive/apt-ftparchive.cc:270 ftparchive/apt-ftparchive.cc:292
+ #, c-format
+ msgid "Error processing directory %s"
+ msgstr ""
+ #: ftparchive/apt-ftparchive.cc:254
+ msgid "Source extension list is too long"
+ msgstr ""
+ #: ftparchive/apt-ftparchive.cc:371
+ msgid "Error writing header to contents file"
+ msgstr ""
+ #: ftparchive/apt-ftparchive.cc:401
+ #, c-format
+ msgid "Error processing contents %s"
+ msgstr ""
+ #: ftparchive/apt-ftparchive.cc:556
+ msgid ""
+ "Usage: apt-ftparchive [options] command\n"
+ "Commands: packages binarypath [overridefile [pathprefix]]\n"
+ "          sources srcpath [overridefile [pathprefix]]\n"
+ "          contents path\n"
+ "          release path\n"
+ "          generate config [groups]\n"
+ "          clean config\n"
+ "\n"
+ "apt-ftparchive generates index files for Debian archives. It supports\n"
+ "many styles of generation from fully automated to functional replacements\n"
+ "for dpkg-scanpackages and dpkg-scansources\n"
+ "\n"
+ "apt-ftparchive generates Package files from a tree of .debs. The\n"
+ "Package file contains the contents of all the control fields from\n"
+ "each package as well as the MD5 hash and filesize. An override file\n"
+ "is supported to force the value of Priority and Section.\n"
+ "\n"
+ "Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n"
+ "The --source-override option can be used to specify a src override file\n"
+ "\n"
+ "The 'packages' and 'sources' command should be run in the root of the\n"
+ "tree. BinaryPath should point to the base of the recursive search and \n"
+ "override file should contain the override flags. Pathprefix is\n"
+ "appended to the filename fields if present. Example usage from the \n"
+ "Debian archive:\n"
+ "   apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
+ "               dists/potato/main/binary-i386/Packages\n"
+ "\n"
+ "Options:\n"
+ "  -h    This help text\n"
+ "  --md5 Control MD5 generation\n"
+ "  -s=?  Source override file\n"
+ "  -q    Quiet\n"
+ "  -d=?  Select the optional caching database\n"
+ "  --no-delink Enable delinking debug mode\n"
+ "  --contents  Control contents file generation\n"
+ "  -c=?  Read this configuration file\n"
+ "  -o=?  Set an arbitrary configuration option"
+ msgstr ""
+ #: ftparchive/apt-ftparchive.cc:762
+ msgid "No selections matched"
+ msgstr ""
+ #: ftparchive/apt-ftparchive.cc:835
+ #, c-format
+ msgid "Some files are missing in the package file group `%s'"
+ msgstr ""
+ #: ftparchive/cachedb.cc:47
+ #, c-format
+ msgid "DB was corrupted, file renamed to %s.old"
+ msgstr ""
+ #: ftparchive/cachedb.cc:65
+ #, c-format
+ msgid "DB is old, attempting to upgrade %s"
+ msgstr ""
+ #: ftparchive/cachedb.cc:76
+ msgid ""
+ "DB format is invalid. If you upgraded from a older version of apt, please "
+ "remove and re-create the database."
+ msgstr ""
+ #: ftparchive/cachedb.cc:81
+ #, c-format
+ msgid "Unable to open DB file %s: %s"
+ msgstr ""
+ #: ftparchive/cachedb.cc:127 apt-inst/extract.cc:181 apt-inst/extract.cc:193
+ #: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:272
+ #, c-format
+ msgid "Failed to stat %s"
+ msgstr ""
+ #: ftparchive/cachedb.cc:242
+ msgid "Archive has no control record"
+ msgstr ""
+ #: ftparchive/cachedb.cc:448
+ msgid "Unable to get a cursor"
+ msgstr ""
+ #: ftparchive/writer.cc:79
+ #, c-format
+ msgid "W: Unable to read directory %s\n"
+ msgstr ""
+ #: ftparchive/writer.cc:84
+ #, c-format
+ msgid "W: Unable to stat %s\n"
+ msgstr ""
+ #: ftparchive/writer.cc:135
+ msgid "E: "
+ msgstr ""
+ #: ftparchive/writer.cc:137
+ msgid "W: "
+ msgstr ""
+ #: ftparchive/writer.cc:144
+ msgid "E: Errors apply to file "
+ msgstr ""
+ #: ftparchive/writer.cc:161 ftparchive/writer.cc:191
+ #, c-format
+ msgid "Failed to resolve %s"
+ msgstr ""
+ #: ftparchive/writer.cc:173
+ msgid "Tree walking failed"
+ msgstr ""
+ #: ftparchive/writer.cc:198
+ #, c-format
+ msgid "Failed to open %s"
+ msgstr ""
+ #: ftparchive/writer.cc:257
+ #, c-format
+ msgid " DeLink %s [%s]\n"
+ msgstr ""
+ #: ftparchive/writer.cc:265
+ #, c-format
+ msgid "Failed to readlink %s"
+ msgstr ""
+ #: ftparchive/writer.cc:269
+ #, c-format
+ msgid "Failed to unlink %s"
+ msgstr ""
+ #: ftparchive/writer.cc:276
+ #, c-format
+ msgid "*** Failed to link %s to %s"
+ msgstr ""
+ #: ftparchive/writer.cc:286
+ #, c-format
+ msgid " DeLink limit of %sB hit.\n"
+ msgstr ""
+ #: ftparchive/writer.cc:390
+ msgid "Archive had no package field"
+ msgstr ""
+ #: ftparchive/writer.cc:398 ftparchive/writer.cc:613
+ #, c-format
+ msgid "  %s has no override entry\n"
+ msgstr ""
+ #: ftparchive/writer.cc:443 ftparchive/writer.cc:701
+ #, c-format
+ msgid "  %s maintainer is %s not %s\n"
+ msgstr ""
+ #: ftparchive/writer.cc:623
+ #, c-format
+ msgid "  %s has no source override entry\n"
+ msgstr ""
+ #: ftparchive/writer.cc:627
+ #, c-format
+ msgid "  %s has no binary override entry either\n"
+ msgstr ""
+ #: ftparchive/contents.cc:317
+ #, c-format
+ msgid "Internal error, could not locate member %s"
+ msgstr ""
+ #: ftparchive/contents.cc:353 ftparchive/contents.cc:384
+ msgid "realloc - Failed to allocate memory"
+ msgstr ""
+ #: ftparchive/override.cc:38 ftparchive/override.cc:146
+ #, c-format
+ msgid "Unable to open %s"
+ msgstr ""
+ #: ftparchive/override.cc:64 ftparchive/override.cc:170
+ #, c-format
+ msgid "Malformed override %s line %lu #1"
+ msgstr ""
+ #: ftparchive/override.cc:78 ftparchive/override.cc:182
+ #, c-format
+ msgid "Malformed override %s line %lu #2"
+ msgstr ""
+ #: ftparchive/override.cc:92 ftparchive/override.cc:195
+ #, c-format
+ msgid "Malformed override %s line %lu #3"
+ msgstr ""
+ #: ftparchive/override.cc:131 ftparchive/override.cc:205
+ #, c-format
+ msgid "Failed to read the override file %s"
+ msgstr ""
+ #: ftparchive/multicompress.cc:75
+ #, c-format
+ msgid "Unknown compression algorithm '%s'"
+ msgstr ""
+ #: ftparchive/multicompress.cc:105
+ #, c-format
+ msgid "Compressed output %s needs a compression set"
+ msgstr ""
+ #: ftparchive/multicompress.cc:172 methods/rsh.cc:91
+ msgid "Failed to create IPC pipe to subprocess"
+ msgstr ""
+ #: ftparchive/multicompress.cc:198
+ msgid "Failed to create FILE*"
+ msgstr ""
+ #: ftparchive/multicompress.cc:201
+ msgid "Failed to fork"
+ msgstr ""
+ #: ftparchive/multicompress.cc:215
+ msgid "Compress child"
+ msgstr ""
+ #: ftparchive/multicompress.cc:238
+ #, c-format
+ msgid "Internal error, failed to create %s"
+ msgstr ""
+ #: ftparchive/multicompress.cc:289
+ msgid "Failed to create subprocess IPC"
+ msgstr ""
+ #: ftparchive/multicompress.cc:324
+ msgid "Failed to exec compressor "
+ msgstr ""
+ #: ftparchive/multicompress.cc:363
+ msgid "decompressor"
+ msgstr ""
+ #: ftparchive/multicompress.cc:406
+ msgid "IO to subprocess/file failed"
+ msgstr ""
+ #: ftparchive/multicompress.cc:458
+ msgid "Failed to read while computing MD5"
+ msgstr ""
+ #: ftparchive/multicompress.cc:475
+ #, c-format
+ msgid "Problem unlinking %s"
+ msgstr ""
+ #: ftparchive/multicompress.cc:490 apt-inst/extract.cc:188
+ #, c-format
+ msgid "Failed to rename %s to %s"
+ msgstr ""
 +#: cmdline/apt-get.cc:121
  msgid "Y"
  msgstr ""
  
- #: cmdline/apt-get.cc:143 cmdline/apt-get.cc:1588
 -#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1508
++#: cmdline/apt-get.cc:143 cmdline/apt-get.cc:1574
  #, c-format
  msgid "Regex compilation error - %s"
  msgstr ""
  
 -#: cmdline/apt-get.cc:237
 +#: cmdline/apt-get.cc:238
  msgid "The following packages have unmet dependencies:"
  msgstr ""
  
 -#: cmdline/apt-get.cc:327
 +#: cmdline/apt-get.cc:328
  #, c-format
  msgid "but %s is installed"
  msgstr ""
  
 -#: cmdline/apt-get.cc:329
 +#: cmdline/apt-get.cc:330
  #, c-format
  msgid "but %s is to be installed"
  msgstr ""
  
 -#: cmdline/apt-get.cc:336
 +#: cmdline/apt-get.cc:337
  msgid "but it is not installable"
  msgstr ""
  
 -#: cmdline/apt-get.cc:338
 +#: cmdline/apt-get.cc:339
  msgid "but it is a virtual package"
  msgstr ""
  
 -#: cmdline/apt-get.cc:341
 +#: cmdline/apt-get.cc:342
  msgid "but it is not installed"
  msgstr ""
  
 -#: cmdline/apt-get.cc:341
 +#: cmdline/apt-get.cc:342
  msgid "but it is not going to be installed"
  msgstr ""
  
 -#: cmdline/apt-get.cc:346
 +#: cmdline/apt-get.cc:347
  msgid " or"
  msgstr ""
  
 -#: cmdline/apt-get.cc:375
 +#: cmdline/apt-get.cc:376
  msgid "The following NEW packages will be installed:"
  msgstr ""
  
 -#: cmdline/apt-get.cc:401
 +#: cmdline/apt-get.cc:402
  msgid "The following packages will be REMOVED:"
  msgstr ""
  
 -#: cmdline/apt-get.cc:423
 +#: cmdline/apt-get.cc:424
  msgid "The following packages have been kept back:"
  msgstr ""
  
 -#: cmdline/apt-get.cc:444
 +#: cmdline/apt-get.cc:445
  msgid "The following packages will be upgraded:"
  msgstr ""
  
 -#: cmdline/apt-get.cc:465
 +#: cmdline/apt-get.cc:466
  msgid "The following packages will be DOWNGRADED:"
  msgstr ""
  
 -#: cmdline/apt-get.cc:485
 +#: cmdline/apt-get.cc:486
  msgid "The following held packages will be changed:"
  msgstr ""
  
 -#: cmdline/apt-get.cc:538
 +#: cmdline/apt-get.cc:539
  #, c-format
  msgid "%s (due to %s) "
  msgstr ""
  
 -#: cmdline/apt-get.cc:546
 +#: cmdline/apt-get.cc:547
  msgid ""
  "WARNING: The following essential packages will be removed.\n"
  "This should NOT be done unless you know exactly what you are doing!"
  msgstr ""
  
 -#: cmdline/apt-get.cc:577
 +#: cmdline/apt-get.cc:578
  #, c-format
  msgid "%lu upgraded, %lu newly installed, "
  msgstr ""
  
 -#: cmdline/apt-get.cc:581
 +#: cmdline/apt-get.cc:582
  #, c-format
  msgid "%lu reinstalled, "
  msgstr ""
  
 -#: cmdline/apt-get.cc:583
 +#: cmdline/apt-get.cc:584
  #, c-format
  msgid "%lu downgraded, "
  msgstr ""
  
 -#: cmdline/apt-get.cc:585
 +#: cmdline/apt-get.cc:586
  #, c-format
  msgid "%lu to remove and %lu not upgraded.\n"
  msgstr ""
  
 -#: cmdline/apt-get.cc:589
 +#: cmdline/apt-get.cc:590
  #, c-format
  msgid "%lu not fully installed or removed.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:664
 -#: cmdline/apt-get.cc:649
++#: cmdline/apt-get.cc:650
  msgid "Correcting dependencies..."
  msgstr ""
  
- #: cmdline/apt-get.cc:667
 -#: cmdline/apt-get.cc:652
++#: cmdline/apt-get.cc:653
  msgid " failed."
  msgstr ""
  
- #: cmdline/apt-get.cc:670
 -#: cmdline/apt-get.cc:655
++#: cmdline/apt-get.cc:656
  msgid "Unable to correct dependencies"
  msgstr ""
  
- #: cmdline/apt-get.cc:673
 -#: cmdline/apt-get.cc:658
++#: cmdline/apt-get.cc:659
  msgid "Unable to minimize the upgrade set"
  msgstr ""
  
- #: cmdline/apt-get.cc:675
 -#: cmdline/apt-get.cc:660
++#: cmdline/apt-get.cc:661
  msgid " Done"
  msgstr ""
  
- #: cmdline/apt-get.cc:679
 -#: cmdline/apt-get.cc:664
++#: cmdline/apt-get.cc:665
  msgid "You might want to run `apt-get -f install' to correct these."
  msgstr ""
  
- #: cmdline/apt-get.cc:682
 -#: cmdline/apt-get.cc:667
++#: cmdline/apt-get.cc:668
  msgid "Unmet dependencies. Try using -f."
  msgstr ""
  
- #: cmdline/apt-get.cc:704
 -#: cmdline/apt-get.cc:689
++#: cmdline/apt-get.cc:690
  msgid "WARNING: The following packages cannot be authenticated!"
  msgstr ""
  
- #: cmdline/apt-get.cc:708
 -#: cmdline/apt-get.cc:693
++#: cmdline/apt-get.cc:694
  msgid "Authentication warning overridden.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:715
 -#: cmdline/apt-get.cc:700
++#: cmdline/apt-get.cc:701
  msgid "Install these packages without verification [y/N]? "
  msgstr ""
  
- #: cmdline/apt-get.cc:717
 -#: cmdline/apt-get.cc:702
++#: cmdline/apt-get.cc:703
  msgid "Some packages could not be authenticated"
  msgstr ""
  
- #: cmdline/apt-get.cc:726 cmdline/apt-get.cc:873
 -#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
++#: cmdline/apt-get.cc:712 cmdline/apt-get.cc:859
  msgid "There are problems and -y was used without --force-yes"
  msgstr ""
  
- #: cmdline/apt-get.cc:770
 -#: cmdline/apt-get.cc:755
++#: cmdline/apt-get.cc:756
  msgid "Internal error, InstallPackages was called with broken packages!"
  msgstr ""
  
- #: cmdline/apt-get.cc:779
 -#: cmdline/apt-get.cc:764
++#: cmdline/apt-get.cc:765
  msgid "Packages need to be removed but remove is disabled."
  msgstr ""
  
- #: cmdline/apt-get.cc:790
 -#: cmdline/apt-get.cc:775
++#: cmdline/apt-get.cc:776
  msgid "Internal error, Ordering didn't finish"
  msgstr ""
  
- #: cmdline/apt-get.cc:806 cmdline/apt-get.cc:1907 cmdline/apt-get.cc:1940
 -#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1820 cmdline/apt-get.cc:1853
++#: cmdline/apt-get.cc:792 cmdline/apt-get.cc:1893 cmdline/apt-get.cc:1926
  msgid "Unable to lock the download directory"
  msgstr ""
  
- #: cmdline/apt-get.cc:816 cmdline/apt-get.cc:1988 cmdline/apt-get.cc:2224
 -#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1901 cmdline/apt-get.cc:2137
++#: cmdline/apt-get.cc:802 cmdline/apt-get.cc:1974 cmdline/apt-get.cc:2210
  #: apt-pkg/cachefile.cc:67
  msgid "The list of sources could not be read."
  msgstr ""
  
- #: cmdline/apt-get.cc:831
 -#: cmdline/apt-get.cc:816
++#: cmdline/apt-get.cc:817
  msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
  msgstr ""
  
- #: cmdline/apt-get.cc:836
 -#: cmdline/apt-get.cc:821
++#: cmdline/apt-get.cc:822
  #, c-format
  msgid "Need to get %sB/%sB of archives.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:839
 -#: cmdline/apt-get.cc:824
++#: cmdline/apt-get.cc:825
  #, c-format
  msgid "Need to get %sB of archives.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:844
 -#: cmdline/apt-get.cc:829
++#: cmdline/apt-get.cc:830
  #, c-format
  msgid "After unpacking %sB of additional disk space will be used.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:847
 -#: cmdline/apt-get.cc:832
++#: cmdline/apt-get.cc:833
  #, c-format
  msgid "After unpacking %sB disk space will be freed.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:861 cmdline/apt-get.cc:2078
 -#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1991
++#: cmdline/apt-get.cc:847 cmdline/apt-get.cc:2064
  #, c-format
  msgid "Couldn't determine free space in %s"
  msgstr ""
  
- #: cmdline/apt-get.cc:864
 -#: cmdline/apt-get.cc:849
++#: cmdline/apt-get.cc:850
  #, c-format
  msgid "You don't have enough free space in %s."
  msgstr ""
  
- #: cmdline/apt-get.cc:879 cmdline/apt-get.cc:899
 -#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
++#: cmdline/apt-get.cc:865 cmdline/apt-get.cc:885
  msgid "Trivial Only specified but this is not a trivial operation."
  msgstr ""
  
- #: cmdline/apt-get.cc:881
 -#: cmdline/apt-get.cc:866
++#: cmdline/apt-get.cc:867
  msgid "Yes, do as I say!"
  msgstr ""
  
- #: cmdline/apt-get.cc:883
 -#: cmdline/apt-get.cc:868
++#: cmdline/apt-get.cc:869
  #, c-format
  msgid ""
  "You are about to do something potentially harmful.\n"
  " ?] "
  msgstr ""
  
- #: cmdline/apt-get.cc:889 cmdline/apt-get.cc:908
 -#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
++#: cmdline/apt-get.cc:875 cmdline/apt-get.cc:894
  msgid "Abort."
  msgstr ""
  
- #: cmdline/apt-get.cc:904
 -#: cmdline/apt-get.cc:889
++#: cmdline/apt-get.cc:890
  msgid "Do you want to continue [Y/n]? "
  msgstr ""
  
- #: cmdline/apt-get.cc:976 cmdline/apt-get.cc:1383 cmdline/apt-get.cc:2121
 -#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1367 cmdline/apt-get.cc:2034
++#: cmdline/apt-get.cc:962 cmdline/apt-get.cc:1369 cmdline/apt-get.cc:2107
  #, c-format
  msgid "Failed to fetch %s  %s\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:994
 -#: cmdline/apt-get.cc:979
++#: cmdline/apt-get.cc:980
  msgid "Some files failed to download"
  msgstr ""
  
- #: cmdline/apt-get.cc:995 cmdline/apt-get.cc:2130
 -#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2043
++#: cmdline/apt-get.cc:981 cmdline/apt-get.cc:2116
  msgid "Download complete and in download only mode"
  msgstr ""
  
- #: cmdline/apt-get.cc:1001
 -#: cmdline/apt-get.cc:986
++#: cmdline/apt-get.cc:987
  msgid ""
  "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
  "missing?"
  msgstr ""
  
- #: cmdline/apt-get.cc:1005
 -#: cmdline/apt-get.cc:990
++#: cmdline/apt-get.cc:991
  msgid "--fix-missing and media swapping is not currently supported"
  msgstr ""
  
- #: cmdline/apt-get.cc:1010
 -#: cmdline/apt-get.cc:995
++#: cmdline/apt-get.cc:996
  msgid "Unable to correct missing packages."
  msgstr ""
  
- #: cmdline/apt-get.cc:1011
 -#: cmdline/apt-get.cc:996
++#: cmdline/apt-get.cc:997
  msgid "Aborting install."
  msgstr ""
  
- #: cmdline/apt-get.cc:1045
 -#: cmdline/apt-get.cc:1030
++#: cmdline/apt-get.cc:1031
  #, c-format
  msgid "Note, selecting %s instead of %s\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1055
 -#: cmdline/apt-get.cc:1040
++#: cmdline/apt-get.cc:1041
  #, c-format
  msgid "Skipping %s, it is already installed and upgrade is not set.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1073
 -#: cmdline/apt-get.cc:1058
++#: cmdline/apt-get.cc:1059
  #, c-format
  msgid "Package %s is not installed, so not removed\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1084
 -#: cmdline/apt-get.cc:1069
++#: cmdline/apt-get.cc:1070
  #, c-format
  msgid "Package %s is a virtual package provided by:\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1096
 -#: cmdline/apt-get.cc:1081
++#: cmdline/apt-get.cc:1082
  msgid " [Installed]"
  msgstr ""
  
- #: cmdline/apt-get.cc:1101
 -#: cmdline/apt-get.cc:1086
++#: cmdline/apt-get.cc:1087
  msgid "You should explicitly select one to install."
  msgstr ""
  
- #: cmdline/apt-get.cc:1106
 -#: cmdline/apt-get.cc:1091
++#: cmdline/apt-get.cc:1092
  #, c-format
  msgid ""
  "Package %s is not available, but is referred to by another package.\n"
  "is only available from another source\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1125
 -#: cmdline/apt-get.cc:1110
++#: cmdline/apt-get.cc:1111
  msgid "However the following packages replace it:"
  msgstr ""
  
- #: cmdline/apt-get.cc:1128
 -#: cmdline/apt-get.cc:1113
++#: cmdline/apt-get.cc:1114
  #, c-format
  msgid "Package %s has no installation candidate"
  msgstr ""
  
- #: cmdline/apt-get.cc:1148
 -#: cmdline/apt-get.cc:1133
++#: cmdline/apt-get.cc:1134
  #, c-format
  msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1156
 -#: cmdline/apt-get.cc:1141
++#: cmdline/apt-get.cc:1142
  #, c-format
  msgid "%s is already the newest version.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1185
 -#: cmdline/apt-get.cc:1170
++#: cmdline/apt-get.cc:1171
  #, c-format
  msgid "Release '%s' for '%s' was not found"
  msgstr ""
  
- #: cmdline/apt-get.cc:1187
 -#: cmdline/apt-get.cc:1172
++#: cmdline/apt-get.cc:1173
  #, c-format
  msgid "Version '%s' for '%s' was not found"
  msgstr ""
  
- #: cmdline/apt-get.cc:1193
 -#: cmdline/apt-get.cc:1178
++#: cmdline/apt-get.cc:1179
  #, c-format
  msgid "Selected version %s (%s) for %s\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1330
 -#: cmdline/apt-get.cc:1315
++#: cmdline/apt-get.cc:1316
  msgid "The update command takes no arguments"
  msgstr ""
  
- #: cmdline/apt-get.cc:1343
 -#: cmdline/apt-get.cc:1328
++#: cmdline/apt-get.cc:1329
  msgid "Unable to lock the list directory"
  msgstr ""
  
- #: cmdline/apt-get.cc:1410 cmdline/apt-get.cc:1412
 -#: cmdline/apt-get.cc:1386
++#: cmdline/apt-get.cc:1396 cmdline/apt-get.cc:1398
  msgid ""
  "Some index files failed to download, they have been ignored, or old ones "
  "used instead."
  msgstr ""
  
- #: cmdline/apt-get.cc:1426
 -#: cmdline/apt-get.cc:1405
++#: cmdline/apt-get.cc:1412
 +msgid "We are not supposed to delete stuff, can't start AutoRemover"
 +msgstr ""
 +
- #: cmdline/apt-get.cc:1451
++#: cmdline/apt-get.cc:1437
 +msgid ""
 +"Hmm, seems like the AutoRemover destroyed something which really\n"
 +"shouldn't happen. Please file a bug report against apt."
 +msgstr ""
 +
- #: cmdline/apt-get.cc:1454 cmdline/apt-get.cc:1656
++#: cmdline/apt-get.cc:1440 cmdline/apt-get.cc:1642
 +msgid "The following information may help to resolve the situation:"
 +msgstr ""
 +
- #: cmdline/apt-get.cc:1458
++#: cmdline/apt-get.cc:1444
 +msgid "Internal Error, AutoRemover broke stuff"
 +msgstr ""
 +
- #: cmdline/apt-get.cc:1477
++#: cmdline/apt-get.cc:1463
  msgid "Internal error, AllUpgrade broke stuff"
  msgstr ""
  
- #: cmdline/apt-get.cc:1575 cmdline/apt-get.cc:1611
 -#: cmdline/apt-get.cc:1495 cmdline/apt-get.cc:1531
++#: cmdline/apt-get.cc:1561 cmdline/apt-get.cc:1597
  #, c-format
  msgid "Couldn't find package %s"
  msgstr ""
  
- #: cmdline/apt-get.cc:1598
 -#: cmdline/apt-get.cc:1518
++#: cmdline/apt-get.cc:1584
  #, c-format
  msgid "Note, selecting %s for regex '%s'\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:1628
 -#: cmdline/apt-get.cc:1548
++#: cmdline/apt-get.cc:1614
  msgid "You might want to run `apt-get -f install' to correct these:"
  msgstr ""
  
- #: cmdline/apt-get.cc:1631
 -#: cmdline/apt-get.cc:1551
++#: cmdline/apt-get.cc:1617
  msgid ""
  "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
  "solution)."
  msgstr ""
  
- #: cmdline/apt-get.cc:1643
 -#: cmdline/apt-get.cc:1563
++#: cmdline/apt-get.cc:1629
  msgid ""
  "Some packages could not be installed. This may mean that you have\n"
  "requested an impossible situation or if you are using the unstable\n"
  "or been moved out of Incoming."
  msgstr ""
  
- #: cmdline/apt-get.cc:1651
 -#: cmdline/apt-get.cc:1571
++#: cmdline/apt-get.cc:1637
  msgid ""
  "Since you only requested a single operation it is extremely likely that\n"
  "the package is simply not installable and a bug report against\n"
  "that package should be filed."
  msgstr ""
  
- #: cmdline/apt-get.cc:1659
 -#: cmdline/apt-get.cc:1576
 -msgid "The following information may help to resolve the situation:"
 -msgstr ""
 -
 -#: cmdline/apt-get.cc:1579
++#: cmdline/apt-get.cc:1645
  msgid "Broken packages"
  msgstr ""
  
- #: cmdline/apt-get.cc:1690
 -#: cmdline/apt-get.cc:1605
++#: cmdline/apt-get.cc:1676
  msgid "The following extra packages will be installed:"
  msgstr ""
  
- #: cmdline/apt-get.cc:1779
 -#: cmdline/apt-get.cc:1694
++#: cmdline/apt-get.cc:1765
  msgid "Suggested packages:"
  msgstr ""
  
- #: cmdline/apt-get.cc:1780
 -#: cmdline/apt-get.cc:1695
++#: cmdline/apt-get.cc:1766
  msgid "Recommended packages:"
  msgstr ""
  
- #: cmdline/apt-get.cc:1800
 -#: cmdline/apt-get.cc:1715
++#: cmdline/apt-get.cc:1786
  msgid "Calculating upgrade... "
  msgstr ""
  
- #: cmdline/apt-get.cc:1803 methods/ftp.cc:702 methods/connect.cc:101
 -#: cmdline/apt-get.cc:1718 methods/ftp.cc:702 methods/connect.cc:101
++#: cmdline/apt-get.cc:1789 methods/ftp.cc:702 methods/connect.cc:101
  msgid "Failed"
  msgstr ""
  
- #: cmdline/apt-get.cc:1808
 -#: cmdline/apt-get.cc:1723
++#: cmdline/apt-get.cc:1794
  msgid "Done"
  msgstr ""
  
- #: cmdline/apt-get.cc:1875 cmdline/apt-get.cc:1883
 -#: cmdline/apt-get.cc:1788 cmdline/apt-get.cc:1796
++#: cmdline/apt-get.cc:1861 cmdline/apt-get.cc:1869
  msgid "Internal error, problem resolver broke stuff"
  msgstr ""
  
- #: cmdline/apt-get.cc:1983
 -#: cmdline/apt-get.cc:1896
++#: cmdline/apt-get.cc:1969
  msgid "Must specify at least one package to fetch source for"
  msgstr ""
  
- #: cmdline/apt-get.cc:2013 cmdline/apt-get.cc:2242
 -#: cmdline/apt-get.cc:1926 cmdline/apt-get.cc:2155
++#: cmdline/apt-get.cc:1999 cmdline/apt-get.cc:2228
  #, c-format
  msgid "Unable to find a source package for %s"
  msgstr ""
  
- #: cmdline/apt-get.cc:2057
 -#: cmdline/apt-get.cc:1970
++#: cmdline/apt-get.cc:2043
  #, c-format
  msgid "Skipping already downloaded file '%s'\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2081
 -#: cmdline/apt-get.cc:1994
++#: cmdline/apt-get.cc:2067
  #, c-format
  msgid "You don't have enough free space in %s"
  msgstr ""
  
- #: cmdline/apt-get.cc:2086
 -#: cmdline/apt-get.cc:1999
++#: cmdline/apt-get.cc:2072
  #, c-format
  msgid "Need to get %sB/%sB of source archives.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2089
 -#: cmdline/apt-get.cc:2002
++#: cmdline/apt-get.cc:2075
  #, c-format
  msgid "Need to get %sB of source archives.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2095
 -#: cmdline/apt-get.cc:2008
++#: cmdline/apt-get.cc:2081
  #, c-format
  msgid "Fetch source %s\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2126
 -#: cmdline/apt-get.cc:2039
++#: cmdline/apt-get.cc:2112
  msgid "Failed to fetch some archives."
  msgstr ""
  
- #: cmdline/apt-get.cc:2154
 -#: cmdline/apt-get.cc:2067
++#: cmdline/apt-get.cc:2140
  #, c-format
  msgid "Skipping unpack of already unpacked source in %s\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2166
 -#: cmdline/apt-get.cc:2079
++#: cmdline/apt-get.cc:2152
  #, c-format
  msgid "Unpack command '%s' failed.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2167
 -#: cmdline/apt-get.cc:2080
++#: cmdline/apt-get.cc:2153
  #, c-format
  msgid "Check if the 'dpkg-dev' package is installed.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2184
 -#: cmdline/apt-get.cc:2097
++#: cmdline/apt-get.cc:2170
  #, c-format
  msgid "Build command '%s' failed.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2203
 -#: cmdline/apt-get.cc:2116
++#: cmdline/apt-get.cc:2189
  msgid "Child process failed"
  msgstr ""
  
- #: cmdline/apt-get.cc:2219
 -#: cmdline/apt-get.cc:2132
++#: cmdline/apt-get.cc:2205
  msgid "Must specify at least one package to check builddeps for"
  msgstr ""
  
- #: cmdline/apt-get.cc:2247
 -#: cmdline/apt-get.cc:2160
++#: cmdline/apt-get.cc:2233
  #, c-format
  msgid "Unable to get build-dependency information for %s"
  msgstr ""
  
- #: cmdline/apt-get.cc:2267
 -#: cmdline/apt-get.cc:2180
++#: cmdline/apt-get.cc:2253
  #, c-format
  msgid "%s has no build depends.\n"
  msgstr ""
  
- #: cmdline/apt-get.cc:2319
 -#: cmdline/apt-get.cc:2232
++#: cmdline/apt-get.cc:2305
  #, c-format
  msgid ""
  "%s dependency for %s cannot be satisfied because the package %s cannot be "
  "found"
  msgstr ""
  
- #: cmdline/apt-get.cc:2371
 -#: cmdline/apt-get.cc:2284
++#: cmdline/apt-get.cc:2357
  #, c-format
  msgid ""
  "%s dependency for %s cannot be satisfied because no available versions of "
  "package %s can satisfy version requirements"
  msgstr ""
  
- #: cmdline/apt-get.cc:2406
 -#: cmdline/apt-get.cc:2319
++#: cmdline/apt-get.cc:2392
  #, c-format
  msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
  msgstr ""
  
- #: cmdline/apt-get.cc:2431
 -#: cmdline/apt-get.cc:2344
++#: cmdline/apt-get.cc:2417
  #, c-format
  msgid "Failed to satisfy %s dependency for %s: %s"
  msgstr ""
  
- #: cmdline/apt-get.cc:2445
 -#: cmdline/apt-get.cc:2358
++#: cmdline/apt-get.cc:2431
  #, c-format
  msgid "Build-dependencies for %s could not be satisfied."
  msgstr ""
  
- #: cmdline/apt-get.cc:2449
 -#: cmdline/apt-get.cc:2362
++#: cmdline/apt-get.cc:2435
  msgid "Failed to process build dependencies"
  msgstr ""
  
- #: cmdline/apt-get.cc:2481
 -#: cmdline/apt-get.cc:2394
++#: cmdline/apt-get.cc:2467
  msgid "Supported modules:"
  msgstr ""
  
- #: cmdline/apt-get.cc:2522
 -#: cmdline/apt-get.cc:2435
++#: cmdline/apt-get.cc:2508
  msgid ""
  "Usage: apt-get [options] command\n"
  "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@@ -1037,17 -1305,6 +1320,6 @@@ msgstr "
  msgid "The diversion path is too long"
  msgstr ""
  
- #: apt-inst/extract.cc:181 apt-inst/extract.cc:193 apt-inst/extract.cc:210
- #: apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:272
- #, c-format
- msgid "Failed to stat %s"
- msgstr ""
- #: apt-inst/extract.cc:188
- #, c-format
- msgid "Failed to rename %s to %s"
- msgstr ""
  #: apt-inst/extract.cc:243
  #, c-format
  msgid "The directory %s is being replaced by a non-directory"
@@@ -1103,9 -1360,9 +1375,11 @@@ msgid "The info and temp directories ne
  msgstr ""
  
  #. Build the status cache
- #: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:752
 -#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
 -#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
 -#: apt-pkg/pkgcachegen.cc:840
++#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:647
++#: apt-pkg/pkgcachegen.cc:716 apt-pkg/pkgcachegen.cc:721
++#: apt-pkg/pkgcachegen.cc:844 apt-pkg/pkgcachegen.cc:752
 +#: apt-pkg/pkgcachegen.cc:821 apt-pkg/pkgcachegen.cc:826
 +#: apt-pkg/pkgcachegen.cc:949
  msgid "Reading package lists"
  msgstr ""
  
@@@ -1577,7 -1834,7 +1851,7 @@@ msgstr "
  msgid "Couldn't make mmap of %lu bytes"
  msgstr ""
  
- #: apt-pkg/contrib/strutl.cc:981
 -#: apt-pkg/contrib/strutl.cc:938
++#: apt-pkg/contrib/strutl.cc:938 apt-pkg/contrib/strutl.cc:981
  #, c-format
  msgid "Selection %s not found"
  msgstr ""
@@@ -1774,105 -2031,87 +2048,101 @@@ msgstr "
  msgid "Problem syncing the file"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:137
 -#: apt-pkg/pkgcache.cc:126
++#: apt-pkg/pkgcache.cc:126 apt-pkg/pkgcache.cc:137
  msgid "Empty package cache"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:143
 -#: apt-pkg/pkgcache.cc:132
++#: apt-pkg/pkgcache.cc:132 apt-pkg/pkgcache.cc:143
  msgid "The package cache file is corrupted"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:148
 -#: apt-pkg/pkgcache.cc:137
++#: apt-pkg/pkgcache.cc:137 apt-pkg/pkgcache.cc:148
  msgid "The package cache file is an incompatible version"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:153
 -#: apt-pkg/pkgcache.cc:142
++#: apt-pkg/pkgcache.cc:142 apt-pkg/pkgcache.cc:153
  #, c-format
  msgid "This APT does not support the versioning system '%s'"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:158
 -#: apt-pkg/pkgcache.cc:147
++#: apt-pkg/pkgcache.cc:147 apt-pkg/pkgcache.cc:158
  msgid "The package cache was built for a different architecture"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:229
 -#: apt-pkg/pkgcache.cc:218
++#: apt-pkg/pkgcache.cc:218 apt-pkg/pkgcache.cc:229
  msgid "Depends"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:229
 -#: apt-pkg/pkgcache.cc:218
++#: apt-pkg/pkgcache.cc:218 apt-pkg/pkgcache.cc:229
  msgid "PreDepends"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:229
 -#: apt-pkg/pkgcache.cc:218
++#: apt-pkg/pkgcache.cc:218 apt-pkg/pkgcache.cc:229
  msgid "Suggests"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:230
 -#: apt-pkg/pkgcache.cc:219
++#: apt-pkg/pkgcache.cc:219 apt-pkg/pkgcache.cc:230
  msgid "Recommends"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:230
 -#: apt-pkg/pkgcache.cc:219
++#: apt-pkg/pkgcache.cc:219 apt-pkg/pkgcache.cc:230
  msgid "Conflicts"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:230
 -#: apt-pkg/pkgcache.cc:219
++#: apt-pkg/pkgcache.cc:219 apt-pkg/pkgcache.cc:230
  msgid "Replaces"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:231
 -#: apt-pkg/pkgcache.cc:220
++#: apt-pkg/pkgcache.cc:220 apt-pkg/pkgcache.cc:231
  msgid "Obsoletes"
  msgstr ""
  
--#: apt-pkg/pkgcache.cc:231
- msgid "Breaks"
- msgstr ""
- #: apt-pkg/pkgcache.cc:242
++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:242
  msgid "important"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:242
 -#: apt-pkg/pkgcache.cc:231
++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:242
  msgid "required"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:242
 -#: apt-pkg/pkgcache.cc:231
++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:242
  msgid "standard"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:243
 -#: apt-pkg/pkgcache.cc:232
++#: apt-pkg/pkgcache.cc:232 apt-pkg/pkgcache.cc:243
  msgid "optional"
  msgstr ""
  
- #: apt-pkg/pkgcache.cc:243
 -#: apt-pkg/pkgcache.cc:232
++#: apt-pkg/pkgcache.cc:232 apt-pkg/pkgcache.cc:243
  msgid "extra"
  msgstr ""
  
 -#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
 +#: apt-pkg/depcache.cc:101 apt-pkg/depcache.cc:130
  msgid "Building dependency tree"
  msgstr ""
  
 -#: apt-pkg/depcache.cc:61
 +#: apt-pkg/depcache.cc:102
  msgid "Candidate versions"
  msgstr ""
  
 -#: apt-pkg/depcache.cc:90
 +#: apt-pkg/depcache.cc:131
  msgid "Dependency generation"
  msgstr ""
  
 +#: apt-pkg/depcache.cc:152 apt-pkg/depcache.cc:171 apt-pkg/depcache.cc:175
 +msgid "Reading state information"
 +msgstr ""
 +
 +#: apt-pkg/depcache.cc:199
 +#, c-format
 +msgid "Failed to open StateFile %s"
 +msgstr ""
 +
 +#: apt-pkg/depcache.cc:205
 +#, c-format
 +msgid "Failed to write temporary StateFile %s"
 +msgstr ""
 +
  #: apt-pkg/tagfile.cc:85 apt-pkg/tagfile.cc:92
  #, c-format
  msgid "Unable to parse package file %s (1)"
@@@ -1913,7 -2152,7 +2183,7 @@@ msgstr "
  msgid "Opening %s"
  msgstr ""
  
- #: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:450
 -#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
++#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426 apt-pkg/cdrom.cc:450
  #, c-format
  msgid "Line %u too long in source list %s."
  msgstr ""
@@@ -1946,19 -2185,19 +2216,19 @@@ msgstr "
  msgid "Index file type '%s' is not supported"
  msgstr ""
  
- #: apt-pkg/algorithms.cc:248
 -#: apt-pkg/algorithms.cc:241
++#: apt-pkg/algorithms.cc:245 apt-pkg/algorithms.cc:248
  #, c-format
  msgid ""
  "The package %s needs to be reinstalled, but I can't find an archive for it."
  msgstr ""
  
- #: apt-pkg/algorithms.cc:1096
 -#: apt-pkg/algorithms.cc:1059
++#: apt-pkg/algorithms.cc:1075 apt-pkg/algorithms.cc:1096
  msgid ""
  "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
  "held packages."
  msgstr ""
  
- #: apt-pkg/algorithms.cc:1098
 -#: apt-pkg/algorithms.cc:1061
++#: apt-pkg/algorithms.cc:1077 apt-pkg/algorithms.cc:1098
  msgid "Unable to correct problems, you have held broken packages."
  msgstr ""
  
@@@ -1994,17 -2233,17 +2264,17 @@@ msgstr "
  msgid "Method %s did not start correctly"
  msgstr ""
  
 -#: apt-pkg/acquire-worker.cc:377
 +#: apt-pkg/acquire-worker.cc:384
  #, c-format
  msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
  msgstr ""
  
- #: apt-pkg/init.cc:125
 -#: apt-pkg/init.cc:122
++#: apt-pkg/init.cc:122 apt-pkg/init.cc:125
  #, c-format
  msgid "Packaging system '%s' is not supported"
  msgstr ""
  
- #: apt-pkg/init.cc:141
 -#: apt-pkg/init.cc:138
++#: apt-pkg/init.cc:138 apt-pkg/init.cc:141
  msgid "Unable to determine a suitable packaging system type"
  msgstr ""
  
@@@ -2038,96 -2277,82 +2308,83 @@@ msgstr "
  msgid "No priority (or zero) specified for pin"
  msgstr ""
  
 -#: apt-pkg/pkgcachegen.cc:74
 +#: apt-pkg/pkgcachegen.cc:76
  msgid "Cache has an incompatible versioning system"
  msgstr ""
  
 -#: apt-pkg/pkgcachegen.cc:117
 +#: apt-pkg/pkgcachegen.cc:119
  #, c-format
  msgid "Error occurred while processing %s (NewPackage)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:134
 -#: apt-pkg/pkgcachegen.cc:129
++#: apt-pkg/pkgcachegen.cc:131 apt-pkg/pkgcachegen.cc:134
  #, c-format
  msgid "Error occurred while processing %s (UsePackage1)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:157
- #, c-format
- msgid "Error occured while processing %s (NewFileDesc1)"
- msgstr ""
- #: apt-pkg/pkgcachegen.cc:182
 -#: apt-pkg/pkgcachegen.cc:150
++#: apt-pkg/pkgcachegen.cc:152 apt-pkg/pkgcachegen.cc:182
  #, c-format
  msgid "Error occurred while processing %s (UsePackage2)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:186
 -#: apt-pkg/pkgcachegen.cc:154
++#: apt-pkg/pkgcachegen.cc:156 apt-pkg/pkgcachegen.cc:186
  #, c-format
  msgid "Error occurred while processing %s (NewFileVer1)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:217
 -#: apt-pkg/pkgcachegen.cc:184
++#: apt-pkg/pkgcachegen.cc:186 apt-pkg/pkgcachegen.cc:217
  #, c-format
  msgid "Error occurred while processing %s (NewVersion1)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:221
 -#: apt-pkg/pkgcachegen.cc:188
++#: apt-pkg/pkgcachegen.cc:190 apt-pkg/pkgcachegen.cc:221
  #, c-format
  msgid "Error occurred while processing %s (UsePackage3)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:225
 -#: apt-pkg/pkgcachegen.cc:192
++#: apt-pkg/pkgcachegen.cc:194 apt-pkg/pkgcachegen.cc:225
  #, c-format
  msgid "Error occurred while processing %s (NewVersion2)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:249
- #, c-format
- msgid "Error occured while processing %s (NewFileDesc2)"
- msgstr ""
- #: apt-pkg/pkgcachegen.cc:255
 -#: apt-pkg/pkgcachegen.cc:207
++#: apt-pkg/pkgcachegen.cc:209 apt-pkg/pkgcachegen.cc:255
  msgid "Wow, you exceeded the number of package names this APT is capable of."
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:258
 -#: apt-pkg/pkgcachegen.cc:210
++#: apt-pkg/pkgcachegen.cc:212 apt-pkg/pkgcachegen.cc:258
  msgid "Wow, you exceeded the number of versions this APT is capable of."
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:261
- msgid "Wow, you exceeded the number of descriptions this APT is capable of."
- msgstr ""
- #: apt-pkg/pkgcachegen.cc:264
 -#: apt-pkg/pkgcachegen.cc:213
++#: apt-pkg/pkgcachegen.cc:215 apt-pkg/pkgcachegen.cc:264
  msgid "Wow, you exceeded the number of dependencies this APT is capable of."
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:292
 -#: apt-pkg/pkgcachegen.cc:241
++#: apt-pkg/pkgcachegen.cc:243 apt-pkg/pkgcachegen.cc:292
  #, c-format
  msgid "Error occurred while processing %s (FindPkg)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:305
 -#: apt-pkg/pkgcachegen.cc:254
++#: apt-pkg/pkgcachegen.cc:256 apt-pkg/pkgcachegen.cc:305
  #, c-format
  msgid "Error occurred while processing %s (CollectFileProvides)"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:311
 -#: apt-pkg/pkgcachegen.cc:260
++#: apt-pkg/pkgcachegen.cc:262 apt-pkg/pkgcachegen.cc:311
  #, c-format
  msgid "Package %s %s was not found while processing file dependencies"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:682
 -#: apt-pkg/pkgcachegen.cc:574
++#: apt-pkg/pkgcachegen.cc:577 apt-pkg/pkgcachegen.cc:682
  #, c-format
  msgid "Couldn't stat source package list %s"
  msgstr ""
  
- #: apt-pkg/pkgcachegen.cc:767
 -#: apt-pkg/pkgcachegen.cc:658
++#: apt-pkg/pkgcachegen.cc:662 apt-pkg/pkgcachegen.cc:767
  msgid "Collecting File Provides"
  msgstr ""
  
 -#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
++#: apt-pkg/pkgcachegen.cc:789 apt-pkg/pkgcachegen.cc:796
 +#: apt-pkg/pkgcachegen.cc:894 apt-pkg/pkgcachegen.cc:901
  msgid "IO Error saving source cache"
  msgstr ""
  
  msgid "rename failed, %s (%s -> %s)."
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:980
 -#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:945
++#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:951
++#: apt-pkg/acquire-item.cc:980
  msgid "MD5Sum mismatch"
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:675
 -#: apt-pkg/acquire-item.cc:640
++#: apt-pkg/acquire-item.cc:646 apt-pkg/acquire-item.cc:675
  msgid "There are no public key available for the following key IDs:\n"
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:788
 -#: apt-pkg/acquire-item.cc:753
++#: apt-pkg/acquire-item.cc:759 apt-pkg/acquire-item.cc:788
  #, c-format
  msgid ""
  "I wasn't able to locate a file for the %s package. This might mean you need "
  "to manually fix this package. (due to missing arch)"
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:847
 -#: apt-pkg/acquire-item.cc:812
++#: apt-pkg/acquire-item.cc:818 apt-pkg/acquire-item.cc:847
  #, c-format
  msgid ""
  "I wasn't able to locate file for the %s package. This might mean you need to "
  "manually fix this package."
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:883
 -#: apt-pkg/acquire-item.cc:848
++#: apt-pkg/acquire-item.cc:854 apt-pkg/acquire-item.cc:883
  #, c-format
  msgid ""
  "The package index files are corrupted. No Filename: field for package %s."
  msgstr ""
  
- #: apt-pkg/acquire-item.cc:970
 -#: apt-pkg/acquire-item.cc:935
++#: apt-pkg/acquire-item.cc:941 apt-pkg/acquire-item.cc:970
  msgid "Size mismatch"
  msgstr ""
  
  msgid "Vendor block %s contains no fingerprint"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:531
 -#: apt-pkg/cdrom.cc:507
++#: apt-pkg/cdrom.cc:507 apt-pkg/cdrom.cc:531
  #, c-format
  msgid ""
  "Using CD-ROM mount point %s\n"
  "Mounting CD-ROM\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622
 -#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
++#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598 apt-pkg/cdrom.cc:540
++#: apt-pkg/cdrom.cc:622
  msgid "Identifying.. "
  msgstr ""
  
- #: apt-pkg/cdrom.cc:565
 -#: apt-pkg/cdrom.cc:541
++#: apt-pkg/cdrom.cc:541 apt-pkg/cdrom.cc:565
  #, c-format
  msgid "Stored label: %s \n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:585
 -#: apt-pkg/cdrom.cc:561
++#: apt-pkg/cdrom.cc:561 apt-pkg/cdrom.cc:585
  #, c-format
  msgid "Using CD-ROM mount point %s\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:603
 -#: apt-pkg/cdrom.cc:579
++#: apt-pkg/cdrom.cc:579 apt-pkg/cdrom.cc:603
  msgid "Unmounting CD-ROM\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:607
 -#: apt-pkg/cdrom.cc:583
++#: apt-pkg/cdrom.cc:583 apt-pkg/cdrom.cc:607
  msgid "Waiting for disc...\n"
  msgstr ""
  
  #. Mount the new CDROM
- #: apt-pkg/cdrom.cc:615
 -#: apt-pkg/cdrom.cc:591
++#: apt-pkg/cdrom.cc:591 apt-pkg/cdrom.cc:615
  msgid "Mounting CD-ROM...\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:633
 -#: apt-pkg/cdrom.cc:609
++#: apt-pkg/cdrom.cc:609 apt-pkg/cdrom.cc:633
  msgid "Scanning disc for index files..\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:673
+ #: apt-pkg/cdrom.cc:647
  #, c-format
- msgid ""
- "Found %i package indexes, %i source indexes, %i translation indexes and %i "
- "signatures\n"
+ msgid "Found %i package indexes, %i source indexes and %i signatures\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:737
 -#: apt-pkg/cdrom.cc:710
++#: apt-pkg/cdrom.cc:710 apt-pkg/cdrom.cc:737
  msgid "That is not a valid name, try again.\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:753
 -#: apt-pkg/cdrom.cc:726
++#: apt-pkg/cdrom.cc:726 apt-pkg/cdrom.cc:753
  #, c-format
  msgid ""
  "This disc is called: \n"
  "'%s'\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:757
 -#: apt-pkg/cdrom.cc:730
++#: apt-pkg/cdrom.cc:730 apt-pkg/cdrom.cc:757
  msgid "Copying package lists..."
  msgstr ""
  
- #: apt-pkg/cdrom.cc:783
 -#: apt-pkg/cdrom.cc:754
++#: apt-pkg/cdrom.cc:754 apt-pkg/cdrom.cc:783
  msgid "Writing new source list\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:792
 -#: apt-pkg/cdrom.cc:763
++#: apt-pkg/cdrom.cc:763 apt-pkg/cdrom.cc:792
  msgid "Source list entries for this disc are:\n"
  msgstr ""
  
- #: apt-pkg/cdrom.cc:832
 -#: apt-pkg/cdrom.cc:803
++#: apt-pkg/cdrom.cc:803 apt-pkg/cdrom.cc:832
  msgid "Unmounting CD-ROM..."
  msgstr ""
  
- #: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
 -#: apt-pkg/indexcopy.cc:261
++#: apt-pkg/indexcopy.cc:261 apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
  #, c-format
  msgid "Wrote %i records.\n"
  msgstr ""
  
- #: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832
 -#: apt-pkg/indexcopy.cc:263
++#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832
  #, c-format
  msgid "Wrote %i records with %i missing files.\n"
  msgstr ""
  
- #: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835
 -#: apt-pkg/indexcopy.cc:266
++#: apt-pkg/indexcopy.cc:266 apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835
  #, c-format
  msgid "Wrote %i records with %i mismatched files\n"
  msgstr ""
  
- #: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838
 -#: apt-pkg/indexcopy.cc:269
++#: apt-pkg/indexcopy.cc:269 apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838
  #, c-format
  msgid "Wrote %i records with %i missing files and %i mismatched files\n"
  msgstr ""
@@@ -2315,10 -2538,6 +2572,31 @@@ msgstr "
  msgid "Completely removed %s"
  msgstr ""
  
- #: methods/rsh.cc:91
- msgid "Failed to create IPC pipe to subprocess"
- msgstr ""
  #: methods/rsh.cc:330
  msgid "Connection closed prematurely"
  msgstr ""
++
++#: apt-pkg/pkgcache.cc:231
++msgid "Breaks"
++msgstr ""
++
++#: apt-pkg/pkgcachegen.cc:157
++#, c-format
++msgid "Error occured while processing %s (NewFileDesc1)"
++msgstr ""
++
++#: apt-pkg/pkgcachegen.cc:249
++#, c-format
++msgid "Error occured while processing %s (NewFileDesc2)"
++msgstr ""
++
++#: apt-pkg/pkgcachegen.cc:261
++msgid "Wow, you exceeded the number of descriptions this APT is capable of."
++msgstr ""
++
++#: apt-pkg/cdrom.cc:673
++#, c-format
++msgid ""
++"Found %i package indexes, %i source indexes, %i translation indexes and %i "
++"signatures\n"
++msgstr ""