]> git.saurik.com Git - apt.git/commitdiff
merged from lp:~donkult/apt/sid
authorMichael Vogt <michael.vogt@ubuntu.com>
Thu, 1 Apr 2010 15:18:31 +0000 (17:18 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Thu, 1 Apr 2010 15:18:31 +0000 (17:18 +0200)
1  2 
apt-pkg/deb/dpkgpm.cc
apt-pkg/packagemanager.cc
apt-pkg/policy.cc
cmdline/apt-cache.cc
cmdline/apt-get.cc
cmdline/apt-mark
debian/changelog
doc/examples/configure-index
doc/po/fr.po
ftparchive/apt-ftparchive.cc

diff --combined apt-pkg/deb/dpkgpm.cc
index 5b02cae1ddcd53dabcd2ff6b043ef1bde966e661,9ba60060c324ab0f9390b2556bf39bb3a57b467b..c0efa7b5948bb9c0a1ef34986692789931ed815b
@@@ -564,35 -564,37 +564,37 @@@ void pkgDPkgPM::WriteHistoryTag(string 
  // DPkgPM::OpenLog                                                    /*{{{*/
  bool pkgDPkgPM::OpenLog()
  {
-    string logdir = _config->FindDir("Dir::Log");
+    string const logdir = _config->FindDir("Dir::Log");
     if(not FileExists(logdir))
        return _error->Error(_("Directory '%s' missing"), logdir.c_str());
  
     // get current time
     char timestr[200];
-    time_t t = time(NULL);
-    struct tm *tmp = localtime(&t);
+    time_t const t = time(NULL);
+    struct tm const * const tmp = localtime(&t);
     strftime(timestr, sizeof(timestr), "%F  %T", tmp);
  
     // open terminal log
-    string logfile_name = flCombine(logdir,
+    string const logfile_name = flCombine(logdir,
                                   _config->Find("Dir::Log::Terminal"));
     if (!logfile_name.empty())
     {
        term_out = fopen(logfile_name.c_str(),"a");
        if (term_out == NULL)
-        return _error->WarningE(_("Could not open file '%s'"), logfile_name.c_str());
+        return _error->WarningE("OpenLog", _("Could not open file '%s'"), logfile_name.c_str());
  
        chmod(logfile_name.c_str(), 0600);
        fprintf(term_out, "\nLog started: %s\n", timestr);
     }
  
-    // write 
-    string history_name = flCombine(logdir,
+    // write your history
+    string const history_name = flCombine(logdir,
                                   _config->Find("Dir::Log::History"));
     if (!history_name.empty())
     {
        history_out = fopen(history_name.c_str(),"a");
+       if (history_out == NULL)
+        return _error->WarningE("OpenLog", _("Could not open file '%s'"), history_name.c_str());
        chmod(history_name.c_str(), 0644);
        fprintf(history_out, "\nStart-Date: %s\n", timestr);
        string remove, purge, install, upgrade, downgrade;
               remove += I.Name() + string(" (") + Cache[I].CurVersion + string("), ");     
         }
        }
+       if (_config->Exists("Commandline::AsString") == true)
+        WriteHistoryTag("Commandline", _config->Find("Commandline::AsString"));
        WriteHistoryTag("Install", install);
        WriteHistoryTag("Upgrade", upgrade);
        WriteHistoryTag("Downgrade",downgrade);
@@@ -946,7 -950,6 +950,7 @@@ bool pkgDPkgPM::Go(int OutStatusFd
            rtt = tt;
            cfmakeraw(&rtt);
            rtt.c_lflag &= ~ECHO;
 +          rtt.c_lflag |= ISIG;
            // block SIGTTOU during tcsetattr to prevent a hang if
            // the process is a member of the background process group
            // http://www.opengroup.org/onlinepubs/000095399/functions/tcsetattr.html
index b747fa78a7b4904e945f2c26570df72b964b6e55,35cc245509e24c34d7e54ecb106dbf1be3886bcc..034cc83393ded9cd893a82bbfab634421a383bdf
@@@ -80,7 -80,10 +80,10 @@@ bool pkgPackageManager::GetArchives(pkg
        // Skip already processed packages
        if (List->IsNow(Pkg) == false)
         continue;
-        
+       if (pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == true)
+        continue;
        new pkgAcqArchive(Owner,Sources,Recs,Cache[Pkg].InstVerIter(Cache),
                        FileNames[Pkg->ID]);
     }
@@@ -277,8 -280,10 +280,10 @@@ bool pkgPackageManager::ConfigureAll(
     for (pkgOrderList::iterator I = OList.begin(); I != OList.end(); I++)
     {
        PkgIterator Pkg(Cache,*I);
-       
-       if (ConfigurePkgs == true && Configure(Pkg) == false)
+       if (ConfigurePkgs == true &&
+         pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false &&
+         Configure(Pkg) == false)
         return false;
        
        List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States);
@@@ -313,7 -318,9 +318,9 @@@ bool pkgPackageManager::SmartConfigure(
     {
        PkgIterator Pkg(Cache,*I);
        
-       if (ConfigurePkgs == true && Configure(Pkg) == false)
+       if (ConfigurePkgs == true &&
+         pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false &&
+         Configure(Pkg) == false)
         return false;
        
        List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States);
@@@ -338,9 -345,6 +345,9 @@@ bool pkgPackageManager::DepAdd(pkgOrder
        return true;
     if (List->IsFlag(Pkg,pkgOrderList::UnPacked) == false)
        return false;
 +
 +   if (Debug) 
 +      std::clog << OutputInDepth(Depth) << "DepAdd: " << Pkg.Name() << std::endl;
        
     // Put the package on the list
     OList.push_back(Pkg);
        
        if (Bad == true)
        {
 +       if (Debug) 
 +          std::clog << OutputInDepth(Depth) << "DepAdd FAILS on: " << Pkg.Name() << std::endl;
         OList.Flag(Pkg,0,pkgOrderList::Added);
         OList.pop_back();
         Depth--;
@@@ -465,7 -467,12 +472,12 @@@ bool pkgPackageManager::SmartRemove(Pkg
        return true;
  
     List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States);
-    return Remove(Pkg,(Cache[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge);
+    if (pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false)
+       return Remove(Pkg,(Cache[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge);
+    else
+       return SmartRemove(Pkg.Group().FindPkg("all"));
+    return true;
  }
                                                                        /*}}}*/
  // PM::SmartUnPack - Install helper                                   /*{{{*/
@@@ -579,10 -586,14 +591,14 @@@ bool pkgPackageManager::SmartUnPack(Pkg
     for (PrvIterator P = Cache[Pkg].InstVerIter(Cache).ProvidesList(); 
        P.end() == false; P++)
        CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
-    
-    if (Install(Pkg,FileNames[Pkg->ID]) == false)
+    if (pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false)
+    {
+       if(Install(Pkg,FileNames[Pkg->ID]) == false)
+          return false;
+    } else if (SmartUnPack(Pkg.Group().FindPkg("all")) == false)
        return false;
-    
     List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States);
     
     // Perform immedate configuration of the package.
diff --combined apt-pkg/policy.cc
index b12a50d0a2228c2d398597f781685c07aabb690e,0b8c1a81bedc7f81e4b8949c06b9a285da850f76..9b24c2ef183dad1b8fe7e26f50e94e836055c4e6
@@@ -121,10 -121,6 +121,10 @@@ pkgCache::VerIterator pkgPolicy::GetCan
     signed Max = GetPriority(Pkg);
     pkgCache::VerIterator Pref = GetMatch(Pkg);
  
 +   // Alternatives in case we can not find our package pin (Bug#512318).
 +   signed MaxAlt = 0;
 +   pkgCache::VerIterator PrefAlt;
 +
     // no package = no candidate version
     if (Pkg.end() == true)
        return Pref;
         {
            Pref = Ver;
            Max = Prio;
 +       }
 +       if (Prio > MaxAlt)
 +       {
 +          PrefAlt = Ver;
 +          MaxAlt = Prio;
         }       
        }      
        
            break;
        }            
     }
 +   // If we do not find our candidate, use the one with the highest pin.
 +   // This means that if there is a version available with pin > 0; there
 +   // will always be a candidate (Closes: #512318)
 +   if (!Pref.IsGood() && MaxAlt > 0)
 +       Pref = PrefAlt;
     return Pref;
  }
                                                                        /*}}}*/
  void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name,
                          string Data,signed short Priority)
  {
-    Pin *P = 0;
-    
     if (Name.empty() == true)
-       P = &*Defaults.insert(Defaults.end(),PkgPin());
-    else
     {
-       // Get a spot to put the pin
-       pkgCache::PkgIterator Pkg = Cache->FindPkg(Name);
-       if (Pkg.end() == true)
+       Pin *P = &*Defaults.insert(Defaults.end(),PkgPin());
+       P->Type = Type;
+       P->Priority = Priority;
+       P->Data = Data;
+       return;
+    }
+    // Get a spot to put the pin
+    pkgCache::GrpIterator Grp = Cache->FindGrp(Name);
+    for (pkgCache::PkgIterator Pkg = Grp.FindPkg("any");
+       Pkg.end() != true; Pkg = Grp.NextPkg(Pkg))
+    {
+       Pin *P = 0;
+       if (Pkg.end() == false)
+        P = Pins + Pkg->ID;
+       else
        {
         // Check the unmatched table
-        for (vector<PkgPin>::iterator I = Unmatched.begin(); 
+        for (vector<PkgPin>::iterator I = Unmatched.begin();
              I != Unmatched.end() && P == 0; I++)
            if (I->Pkg == Name)
               P = &*I;
-        
         if (P == 0)
-           P = &*Unmatched.insert(Unmatched.end(),PkgPin());      
+           P = &*Unmatched.insert(Unmatched.end(),PkgPin());
        }
-       else
-       {
-        P = Pins + Pkg->ID;
-       }      
+       P->Type = Type;
+       P->Priority = Priority;
+       P->Data = Data;
     }
-    
-    // Set..
-    P->Type = Type;
-    P->Priority = Priority;
-    P->Data = Data;
  }
                                                                        /*}}}*/
  // Policy::GetMatch - Get the matching version for a package pin      /*{{{*/
diff --combined cmdline/apt-cache.cc
index 3f68579cc0386b933dc8700dc3ae748490cda212,355e9aefb7eb38a04b2315c769c8602bcd5b7377..07b95e3ca81bc90ca9c25cba4ce52ae658c39752
@@@ -139,7 -139,7 +139,7 @@@ bool UnMet(CommandLine &CmdL
            // Oops, it failed..
            if (Header == false)
               ioprintf(cout,_("Package %s version %s has an unmet dep:\n"),
-                       P.Name(),V.VerStr());
+                       P.FullName(true).c_str(),V.VerStr());
            Header = true;
            
            // Print out the dep type
            Start = RealStart;
            do
            {
-              cout << Start.TargetPkg().Name();
+              cout << Start.TargetPkg().FullName(true);
               if (Start.TargetVer() != 0)
                  cout << " (" << Start.CompType() << " " << Start.TargetVer() <<
                  ")";
@@@ -182,7 -182,7 +182,7 @@@ bool DumpPackage(CommandLine &CmdL
         continue;
        }
  
-       cout << "Package: " << Pkg.Name() << endl;
+       cout << "Package: " << Pkg.FullName(true) << endl;
        cout << "Versions: " << endl;
        for (pkgCache::VerIterator Cur = Pkg.VersionList(); Cur.end() != true; Cur++)
        {
        cout << "Reverse Depends: " << endl;
        for (pkgCache::DepIterator D = Pkg.RevDependsList(); D.end() != true; D++)
        {
-        cout << "  " << D.ParentPkg().Name() << ',' << D.TargetPkg().Name();
+        cout << "  " << D.ParentPkg().FullName(true) << ',' << D.TargetPkg().FullName(true);
         if (D->Version != 0)
            cout << ' ' << DeNull(D.TargetVer()) << endl;
         else
        {
         cout << Cur.VerStr() << " - ";
         for (pkgCache::DepIterator Dep = Cur.DependsList(); Dep.end() != true; Dep++)
-           cout << Dep.TargetPkg().Name() << " (" << (int)Dep->CompareOp << " " << DeNull(Dep.TargetVer()) << ") ";
+           cout << Dep.TargetPkg().FullName(true) << " (" << (int)Dep->CompareOp << " " << DeNull(Dep.TargetVer()) << ") ";
         cout << endl;
        }      
  
        {
         cout << Cur.VerStr() << " - ";
         for (pkgCache::PrvIterator Prv = Cur.ProvidesList(); Prv.end() != true; Prv++)
-           cout << Prv.ParentPkg().Name() << " ";
+           cout << Prv.ParentPkg().FullName(true) << " ";
         cout << endl;
        }
        cout << "Reverse Provides: " << endl;
        for (pkgCache::PrvIterator Prv = Pkg.ProvidesList(); Prv.end() != true; Prv++)
-        cout << Prv.OwnerPkg().Name() << " " << Prv.OwnerVer().VerStr() << endl;            
+        cout << Prv.OwnerPkg().FullName(true) << " " << Prv.OwnerVer().VerStr() << endl;
     }
  
     return true;
@@@ -353,13 -353,13 +353,13 @@@ bool Dump(CommandLine &Cmd
     
     for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++)
     {
-       cout << "Package: " << P.Name() << endl;
+       cout << "Package: " << P.FullName(true) << endl;
        for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; V++)
        {
         cout << " Version: " << V.VerStr() << endl;
         cout << "     File: " << V.FileList().File().FileName() << endl;
         for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; D++)
-           cout << "  Depends: " << D.TargetPkg().Name() << ' ' << 
+           cout << "  Depends: " << D.TargetPkg().FullName(true) << ' ' << 
                             DeNull(D.TargetVer()) << endl;
         for (pkgCache::DescIterator D = V.DescriptionList(); D.end() == false; D++)
         {
@@@ -570,11 -570,11 +570,11 @@@ bool Depends(CommandLine &CmdL
         pkgCache::VerIterator Ver = Pkg.VersionList();
         if (Ver.end() == true)
         {
-           cout << '<' << Pkg.Name() << '>' << endl;
+           cout << '<' << Pkg.FullName(true) << '>' << endl;
            continue;
         }
         
-        cout << Pkg.Name() << endl;
+        cout << Pkg.FullName(true) << endl;
         
         for (pkgCache::DepIterator D = Ver.DependsList(); D.end() == false; D++)
         {
            
                // Show the package
                if (Trg->VersionList == 0)
-                 cout << D.DepType() << ": <" << Trg.Name() << ">" << endl;
+                 cout << D.DepType() << ": <" << Trg.FullName(true) << ">" << endl;
                else
-                 cout << D.DepType() << ": " << Trg.Name() << endl;
+                 cout << D.DepType() << ": " << Trg.FullName(true) << endl;
            
                if (Recurse == true)
                  Colours[D.TargetPkg()->ID]++;
               if (V != Cache.VerP + V.ParentPkg()->VersionList ||
                   V->ParentPkg == D->Package)
                  continue;
-              cout << "    " << V.ParentPkg().Name() << endl;
+              cout << "    " << V.ParentPkg().FullName(true) << endl;
               
               if (Recurse == true)
                  Colours[D.ParentPkg()->ID]++;
@@@ -663,11 -663,11 +663,11 @@@ bool RDepends(CommandLine &CmdL
         pkgCache::VerIterator Ver = Pkg.VersionList();
         if (Ver.end() == true)
         {
-           cout << '<' << Pkg.Name() << '>' << endl;
+           cout << '<' << Pkg.FullName(true) << '>' << endl;
            continue;
         }
         
-        cout << Pkg.Name() << endl;
+        cout << Pkg.FullName(true) << endl;
         
         cout << "Reverse Depends:" << endl;
         for (pkgCache::DepIterator D = Pkg.RevDependsList(); D.end() == false; D++)
                  cout << "  ";
  
                if (Trg->VersionList == 0)
-                 cout << D.DepType() << ": <" << Trg.Name() << ">" << endl;
+                 cout << D.DepType() << ": <" << Trg.FullName(true) << ">" << endl;
                else
-                 cout << Trg.Name() << endl;
+                 cout << Trg.FullName(true) << endl;
  
                if (Recurse == true)
                  Colours[D.ParentPkg()->ID]++;
               if (V != Cache.VerP + V.ParentPkg()->VersionList ||
                   V->ParentPkg == D->Package)
                  continue;
-              cout << "    " << V.ParentPkg().Name() << endl;
+              cout << "    " << V.ParentPkg().FullName(true) << endl;
               
               if (Recurse == true)
                  Colours[D.ParentPkg()->ID]++;
@@@ -863,7 -863,7 +863,7 @@@ bool XVcg(CommandLine &CmdL
            // Only graph critical deps     
            if (D.IsCritical() == true)
            {
-              printf ("edge: { sourcename: \"%s\" targetname: \"%s\" class: 2 ",Pkg.Name(), D.TargetPkg().Name() );
+              printf ("edge: { sourcename: \"%s\" targetname: \"%s\" class: 2 ",Pkg.FullName(true).c_str(), D.TargetPkg().FullName(true).c_str() );
               
               // Colour the node for recursion
               if (Show[D.TargetPkg()->ID] <= DoneNR)
         continue;
  
        if (Show[Pkg->ID] == DoneNR)
-        printf("node: { title: \"%s\" label: \"%s\" color: orange shape: %s }\n", Pkg.Name(), Pkg.Name(),
+        printf("node: { title: \"%s\" label: \"%s\" color: orange shape: %s }\n", Pkg.FullName(true).c_str(), Pkg.FullName(true).c_str(),
                Shapes[ShapeMap[Pkg->ID]]);
        else
-       printf("node: { title: \"%s\" label: \"%s\" shape: %s }\n", Pkg.Name(), Pkg.Name(), 
+       printf("node: { title: \"%s\" label: \"%s\" shape: %s }\n", Pkg.FullName(true).c_str(), Pkg.FullName(true).c_str(),
                Shapes[ShapeMap[Pkg->ID]]);
        
     }
@@@ -1084,7 -1084,7 +1084,7 @@@ bool Dotty(CommandLine &CmdL
            // Only graph critical deps     
            if (D.IsCritical() == true)
            {
-              printf("\"%s\" -> \"%s\"",Pkg.Name(),D.TargetPkg().Name());
+              printf("\"%s\" -> \"%s\"",Pkg.FullName(true).c_str(),D.TargetPkg().FullName(true).c_str());
               
               // Colour the node for recursion
               if (Show[D.TargetPkg()->ID] <= DoneNR)
        
        // Orange box for early recursion stoppage
        if (Show[Pkg->ID] == DoneNR)
-        printf("\"%s\" [color=orange,shape=%s];\n",Pkg.Name(),
+        printf("\"%s\" [color=orange,shape=%s];\n",Pkg.FullName(true).c_str(),
                Shapes[ShapeMap[Pkg->ID]]);
        else
-        printf("\"%s\" [shape=%s];\n",Pkg.Name(),
+        printf("\"%s\" [shape=%s];\n",Pkg.FullName(true).c_str(),
                Shapes[ShapeMap[Pkg->ID]]);
     }
     
@@@ -1417,11 -1417,15 +1417,15 @@@ bool ShowPackage(CommandLine &CmdL
     
     for (const char **I = CmdL.FileList + 1; *I != 0; I++)
     {
+       // FIXME: Handle the case in which pkgname name:arch is not found
        pkgCache::PkgIterator Pkg = Cache.FindPkg(*I);
        if (Pkg.end() == true)
        {
-        _error->Warning(_("Unable to locate package %s"),*I);
-        continue;
+        Pkg = Cache.FindPkg(*I, "any");
+        if (Pkg.end() == true) {
+               _error->Warning(_("Unable to locate package %s"),*I);
+               continue;
+        }
        }
  
        ++found;
  bool ShowPkgNames(CommandLine &CmdL)
  {
     pkgCache &Cache = *GCache;
-    pkgCache::PkgIterator I = Cache.PkgBegin();
-    bool All = _config->FindB("APT::Cache::AllNames","false");
-    
+    pkgCache::GrpIterator I = Cache.GrpBegin();
+    bool const All = _config->FindB("APT::Cache::AllNames","false");
     if (CmdL.FileList[1] != 0)
     {
        for (;I.end() != true; I++)
        {
-        if (All == false && I->VersionList == 0)
+        if (All == false && I->FirstPackage == 0)
+           continue;
+        if (I.FindPkg("any")->VersionList == 0)
            continue;
-        
         if (strncmp(I.Name(),CmdL.FileList[1],strlen(CmdL.FileList[1])) == 0)
            cout << I.Name() << endl;
        }
     // Show all pkgs
     for (;I.end() != true; I++)
     {
-       if (All == false && I->VersionList == 0)
+       if (All == false && I->FirstPackage == 0)
+        continue;
+       if (I.FindPkg("any")->VersionList == 0)
         continue;
        cout << I.Name() << endl;
     }
@@@ -1498,26 -1505,15 +1505,26 @@@ bool ShowSrcPackage(CommandLine &CmdL
     if (_error->PendingError() == true)
        return false;
  
 +   unsigned found = 0;
     for (const char **I = CmdL.FileList + 1; *I != 0; I++)
     {
        SrcRecs.Restart();
        
        pkgSrcRecords::Parser *Parse;
 -      while ((Parse = SrcRecs.Find(*I,false)) != 0)
 -       cout << Parse->AsStr() << endl;;
 +      unsigned found_this = 0;
 +      while ((Parse = SrcRecs.Find(*I,false)) != 0) {
 +        cout << Parse->AsStr() << endl;;
 +        found++;
 +        found_this++;
 +      }
 +      if (found_this == 0) {
 +        _error->Warning(_("Unable to locate package %s"),*I);
 +        continue;
 +      }
     }      
 -   return true;
 +   if (found > 0)
 +        return true;
 +   return _error->Error(_("No packages found"));
  }
                                                                        /*}}}*/
  // Policy - Show the results of the preferences file                  /*{{{*/
@@@ -1565,7 -1561,7 +1572,7 @@@ bool Policy(CommandLine &CmdL
            continue;
  
         // Print the package name and the version we are forcing to
-        cout << "     " << I.Name() << " -> ";
+        cout << "     " << I.FullName(true) << " -> ";
         
         pkgCache::VerIterator V = Plcy.GetMatch(I);
         if (V.end() == true)
        
        return true;
     }
-    
+    string const myArch = _config->Find("APT::Architecture");
     // Print out detailed information for each package
     for (const char **I = CmdL.FileList + 1; *I != 0; I++)
     {
-       pkgCache::PkgIterator Pkg = Cache.FindPkg(*I);
+       pkgCache::GrpIterator Grp = Cache.FindGrp(*I);
+       pkgCache::PkgIterator Pkg = Grp.FindPkg("any");
        if (Pkg.end() == true)
        {
         _error->Warning(_("Unable to locate package %s"),*I);
         continue;
        }
-       
-       cout << Pkg.Name() << ":" << endl;
-       
+       for (; Pkg.end() != true; Pkg = Grp.NextPkg(Pkg)) {
+       if (strcmp(Pkg.Arch(),"all") == 0)
+        continue;
+       cout << Pkg.FullName(true) << ":" << endl;
        // Installed version
        cout << _("  Installed: ");
        if (Pkg->CurrentVer == 0)
               return _error->Error(_("Cache is out of sync, can't x-ref a package file"));
            printf("       %4i %s\n",Plcy.GetPriority(VF.File()),
                   Indx->Describe(true).c_str());
-        }       
-       }      
+        }
+       }
+       }
     }
     
     return true;
@@@ -1684,7 -1688,7 +1699,7 @@@ bool Madison(CommandLine &CmdL
                      {
                           if ((*IF)->FindInCache(*(VF.File().Cache())) == VF.File())
                           {
-                                    cout << setw(10) << Pkg.Name() << " | " << setw(10) << V.VerStr() << " | "
+                                    cout << setw(10) << Pkg.FullName(true) << " | " << setw(10) << V.VerStr() << " | "
                                          << (*IF)->Describe(true) << endl;
                           }
                      }
diff --combined cmdline/apt-get.cc
index 3c90354b013d10497cb321d5d5bcd4c3dd2c400d,5af2dca044b2aff9965e84e87bbd76894c1b270d..62f712c391614cb25a94d6658cf3cd7b28cea2fc
@@@ -258,8 -258,8 +258,8 @@@ void ShowBroken(ostream &out,CacheFile 
        }
        
        // Print out each package and the failed dependencies
-       out <<"  " <<  I.Name() << ":";
-       unsigned Indent = strlen(I.Name()) + 3;
+       out << " " << I.FullName(true) << " :";
+       unsigned const Indent = I.FullName(true).size() + 3;
        bool First = true;
        pkgCache::VerIterator Ver;
        
               out << ' ' << End.DepType() << ": ";
            FirstOr = false;
            
-           out << Start.TargetPkg().Name();
+           out << Start.TargetPkg().FullName(true);
         
            // Show a quick summary of the version requirements
            if (Start.TargetVer() != 0)
@@@ -374,7 -374,9 +374,9 @@@ void ShowNew(ostream &out,CacheFile &Ca
     {
        pkgCache::PkgIterator I(Cache,Cache.List[J]);
        if (Cache[I].NewInstall() == true) {
-          List += string(I.Name()) + " ";
+        if (Cache[I].CandidateVerIter(Cache).Pseudo() == true)
+           continue;
+          List += I.FullName(true) + " ";
           VersionsList += string(Cache[I].CandVersion) + "\n";
        }
     }
@@@ -396,10 -398,12 +398,12 @@@ void ShowDel(ostream &out,CacheFile &Ca
        pkgCache::PkgIterator I(Cache,Cache.List[J]);
        if (Cache[I].Delete() == true)
        {
+        if (Cache[I].CandidateVerIter(Cache).Pseudo() == true)
+           continue;
         if ((Cache[I].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge)
-           List += string(I.Name()) + "* ";
+           List += I.FullName(true) + "* ";
         else
-           List += string(I.Name()) + " ";
+           List += I.FullName(true) + " ";
       
       VersionsList += string(Cache[I].CandVersion)+ "\n";
        }
@@@ -424,7 -428,7 +428,7 @@@ void ShowKept(ostream &out,CacheFile &C
          I->CurrentVer == 0 || Cache[I].Delete() == true)
         continue;
        
-       List += string(I.Name()) + " ";
+       List += I.FullName(true) + " ";
        VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
     }
     ShowList(out,_("The following packages have been kept back:"),List,VersionsList);
@@@ -444,8 -448,10 +448,10 @@@ void ShowUpgraded(ostream &out,CacheFil
        // Not interesting
        if (Cache[I].Upgrade() == false || Cache[I].NewInstall() == true)
         continue;
-       
-       List += string(I.Name()) + " ";
+       if (Cache[I].CandidateVerIter(Cache).Pseudo() == true)
+        continue;
+       List += I.FullName(true) + " ";
        VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
     }
     ShowList(out,_("The following packages will be upgraded:"),List,VersionsList);
@@@ -465,8 -471,10 +471,10 @@@ bool ShowDowngraded(ostream &out,CacheF
        // Not interesting
        if (Cache[I].Downgrade() == false || Cache[I].NewInstall() == true)
         continue;
-       
-       List += string(I.Name()) + " ";
+       if (Cache[I].CandidateVerIter(Cache).Pseudo() == true)
+        continue;
+       List += I.FullName(true) + " ";
        VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
     }
     return ShowList(out,_("The following packages will be DOWNGRADED:"),List,VersionsList);
@@@ -484,7 -492,7 +492,7 @@@ bool ShowHold(ostream &out,CacheFile &C
        pkgCache::PkgIterator I(Cache,Cache.List[J]);
        if (Cache[I].InstallVer != (pkgCache::Version *)I.CurrentVer() &&
            I->SelectedState == pkgCache::State::Hold) {
-          List += string(I.Name()) + " ";
+          List += I.FullName(true) + " ";
                 VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n";
        }
     }
@@@ -518,7 -526,7 +526,7 @@@ bool ShowEssential(ostream &out,CacheFi
         if (Added[I->ID] == false)
         {
            Added[I->ID] = true;
-           List += string(I.Name()) + " ";
+           List += I.FullName(true) + " ";
          //VersionsList += string(Cache[I].CurVersion) + "\n"; ???
         }
        }
            Added[P->ID] = true;
            
            char S[300];
-           snprintf(S,sizeof(S),_("%s (due to %s) "),P.Name(),I.Name());
+           snprintf(S,sizeof(S),_("%s (due to %s) "),P.FullName(true).c_str(),I.FullName(true).c_str());
            List += S;
          //VersionsList += "\n"; ???
         }       
@@@ -566,6 -574,9 +574,9 @@@ void Stats(ostream &out,pkgDepCache &De
     unsigned long ReInstall = 0;
     for (pkgCache::PkgIterator I = Dep.PkgBegin(); I.end() == false; I++)
     {
+       if (pkgCache::VerIterator(Dep, Dep[I].CandidateVer).Pseudo() == true)
+        continue;
        if (Dep[I].NewInstall() == true)
         Install++;
        else
@@@ -1084,7 -1095,7 +1095,7 @@@ bool TryToInstall(pkgCache::PkgIterato
        if (found_one == true)
        {
         ioprintf(c1out,_("Note, selecting %s instead of %s\n"),
-                 Prov.Name(),Pkg.Name());
+                 Prov.FullName(true).c_str(),Pkg.FullName(true).c_str());
         Pkg = Prov;
        }
     }
     {
        if (AllowFail == true)
         ioprintf(c1out,_("Skipping %s, it is already installed and upgrade is not set.\n"),
+                 Pkg.FullName(true).c_str());
+       return true;
+    }
+    // Ignore request for install if package would be new
+    if (_config->FindB("APT::Get::Only-Upgrade", false) == true &&
+        Pkg->CurrentVer == 0)
+    {
+       if (AllowFail == true)
+        ioprintf(c1out,_("Skipping %s, it is not installed and only upgrades are requested.\n"),
                  Pkg.Name());
        return true;
     }
-    
     // Check if there is something at all to install
     pkgDepCache::StateCache &State = Cache[Pkg];
     if (Remove == true && Pkg->CurrentVer == 0)
        if (AllowFail == false)
         return false;
        
-       ioprintf(c1out,_("Package %s is not installed, so not removed\n"),Pkg.Name());
+       ioprintf(c1out,_("Package %s is not installed, so not removed\n"),Pkg.FullName(true).c_str());
        return true;
     }
     
        if (Pkg->ProvidesList != 0)
        {
         ioprintf(c1out,_("Package %s is a virtual package provided by:\n"),
-                 Pkg.Name());
+                 Pkg.FullName(true).c_str());
         
         pkgCache::PrvIterator I = Pkg.ProvidesList();
         for (; I.end() == false; I++)
            if (Cache[Pkg].CandidateVerIter(Cache) == I.OwnerVer())
            {
               if (Cache[Pkg].Install() == true && Cache[Pkg].NewInstall() == false)
-                 c1out << "  " << Pkg.Name() << " " << I.OwnerVer().VerStr() <<
+                 c1out << "  " << Pkg.FullName(true) << " " << I.OwnerVer().VerStr() <<
                  _(" [Installed]") << endl;
               else
-                 c1out << "  " << Pkg.Name() << " " << I.OwnerVer().VerStr() << endl;
+                 c1out << "  " << Pkg.FullName(true) << " " << I.OwnerVer().VerStr() << endl;
            }      
         }
         c1out << _("You should explicitly select one to install.") << endl;
         ioprintf(c1out,
         _("Package %s is not available, but is referred to by another package.\n"
           "This may mean that the package is missing, has been obsoleted, or\n"
-            "is only available from another source\n"),Pkg.Name());
+            "is only available from another source\n"),Pkg.FullName(true).c_str());
         
         string List;
         string VersionsList;
            if (Seen[Dep.ParentPkg()->ID] == true)
               continue;
            Seen[Dep.ParentPkg()->ID] = true;
-           List += string(Dep.ParentPkg().Name()) + " ";
+           List += Dep.ParentPkg().FullName(true) + " ";
          //VersionsList += string(Dep.ParentPkg().CurVersion) + "\n"; ???
         }          
         ShowList(c1out,_("However the following packages replace it:"),List,VersionsList);
        }
        
-       _error->Error(_("Package %s has no installation candidate"),Pkg.Name());
+       _error->Error(_("Package %s has no installation candidate"),Pkg.FullName(true).c_str());
        return false;
     }
  
        {
         if (Pkg->CurrentVer == 0 || Pkg.CurrentVer().Downloadable() == false)
            ioprintf(c1out,_("Reinstallation of %s is not possible, it cannot be downloaded.\n"),
-                    Pkg.Name());
+                    Pkg.FullName(true).c_str());
         else
            Cache.SetReInstall(Pkg,true);
        }      
        {
         if (AllowFail == true)
            ioprintf(c1out,_("%s is already the newest version.\n"),
-                    Pkg.Name());
+                    Pkg.FullName(true).c_str());
        }      
     }   
     else
@@@ -1225,15 -1246,15 +1246,15 @@@ bool TryToChangeVer(pkgCache::PkgIterat
     {
        if (IsRel == true)
         return _error->Error(_("Release '%s' for '%s' was not found"),
-                             VerTag,Pkg.Name());
+                             VerTag,Pkg.FullName(true).c_str());
        return _error->Error(_("Version '%s' for '%s' was not found"),
-                          VerTag,Pkg.Name());
+                          VerTag,Pkg.FullName(true).c_str());
     }
     
     if (strcmp(VerTag,Ver.VerStr()) != 0)
     {
        ioprintf(c1out,_("Selected version %s (%s) for %s\n"),
-              Ver.VerStr(),Ver.RelStr().c_str(),Pkg.Name());
+              Ver.VerStr(),Ver.RelStr().c_str(),Pkg.FullName(true).c_str());
     }
     
     Cache.SetCandidateVersion(Ver);
@@@ -1270,12 -1291,26 +1291,26 @@@ pkgSrcRecords::Parser *FindSrc(const ch
     {
        if(VerTag.empty() == false || DefRel.empty() == false) 
        {
+        bool fuzzy = false;
         // we have a default release, try to locate the pkg. we do it like
         // this because GetCandidateVer() will not "downgrade", that means
         // "apt-get source -t stable apt" won't work on a unstable system
-        for (pkgCache::VerIterator Ver = Pkg.VersionList();
-             Ver.end() == false; Ver++) 
+        for (pkgCache::VerIterator Ver = Pkg.VersionList();; Ver++)
         {
+           // try first only exact matches, later fuzzy matches
+           if (Ver.end() == true)
+           {
+              if (fuzzy == true)
+                 break;
+              fuzzy = true;
+              Ver = Pkg.VersionList();
+           }
+           // We match against a concrete version (or a part of this version)
+           if (VerTag.empty() == false &&
+               (fuzzy == true || Cache.VS().CmpVersion(VerTag, Ver.VerStr()) != 0) && // exact match
+               (fuzzy == false || strncmp(VerTag.c_str(), Ver.VerStr(), VerTag.size()) != 0)) // fuzzy match
+              continue;
            for (pkgCache::VerFileIterator VF = Ver.FileList();
                 VF.end() == false; VF++) 
            {
                   pkgCache::Flag::NotSource && Pkg.CurrentVer() != Ver)
                  continue;
  
-              // We match against a concrete version (or a part of this version)
-              if (VerTag.empty() == false && strncmp(VerTag.c_str(), Ver.VerStr(), VerTag.size()) != 0)
-                 continue;
               // or we match against a release
               if(VerTag.empty() == false ||
                  (VF.File().Archive() != 0 && VF.File().Archive() == DefRel) ||
                  // no SourcePkg name, so it is the "binary" name
                  if (Src.empty() == true)
                     Src = TmpSrc;
-                 // no Version, so we try the Version of the SourcePkg -
-                 // and after that the version of the binary package
-                 if (VerTag.empty() == true)
-                    VerTag = Parse.SourceVer();
+                 // the Version we have is possibly fuzzy or includes binUploads,
+                 // so we use the Version of the SourcePkg (empty if same as package)
+                 VerTag = Parse.SourceVer();
                  if (VerTag.empty() == true)
                     VerTag = Ver.VerStr();
                  break;
         if (Src.empty() == true) 
         {
            // Sources files have no codename information
 -          if (VerTag.empty() == true && DefRel.empty() == false)
 -             _error->Warning(_("Ignore unavailable target release '%s' of package '%s'"), DefRel.c_str(), TmpSrc.c_str());
 -          DefRel.clear();
 +          if (VerTag.empty() == true && DefRel.empty() == false) 
 +          {
 +             _error->Error(_("Ignore unavailable target release '%s' of package '%s'"), DefRel.c_str(), TmpSrc.c_str());
 +             return 0;
 +          }
         }
        }
        if (Src.empty() == true)
         const string Ver = Parse->Version();
  
         // Ignore all versions which doesn't fit
-        if (VerTag.empty() == false && strncmp(VerTag.c_str(), Ver.c_str(), VerTag.size()) != 0)
+        if (VerTag.empty() == false &&
+            Cache.VS().CmpVersion(VerTag, Ver) != 0) // exact match
            continue;
  
         // Newer version or an exact match? Save the hit
        if (Last != 0 || VerTag.empty() == true)
         break;
        //if (VerTag.empty() == false && Last == 0)
 -      _error->Warning(_("Ignore unavailable version '%s' of package '%s'"), VerTag.c_str(), TmpSrc.c_str());
 -      VerTag.clear();
 +      _error->Error(_("Ignore unavailable version '%s' of package '%s'"), VerTag.c_str(), TmpSrc.c_str());
 +      return 0;
     }
  
     if (Last == 0 || Last->Jump(Offset) == false)
@@@ -1491,7 -1520,7 +1522,7 @@@ bool DoAutomaticRemove(CacheFile &Cache
        {
         if(Pkg.CurrentVer() != 0 || Cache[Pkg].Install())
            if(Debug)
-              std::cout << "We could delete %s" <<  Pkg.Name() << std::endl;
+              std::cout << "We could delete %s" <<  Pkg.FullName(true).c_str() << std::endl;
  
         if (doAutoRemove)
         {
               // we don't need to fill the strings if we don't need them
               if (smallList == false)
               {
-                autoremovelist += string(Pkg.Name()) + " ";
+                autoremovelist += Pkg.FullName(true) + " ";
                 autoremoveversions += string(Cache[Pkg].CandVersion) + "\n";
               }
            }
@@@ -1781,10 -1810,11 +1812,11 @@@ bool DoInstall(CommandLine &CmdL
               Cache[Pkg].Install() == false && 
               (Cache[Pkg].Flags & pkgCache::Flag::Auto) &&
               _config->FindB("APT::Get::ReInstall",false) == false &&
+              _config->FindB("APT::Get::Only-Upgrade",false) == false &&
               _config->FindB("APT::Get::Download-Only",false) == false)
            {
               ioprintf(c1out,_("%s set to manually installed.\n"),
-                       Pkg.Name());
+                       Pkg.FullName(true).c_str());
               Cache->MarkAuto(Pkg,false);
               AutoMarkChanged++;
            }
                break;
         
         if (*J == 0) {
-           List += string(I.Name()) + " ";
+           List += I.FullName(true) + " ";
            VersionsList += string(Cache[I].CandVersion) + "\n";
         }
        }
            for(;;)
            {
               /* Skip if package is  installed already, or is about to be */
-              string target = string(Start.TargetPkg().Name()) + " ";
+              string target = Start.TargetPkg().FullName(true) + " ";
               
               if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install
                   || Cache[Start.TargetPkg()].Install())
@@@ -2290,6 -2320,7 +2322,7 @@@ bool DoSource(CommandLine &CmdL
     {
        for (unsigned I = 0; I != J; I++)
         ioprintf(cout,_("Fetch source %s\n"),Dsc[I].Package.c_str());
+       delete[] Dsc;
        return true;
     }
     
        for (; I != Fetcher.UriEnd(); I++)
         cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' << 
               I->Owner->FileSize << ' ' << I->Owner->HashSum() << endl;
+       delete[] Dsc;
        return true;
     }
     
     if (_config->FindB("APT::Get::Download-only",false) == true)
     {
        c1out << _("Download complete and in download only mode") << endl;
+       delete[] Dsc;
        return true;
     }
  
        
        _exit(0);
     }
-    
+    delete[] Dsc;
     // Wait for the subprocess
     int Status = 0;
     while (waitpid(Process,&Status,0) != Process)
@@@ -2440,7 -2474,7 +2476,7 @@@ bool DoBuildDep(CommandLine &CmdL
              
        // Process the build-dependencies
        vector<pkgSrcRecords::Parser::BuildDepRec> BuildDeps;
-       if (Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only",false)) == false)
+       if (Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only",true)) == false)
                return _error->Error(_("Unable to get build-dependency information for %s"),Src.c_str());
     
        // Also ensure that build-essential packages are present
              for (; Prv.end() != true; Prv++)
            {
                 if (_config->FindB("Debug::BuildDeps",false) == true)
-                     cout << "  Checking provider " << Prv.OwnerPkg().Name() << endl;
+                     cout << "  Checking provider " << Prv.OwnerPkg().FullName() << endl;
  
               if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false)
                  break;
                 if (Prv.end() == false)
                 {
                    if (_config->FindB("Debug::BuildDeps",false) == true)
-                      cout << "  Is provided by installed package " << Prv.OwnerPkg().Name() << endl;
+                      cout << "  Is provided by installed package " << Prv.OwnerPkg().FullName() << endl;
                    skipAlternatives = hasAlternatives;
                    continue;
                 }
                    return _error->Error(_("Failed to satisfy %s dependency for %s: Installed package %s is too new"),
                                         Last->BuildDepType((*D).Type),
                                         Src.c_str(),
-                                        Pkg.Name());
+                                        Pkg.FullName(true).c_str());
                 }
              }
  
     return true;
  }
                                                                        /*}}}*/
  // DoMoo - Never Ask, Never Tell                                      /*{{{*/
  // ---------------------------------------------------------------------
  /* */
@@@ -2823,6 -2856,7 +2858,7 @@@ int main(int argc,const char *argv[]
        {0,"fix-missing","APT::Get::Fix-Missing",0},
        {0,"ignore-hold","APT::Ignore-Hold",0},      
        {0,"upgrade","APT::Get::upgrade",0},
+       {0,"only-upgrade","APT::Get::Only-Upgrade",0},
        {0,"force-yes","APT::Get::force-yes",0},
        {0,"print-uris","APT::Get::Print-URIs",0},
        {0,"diff-only","APT::Get::Diff-Only",0},
diff --combined cmdline/apt-mark
index 31383d9875be6b07c3b19036f2012d72758b8c4a,18552177c7537642ed7fd7b698b4845a8f90c735..12768b7088069fa9968ead5c89148325207bb048
@@@ -76,15 -76,16 +76,19 @@@ if __name__ == "__main__"
                        help="print verbose status messages to stdout")
      (options, args) = parser.parse_args()
  
+     if not args:
+         parser.print_help()
+         sys.exit(1)
      # get the state-file
      if not options.filename:
          STATE_FILE = apt_pkg.config.find_dir("Dir::State") + "extended_states"
      else:
          STATE_FILE=options.filename
  
 +    if len(args) == 0:
 +        parser.error("first argument must be 'markauto', 'unmarkauto' or 'showauto'")
 +
      if args[0] == "showauto":
          show_automatic(STATE_FILE)
      else:
diff --combined debian/changelog
index f166b7d32a8024e5c654477d92ba4161be86dd5f,205db85e0d2574751b860f25d06ad26776f867e5..49987385aea20abdfd9e5961699b838cb2540bca
@@@ -1,4 -1,4 +1,4 @@@
 -apt (0.7.26) UNRELEASED; urgency=low
 +apt (0.7.26~exp3) UNRELEASED; urgency=low
  
    [ Christian Perrier ]
    * German translation update. Closes: #571037
    * Add "manpages-pl (<< 20060617-3~)" to avoid file conflicts with
      that package that was providing some manpages for APT utilities.
  
+   [ David Kalnischkies ]
+   * [BREAK] merge MultiArch-ABI. We don't support MultiArch,
+     but we support the usage of the new ABI so libapt users
+     can start to prepare for MultiArch (Closes: #536029)
+   * Ignore :qualifiers after package name in build dependencies
+     in the library by default, but try to honour them in apt-get
+     as we have some sort of MultiArch support ready (Closes: #558103)
+   * add translation of the manpages to PT (portuguese)
+     Thanks to Américo Monteiro!
+   * Switch to dpkg-source 3.0 (native) format
+   * apt-pkg/depcache.cc:
+     - remove Auto-Installed information from extended_states
+       together with the package itself (Closes: #572364)
+   * cmdline/apt-mark:
+     - don't crash if no arguments are given (Closes: #570962)
+   * debian/control:
+     - remove some years old and obsolete Replaces
+     - add automake/conf build-depends/conflicts as recommend by
+       the autotools-dev README (Closes: #572615)
+   * apt-pkg/contrib/mmap.{h,cc}:
+     - add char[] fallback for filesystems without shared writable
+       mmap() like JFFS2. Thanks to Marius Vollmer for writing
+       and to Loïc Minier for pointing to the patch! (Closes: #314334)
+   * doc/apt_preferences.5.xml:
+     - fix two typos and be more verbose in the novice warning.
+       Thanks to Osamu Aoki for pointing it out! (Closes: #567669)
+     - fix a=sid vs. n=sid typo, thanks Ansgar Burchardt!
+     - origin can be used to match a hostname (Closes: #352667)
+     - remove wrong pin-priority is optional remark (Closes: #574944)
+   * apt-pkg/deb/dpkgpm.cc:
+     - fix error message construction in OpenLog()
+     - if available store the Commandline in the history
+   * cmdline/apt-get.cc:
+     - add a --only-upgrade flag to install command (Closes: #572259)
+     - fix memory leaks in error conditions in DoSource()
+     - try version match in FindSrc first exact than fuzzy (LP: #551178)
+   * apt-pkg/contrib/cmndline.cc:
+     - save Commandline in Commandline::AsString for logging
+   * apt-pkg/deb/debversion.cc:
+     - consider absent of debian revision equivalent to 0 (Closes: #573592)
+   * doc/makefile, doc/*:
+     - generate subdirectories for building the manpages in on the fly
+       depending on the po files we have.
+   * apt-pkg/pkgcachegen.cc:
+     - merge versions correctly even if multiple different versions
+       with the same version number are available.
+       Thanks to Magnus Holmgren for the patch! (Closes: #351056)
+   * ftparchive/writer.cc:
+     - write LongDescriptions if they shouldn't be included in Packages
+       file into i18n/Translation-en by default.
+   * doc/po/de.po:
+     - correct a few typos in the german manpage translation.
+       Thanks to Chris Leick and Georg Koppen! (Closes: #574962)
+   * apt-pkg/contrib/strutl.cc:
+     - convert all toupper calls to tolower_ascii for a little speedup
+   [ Jean-Baptiste Lallement ]
+   * apt-pkg/contrib/strutl.cc:
+     - always escape '%' (LP: #130289) (Closes: #500560)
+     - unescape '%' sequence only if followed by 2 hex digit
+     - username/password are urlencoded in proxy string (RFC 3986)
    [ Julian Andres Klode ]
 +  * cmdline/apt-cache.cc:
 +    - Change behavior of showsrc to match the one of show (Closes: #512046).
 +  * cmdline/apt-key:
 +    - Honor Apt::GPGV::TrustedKeyring (Closes: #316390)
    * cmdline/apt-mark:
      - Use the new python-apt API (and conflict with python-apt << 0.7.93.2).
    * apt-inst/contrib/arfile.h:
      - Add public ARArchive::Members() which returns the list of members.
 +  * apt-pkg/policy.cc:
 +    - Always return a candidate if there is at least one version pinned > 0
 +      (Closes: #512318)
 +  * ftparchive/apt-ftparchive.cc:
 +    - Read default configuration (Closes: #383257)
    * debian/rules:
      - Fix the libraries name to be e.g. libapt-pkg4.9 instead of
        libapt-pkg-4.9.
  
 - -- David Kalnischkies <kalnischkies@gmail.com>  Sun, 14 Mar 2010 16:47:07 +0100
 +  [ Michael Vogt ]
 +  * apt-pkg/deb/dpkgpm.cc:
 +    - fix backgrounding when dpkg runs (closes: #486222)
 +  * cmdline/apt-mark:
 +    - show error on incorrect aguments (LP: #517917), thanks to
 +      Torsten Spindler
 +  * cmdline/apt-get.cc:
 +    - if apt-get source foo=version or foo/distro can not be found,
 +      error out (LP: #502641)
 +  * apt-pkg/packagemanager.cc:
 +    - better debug output 
 +  * doc/examples/configure-index:
 +    - add missing Debug::pkgPackageManager option
 +
 + -- Christian Perrier <bubulle@debian.org>  Wed, 24 Feb 2010 22:13:50 +0100
  
  apt (0.7.26~exp2) experimental; urgency=low
  
@@@ -1440,13 -1479,6 +1502,13 @@@ apt (0.7.6) unstable; urgency=lo
  
   -- Otavio Salvador <otavio@debian.org>  Wed, 01 Aug 2007 19:49:51 -0300
  
 +apt (0.7.6) unstable; urgency=low
 +
 +  * Applied patch from Aurelien Jarno <aurel32@debian.org> to fix wrong
 +    directory downloading on non-linux architectures (closes: #435597)
 +
 + -- Otavio Salvador <otavio@debian.org>  Wed, 01 Aug 2007 19:49:51 -0300
 +
  apt (0.7.5) unstable; urgency=low
  
    [ Otavio Salvador ]
index 7166ec2b3bf100219c0f2355d0ba9e367dbb1d75,f08a42ec733d34152f5c2f3b71839e48b1338904..3167e46da0ab83e1d80a19de5c80908ec0f4304d
@@@ -418,7 -418,6 +418,7 @@@ Debu
    pkgDPkgPM "false";
    pkgDPkgProgressReporting "false";
    pkgOrderList "false";
 +  pkgPackageManager "false"; // OrderList/Configure debugging
    pkgAutoRemove "false";   // show information about automatic removes
    BuildDeps "false";
    pkgInitialize "false";   // This one will dump the configuration space
    
  }
  
+ pkgCacheGen::Essential "native"; // other modes: all, none, installed
  /* Whatever you do, do not use this configuration file!! Take out ONLY
     the portions you need! */
  This Is Not A Valid Config File
diff --combined doc/po/fr.po
index 9a076f2b3ca3cc5ed0dd0db78e86f81871a045ec,6e31871ebc29c4df97cf545c005d2a5ce0f8a382..d1704e2e72860062d6a25ef7d8d36c35a496324b
@@@ -9,10 -9,10 +9,10 @@@
  msgid ""
  msgstr ""
  "Project-Id-Version: \n"
 -"POT-Creation-Date: 2010-03-19 11:14+0100\n"
 -"PO-Revision-Date: 2010-01-29 19:58+0100\n"
 +"POT-Creation-Date: 2010-02-18 20:53+0100\n"
 +"PO-Revision-Date: 2010-03-23 09:02+0100\n"
  "Last-Translator: Christian Perrier <bubulle@debian.org>\n"
 -"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
 +"Language-Team: fr <debian-l10n-french@lists.debian.org>\n"
  "MIME-Version: 1.0\n"
  "Content-Type: text/plain; charset=UTF-8\n"
  "Content-Transfer-Encoding: 8bit\n"
@@@ -1074,7 -1074,7 +1074,7 @@@ msgstr "
  
  #. type: Plain text
  #: apt.ent:369
 -#, fuzzy, no-wrap
 +#, no-wrap
  #| msgid ""
  #| "     <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
  #| "     <listitem><para>File fragments for locations to fetch packages from.\n"
@@@ -1089,23 -1089,26 +1089,27 @@@ msgid "
  "     </varlistentry>\n"
  "\">\n"
  msgstr ""
 -"     <varlistentry><term><filename>/etc/apt/sources.list.d/</filename></term>\n"
 -"     <listitem><para>Fragments de fichiers définissant les emplacements de récupération de paquets.\n"
 -"     Élément de configuration : <literal>Dir::Etc::SourceParts</literal>.</para></listitem>\n"
 +"     <varlistentry><term><filename>/etc/apt/trusted.gpg.d/</filename></term>\n"
 +"     <listitem><para>Fragments de fichiers pou rles clés de signatures sûres. Des fichiers\n"
 +"     supplémentaires peuvent être placés à cet endroit (par des paquets ou par l'administrateur).\n"
 +"     Élément de configuration : <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n"
  "     </varlistentry>\n"
  "\">\n"
  
  #. type: Plain text
- #: apt.ent:371
- msgid "<!ENTITY translation-title \"TRANSLATION\">"
- msgstr "<!ENTITY translation-title \"Traducteurs\">"
+ #: apt.ent:373
+ #, no-wrap
+ msgid ""
+ "<!-- TRANSLATOR: This is the section header for the following paragraphs - comparable\n"
+ "     to the other headers like NAME and DESCRIPTION and should therefore be uppercase. -->\n"
+ "<!ENTITY translation-title \"TRANSLATION\">\n"
+ msgstr "<!ENTITY translation-title \"TRADUCTEURS\">\n"
  
  #. type: Plain text
- #: apt.ent:380
+ #: apt.ent:382
  #, no-wrap
  msgid ""
- "<!-- TRANSLATOR: This is a placeholder. You should write here who has constributed\n"
+ "<!-- TRANSLATOR: This is a placeholder. You should write here who has contributed\n"
  "     to the translation in the past, who is responsible now and maybe further information\n"
  "     specially related to your translation. -->\n"
  "<!ENTITY translation-holder \"\n"
@@@ -1120,11 -1123,14 +1124,14 @@@ msgstr "
  "\">\n"
  
  #. type: Plain text
- #: apt.ent:387
+ #: apt.ent:392
  #, no-wrap
  msgid ""
  "<!-- TRANSLATOR: As a translation is allowed to have 20% of untranslated/fuzzy strings\n"
- "     in a shipped manpage will maybe appear english parts. -->\n"
+ "     in a shipped manpage newer/modified paragraphs will maybe appear in english in\n"
+ "     the generated manpage. This sentence is therefore here to tell the reader that this\n"
+ "     is not a mistake by the translator - obviously the target is that at least for stable\n"
+ "     releases this sentence is not needed. :) -->\n"
  "<!ENTITY translation-english \"\n"
  "     Note that this translated document may contain untranslated parts.\n"
  "     This is done on purpose, to avoid losing content when the\n"
@@@ -1137,7 -1143,7 +1144,7 @@@ msgstr "
  "     traduction est légèrement en retard sur le contenu d'origine.\n"
  "\">\n"
  
 -#.  The last update date 
 +#.  The last update date
  #. type: Content of: <refentry><refentryinfo>
  #: apt-cache.8.xml:13 apt-config.8.xml:13 apt-extracttemplates.1.xml:13
  #: apt-sortpkgs.1.xml:13 sources.list.5.xml:13
@@@ -1993,14 -1999,14 +2000,14 @@@ msgstr "
  
  #. type: Content of: <refentry><refsect1><variablelist>
  #: apt-cache.8.xml:356 apt-cdrom.8.xml:150 apt-config.8.xml:98
- #: apt-extracttemplates.1.xml:67 apt-ftparchive.1.xml:576 apt-get.8.xml:554
+ #: apt-extracttemplates.1.xml:67 apt-ftparchive.1.xml:576 apt-get.8.xml:561
  #: apt-sortpkgs.1.xml:64
  msgid "&apt-commonoptions;"
  msgstr "&apt-commonoptions;"
  
  #. type: Content of: <refentry><refsect1><title>
- #: apt-cache.8.xml:361 apt-get.8.xml:559 apt-key.8.xml:153 apt-mark.8.xml:122
- #: apt.conf.5.xml:1035 apt_preferences.5.xml:630
+ #: apt-cache.8.xml:361 apt-get.8.xml:566 apt-key.8.xml:153 apt-mark.8.xml:122
+ #: apt.conf.5.xml:1035 apt_preferences.5.xml:633
  msgid "Files"
  msgstr "Fichiers"
  
@@@ -2011,9 -2017,9 +2018,9 @@@ msgstr "&file-sourceslist; &file-statel
  
  #. type: Content of: <refentry><refsect1><title>
  #: apt-cache.8.xml:368 apt-cdrom.8.xml:155 apt-config.8.xml:103
- #: apt-extracttemplates.1.xml:74 apt-ftparchive.1.xml:592 apt-get.8.xml:569
+ #: apt-extracttemplates.1.xml:74 apt-ftparchive.1.xml:592 apt-get.8.xml:576
  #: apt-key.8.xml:174 apt-mark.8.xml:133 apt-secure.8.xml:181
- #: apt-sortpkgs.1.xml:69 apt.conf.5.xml:1041 apt_preferences.5.xml:637
+ #: apt-sortpkgs.1.xml:69 apt.conf.5.xml:1041 apt_preferences.5.xml:640
  #: sources.list.5.xml:233
  msgid "See Also"
  msgstr "Voir aussi"
@@@ -2025,7 -2031,7 +2032,7 @@@ msgstr "&apt-conf;, &sources-list;, &ap
  
  #. type: Content of: <refentry><refsect1><title>
  #: apt-cache.8.xml:373 apt-cdrom.8.xml:160 apt-config.8.xml:108
- #: apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:596 apt-get.8.xml:575
+ #: apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:596 apt-get.8.xml:582
  #: apt-mark.8.xml:137 apt-sortpkgs.1.xml:73
  msgid "Diagnostics"
  msgstr "Diagnostics"
@@@ -2105,6 -2111,7 +2112,6 @@@ msgstr "add
  
  #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
  #: apt-cdrom.8.xml:66
 -#, fuzzy
  #| msgid ""
  #| "<literal>add</literal> is used to add a new disc to the source list. It "
  #| "will unmount the CDROM device, prompt for a disk to be inserted and then "
@@@ -2490,7 -2497,7 +2497,7 @@@ msgstr "
  "<filename>package.config.XXXX</filename>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-extracttemplates.1.xml:60 apt-get.8.xml:488
+ #: apt-extracttemplates.1.xml:60 apt-get.8.xml:495
  msgid "<option>-t</option>"
  msgstr "<option>-t</option>"
  
@@@ -2519,7 -2526,7 +2526,7 @@@ msgstr "
  "<command>apt-extracttemplates</command> retourne zéro si tout se passe bien, "
  "le nombre 100 en cas d'erreur."
  
 -#.  The last update date 
 +#.  The last update date
  #. type: Content of: <refentry><refentryinfo>
  #: apt-ftparchive.1.xml:13
  msgid ""
@@@ -2541,6 -2548,7 +2548,6 @@@ msgstr "Outil de création de fichiers 
  
  #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
  #: apt-ftparchive.1.xml:36
 -#, fuzzy
  #| msgid ""
  #| "<command>apt-ftparchive</command> <arg><option>-hvdsq</option></arg> "
  #| "<arg><option>--md5</option></arg> <arg><option>--delink</option></arg> "
@@@ -2584,7 -2592,6 +2591,7 @@@ msgstr "
  "<command>apt-ftparchive</command> <arg><option>-hvdsq</option></arg><arg> "
  "<option>--md5</option></arg><arg> <option>--delink</option></arg> "
  "<arg><option>--readonly</option></arg> <arg><option>--contents</option></"
 +"arg> <arg><option>--arch <replaceable>architecture</replaceable></option></"
  "arg> <arg><option>-o <replaceable>option de configuration</"
  "replaceable>=<replaceable>chaîne</replaceable></option></arg> <arg><option>-"
  "c=<replaceable>fichier</replaceable></option></arg> <group choice=\"req\"> "
@@@ -2665,7 -2672,8 +2672,7 @@@ msgstr "
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt-ftparchive.1.xml:83 apt-ftparchive.1.xml:107
 -msgid ""
 -"The option <option>--db</option> can be used to specify a binary caching DB."
 +msgid "The option <option>--db</option> can be used to specify a binary caching DB."
  msgstr ""
  "On peut se servir de l'option <option>--db</option> pour demander un cache "
  "binaire."
@@@ -2820,8 -2828,10 +2827,8 @@@ msgstr "
  
  #. type: Content of: <refentry><refsect1><para>
  #: apt-ftparchive.1.xml:156
 -msgid ""
 -"The generate configuration has 4 separate sections, each described below."
 -msgstr ""
 -"Ce fichier de configuration possède quatre sections, décrites ci-dessous."
 +msgid "The generate configuration has 4 separate sections, each described below."
 +msgstr "Ce fichier de configuration possède quatre sections, décrites ci-dessous."
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
  #: apt-ftparchive.1.xml:158
@@@ -3640,12 -3650,14 +3647,12 @@@ msgstr "
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-ftparchive.1.xml:548
 -#, fuzzy
  #| msgid "<option>-a</option>"
  msgid "<option>--arch</option>"
 -msgstr "<option>-a</option>"
 +msgstr "<option>--arch</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt-ftparchive.1.xml:549
 -#, fuzzy
  #| msgid ""
  #| "If the command is either <literal>install</literal> or <literal>remove</"
  #| "literal>, then this option acts like running <literal>autoremove</"
@@@ -3657,16 -3669,17 +3664,16 @@@ msgid "
  "<literal>*_all.deb</literal> instead of all package files in the given "
  "path.  Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
  msgstr ""
 -"Si la commande utilisée est soit <literal>install</literal> soit "
 -"<literal>remove</literal>, cette option a le même effet "
 -"qu'<literal>autoremove</literal> et supprime les paquets de dépendance "
 -"inutilisés. Élément de configuration : <literal>APT::Get::Upgrade</literal>."
 +"N'accepte dans les commandes <literal>packages</literal> et <literal>contents</literal> "
 +"que les fichiers de paquets correspondant à <literal>*_arch.deb</literal> ou "
 +"<literal>*_all.deb</literal> au lieu de tous les fichiers de paquets du chemin indiqué."
 +"Élément de configuration : <literal>APT::FTPArchive::Architecture</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-ftparchive.1.xml:555
 -#, fuzzy
  #| msgid "<option>APT::FTPArchive::LongDescription</option>"
  msgid "<option>APT::FTPArchive::AlwaysStat</option>"
 -msgstr "<option>APT::FTPArchive::LongDescription</option>"
 +msgstr "<option>APT::FTPArchive::AlwaysStat</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt-ftparchive.1.xml:557
@@@ -3681,10 -3694,6 +3688,10 @@@ msgid "
  "theory nobody will have these problems and therefore all these extra checks "
  "are useless."
  msgstr ""
 +"&apt-ftparchive; met le plus de métadonnées possible en cache dans une base de données. Si les paquets sont recompilés ou republiés avec à nouveau la même version, cela "
 +"pourra causer des problèmes car, alors, les métadonnées en cache (p. ex. les tailles et les sommes de contrôle) seront utilisées. Si cette option est choisie, cela "
 +"n'arrivera plus car le fichier sera contrôlé  pour vérifier s'il a été modifié. Veuillez noter que cette option n'est pas activée par défaut car il est déconseillé "
 +"d'envoyer dans les archives des versions identiques. En théorie, donc, ces problème ne devraient pas survenir et l'ensemble de ces contrôles devient inutile."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-ftparchive.1.xml:567
@@@ -3707,7 -3716,7 +3714,7 @@@ msgstr "
  "pas possible de créer ces fichiers avec <command>apt-ftparchive</command>."
  
  #. type: Content of: <refentry><refsect1><title>
- #: apt-ftparchive.1.xml:581 apt.conf.5.xml:1029 apt_preferences.5.xml:477
+ #: apt-ftparchive.1.xml:581 apt.conf.5.xml:1029 apt_preferences.5.xml:480
  #: sources.list.5.xml:193
  msgid "Examples"
  msgstr "Exemples"
@@@ -3736,7 -3745,7 +3743,7 @@@ msgstr "
  "<command>apt-ftparchive</command> retourne zéro si tout se passe bien, le "
  "nombre 100 en cas d'erreur."
  
 -#.  The last update date 
 +#.  The last update date
  #. type: Content of: <refentry><refentryinfo>
  #: apt-get.8.xml:13
  msgid ""
@@@ -3754,7 -3763,8 +3761,7 @@@ msgstr "apt-get
  #. type: Content of: <refentry><refnamediv><refpurpose>
  #: apt-get.8.xml:30
  msgid "APT package handling utility -- command-line interface"
 -msgstr ""
 -"Utilitaire APT pour la gestion des paquets -- interface en ligne de commande."
 +msgstr "Utilitaire APT pour la gestion des paquets -- interface en ligne de commande."
  
  #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
  #: apt-get.8.xml:36
@@@ -4296,6 -4306,7 +4303,6 @@@ msgstr "<option>--fix-broken</option>
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt-get.8.xml:334
 -#, fuzzy
  #| msgid ""
  #| "Fix; attempt to correct a system with broken dependencies in place. This "
  #| "option, when used with install/remove, can omit any packages to permit "
@@@ -4604,11 -4615,37 +4611,37 @@@ msgstr "
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-get.8.xml:447
+ #, fuzzy
+ #| msgid "<option>--no-upgrade</option>"
+ msgid "<option>--only-upgrade</option>"
+ msgstr "<option>--no-upgrade</option>"
+ #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+ #: apt-get.8.xml:448
+ #, fuzzy
+ #| msgid ""
+ #| "Do not upgrade packages; When used in conjunction with <literal>install</"
+ #| "literal>, <literal>no-upgrade</literal> will prevent packages on the "
+ #| "command line from being upgraded if they are already installed.  "
+ #| "Configuration Item: <literal>APT::Get::Upgrade</literal>."
+ msgid ""
+ "Do not install new packages; When used in conjunction with <literal>install</"
+ "literal>, <literal>only-upgrade</literal> will prevent packages on the "
+ "command line from being upgraded if they are not already installed.  "
+ "Configuration Item: <literal>APT::Get::Only-Upgrade</literal>."
+ msgstr ""
+ "Aucune mise à niveau ; quand elle est utilisée avec <literal>install</"
+ "literal>, cette commande empêche les paquets mentionnés sur la ligne de "
+ "commande d'être mis à niveau. Élément de configuration : <literal>APT::Get::"
+ "Upgrade</literal>."
+ #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+ #: apt-get.8.xml:454
  msgid "<option>--force-yes</option>"
  msgstr "<option>--force-yes</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:448
+ #: apt-get.8.xml:455
  msgid ""
  "Force yes; This is a dangerous option that will cause apt to continue "
  "without prompting if it is doing something potentially harmful. It should "
@@@ -4624,12 -4661,12 +4657,12 @@@ msgstr "
  "yes</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:455
+ #: apt-get.8.xml:462
  msgid "<option>--print-uris</option>"
  msgstr "<option>--print-uris</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:456
+ #: apt-get.8.xml:463
  msgid ""
  "Instead of fetching the files to install their URIs are printed. Each URI "
  "will have the path, the destination file name, the size and the expected md5 "
@@@ -4651,12 -4688,13 +4684,12 @@@ msgstr "
  "<literal>APT::Get::Print-URIs</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:466
+ #: apt-get.8.xml:473
  msgid "<option>--purge</option>"
  msgstr "<option>--purge</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 -#: apt-get.8.xml:474
 -#, fuzzy
 +#: apt-get.8.xml:467
  #| msgid ""
  #| "Use purge instead of remove for anything that would be removed.  An "
  #| "asterisk (\"*\") will be displayed next to packages which are scheduled "
@@@ -4671,16 -4709,15 +4704,16 @@@ msgid "
  msgstr ""
  "Utiliser « purge » à la place de « remove » pour supprimer tout ce qui peut "
  "être supprimé. Un astérisque (*) sera accolé aux noms des paquets qui vont "
 -"être purgés. Élément de configuration : <literal>APT::Get::Purge</literal>."
 +"être purgés. <option>remove --purge</option> est équivalent à la commande <option>purge</option>. "
 +"Élément de configuration : <literal>APT::Get::Purge</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:474
+ #: apt-get.8.xml:481
  msgid "<option>--reinstall</option>"
  msgstr "<option>--reinstall</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:475
+ #: apt-get.8.xml:482
  msgid ""
  "Re-Install packages that are already installed and at the newest version.  "
  "Configuration Item: <literal>APT::Get::ReInstall</literal>."
@@@ -4689,12 -4726,12 +4722,12 @@@ msgstr "
  "Élément de configuration : <literal>APT::Get::ReInstall</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:479
+ #: apt-get.8.xml:486
  msgid "<option>--list-cleanup</option>"
  msgstr "<option>--list-cleanup</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:480
+ #: apt-get.8.xml:487
  msgid ""
  "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn "
  "it off. When on <command>apt-get</command> will automatically manage the "
@@@ -4712,17 -4749,17 +4745,17 @@@ msgstr "
  "literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:489
+ #: apt-get.8.xml:496
  msgid "<option>--target-release</option>"
  msgstr "<option>--target-release</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:490
+ #: apt-get.8.xml:497
  msgid "<option>--default-release</option>"
  msgstr "<option>--default-release</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:491
+ #: apt-get.8.xml:498
  msgid ""
  "This option controls the default input to the policy engine, it creates a "
  "default pin at priority 990 using the specified release string.  This "
@@@ -4744,12 -4781,12 +4777,12 @@@ msgstr "
  "Release</literal>.  Voyez aussi la page de manuel d'&apt-preferences;."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:504
+ #: apt-get.8.xml:511
  msgid "<option>--trivial-only</option>"
  msgstr "<option>--trivial-only</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:506
+ #: apt-get.8.xml:513
  msgid ""
  "Only perform operations that are 'trivial'. Logically this can be considered "
  "related to <option>--assume-yes</option>, where <option>--assume-yes</"
@@@ -4763,12 -4800,12 +4796,12 @@@ msgstr "
  "Get::Trivial-Only</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:512
+ #: apt-get.8.xml:519
  msgid "<option>--no-remove</option>"
  msgstr "<option>--no-remove</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:513
+ #: apt-get.8.xml:520
  msgid ""
  "If any packages are to be removed apt-get immediately aborts without "
  "prompting.  Configuration Item: <literal>APT::Get::Remove</literal>."
@@@ -4778,12 -4815,12 +4811,12 @@@ msgstr "
  "Remove</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:518
+ #: apt-get.8.xml:525
  msgid "<option>--auto-remove</option>"
  msgstr "<option>--auto-remove</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:519
+ #: apt-get.8.xml:526
  msgid ""
  "If the command is either <literal>install</literal> or <literal>remove</"
  "literal>, then this option acts like running <literal>autoremove</literal> "
@@@ -4796,12 -4833,12 +4829,12 @@@ msgstr "
  "inutilisés. Élément de configuration : <literal>APT::Get::Upgrade</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:525
+ #: apt-get.8.xml:532
  msgid "<option>--only-source</option>"
  msgstr "<option>--only-source</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:526
+ #: apt-get.8.xml:533
  msgid ""
  "Only has meaning for the <literal>source</literal> and <literal>build-dep</"
  "literal> commands.  Indicates that the given source names are not to be "
@@@ -4821,22 -4858,22 +4854,22 @@@ msgstr "
  "literal>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:536
+ #: apt-get.8.xml:543
  msgid "<option>--diff-only</option>"
  msgstr "<option>--diff-only</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:536
+ #: apt-get.8.xml:543
  msgid "<option>--dsc-only</option>"
  msgstr "<option>--dsc-only</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:536
+ #: apt-get.8.xml:543
  msgid "<option>--tar-only</option>"
  msgstr "<option>--tar-only</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:537
+ #: apt-get.8.xml:544
  msgid ""
  "Download only the diff, dsc, or tar file of a source archive.  Configuration "
  "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</"
@@@ -4848,12 -4885,12 +4881,12 @@@ msgstr "
  "literal>, "
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:542
+ #: apt-get.8.xml:549
  msgid "<option>--arch-only</option>"
  msgstr "<option>--arch-only</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:543
+ #: apt-get.8.xml:550
  msgid ""
  "Only process architecture-dependent build-dependencies.  Configuration Item: "
  "<literal>APT::Get::Arch-Only</literal>."
@@@ -4863,12 -4900,12 +4896,12 @@@ msgstr "
  "literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
- #: apt-get.8.xml:547
+ #: apt-get.8.xml:554
  msgid "<option>--allow-unauthenticated</option>"
  msgstr "<option>--allow-unauthenticated</option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
- #: apt-get.8.xml:548
+ #: apt-get.8.xml:555
  msgid ""
  "Ignore if packages can't be authenticated and don't prompt about it.  This "
  "is useful for tools like pbuilder.  Configuration Item: <literal>APT::Get::"
@@@ -4880,7 -4917,7 +4913,7 @@@ msgstr "
  "AllowUnauthenticated</literal>."
  
  #. type: Content of: <refentry><refsect1><variablelist>
- #: apt-get.8.xml:561
+ #: apt-get.8.xml:568
  msgid ""
  "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; "
  "&file-statelists;"
@@@ -4889,7 -4926,7 +4922,7 @@@ msgstr "
  "&file-statelists;"
  
  #. type: Content of: <refentry><refsect1><para>
- #: apt-get.8.xml:570
+ #: apt-get.8.xml:577
  msgid ""
  "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, "
  "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-"
@@@ -4900,7 -4937,7 +4933,7 @@@ msgstr "
  "« HOWTO » d'APT."
  
  #. type: Content of: <refentry><refsect1><para>
- #: apt-get.8.xml:576
+ #: apt-get.8.xml:583
  msgid ""
  "<command>apt-get</command> returns zero on normal operation, decimal 100 on "
  "error."
@@@ -4909,22 -4946,22 +4942,22 @@@ msgstr "
  "décimal 100 en cas d'erreur."
  
  #. type: Content of: <refentry><refsect1><title>
- #: apt-get.8.xml:579
+ #: apt-get.8.xml:586
  msgid "ORIGINAL AUTHORS"
  msgstr "AUTEURS D'ORIGINE"
  
  #. type: Content of: <refentry><refsect1><para>
- #: apt-get.8.xml:580
+ #: apt-get.8.xml:587
  msgid "&apt-author.jgunthorpe;"
  msgstr "&apt-author.jgunthorpe;"
  
  #. type: Content of: <refentry><refsect1><title>
- #: apt-get.8.xml:583
+ #: apt-get.8.xml:590
  msgid "CURRENT AUTHORS"
  msgstr "AUTEURS ACTUELS"
  
  #. type: Content of: <refentry><refsect1><para>
- #: apt-get.8.xml:585
+ #: apt-get.8.xml:592
  msgid "&apt-author.team;"
  msgstr "&apt-author.team;"
  
@@@ -4940,6 -4977,7 +4973,6 @@@ msgstr "Utilitaire de gestion des clé
  
  #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
  #: apt-key.8.xml:28
 -#, fuzzy
  #| msgid ""
  #| "<command>apt-key</command> <arg><replaceable>command</replaceable>/</arg> "
  #| "<arg rep=\"repeat\"><option><replaceable>arguments</replaceable></"
@@@ -4950,8 -4988,7 +4983,8 @@@ msgid "
  "<arg rep=\"repeat\"><option><replaceable>arguments</replaceable></option></"
  "arg>"
  msgstr ""
 -"<command>apt-key</command> <arg><replaceable>command</replaceable>/</arg> "
 +"<command>apt-key</command> <arg><option>--keyring <replaceable>fichier</"
 +"replaceable></option></arg> <arg><replaceable>commande</replaceable></arg> "
  "<arg rep=\"repeat\"><option><replaceable>paramètres</replaceable></option></"
  "arg>"
  
@@@ -5064,13 -5101,14 +5097,13 @@@ msgstr "
  msgid ""
  "Note that options need to be defined before the commands described in the "
  "previous section."
 -msgstr ""
 +msgstr "Veuillez noter que les options doivent être utilisées avant les commandes décrites dans la section suivante."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-key.8.xml:142
 -#, fuzzy
  #| msgid "add <replaceable>filename</replaceable>"
  msgid "--keyring <replaceable>filename</replaceable>"
 -msgstr "add <replaceable>fichier</replaceable>"
 +msgstr "--keyring <replaceable>fichier</replaceable>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt-key.8.xml:143
@@@ -5082,14 -5120,11 +5115,14 @@@ msgid "
  "filename> is the primary keyring which means that e.g. new keys are added to "
  "this one."
  msgstr ""
 +"Cette option permet d'indiquer le fichier porte-clés sur lequel la commande doit agir. Par défaut, une commande sera exécutée sur le fichier <filename>trusted.gpg<"
 +"/filename> ainsi que sur tous les fichiers du répertoire <filename>trusted.gpg.d</filename>. Le fichier <filename>trusted.gpg</"
 +"filename> reste le fichier principal pour les clés donc, par exemple, les nouvelles clés y seront ajoutées."
  
  #. type: Content of: <refentry><refsect1><variablelist>
  #: apt-key.8.xml:156
  msgid "&file-trustedgpg;"
 -msgstr ""
 +msgstr "&file-trustedgpg;"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-key.8.xml:158
@@@ -5113,8 -5148,10 +5146,8 @@@ msgstr "Trousseau des clés fiables de 
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-key.8.xml:166
 -msgid ""
 -"<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>"
 -msgstr ""
 -"<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>"
 +msgid "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>"
 +msgstr "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt-key.8.xml:167
@@@ -5126,7 -5163,7 +5159,7 @@@ msgstr "Trousseau des clés fiables sup
  msgid "&apt-get;, &apt-secure;"
  msgstr "&apt-get;, &apt-secure;"
  
 -#.  The last update date 
 +#.  The last update date
  #. type: Content of: <refentry><refentryinfo>
  #: apt-mark.8.xml:13
  msgid ""
@@@ -5236,8 -5273,10 +5269,8 @@@ msgstr "
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-mark.8.xml:93
 -msgid ""
 -"<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>"
 -msgstr ""
 -"<option>-f=<filename><replaceable>FICHIER</replaceable></filename></option>"
 +msgid "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>"
 +msgstr "<option>-f=<filename><replaceable>FICHIER</replaceable></filename></option>"
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt-mark.8.xml:94
@@@ -5697,9 -5736,10 +5730,9 @@@ msgstr "
  "<command>apt-sortpkgs</command> retourne zéro si tout se passe bien ou 100 "
  "en cas d'erreur."
  
 -#.  The last update date 
 +#.  The last update date
  #. type: Content of: <refentry><refentryinfo>
  #: apt.conf.5.xml:13
 -#, fuzzy
  #| msgid ""
  #| "&apt-author.jgunthorpe; &apt-author.team; <author> <firstname>Daniel</"
  #| "firstname> <surname>Burrows</surname> <contrib>Initial documentation of "
@@@ -5714,7 -5754,7 +5747,7 @@@ msgstr "
  "&apt-author.jgunthorpe; &apt-author.team; <author> <firstname>Daniel</"
  "firstname> <surname>Burrows</surname> <contrib>Documentation d'origine de "
  "Debug::*.</contrib> <email>dburrows@debian.org</email> </author> &apt-email; "
 -"&apt-product; <date>18 septembre 2009</date>"
 +"&apt-product; <date>16 janvier 2010</date>"
  
  #. type: Content of: <refentry><refnamediv><refname>
  #: apt.conf.5.xml:28 apt.conf.5.xml:35
@@@ -5739,23 -5779,20 +5772,23 @@@ msgid "
  "made. All tools therefore share the configuration files and also use a "
  "common command line parser to provide a uniform environment."
  msgstr ""
 +"Le fichier <filename>apt.conf</filename>  est le fichier de configuration principal du l'ensemble de programmes APT, mais n'est de loin pas le seul endroit où des choix "
 +"d'options peuvent être effectués. Tous les outils partagent les fichiers de configuration et utilisent également une analyse commune de la ligne de commande, ce qui permet "
 +"de garantir un environnement d'utilisation uniforme."
  
  #. type: Content of: <refentry><refsect1><orderedlist><para>
  #: apt.conf.5.xml:45
  msgid ""
  "When an APT tool starts up it will read the configuration files in the "
  "following order:"
 -msgstr ""
 +msgstr "Lorsqu'un programme de l'ensemble APT est utilisé, il lit le fichier de configuration dans l'ordre suivant :"
  
  #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
  #: apt.conf.5.xml:47
  msgid ""
  "the file specified by the <envar>APT_CONFIG</envar> environment variable (if "
  "any)"
 -msgstr ""
 +msgstr "fichier indiqué par la variable d'environnement <envar>APT_CONFIG</envar> si elle existe"
  
  #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
  #: apt.conf.5.xml:49
@@@ -5765,30 -5802,30 +5798,30 @@@ msgid "
  "which only contain alphanumeric, hyphen (-), underscore (_) and period (.) "
  "characters - otherwise they will be silently ignored."
  msgstr ""
 +"tous les fichiers de <literal>Dir::Etc::Parts</literal> dans l'ordre alphanumérique ascendant qui ont soit l'extension \"<literal>conf</literal>\", soit aucune extension "
 +"et qui ne contiennent que des caractères alphanumériques, des tirets (-), des caractères de soulignement (_) et des points (.), les autres fichiers étant ignorés."
  
  #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
  #: apt.conf.5.xml:54
 -#, fuzzy
  #| msgid ""
  #| "APT configuration file.  Configuration Item: <literal>Dir::Etc::Main</"
  #| "literal>."
 -msgid ""
 -"the main configuration file specified by <literal>Dir::Etc::main</literal>"
 +msgid "the main configuration file specified by <literal>Dir::Etc::main</literal>"
  msgstr ""
 -"Fichier de configuration d'APT. Élément de configuration : <literal>Dir::"
 -"Etc::Main</literal>."
 +"le fichier de configuration défini par <literal>Dir::"
 +"Etc::Main</literal>"
  
  #. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
  #: apt.conf.5.xml:56
  msgid ""
  "the command line options are applied to override the configuration "
  "directives or to load even more configuration files."
 -msgstr ""
 +msgstr "les options de ligne de commande sont appliquées pour remplacer les directives de configuration ou pour charger d'autres fichiers de configuration."
  
  #. type: Content of: <refentry><refsect1><title>
  #: apt.conf.5.xml:60
  msgid "Syntax"
 -msgstr ""
 +msgstr "Syntaxe"
  
  #. type: Content of: <refentry><refsect1><para>
  #: apt.conf.5.xml:61
@@@ -6080,6 -6117,7 +6113,6 @@@ msgstr "Immediate-Configure
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt.conf.5.xml:170
 -#, fuzzy
  #| msgid ""
  #| "Defaults to on which will cause APT to install essential and important "
  #| "packages as fast as possible in the install/upgrade operation. This is "
@@@ -6153,7 -6191,7 +6186,7 @@@ msgstr "
  "ne fonctionnera plus nécessairement puisque sa dépendance n'est pas "
  "satisfaite. Le marqueur de configuration immédiate sera aussi utilisé pour "
  "toute dépendance qui peut créer un problème, par exemple les dépendances "
 -"circulaires. En effet, les marqueur de configuration immédiate revient à "
 +"circulaires. En effet, utiliser le marqueur de configuration immédiate revient à "
  "gérer une pré-dépendance. Il est donc possible, en théorie, qu'APT rencontre "
  "une situation où il lui est impossible d'effectuer la configuration "
  "immédiate, qu'il se termine alors avec une erreur en faisant référence à "
  "rares cas, sur des versions instables de distributions, la cause étant des "
  "dépendances incorrectes ou un système déjà dans un état instable. Il est "
  "donc déconseillé de désactiver cette option sans réfléchir car la situation "
 -"décrite précédemmebnt n'est qu'un des cas où la configuration immédiate "
 +"décrite précédemment n'est qu'un des cas où la configuration immédiate "
  "permet de résoudre des situations complexes. Avant de tenter une opération "
  "telle que <literal>dist-upgrade</literal> avec cette option désactivée, il "
  "est largement préférable d'essayer une opération <literal>install</literal> "
@@@ -6296,10 -6334,6 +6329,10 @@@ msgid "
  "the size of the targeted file. If one of these limits is exceeded the "
  "complete file is downloaded instead of the patches."
  msgstr ""
 +"Deux sous-options permettant de limite l'utilisation de fichiers « pdiff » sont également disponibles. <literal>FileLimit</literal> permet d'indiquer le nombre maximal de "
 +"fichiers de différences peuvent être téléchargés pour modifier un fichier. <literal>SizeLimit</literal> permet par ailleurs de limiter la taille combinée des fichiers de "
 +"différences récupérés à un certain pourcentage du fichier à modifier. Si une de ces limites est dépassée, le fichier complet est téléchargé au lieu de télécharger les "
 +"fichiers de différences."
  
  #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
  #: apt.conf.5.xml:245
@@@ -6779,6 -6813,7 +6812,6 @@@ msgstr "Langues
  
  #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
  #: apt.conf.5.xml:415
 -#, fuzzy
  #| msgid ""
  #| "The Languages subsection controls which <filename>Translation</filename> "
  #| "files are downloaded and in which order APT tries to display the "
@@@ -6805,7 -6840,7 +6838,7 @@@ msgstr "
  "choisie en premier. Les langues peuvent être indiquées par leur code long ou "
  "court. Veuillez noter que tous les dépôts ne fournissent pas les fichiers "
  "<filename>Translation</filename> pour toutes les langues, particulièrement "
 -"pour les code de langues long sont rares. Il est donc conseillé de vous "
 +"pour les codes rarement utilisés. Il est donc conseillé de vous "
  "renseigner sur ce qui est disponible avant d'établir des réglages "
  "impossibles."
  
@@@ -6817,6 -6852,7 +6850,6 @@@ msgstr "Acquire::Languages { \"environm
  
  #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
  #: apt.conf.5.xml:421
 -#, fuzzy
  #| msgid ""
  #| "The default list includes \"environment\" and \"en\". "
  #| "\"<literal>environment</literal>\" has a special meaning here: It will be "
@@@ -7523,7 -7559,7 +7556,7 @@@ msgstr "
  
  #.  TODO: provide a
  #.       motivating example, except I haven't a clue why you'd want
 -#.       to do this. 
 +#.       to do this.
  #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
  #: apt.conf.5.xml:692
  msgid ""
@@@ -7545,7 -7581,8 +7578,7 @@@ msgstr "<literal>Debug::Acquire::cdrom<
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt.conf.5.xml:711
 -msgid ""
 -"Print information related to accessing <literal>cdrom://</literal> sources."
 +msgid "Print information related to accessing <literal>cdrom://</literal> sources."
  msgstr ""
  "Affiche les informations concernant les sources de type <literal>cdrom://</"
  "literal>"
@@@ -7558,7 -7595,8 +7591,7 @@@ msgstr "<literal>Debug::Acquire::ftp</l
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt.conf.5.xml:722
  msgid "Print information related to downloading packages using FTP."
 -msgstr ""
 -"Affiche les informations concernant le téléchargement de paquets par FTP."
 +msgstr "Affiche les informations concernant le téléchargement de paquets par FTP."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt.conf.5.xml:729
@@@ -7568,7 -7606,8 +7601,7 @@@ msgstr "<literal>Debug::Acquire::http</
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt.conf.5.xml:733
  msgid "Print information related to downloading packages using HTTP."
 -msgstr ""
 -"Affiche les informations concernant le téléchargement de paquets par HTTP."
 +msgstr "Affiche les informations concernant le téléchargement de paquets par HTTP."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
  #: apt.conf.5.xml:740
@@@ -7729,7 -7768,8 +7762,7 @@@ msgstr "<literal>Debug::pkgAcquire::Wor
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt.conf.5.xml:862
 -msgid ""
 -"Log all interactions with the sub-processes that actually perform downloads."
 +msgid "Log all interactions with the sub-processes that actually perform downloads."
  msgstr ""
  "Affiche toutes les interactions avec les processus enfants qui se chargent "
  "effectivement des téléchargements."
@@@ -7870,7 -7910,8 +7903,7 @@@ msgstr "<literal>Debug::pkgPackageManag
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
  #: apt.conf.5.xml:963
 -msgid ""
 -"Output status messages tracing the steps performed when invoking &dpkg;."
 +msgid "Output status messages tracing the steps performed when invoking &dpkg;."
  msgstr "Affiche le détail des opérations liées à l'invocation de &dpkg;."
  
  #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
@@@ -7941,18 -7982,20 +7974,18 @@@ msgstr "
  msgid "&file-aptconf;"
  msgstr "&file-aptconf;"
  
 -#.  ? reading apt.conf 
 +#.  ? reading apt.conf
  #. type: Content of: <refentry><refsect1><para>
  #: apt.conf.5.xml:1042
  msgid "&apt-cache;, &apt-config;, &apt-preferences;."
  msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
  
 -#.  The last update date 
 +#.  The last update date
  #. type: Content of: <refentry><refentryinfo>
  #: apt_preferences.5.xml:13
 -#, fuzzy
  #| msgid "&apt-author.team; &apt-email; &apt-product; <date>04 May 2009</date>"
 -msgid ""
 -"&apt-author.team; &apt-email; &apt-product; <date>16 February 2010</date>"
 -msgstr "&apt-author.team; &apt-email; &apt-product; <date>04 mai 2009</date>"
 +msgid "&apt-author.team; &apt-email; &apt-product; <date>16 February 2010</date>"
 +msgstr "&apt-author.team; &apt-email; &apt-product; <date>16 février 2010</date>"
  
  #. type: Content of: <refentry><refnamediv><refname>
  #: apt_preferences.5.xml:21 apt_preferences.5.xml:28
@@@ -8022,14 -8065,14 +8055,17 @@@ msgid "
  "not questioning the preferences so wrong settings will therefore lead to "
  "uninstallable packages or wrong decisions while upgrading packages.  Even "
  "more problems will arise if multiply distribution releases are mixed without "
- "a good understanding of the following paragraphs.  You have been warned."
+ "a good understanding of the following paragraphs.  Packages included in a "
+ "specific release aren't tested in and therefore doesn't always work as "
+ "expected in older or newer releases or together with other packages from "
+ "different releases.  You have been warned."
  msgstr ""
 +"Les préférences sont un outil puissant pour les administrateurs système mais peuvent devenir leur pire cauchemar si elles sont utilisées sans précautions. APT ne remettra "
 +"pas en doute les réglages choisis. Des valeurs erronées pourront alors conduire à des paquets non installables ou à des décisions incorrectes lors de la mise à jour des "
 +"paquets. Des problèmes supplémentaires peuvent survenir si des distributions multiples sont mélangées sans une bonne compréhension des paragraphes qui suivent."
  
  #. type: Content of: <refentry><refsect1><para>
- #: apt_preferences.5.xml:64
+ #: apt_preferences.5.xml:67
  msgid ""
  "Note that the files in the <filename>/etc/apt/preferences.d</filename> "
  "directory are parsed in alphanumeric ascending order and need to obey the "
  "underscore (_) and period (.) characters - otherwise they will be silently "
  "ignored."
  msgstr ""
 +"Veuillez noter que les fichiers du répertoire <filename>/etc/apt/preferences.d</filename> sont analysés par ordre alphanumérique ascendant, doivent avoir l'extension \"<"
 +"literal>pref</literal>\" ou aucune extension et ne peuvent continir que des caractères alphanumériques, des tirets (-), des caractères de soulignement (_) et des points (."
 +"). Dans le cas contraire, ils seront ignorés sans avertissement."
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
- #: apt_preferences.5.xml:71
+ #: apt_preferences.5.xml:74
  msgid "APT's Default Priority Assignments"
  msgstr "Priorités affectées par défaut"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:86
+ #: apt_preferences.5.xml:89
  #, no-wrap
  msgid "<command>apt-get install -t testing <replaceable>some-package</replaceable></command>\n"
  msgstr "<command>apt-get install -t testing <replaceable>paquet</replaceable></command>\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:89
+ #: apt_preferences.5.xml:92
  #, no-wrap
  msgid "APT::Default-Release \"stable\";\n"
  msgstr "APT::Default-Release \"stable\";\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:73
+ #: apt_preferences.5.xml:76
  msgid ""
  "If there is no preferences file or if there is no entry in the file that "
  "applies to a particular version then the priority assigned to that version "
@@@ -8085,22 -8125,22 +8121,22 @@@ msgstr "
  "\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" id=\"1\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:98
+ #: apt_preferences.5.xml:101
  msgid "priority 100"
  msgstr "une priorité égale à 100"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:99
+ #: apt_preferences.5.xml:102
  msgid "to the version that is already installed (if any)."
  msgstr "est affectée à la version déjà installée (si elle existe)."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:103
+ #: apt_preferences.5.xml:106
  msgid "priority 500"
  msgstr "une priorité égale à 500"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:104
+ #: apt_preferences.5.xml:107
  msgid ""
  "to the versions that are not installed and do not belong to the target "
  "release."
@@@ -8109,19 -8149,20 +8145,19 @@@ msgstr "
  "pas à la distribution par défaut."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:108
+ #: apt_preferences.5.xml:111
  msgid "priority 990"
  msgstr "une priorité égale à 990"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
 -#: apt_preferences.5.xml:112
 -msgid ""
 -"to the versions that are not installed and belong to the target release."
 +#: apt_preferences.5.xml:109
 +msgid "to the versions that are not installed and belong to the target release."
  msgstr ""
  "est affectée aux versions qui ne sont pas installées et qui appartiennent à "
  "la distribution par défaut."
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:93
+ #: apt_preferences.5.xml:96
  msgid ""
  "If the target release has been specified then APT uses the following "
  "algorithm to set the priorities of the versions of a package.  Assign: "
@@@ -8132,7 -8173,7 +8168,7 @@@ msgstr "
  "type=\"variablelist\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:114
+ #: apt_preferences.5.xml:117
  msgid ""
  "If the target release has not been specified then APT simply assigns "
  "priority 100 to all installed package versions and priority 500 to all "
@@@ -8143,7 -8184,7 +8179,7 @@@ msgstr "
  "une priorité égale à 500 à tout version non installée."
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:118
+ #: apt_preferences.5.xml:121
  msgid ""
  "APT then applies the following rules, listed in order of precedence, to "
  "determine which version of a package to install."
@@@ -8152,7 -8193,7 +8188,7 @@@ msgstr "
  "qu'il faut installer (par ordre de priorité) :"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:121
+ #: apt_preferences.5.xml:124
  msgid ""
  "Never downgrade unless the priority of an available version exceeds 1000.  "
  "(\"Downgrading\" is installing a less recent version of a package in place "
@@@ -8168,12 -8209,12 +8204,12 @@@ msgstr "
  "arrière."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:127
+ #: apt_preferences.5.xml:130
  msgid "Install the highest priority version."
  msgstr "Installer la version qui possède la priorité la plus haute."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:128
+ #: apt_preferences.5.xml:131
  msgid ""
  "If two or more versions have the same priority, install the most recent one "
  "(that is, the one with the higher version number)."
@@@ -8182,7 -8223,7 +8218,7 @@@ msgstr "
  "plus récente (c.-à-d. celle dont le numéro de version est le plus grand)."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:131
+ #: apt_preferences.5.xml:134
  msgid ""
  "If two or more versions have the same priority and version number but either "
  "the packages differ in some of their metadata or the <literal>--reinstall</"
@@@ -8194,7 -8235,7 +8230,7 @@@ msgstr "
  "qui n'est pas installée."
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:137
+ #: apt_preferences.5.xml:140
  msgid ""
  "In a typical situation, the installed version of a package (priority 100)  "
  "is not as recent as one of the versions available from the sources listed in "
@@@ -8209,7 -8250,7 +8245,7 @@@ msgstr "
  "replaceable></command> ou <command>apt-get dist-upgrade</command>."
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:144
+ #: apt_preferences.5.xml:147
  msgid ""
  "More rarely, the installed version of a package is <emphasis>more</emphasis> "
  "recent than any of the other available versions.  The package will not be "
@@@ -8222,7 -8263,7 +8258,7 @@@ msgstr "
  "<command>apt-get upgrade</command> ne provoquent pas de retour en arrière."
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:149
+ #: apt_preferences.5.xml:152
  msgid ""
  "Sometimes the installed version of a package is more recent than the version "
  "belonging to the target release, but not as recent as a version belonging to "
@@@ -8241,12 -8282,12 +8277,12 @@@ msgstr "
  "priorité que celle de la version installée."
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
- #: apt_preferences.5.xml:158
+ #: apt_preferences.5.xml:161
  msgid "The Effect of APT Preferences"
  msgstr "Conséquences des préférences"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:160
+ #: apt_preferences.5.xml:163
  msgid ""
  "The APT preferences file allows the system administrator to control the "
  "assignment of priorities.  The file consists of one or more multi-line "
@@@ -8259,7 -8300,7 +8295,7 @@@ msgstr "
  "formes, une forme particulière et une forme générale."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:166
+ #: apt_preferences.5.xml:169
  msgid ""
  "The specific form assigns a priority (a \"Pin-Priority\") to one or more "
  "specified packages and specified version or version range.  For example, the "
@@@ -8274,7 -8315,7 +8310,7 @@@ msgstr "
  "dont le numéro de version commence par <literal>5.8</literal>."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
- #: apt_preferences.5.xml:173
+ #: apt_preferences.5.xml:176
  #, no-wrap
  msgid ""
  "Package: perl\n"
@@@ -8286,7 -8327,7 +8322,7 @@@ msgstr "
  "Pin-Priority: 1001\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:179
+ #: apt_preferences.5.xml:182
  msgid ""
  "The general form assigns a priority to all of the package versions in a "
  "given distribution (that is, to all the versions of packages that are listed "
@@@ -8301,7 -8342,7 +8337,7 @@@ msgstr "
  "un nom complètement qualifié."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:185
+ #: apt_preferences.5.xml:188
  msgid ""
  "This general-form entry in the APT preferences file applies only to groups "
  "of packages.  For example, the following record assigns a high priority to "
@@@ -8312,7 -8353,7 +8348,7 @@@ msgstr "
  "priorité haute à toutes les versions disponibles dans le site local."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
- #: apt_preferences.5.xml:190
+ #: apt_preferences.5.xml:193
  #, no-wrap
  msgid ""
  "Package: *\n"
@@@ -8324,7 -8365,7 +8360,7 @@@ msgstr "
  "Pin-Priority: 999\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:195
+ #: apt_preferences.5.xml:198
  msgid ""
  "A note of caution: the keyword used here is \"<literal>origin</literal>\".  "
  "This should not be confused with the Origin of a distribution as specified "
@@@ -8339,7 -8380,7 +8375,7 @@@ msgstr "
  "mais le nom d'un auteur ou d'un distributeur, comme « Debian » ou « Ximian »."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:201
+ #: apt_preferences.5.xml:204
  msgid ""
  "The following record assigns a low priority to all package versions "
  "belonging to any distribution whose Archive name is \"<literal>unstable</"
@@@ -8350,7 -8391,7 +8386,7 @@@ msgstr "
  "<literal>unstable</literal>."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
- #: apt_preferences.5.xml:205
+ #: apt_preferences.5.xml:208
  #, no-wrap
  msgid ""
  "Package: *\n"
@@@ -8362,7 -8403,7 +8398,7 @@@ msgstr "
  "Pin-Priority: 50\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:210
+ #: apt_preferences.5.xml:213
  msgid ""
  "The following record assigns a high priority to all package versions "
  "belonging to any distribution whose Codename is \"<literal>squeeze</literal>"
@@@ -8373,7 -8414,7 +8409,7 @@@ msgstr "
  "<literal>squeeze</literal>."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
- #: apt_preferences.5.xml:214
+ #: apt_preferences.5.xml:217
  #, no-wrap
  msgid ""
  "Package: *\n"
@@@ -8385,7 -8426,7 +8421,7 @@@ msgstr "
  "Pin-Priority: 900\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:219
+ #: apt_preferences.5.xml:222
  msgid ""
  "The following record assigns a high priority to all package versions "
  "belonging to any release whose Archive name is \"<literal>stable</literal>\" "
@@@ -8397,7 -8438,7 +8433,7 @@@ msgstr "
  "literal>."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
- #: apt_preferences.5.xml:224
+ #: apt_preferences.5.xml:227
  #, no-wrap
  msgid ""
  "Package: *\n"
@@@ -8409,17 -8450,17 +8445,17 @@@ msgstr "
  "Pin-Priority: 500\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
- #: apt_preferences.5.xml:235
+ #: apt_preferences.5.xml:238
  msgid "How APT Interprets Priorities"
  msgstr "Méthode d'interprétation des priorités par APT"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:243
+ #: apt_preferences.5.xml:246
  msgid "P &gt; 1000"
  msgstr "P &gt; 1000"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:244
+ #: apt_preferences.5.xml:247
  msgid ""
  "causes a version to be installed even if this constitutes a downgrade of the "
  "package"
@@@ -8428,12 -8469,12 +8464,12 @@@ msgstr "
  "retour en arrière."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:248
+ #: apt_preferences.5.xml:251
  msgid "990 &lt; P &lt;=1000"
  msgstr "990 &lt; P &lt;=1000"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:249
+ #: apt_preferences.5.xml:252
  msgid ""
  "causes a version to be installed even if it does not come from the target "
  "release, unless the installed version is more recent"
@@@ -8443,12 -8484,12 +8479,12 @@@ msgstr "
  "plus récente."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:254
+ #: apt_preferences.5.xml:257
  msgid "500 &lt; P &lt;=990"
  msgstr "500 &lt; P &lt;=990"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:255
+ #: apt_preferences.5.xml:258
  msgid ""
  "causes a version to be installed unless there is a version available "
  "belonging to the target release or the installed version is more recent"
@@@ -8457,12 -8498,12 +8493,12 @@@ msgstr "
  "distribution par défaut ou si la version installée est plus récente."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:260
+ #: apt_preferences.5.xml:263
  msgid "100 &lt; P &lt;=500"
  msgstr "100 &lt; P &lt;=500"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:261
+ #: apt_preferences.5.xml:264
  msgid ""
  "causes a version to be installed unless there is a version available "
  "belonging to some other distribution or the installed version is more recent"
@@@ -8471,29 -8512,29 +8507,29 @@@ msgstr "
  "autre distribution ou si la version installée est plus récente."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:266
+ #: apt_preferences.5.xml:269
  msgid "0 &lt; P &lt;=100"
  msgstr "0 &lt; P &lt;=100"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:267
+ #: apt_preferences.5.xml:270
  msgid ""
  "causes a version to be installed only if there is no installed version of "
  "the package"
  msgstr "la version sera installée si aucune version du paquet n'est installée."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:271
+ #: apt_preferences.5.xml:274
  msgid "P &lt; 0"
  msgstr "P &lt; 0"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:272
+ #: apt_preferences.5.xml:275
  msgid "prevents the version from being installed"
  msgstr "cette priorité empêche l'installation de la version."
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:238
+ #: apt_preferences.5.xml:241
  msgid ""
  "Priorities (P) assigned in the APT preferences file must be positive or "
  "negative integers.  They are interpreted as follows (roughly speaking): "
@@@ -8504,7 -8545,7 +8540,7 @@@ msgstr "
  "<placeholder type=\"variablelist\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:277
+ #: apt_preferences.5.xml:280
  msgid ""
  "If any specific-form records match an available package version then the "
  "first such record determines the priority of the package version.  Failing "
@@@ -8518,7 -8559,7 +8554,7 @@@ msgstr "
  "trouvée détermine la priorité."
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:283
+ #: apt_preferences.5.xml:286
  msgid ""
  "For example, suppose the APT preferences file contains the three records "
  "presented earlier:"
@@@ -8527,7 -8568,7 +8563,7 @@@ msgstr "
  "entrées décrites ci-dessous :"
  
  #. type: Content of: <refentry><refsect1><refsect2><programlisting>
- #: apt_preferences.5.xml:287
+ #: apt_preferences.5.xml:290
  #, no-wrap
  msgid ""
  "Package: perl\n"
@@@ -8555,12 -8596,12 +8591,12 @@@ msgstr "
  "Pin-Priority: 50\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:300
+ #: apt_preferences.5.xml:303
  msgid "Then:"
  msgstr "Alors :"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:302
+ #: apt_preferences.5.xml:305
  msgid ""
  "The most recent available version of the <literal>perl</literal> package "
  "will be installed, so long as that version's version number begins with "
@@@ -8574,7 -8615,7 +8610,7 @@@ msgstr "
  "installée est une version 5.9*, il y aura un retour en arrière."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:307
+ #: apt_preferences.5.xml:310
  msgid ""
  "A version of any package other than <literal>perl</literal> that is "
  "available from the local system has priority over other versions, even "
@@@ -8585,7 -8626,7 +8621,7 @@@ msgstr "
  "appartenant à la distribution par défaut."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
- #: apt_preferences.5.xml:311
+ #: apt_preferences.5.xml:314
  msgid ""
  "A version of a package whose origin is not the local system but some other "
  "site listed in &sources-list; and which belongs to an <literal>unstable</"
@@@ -8598,12 -8639,13 +8634,12 @@@ msgstr "
  "paquet n'est déjà installée."
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
- #: apt_preferences.5.xml:321
+ #: apt_preferences.5.xml:324
  msgid "Determination of Package Version and Distribution Properties"
 -msgstr ""
 -"Détermination de la version des paquets et des propriétés des distributions"
 +msgstr "Détermination de la version des paquets et des propriétés des distributions"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:323
+ #: apt_preferences.5.xml:326
  msgid ""
  "The locations listed in the &sources-list; file should provide "
  "<filename>Packages</filename> and <filename>Release</filename> files to "
@@@ -8614,27 -8656,27 +8650,27 @@@ msgstr "
  "décrivent les paquets disponibles à cet endroit."
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:335
+ #: apt_preferences.5.xml:338
  msgid "the <literal>Package:</literal> line"
  msgstr "la ligne <literal>Package:</literal>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:336
+ #: apt_preferences.5.xml:339
  msgid "gives the package name"
  msgstr "donne le nom du paquet"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:339 apt_preferences.5.xml:389
+ #: apt_preferences.5.xml:342 apt_preferences.5.xml:392
  msgid "the <literal>Version:</literal> line"
  msgstr "la ligne <literal>Version:</literal>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:340
+ #: apt_preferences.5.xml:343
  msgid "gives the version number for the named package"
  msgstr "donne le numéro de version du paquet"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:327
+ #: apt_preferences.5.xml:330
  msgid ""
  "The <filename>Packages</filename> file is normally found in the directory "
  "<filename>.../dists/<replaceable>dist-name</replaceable>/"
@@@ -8655,12 -8697,12 +8691,12 @@@ msgstr "
  "\"variablelist\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:356
+ #: apt_preferences.5.xml:359
  msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line"
  msgstr "La ligne <literal>Archive:</literal> ou <literal>Suite:</literal>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:357
+ #: apt_preferences.5.xml:360
  msgid ""
  "names the archive to which all the packages in the directory tree belong.  "
  "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies "
@@@ -8677,18 -8719,18 +8713,18 @@@ msgstr "
  "préférences demanderait cette ligne :"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
- #: apt_preferences.5.xml:367
+ #: apt_preferences.5.xml:370
  #, no-wrap
  msgid "Pin: release a=stable\n"
  msgstr "Pin: release a=stable\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:373
+ #: apt_preferences.5.xml:376
  msgid "the <literal>Codename:</literal> line"
  msgstr "la ligne <literal>Codename:</literal>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:374
+ #: apt_preferences.5.xml:377
  msgid ""
  "names the codename to which all the packages in the directory tree belong.  "
  "For example, the line \"Codename: squeeze\" specifies that all of the "
@@@ -8704,13 -8746,13 +8740,13 @@@ msgstr "
  "préférences demanderait cette ligne :"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
- #: apt_preferences.5.xml:383
+ #: apt_preferences.5.xml:386
  #, no-wrap
  msgid "Pin: release n=squeeze\n"
  msgstr "Pin: release n=squeeze\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:390
+ #: apt_preferences.5.xml:393
  msgid ""
  "names the release version.  For example, the packages in the tree might "
  "belong to Debian GNU/Linux release version 3.0.  Note that there is normally "
@@@ -8726,7 -8768,7 +8762,7 @@@ msgstr "
  "préférences demanderait ces lignes :"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
- #: apt_preferences.5.xml:399
+ #: apt_preferences.5.xml:402
  #, no-wrap
  msgid ""
  "Pin: release v=3.0\n"
@@@ -8738,12 -8780,12 +8774,12 @@@ msgstr "
  "Pin: release 3.0\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:408
+ #: apt_preferences.5.xml:411
  msgid "the <literal>Component:</literal> line"
  msgstr "La ligne <literal>Component:</literal>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:409
+ #: apt_preferences.5.xml:412
  msgid ""
  "names the licensing component associated with the packages in the directory "
  "tree of the <filename>Release</filename> file.  For example, the line "
@@@ -8761,18 -8803,18 +8797,18 @@@ msgstr "
  "fichier des préférences demanderait cette ligne :"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
- #: apt_preferences.5.xml:418
+ #: apt_preferences.5.xml:421
  #, no-wrap
  msgid "Pin: release c=main\n"
  msgstr "Pin: release c=main\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:424
+ #: apt_preferences.5.xml:427
  msgid "the <literal>Origin:</literal> line"
  msgstr "La ligne <literal>Origin:</literal>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:425
+ #: apt_preferences.5.xml:428
  msgid ""
  "names the originator of the packages in the directory tree of the "
  "<filename>Release</filename> file.  Most commonly, this is <literal>Debian</"
@@@ -8785,18 -8827,18 +8821,18 @@@ msgstr "
  "ligne :"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
- #: apt_preferences.5.xml:431
+ #: apt_preferences.5.xml:434
  #, no-wrap
  msgid "Pin: release o=Debian\n"
  msgstr "Pin: release o=Debian\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
- #: apt_preferences.5.xml:437
+ #: apt_preferences.5.xml:440
  msgid "the <literal>Label:</literal> line"
  msgstr "La ligne <literal>Label:</literal>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
- #: apt_preferences.5.xml:438
+ #: apt_preferences.5.xml:441
  msgid ""
  "names the label of the packages in the directory tree of the "
  "<filename>Release</filename> file.  Most commonly, this is <literal>Debian</"
@@@ -8809,13 -8851,13 +8845,13 @@@ msgstr "
  "préférences demanderait cette ligne :"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting>
- #: apt_preferences.5.xml:444
+ #: apt_preferences.5.xml:447
  #, no-wrap
  msgid "Pin: release l=Debian\n"
  msgstr "Pin: release l=Debian\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:345
+ #: apt_preferences.5.xml:348
  msgid ""
  "The <filename>Release</filename> file is normally found in the directory "
  "<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for "
@@@ -8837,7 -8879,7 +8873,7 @@@ msgstr "
  "déterminer les priorités : <placeholder type=\"variablelist\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:451
+ #: apt_preferences.5.xml:454
  msgid ""
  "All of the <filename>Packages</filename> and <filename>Release</filename> "
  "files retrieved from locations listed in the &sources-list; file are stored "
@@@ -8862,12 -8904,12 +8898,12 @@@ msgstr "
  "<literal>unstable</literal>."
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
- #: apt_preferences.5.xml:464
+ #: apt_preferences.5.xml:467
  msgid "Optional Lines in an APT Preferences Record"
  msgstr "Lignes facultatives dans le fichier des préférences"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:466
+ #: apt_preferences.5.xml:469
  msgid ""
  "Each record in the APT preferences file can optionally begin with one or "
  "more lines beginning with the word <literal>Explanation:</literal>.  This "
@@@ -8878,7 -8920,7 +8914,7 @@@ msgstr "
  "commentaires."
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:470
+ #: apt_preferences.5.xml:473
  msgid ""
  "The <literal>Pin-Priority:</literal> line in each APT preferences record is "
  "optional.  If omitted, APT assigns a priority of 1 less than the last value "
@@@ -8891,12 -8933,12 +8927,12 @@@ msgstr "
  "literal>."
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
- #: apt_preferences.5.xml:479
+ #: apt_preferences.5.xml:482
  msgid "Tracking Stable"
  msgstr "Méthode pour suivre Stable"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:487
+ #: apt_preferences.5.xml:490
  #, no-wrap
  msgid ""
  "Explanation: Uninstall or do not install any Debian-originated\n"
@@@ -8920,7 -8962,7 +8956,7 @@@ msgstr "
  "Pin-Priority: -10\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:481
+ #: apt_preferences.5.xml:484
  msgid ""
  "The following APT preferences file will cause APT to assign a priority "
  "higher than the default (500) to all package versions belonging to a "
@@@ -8935,8 -8977,8 +8971,8 @@@ msgstr "
  "literal>.  <placeholder type=\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:504 apt_preferences.5.xml:550
- #: apt_preferences.5.xml:608
+ #: apt_preferences.5.xml:507 apt_preferences.5.xml:553
+ #: apt_preferences.5.xml:611
  #, no-wrap
  msgid ""
  "apt-get install <replaceable>package-name</replaceable>\n"
@@@ -8948,7 -8990,7 +8984,7 @@@ msgstr "
  "apt-get dist-upgrade\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:499
+ #: apt_preferences.5.xml:502
  msgid ""
  "With a suitable &sources-list; file and the above preferences file, any of "
  "the following commands will cause APT to upgrade to the latest "
@@@ -8961,13 -9003,13 +8997,13 @@@ msgstr "
  "\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:516
+ #: apt_preferences.5.xml:519
  #, no-wrap
  msgid "apt-get install <replaceable>package</replaceable>/testing\n"
  msgstr "apt-get install <replaceable>paquet</replaceable>/testing\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:510
+ #: apt_preferences.5.xml:513
  msgid ""
  "The following command will cause APT to upgrade the specified package to the "
  "latest version from the <literal>testing</literal> distribution; the package "
@@@ -8980,12 -9022,12 +9016,12 @@@ msgstr "
  "de relancer la commande.  <placeholder type=\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
- #: apt_preferences.5.xml:522
+ #: apt_preferences.5.xml:525
  msgid "Tracking Testing or Unstable"
  msgstr "Méthode pour suivre Testing ou Unstable"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:531
+ #: apt_preferences.5.xml:534
  #, no-wrap
  msgid ""
  "Package: *\n"
@@@ -9013,7 -9055,7 +9049,7 @@@ msgstr "
  "Pin-Priority: -10\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:524
+ #: apt_preferences.5.xml:527
  msgid ""
  "The following APT preferences file will cause APT to assign a high priority "
  "to package versions from the <literal>testing</literal> distribution, a "
@@@ -9030,7 -9072,7 +9066,7 @@@ msgstr "
  "<placeholder type=\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:545
+ #: apt_preferences.5.xml:548
  msgid ""
  "With a suitable &sources-list; file and the above preferences file, any of "
  "the following commands will cause APT to upgrade to the latest "
@@@ -9043,13 -9085,13 +9079,13 @@@ msgstr "
  "type=\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:565
+ #: apt_preferences.5.xml:568
  #, no-wrap
  msgid "apt-get install <replaceable>package</replaceable>/unstable\n"
  msgstr "apt-get install <replaceable>paquet</replaceable>/unstable\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:556
+ #: apt_preferences.5.xml:559
  msgid ""
  "The following command will cause APT to upgrade the specified package to the "
  "latest version from the <literal>unstable</literal> distribution.  "
@@@ -9068,12 -9110,12 +9104,12 @@@ msgstr "
  "installée.  <placeholder type=\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><title>
- #: apt_preferences.5.xml:572
+ #: apt_preferences.5.xml:575
  msgid "Tracking the evolution of a codename release"
  msgstr "Suivre l'évolution d'une version par son nom de code"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:586
+ #: apt_preferences.5.xml:589
  #, no-wrap
  msgid ""
  "Explanation: Uninstall or do not install any Debian-originated package versions\n"
@@@ -9107,7 -9149,7 +9143,7 @@@ msgstr "
  "Pin-Priority: -10\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:574
+ #: apt_preferences.5.xml:577
  msgid ""
  "The following APT preferences file will cause APT to assign a priority "
  "higher than the default (500) to all package versions belonging to a "
@@@ -9131,7 -9173,7 +9167,7 @@@ msgstr "
  "exemples précédents.  <placeholder type=\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:603
+ #: apt_preferences.5.xml:606
  msgid ""
  "With a suitable &sources-list; file and the above preferences file, any of "
  "the following commands will cause APT to upgrade to the latest version(s) in "
@@@ -9144,13 -9186,13 +9180,13 @@@ msgstr "
  "type=\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
- #: apt_preferences.5.xml:623
+ #: apt_preferences.5.xml:626
  #, no-wrap
  msgid "apt-get install <replaceable>package</replaceable>/sid\n"
  msgstr "apt-get install <replaceable>paquet</replaceable>/sid\n"
  
  #. type: Content of: <refentry><refsect1><refsect2><para>
- #: apt_preferences.5.xml:614
+ #: apt_preferences.5.xml:617
  msgid ""
  "The following command will cause APT to upgrade the specified package to the "
  "latest version from the <literal>sid</literal> distribution.  Thereafter, "
@@@ -9169,12 -9211,12 +9205,12 @@@ msgstr "
  "type=\"programlisting\" id=\"0\"/>"
  
  #. type: Content of: <refentry><refsect1><variablelist>
- #: apt_preferences.5.xml:632
+ #: apt_preferences.5.xml:635
  msgid "&file-preferences;"
  msgstr "&file-preferences;"
  
  #. type: Content of: <refentry><refsect1><para>
- #: apt_preferences.5.xml:638
+ #: apt_preferences.5.xml:641
  msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;"
  msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"
  
@@@ -9497,12 -9539,14 +9533,12 @@@ msgstr "
  
  #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
  #: sources.list.5.xml:178
 -#, fuzzy
  #| msgid "more recongnizable URI types"
  msgid "more recognizable URI types"
 -msgstr "type d'URI les plus simples à reconnaître"
 +msgstr "plus de types d'URI simples à reconnaître"
  
  #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
  #: sources.list.5.xml:180
 -#, fuzzy
  #| msgid ""
  #| "APT can be extended with more methods shipped in other optional packages "
  #| "which should follow the nameing scheme <literal>apt-transport-"
@@@ -9691,7 -9735,8 +9727,7 @@@ msgstr "$Id: guide.sgml,v 1.7 2003/04/2
  
  #. type: <abstract></abstract>
  #: guide.sgml:11
 -msgid ""
 -"This document provides an overview of how to use the the APT package manager."
 +msgid "This document provides an overview of how to use the the APT package manager."
  msgstr ""
  "Ce document fournit un aperçu des méthode d'utilisation du gestionnaire de "
  "paquets APT."
@@@ -9790,6 -9835,7 +9826,6 @@@ msgstr "
  
  #. type: <p></p>
  #: guide.sgml:63
 -#, fuzzy
  #| msgid ""
  #| "For instance, mailcrypt is an emacs extension that aids in encrypting "
  #| "email with GPG. Without GPGP installed mail-crypt is useless, so "
@@@ -10039,6 -10085,7 +10075,6 @@@ msgstr "
  
  #. type: <p></p>
  #: guide.sgml:184
 -#, fuzzy
  #| msgid ""
  #| "To enable the APT method you need to to select [A]ccess in <prgn>dselect</"
  #| "prgn> and then choose the APT method. You will be prompted for a set of "
@@@ -10060,7 -10107,7 +10096,7 @@@ msgid "
  "have access to the latest bug fixes. APT will automatically use packages on "
  "your CDROM before downloading from the Internet."
  msgstr ""
 -"Pou ractiver la méthode APT, il est nécessaire de choisir [A]ccéder dans "
 +"Pouactiver la méthode APT, il est nécessaire de choisir [A]ccéder dans "
  "<prgn>dselect</prgn> puis utiliser le choix permettant d'activer APT. Des "
  "<em>Sources</em> d'installation seront demandées, qui sont les emplacements "
  "d'où les paquets seront récupérés. Cela peut être des sites Internet "
@@@ -10191,6 -10238,7 +10227,6 @@@ msgstr "
  
  #. type: <p></p>
  #: guide.sgml:247
 -#, fuzzy
  #| msgid ""
  #| "Before starting to use <prgn>dselect</prgn> it is necessary to update the "
  #| "available list by selecting [U]pdate from the menu. This is a super-set "
@@@ -10619,8 -10667,10 +10655,8 @@@ msgstr "Résumé final
  
  #. type: <p></p>
  #: guide.sgml:447
 -msgid ""
 -"Finally, APT will print out a summary of all the changes that will occur."
 -msgstr ""
 -"Anfin, APT affichera un résumé de toutes les opérations qui prendront place."
 +msgid "Finally, APT will print out a summary of all the changes that will occur."
 +msgstr "Anfin, APT affichera un résumé de toutes les opérations qui prendront place."
  
  #. type: <example></example>
  #: guide.sgml:452
@@@ -10894,6 -10944,7 +10930,6 @@@ msgstr "
  
  #. type: <p></p>
  #: offline.sgml:57
 -#, fuzzy
  #| msgid ""
  #| "This is achieved by creatively manipulating the APT configuration file. "
  #| "The essential premis to tell APT to look on a disc for it's archive "
@@@ -11048,6 -11099,7 +11084,6 @@@ msgstr "
  
  #. type: <p><example>
  #: offline.sgml:136
 -#, fuzzy
  #| msgid ""
  #| "On the target machine the first thing to do is mount the disc and copy "
  #| "<em>/var/lib/dpkg/status</em> to it. You will also need to create the "
@@@ -11086,6 -11138,7 +11122,6 @@@ msgstr "
  
  #. type: </example></p>
  #: offline.sgml:149
 -#, fuzzy
  #| msgid ""
  #| "The dist-upgrade command can be replaced with any-other standard APT "
  #| "commands, particularly dselect-upgrade. You can even use an APT front end "
index 4c26f79b8f1e663fff7a8ad5b6a657b9ce59050c,46831b385a59a8a90b0abaa55d735ab85688cef9..6f9fa7ab39b992f85e90c89e4217eb70b0dfcace
@@@ -16,7 -16,6 +16,7 @@@
  #include <apt-pkg/configuration.h>
  #include <apt-pkg/cmndline.h>
  #include <apt-pkg/strutl.h>
 +#include <apt-pkg/init.h>
  #include <config.h>
  #include <apti18n.h>
  #include <algorithm>
@@@ -63,6 -62,10 +63,10 @@@ struct PackageMa
     string SrcOverride;
     string SrcExtraOverride;
  
+    // Translation master file
+    bool LongDesc;
+    TranslationWriter *TransWriter;
     // Contents 
     string Contents;
     string ContentsHead;
                    vector<PackageMap>::iterator End,
                    unsigned long &Left);
     
-    PackageMap() : DeLinkLimit(0), Permissions(1), ContentsDone(false), 
-         PkgDone(false), SrcDone(false), ContentsMTime(0) {};
+    PackageMap() : LongDesc(true), TransWriter(NULL), DeLinkLimit(0), Permissions(1),
+                 ContentsDone(false), PkgDone(false), SrcDone(false),
+                 ContentsMTime(0) {};
  };
                                                                        /*}}}*/
  
@@@ -130,8 -134,6 +135,6 @@@ void PackageMap::GetGeneral(Configurati
     PkgExt = Block.Find("Packages::Extensions",
                       Setup.Find("Default::Packages::Extensions",".deb").c_str());
     
-    Permissions = Setup.FindI("Default::FileMode",0644);
-    
     if (FLFile.empty() == false)
        FLFile = flCombine(Setup.Find("Dir::FileListDir"),FLFile);
     
@@@ -170,6 -172,9 +173,9 @@@ bool PackageMap::GenPackages(Configurat
     Packages.DirStrip = ArchiveDir;
     Packages.InternalPrefix = flCombine(ArchiveDir,InternalPrefix);
  
+    Packages.TransWriter = TransWriter;
+    Packages.LongDescription = LongDesc;
     Packages.Stats.DeLinkBytes = Stats.DeLinkBytes;
     Packages.DeLinkLimit = DeLinkLimit;
  
@@@ -437,6 -442,8 +443,8 @@@ void LoadTree(vector<PackageMap> &PkgLi
                            "$(DIST)/$(SECTION)/source/");
     string DPkg = Setup.Find("TreeDefault::Packages",
                            "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages");
+    string DTrans = Setup.Find("TreeDefault::Translation",
+                           "$(DIST)/$(SECTION)/i18n/Translation-en");
     string DIPrfx = Setup.Find("TreeDefault::InternalPrefix",
                            "$(DIST)/$(SECTION)/");
     string DContents = Setup.Find("TreeDefault::Contents",
     string DFLFile = Setup.Find("TreeDefault::FileList", "");
     string DSFLFile = Setup.Find("TreeDefault::SourceFileList", "");
  
+    int const Permissions = Setup.FindI("Default::FileMode",0644);
+    bool const LongDescription = Setup.FindB("Default::LongDescription",
+                                       _config->FindB("APT::FTPArchive::LongDescription", true));
+    string const TranslationCompress = Setup.Find("Default::Translation::Compress",". gzip").c_str();
     // Process 'tree' type sections
     const Configuration::Item *Top = Setup.Tree("tree");
     for (Top = (Top == 0?0:Top->Child); Top != 0;)
        string Section;
        while (ParseQuoteWord(Sections,Section) == true)
        {
-        string Tmp2 = Block.Find("Architectures");
         string Arch;
+        struct SubstVar const Vars[] = {{"$(DIST)",&Dist},
+                                        {"$(SECTION)",&Section},
+                                        {"$(ARCH)",&Arch},
+                                        {}};
+        mode_t const Perms = Block.FindI("FileMode", Permissions);
+        bool const LongDesc = Block.FindB("LongDescription", LongDescription);
+        TranslationWriter *TransWriter;
+        if (DTrans.empty() == false && LongDesc == false)
+        {
+           string const TranslationFile = flCombine(Setup.FindDir("Dir::ArchiveDir"),
+                       SubstVar(Block.Find("Translation", DTrans.c_str()), Vars));
+           string const TransCompress = Block.Find("Translation::Compress", TranslationCompress);
+           TransWriter = new TranslationWriter(TranslationFile, TransCompress, Perms);
+        }
+        else
+           TransWriter = NULL;
+        string const Tmp2 = Block.Find("Architectures");
         const char *Archs = Tmp2.c_str();
         while (ParseQuoteWord(Archs,Arch) == true)
         {
-           struct SubstVar Vars[] = {{"$(DIST)",&Dist},
-                                     {"$(SECTION)",&Section},
-                                     {"$(ARCH)",&Arch},
-                                     {}};
            PackageMap Itm;
-           
+           Itm.Permissions = Perms;
            Itm.BinOverride = SubstVar(Block.Find("BinOverride"),Vars);
            Itm.InternalPrefix = SubstVar(Block.Find("InternalPrefix",DIPrfx.c_str()),Vars);
  
               Itm.PkgFile = SubstVar(Block.Find("Packages",DPkg.c_str()),Vars);
               Itm.Tag = SubstVar("$(DIST)/$(SECTION)/$(ARCH)",Vars);
               Itm.Arch = Arch;
+              Itm.LongDesc = LongDesc;
+              if (TransWriter != NULL)
+              {
+                 TransWriter->IncreaseRefCounter();
+                 Itm.TransWriter = TransWriter;
+              }
               Itm.Contents = SubstVar(Block.Find("Contents",DContents.c_str()),Vars);
               Itm.ContentsHead = SubstVar(Block.Find("Contents::Header",DContentsH.c_str()),Vars);
               Itm.FLFile = SubstVar(Block.Find("FileList",DFLFile.c_str()),Vars);
            Itm.GetGeneral(Setup,Block);
            PkgList.push_back(Itm);
         }
+        // we didn't use this TransWriter, so we can release it
+        if (TransWriter != NULL && TransWriter->GetRefCounter() == 0)
+           delete TransWriter;
        }
        
        Top = Top->Next;
@@@ -789,7 -824,12 +825,12 @@@ bool Generate(CommandLine &CmdL
        
        delete [] List;
     }
-    
+    // close the Translation master files
+    for (vector<PackageMap>::iterator I = PkgList.begin(); I != PkgList.end(); I++)
+       if (I->TransWriter != NULL && I->TransWriter->DecreaseRefCounter() == 0)
+        delete I->TransWriter;
     if (_config->FindB("APT::FTPArchive::Contents",true) == false)
        return true;
     
@@@ -926,7 -966,7 +967,7 @@@ int main(int argc, const char *argv[]
  
     // Parse the command line and initialize the package library
     CommandLine CmdL(Args,_config);
 -   if (CmdL.Parse(argc,argv) == false)
 +   if (pkgInitConfig(*_config) == false || CmdL.Parse(argc,argv) == false)
     {
        _error->DumpErrors();
        return 100;