]> git.saurik.com Git - apt.git/commitdiff
* cmdline/apt-get.cc:
authorMichael Vogt <michael.vogt@ubuntu.com>
Fri, 12 Mar 2010 21:10:42 +0000 (22:10 +0100)
committerMichael Vogt <michael.vogt@ubuntu.com>
Fri, 12 Mar 2010 21:10:42 +0000 (22:10 +0100)
  - if apt-get source foo=version or foo/distro can not be found,
    error out (LP: #502641)
* apt-pkg/indexfile.cc:
  - deal correctly with three letter langcodes (LP: #391409)

61 files changed:
.bzr-builddeb.moved/default.conf [new file with mode: 0644]
Makefile
apt-pkg/acquire-item.cc
apt-pkg/acquire-item.h
apt-pkg/acquire-method.cc
apt-pkg/acquire-method.h
apt-pkg/algorithms.cc
apt-pkg/deb/debsystem.cc
apt-pkg/deb/dpkgpm.cc
apt-pkg/deb/dpkgpm.h
apt-pkg/init.cc
apt-pkg/packagemanager.h
apt-pkg/pkgrecords.cc
apt-pkg/tagfile.cc
buildlib/libversion.mak
cmdline/apt-cache.cc
cmdline/apt-cdrom.cc
cmdline/apt-get.cc
cmdline/apt-key
cmdline/apt-report-mirror-failure [new file with mode: 0755]
cmdline/makefile
configure.in
debian/README.ubuntu-dev [new file with mode: 0644]
debian/apt.conf.autoremove
debian/apt.conf.ubuntu [new file with mode: 0644]
debian/apt.cron.daily
debian/apt.dirs
debian/apt.postinst
debian/changelog
debian/control
debian/copyright [new file with mode: 0644]
debian/rules
doc/examples/configure-index
doc/examples/sources.list
doc/po/fr.po
methods/connect.cc
methods/copy.cc
methods/http.cc
methods/http.h
methods/http_main.cc [new file with mode: 0644]
methods/makefile
methods/mirror.cc [new file with mode: 0644]
methods/mirror.h [new file with mode: 0644]
mirror-failure.py [new file with mode: 0644]
po/apt-all.pot
po/ar.po
po/ku.po
po/uk.po
share/apt-auth-failure.note [new file with mode: 0644]
share/debian-archive.gpg.moved [new file with mode: 0644]
share/makefile [new file with mode: 0644]
share/ubuntu-archive.gpg [new file with mode: 0644]
test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Packages [new file with mode: 0644]
test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Release [new file with mode: 0644]
test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Release.gpg [new file with mode: 0644]
test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Packages [new file with mode: 0644]
test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release [new file with mode: 0644]
test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release.gpg [new file with mode: 0644]
test/authReliability/sources.list.failure [new file with mode: 0644]
test/authReliability/sources.list.good [new file with mode: 0644]
test/pre-upload-check.py

diff --git a/.bzr-builddeb.moved/default.conf b/.bzr-builddeb.moved/default.conf
new file mode 100644 (file)
index 0000000..3a08d60
--- /dev/null
@@ -0,0 +1,2 @@
+[BUILDDEB]
+native = True
index 664caca41f2d9d67a63f1aeb4f170b9b3c00f4b5..8e3ed7e3c7055414886558e6645666e87c39e936 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -15,6 +15,7 @@ all headers library clean veryclean binary program doc dirs:
        $(MAKE) -C apt-inst $@
        $(MAKE) -C methods $@
        $(MAKE) -C cmdline $@
+       $(MAKE) -C share $@
        $(MAKE) -C ftparchive $@
        $(MAKE) -C dselect $@
        $(MAKE) -C doc $@
index d2aca597ecc553d55fd08719bc8568c5311985bb..a959253bc2ca31c84105814d7262e14300af0d99 100644 (file)
@@ -64,6 +64,7 @@ void pkgAcquire::Item::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
 {
    Status = StatIdle;
    ErrorText = LookupTag(Message,"Message");
+   UsedMirror =  LookupTag(Message,"UsedMirror");
    if (QueueCounter <= 1)
    {
       /* This indicates that the file is not available right now but might
@@ -76,10 +77,17 @@ void pkgAcquire::Item::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
         Dequeue();
         return;
       }
-      
+
       Status = StatError;
       Dequeue();
    }   
+   
+   // report mirror failure back to LP if we actually use a mirror
+   string FailReason = LookupTag(Message, "FailReason");
+   if(FailReason.size() != 0)
+      ReportMirrorFailure(FailReason);
+   else
+      ReportMirrorFailure(ErrorText);
 }
                                                                        /*}}}*/
 // Acquire::Item::Start - Item has begun to download                   /*{{{*/
@@ -101,7 +109,7 @@ void pkgAcquire::Item::Done(string Message,unsigned long Size,string Hash,
 {
    // We just downloaded something..
    string FileName = LookupTag(Message,"Filename");
-   // we only inform the Log class if it was actually not a local thing
+   UsedMirror =  LookupTag(Message,"UsedMirror");
    if (Complete == false && !Local && FileName == DestFile)
    {
       if (Owner->Log != 0)
@@ -110,7 +118,6 @@ void pkgAcquire::Item::Done(string Message,unsigned long Size,string Hash,
 
    if (FileSize == 0)
       FileSize= Size;
-   
    Status = StatDone;
    ErrorText = string();
    Owner->Dequeue(this);
@@ -132,6 +139,49 @@ void pkgAcquire::Item::Rename(string From,string To)
    }   
 }
                                                                        /*}}}*/
+
+void pkgAcquire::Item::ReportMirrorFailure(string FailCode)
+{
+   // we only act if a mirror was used at all
+   if(UsedMirror.empty())
+      return;
+#if 0
+   std::cerr << "\nReportMirrorFailure: " 
+            << UsedMirror
+            << " Uri: " << DescURI()
+            << " FailCode: " 
+            << FailCode << std::endl;
+#endif
+   const char *Args[40];
+   unsigned int i = 0;
+   string report = _config->Find("Methods::Mirror::ProblemReporting", 
+                                "/usr/lib/apt/apt-report-mirror-failure");
+   if(!FileExists(report))
+      return;
+   Args[i++] = report.c_str();
+   Args[i++] = UsedMirror.c_str();
+   Args[i++] = DescURI().c_str();
+   Args[i++] = FailCode.c_str();
+   Args[i++] = NULL;
+   pid_t pid = ExecFork();
+   if(pid < 0) 
+   {
+      _error->Error("ReportMirrorFailure Fork failed");
+      return;
+   }
+   else if(pid == 0) 
+   {
+      execvp(Args[0], (char**)Args);
+      std::cerr << "Could not exec " << Args[0] << std::endl;
+      _exit(100);
+   }
+   if(!ExecWait(pid, "report-mirror-failure")) 
+   {
+      _error->Warning("Couldn't report problem to '%s'",
+                     _config->Find("Methods::Mirror::ProblemReporting").c_str());
+   }
+}
+
 // AcqDiffIndex::AcqDiffIndex - Constructor                            /*{{{*/
 // ---------------------------------------------------------------------
 /* Get the DiffIndex file first and see if there are patches availabe 
@@ -616,7 +666,6 @@ string pkgAcqIndex::Custom600Headers()
    struct stat Buf;
    if (stat(Final.c_str(),&Buf) != 0)
       return "\nIndex-File: true";
-   
    return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
 }
                                                                        /*}}}*/
@@ -684,6 +733,7 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash,
          Status = StatAuthError;
          ErrorText = _("Hash Sum mismatch");
          Rename(DestFile,DestFile + ".FAILED");
+        ReportMirrorFailure("HashChecksumFailure");
          return;
       }
       // Done, move it into position
@@ -874,8 +924,9 @@ void pkgAcqMetaSig::Done(string Message,unsigned long Size,string MD5,
       Rename(LastGoodSig, DestFile);
 
    // queue a pkgAcqMetaIndex to be verified against the sig we just retrieved
-   new pkgAcqMetaIndex(Owner, MetaIndexURI, MetaIndexURIDesc, MetaIndexShortDesc,
-                      DestFile, IndexTargets, MetaIndexParser);
+   new pkgAcqMetaIndex(Owner, MetaIndexURI, MetaIndexURIDesc, 
+                      MetaIndexShortDesc,  DestFile, IndexTargets, 
+                      MetaIndexParser);
 
 }
                                                                        /*}}}*/
@@ -888,7 +939,7 @@ void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf)/*{{{*/
    {
       Item::Failed(Message,Cnf);
       // move the sigfile back on transient network failures 
-      if(FileExists(DestFile))
+      if(FileExists(LastGoodSig))
         Rename(LastGoodSig,Final);
 
       // set the status back to , Item::Failed likes to reset it
@@ -963,6 +1014,15 @@ void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash, /*{{{*
    if (AuthPass == true)
    {
       AuthDone(Message);
+
+      // all cool, move Release file into place
+      Complete = true;
+
+      string FinalFile = _config->FindDir("Dir::State::lists");
+      FinalFile += URItoFileName(RealURI);
+      Rename(DestFile,FinalFile);
+      chmod(FinalFile.c_str(),0644);
+      DestFile = FinalFile;
    }
    else
    {
@@ -1014,22 +1074,15 @@ void pkgAcqMetaIndex::RetrievalDone(string Message)                     /*{{{*/
       return;
    }
 
-   // see if the download was a IMSHit
+   // make sure to verify against the right file on I-M-S hit
    IMSHit = StringToBool(LookupTag(Message,"IMS-Hit"),false);
+   if(IMSHit)
+   {
+      string FinalFile = _config->FindDir("Dir::State::lists");
+      FinalFile += URItoFileName(RealURI);
+      DestFile = FinalFile;
+   }
    Complete = true;
-
-   string FinalFile = _config->FindDir("Dir::State::lists");
-   FinalFile += URItoFileName(RealURI);
-
-   // If we get a IMS hit we can remove the empty file in partial
-   // othersie we move the file in place
-   if (IMSHit)
-      unlink(DestFile.c_str());
-   else
-      Rename(DestFile,FinalFile);
-
-   chmod(FinalFile.c_str(),0644);
-   DestFile = FinalFile;
 }
                                                                        /*}}}*/
 void pkgAcqMetaIndex::AuthDone(string Message)                         /*{{{*/
@@ -1059,7 +1112,6 @@ void pkgAcqMetaIndex::AuthDone(string Message)                            /*{{{*/
    QueueIndexes(true);
 
    // Done, move signature file into position
-
    string VerifiedSigFile = _config->FindDir("Dir::State::lists") +
       URItoFileName(RealURI) + ".gpg";
    Rename(SigFile,VerifiedSigFile);
@@ -1100,7 +1152,7 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify)                           /*{{{*/
       
       // Queue Packages file (either diff or full packages files, depending
       // on the users option)
-      if(_config->FindB("Acquire::PDiffs",true) == true) 
+      if(_config->FindB("Acquire::PDiffs",false) == true) 
         new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
                             (*Target)->ShortDesc, ExpectedIndexHash);
       else 
@@ -1203,30 +1255,30 @@ void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
 {
    if (AuthPass == true)
    {
-      // if we fail the authentication but got the file via a IMS-Hit 
-      // this means that the file wasn't downloaded and that it might be
-      // just stale (server problem, proxy etc). we delete what we have
-      // queue it again without i-m-s 
-      // alternatively we could just unlink the file and let the user try again
-      if (IMSHit)
+      // gpgv method failed, if we have a good signature 
+      string LastGoodSigFile = _config->FindDir("Dir::State::lists") +
+        "partial/" + URItoFileName(RealURI) + ".gpg.reverify";
+      if(FileExists(LastGoodSigFile))
       {
-        Complete = false;
-        Local = false;
-        AuthPass = false;
-        unlink(DestFile.c_str());
-
-        DestFile = _config->FindDir("Dir::State::lists") + "partial/";
-        DestFile += URItoFileName(RealURI);
-        Desc.URI = RealURI;
-        QueueURI(Desc);
+        string VerifiedSigFile = _config->FindDir("Dir::State::lists") +
+           URItoFileName(RealURI) + ".gpg";
+        Rename(LastGoodSigFile,VerifiedSigFile);
+        Status = StatTransientNetworkError;
+        _error->Warning(_("A error occurred during the signature "
+                          "verification. The repository is not updated "
+                          "and the previous index files will be used."
+                          "GPG error: %s: %s\n"),
+                        Desc.Description.c_str(),
+                        LookupTag(Message,"Message").c_str());
+        RunScripts("APT::Update::Auth-Failure");
         return;
+      } else {
+        _error->Warning(_("GPG error: %s: %s"),
+                        Desc.Description.c_str(),
+                        LookupTag(Message,"Message").c_str());
       }
-
       // gpgv method failed 
-      _error->Warning("GPG error: %s: %s",
-                      Desc.Description.c_str(),
-                      LookupTag(Message,"Message").c_str());
-
+      ReportMirrorFailure("GPGFailure");
    }
 
    // No Release file was present, or verification failed, so fall
index 3f073de5bee0058afc202feb04c7904a02bedf49..06fcffc73db66422abd655f9e26c6eb0456ed62e 100644 (file)
@@ -142,6 +142,7 @@ class pkgAcquire::Item
     *  download progress indicator's overall statistics.
     */
    bool Local;
+   string UsedMirror;
 
    /** \brief The number of fetch queues into which this item has been
     *  inserted.
@@ -242,6 +243,17 @@ class pkgAcquire::Item
 
    /** \return \b true if this object is being fetched from a trusted source. */
    virtual bool IsTrusted() {return false;};
+   
+   // report mirror problems
+   /** \brief Report mirror problem
+    * 
+    *  This allows reporting mirror failures back to a centralized
+    *  server. The apt-report-mirror-failure script is called for this
+    * 
+    *  \param FailCode A short failure string that is send
+    */
+   void ReportMirrorFailure(string FailCode);
+
 
    /** \brief Initialize an item.
     *
@@ -545,7 +557,8 @@ class pkgAcqIndex : public pkgAcquire::Item
     *  fallback is ".gz" or none.
     */
    pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc,
-              string ShortDesc, HashString ExpectedHash, string compressExt="");
+              string ShortDesc, HashString ExpectedHash, 
+              string compressExt="");
 };
                                                                        /*}}}*/
 /** \brief An acquire item that is responsible for fetching a          {{{
@@ -608,7 +621,6 @@ class pkgAcqMetaSig : public pkgAcquire::Item
    /** \brief The last good signature file */
    string LastGoodSig;
 
-
    /** \brief The fetch request that is currently being processed. */
    pkgAcquire::ItemDesc Desc;
 
index fe066741c4456fc7dd0f35bdd59705d125919d80..3008c8d1a2a18a776f7d9561ca5c02b4ea902873 100644 (file)
@@ -96,12 +96,11 @@ void pkgAcqMethod::Fail(string Err,bool Transient)
    }
    
    char S[1024];
+   char *End = S;
    if (Queue != 0)
    {
-      snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: %s\n"
-              "Message: %s %s\n",Queue->Uri.c_str(),Err.c_str(),
-              FailExtra.c_str());
-
+      End += snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: %s\n"
+                     "Message: %s %s\n",Queue->Uri.c_str(), Err.c_str(), IP.c_str());
       // Dequeue
       FetchItem *Tmp = Queue;
       Queue = Queue->Next;
@@ -110,10 +109,14 @@ void pkgAcqMethod::Fail(string Err,bool Transient)
         QueueBack = Queue;
    }
    else
-      snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: <UNKNOWN>\n"
-              "Message: %s %s\n",Err.c_str(),
-              FailExtra.c_str());
-      
+   {
+      End += snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: <UNKNOWN>\n"
+                     "Message: %s\n",Err.c_str());
+   }
+   if(FailReason.empty() == false)
+      End += snprintf(End,sizeof(S)-50 - (End - S),"FailReason: %s\n",FailReason.c_str());
+   if (UsedMirror.empty() == false)
+      End += snprintf(End,sizeof(S)-50 - (End - S),"UsedMirror: %s\n",UsedMirror.c_str());
    // Set the transient flag 
    if (Transient == true)
       strcat(S,"Transient-Failure: true\n\n");
@@ -184,6 +187,8 @@ void pkgAcqMethod::URIDone(FetchResult &Res, FetchResult *Alt)
       End += snprintf(End,sizeof(S)-50 - (End - S),"SHA1-Hash: %s\n",Res.SHA1Sum.c_str());
    if (Res.SHA256Sum.empty() == false)
       End += snprintf(End,sizeof(S)-50 - (End - S),"SHA256-Hash: %s\n",Res.SHA256Sum.c_str());
+   if (UsedMirror.empty() == false)
+      End += snprintf(End,sizeof(S)-50 - (End - S),"UsedMirror: %s\n",UsedMirror.c_str());
    if (Res.GPGVOutput.size() > 0)
       End += snprintf(End,sizeof(S)-50 - (End - S),"GPGVOutput:\n");     
    for (vector<string>::iterator I = Res.GPGVOutput.begin();
index fab77e66469dd8139b19041c7a2fd341f44b7521..99a4605b146ae3b03b7db8bc4e9e242de4b6deda 100644 (file)
@@ -59,7 +59,9 @@ class pkgAcqMethod
    vector<string> Messages;
    FetchItem *Queue;
    FetchItem *QueueBack;
-   string FailExtra;
+   string FailReason;
+   string UsedMirror;
+   string IP;
    
    // Handlers for messages
    virtual bool Configuration(string Message);
@@ -68,14 +70,14 @@ class pkgAcqMethod
    // Outgoing messages
    void Fail(bool Transient = false);
    inline void Fail(const char *Why, bool Transient = false) {Fail(string(Why),Transient);};
-   void Fail(string Why, bool Transient = false);
-   void URIStart(FetchResult &Res);
-   void URIDone(FetchResult &Res,FetchResult *Alt = 0);
+   virtual void Fail(string Why, bool Transient = false);
+   virtual void URIStart(FetchResult &Res);
+   virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0);
+
    bool MediaFail(string Required,string Drive);
    virtual void Exit() {};
 
    public:
-
    enum CnfFlags {SingleInstance = (1<<0),
                   Pipeline = (1<<1), SendConfig = (1<<2),
                   LocalOnly = (1<<3), NeedsCleanup = (1<<4), 
@@ -87,7 +89,8 @@ class pkgAcqMethod
    void Redirect(const string &NewURI);
  
    int Run(bool Single = false);
-   inline void SetFailExtraMsg(string Msg) {FailExtra = Msg;};
+   inline void SetFailReason(string Msg) {FailReason = Msg;};
+   inline void SetIP(string aIP) {IP = aIP;};
    
    pkgAcqMethod(const char *Ver,unsigned long Flags = 0);
    virtual ~pkgAcqMethod() {};
index 34da745dea5ac67a2b25c1e83d7478e96f0a7a27..a3963d546d17dd7baa41709819e6ef227ccb9872 100644 (file)
@@ -1140,8 +1140,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
       return _error->Error(_("Unable to correct problems, you have held broken packages."));
    }
    
-   // set the auto-flags (mvo: I'm not sure if we _really_ need this, but
-   // I didn't managed 
+   // set the auto-flags (mvo: I'm not sure if we _really_ need this)
    pkgCache::PkgIterator I = Cache.PkgBegin();
    for (;I.end() != true; I++) {
       if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) {
index 59f826d96ea2bdd722500798ee48d98d82f07bfa..089a465c13814dbc99412ce88a81a787f60a2384 100644 (file)
@@ -18,7 +18,6 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/fileutl.h>
 #include <apti18n.h>
-    
 #include <sys/types.h>
 #include <unistd.h>
 #include <dirent.h>
@@ -80,7 +79,7 @@ bool debSystem::Lock()
       close(LockFD);
       LockFD = -1;
       return _error->Error(_("dpkg was interrupted, you must manually "
-                             "run 'dpkg --configure -a' to correct the problem. "));
+                             "run 'sudo dpkg --configure -a' to correct the problem. "));
    }
 
         LockCount++;
index 8abe3f5c612c1e5f8330a4c0dcea5a4497e3b87b..8ecb683d4e0d8dca01280098d8d6a761c9c83c34 100644 (file)
@@ -12,6 +12,7 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/depcache.h>
+#include <apt-pkg/pkgrecords.h>
 #include <apt-pkg/strutl.h>
 #include <apti18n.h>
 #include <apt-pkg/fileutl.h>
@@ -24,6 +25,7 @@
 #include <sys/wait.h>
 #include <signal.h>
 #include <errno.h>
+#include <string.h>
 #include <stdio.h>
 #include <string.h>
 #include <algorithm>
@@ -105,7 +107,7 @@ ionice(int PID)
 /* */
 pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache) 
    : pkgPackageManager(Cache), dpkgbuf_pos(0),
-     term_out(NULL), PackagesDone(0), PackagesTotal(0)
+     term_out(NULL), PackagesDone(0), PackagesTotal(0), pkgFailures(0)
 {
 }
                                                                        /*}}}*/
@@ -341,7 +343,6 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
 
    return true;
 }
-
                                                                        /*}}}*/
 // DPkgPM::DoStdin - Read stdin and pass to slave pty                  /*{{{*/
 // ---------------------------------------------------------------------
@@ -411,7 +412,7 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line)
       'processing: trigproc: trigger'
            
    */
-   char* list[5];
+   char* list[6];
    //        dpkg sends multiline error messages sometimes (see
    //        #374195 for a example. we should support this by
    //        either patching dpkg to not send multiline over the
@@ -459,6 +460,14 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line)
 
    if(strncmp(action,"error",strlen("error")) == 0)
    {
+      // urgs, sometime has ":" in its error string so that we
+      // end up with the error message split between list[3]
+      // and list[4], e.g. the message: 
+      // "failed in buffer_write(fd) (10, ret=-1): backend dpkg-deb ..."
+      // concat them again
+      if( list[4] != NULL )
+        list[3][strlen(list[3])] = ':';
+
       status << "pmerror:" << list[1]
             << ":"  << (PackagesDone/float(PackagesTotal)*100.0) 
             << ":" << list[3]
@@ -467,6 +476,8 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line)
         write(OutStatusFd, status.str().c_str(), status.str().size());
       if (Debug == true)
         std::clog << "send: '" << status.str() << "'" << endl;
+      pkgFailures++;
+      WriteApportReport(list[1], list[3]);
       return;
    }
    else if(strncmp(action,"conffile",strlen("conffile")) == 0)
@@ -551,7 +562,7 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd, int OutStatusFd)
 }
                                                                        /*}}}*/
 // DPkgPM::WriteHistoryTag                                             /*{{{*/
-void pkgDPkgPM::WriteHistoryTag(string tag, string value)
+void pkgDPkgPM::WriteHistoryTag(FILE *history_out, string tag, string value)
 {
    if (value.size() > 0)
    {
@@ -592,7 +603,7 @@ bool pkgDPkgPM::OpenLog()
                                   _config->Find("Dir::Log::History"));
    if (!history_name.empty())
    {
-      history_out = fopen(history_name.c_str(),"a");
+      FILE *history_out = fopen(history_name.c_str(),"a");
       chmod(history_name.c_str(), 0644);
       fprintf(history_out, "\nStart-Date: %s\n", timestr);
       string remove, purge, install, upgrade, downgrade;
@@ -612,12 +623,12 @@ bool pkgDPkgPM::OpenLog()
               remove += I.Name() + string(" (") + Cache[I].CurVersion + string("), ");     
         }
       }
-      WriteHistoryTag("Install", install);
-      WriteHistoryTag("Upgrade", upgrade);
-      WriteHistoryTag("Downgrade",downgrade);
-      WriteHistoryTag("Remove",remove);
-      WriteHistoryTag("Purge",purge);
-      fflush(history_out);
+      WriteHistoryTag(history_out, "Install", install);
+      WriteHistoryTag(history_out, "Upgrade", upgrade);
+      WriteHistoryTag(history_out, "Downgrade",downgrade);
+      WriteHistoryTag(history_out, "Remove",remove);
+      WriteHistoryTag(history_out, "Purge",purge);
+      fclose(history_out);
    }
    
    return true;
@@ -640,10 +651,11 @@ bool pkgDPkgPM::CloseLog()
    }
    term_out = NULL;
 
-   if(history_out)
+   string history_name = flCombine(_config->FindDir("Dir::Log"),
+                                  _config->Find("Dir::Log::History"));
+   if (!history_name.empty())
    {
-      if (dpkg_error.size() > 0)
-        fprintf(history_out, "Error: %s\n", dpkg_error.c_str());
+      FILE *history_out = fopen(history_name.c_str(),"a");
       fprintf(history_out, "End-Date: %s\n", timestr);
       fclose(history_out);
    }
@@ -1061,7 +1073,6 @@ bool pkgDPkgPM::Go(int OutStatusFd)
            signal(SIGHUP,old_SIGHUP);
            return _error->Errno("waitpid","Couldn't wait for subprocess");
         }
-
         // wait for input or output here
         FD_ZERO(&rfds);
         if (!stdin_is_dev_null)
@@ -1117,6 +1128,7 @@ bool pkgDPkgPM::Go(int OutStatusFd)
         if(stopOnError)
            RunScripts("DPkg::Post-Invoke");
 
+        string dpkg_error;
         if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV) 
            strprintf(dpkg_error, "Sub-process %s received a segmentation fault.",Args[0]);
         else if (WIFEXITED(Status) != 0)
@@ -1125,7 +1137,17 @@ bool pkgDPkgPM::Go(int OutStatusFd)
            strprintf(dpkg_error, "Sub-process %s exited unexpectedly",Args[0]);
 
         if(dpkg_error.size() > 0)
+        {
            _error->Error(dpkg_error.c_str());
+           string history_name = flCombine(_config->FindDir("Dir::Log"),
+                                           _config->Find("Dir::Log::History"));
+           if (!history_name.empty())
+           {
+              FILE *history_out = fopen(history_name.c_str(),"a");
+              fprintf(history_out, "Error: %s\n", dpkg_error.c_str());
+              fclose(history_out);
+           }
+        }
 
         if(stopOnError) 
         {
@@ -1151,3 +1173,186 @@ void pkgDPkgPM::Reset()
    List.erase(List.begin(),List.end());
 }
                                                                        /*}}}*/
+// pkgDpkgPM::WriteApportReport - write out error report pkg failure   /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) 
+{
+   string pkgname, reportfile, srcpkgname, pkgver, arch;
+   string::size_type pos;
+   FILE *report;
+
+   if (_config->FindB("Dpkg::ApportFailureReport",true) == false)
+   {
+      std::clog << "configured to not write apport reports" << std::endl;
+      return;
+   }
+
+   // only report the first errors
+   if(pkgFailures > _config->FindI("APT::Apport::MaxReports", 3))
+   {
+      std::clog << _("No apport report written because MaxReports is reached already") << std::endl;
+      return;
+   }
+
+   // check if its not a follow up error 
+   const char *needle = dgettext("dpkg", "dependency problems - leaving unconfigured");
+   if(strstr(errormsg, needle) != NULL) {
+      std::clog << _("No apport report written because the error message indicates its a followup error from a previous failure.") << std::endl;
+      return;
+   }
+
+   // do not report disk-full failures 
+   if(strstr(errormsg, strerror(ENOSPC)) != NULL) {
+      std::clog << _("No apport report written because the error message indicates a disk full error") << std::endl;
+      return;
+   }
+
+   // do not report out-of-memory failures 
+   if(strstr(errormsg, strerror(ENOMEM)) != NULL) {
+      std::clog << _("No apport report written because the error message indicates a out of memory error") << std::endl;
+      return;
+   }
+
+   // do not report dpkg I/O errors
+   // XXX - this message is localized, but this only matches the English version.  This is better than nothing.
+   if(strstr(errormsg, "short read in buffer_copy (")) {
+      std::clog << _("No apport report written because the error message indicates a dpkg I/O error") << std::endl;
+      return;
+   }
+
+   // get the pkgname and reportfile
+   pkgname = flNotDir(pkgpath);
+   pos = pkgname.find('_');
+   if(pos != string::npos)
+      pkgname = pkgname.substr(0, pos);
+
+   // find the package versin and source package name
+   pkgCache::PkgIterator Pkg = Cache.FindPkg(pkgname);
+   if (Pkg.end() == true)
+      return;
+   pkgCache::VerIterator Ver = Cache.GetCandidateVer(Pkg);
+   if (Ver.end() == true)
+      return;
+   pkgver = Ver.VerStr() == NULL ? "unknown" : Ver.VerStr();
+   pkgRecords Recs(Cache);
+   pkgRecords::Parser &Parse = Recs.Lookup(Ver.FileList());
+   srcpkgname = Parse.SourcePkg();
+   if(srcpkgname.empty())
+      srcpkgname = pkgname;
+
+   // if the file exists already, we check:
+   // - if it was reported already (touched by apport). 
+   //   If not, we do nothing, otherwise
+   //    we overwrite it. This is the same behaviour as apport
+   // - if we have a report with the same pkgversion already
+   //   then we skip it
+   reportfile = flCombine("/var/crash",pkgname+".0.crash");
+   if(FileExists(reportfile))
+   {
+      struct stat buf;
+      char strbuf[255];
+
+      // check atime/mtime
+      stat(reportfile.c_str(), &buf);
+      if(buf.st_mtime > buf.st_atime)
+        return;
+
+      // check if the existing report is the same version
+      report = fopen(reportfile.c_str(),"r");
+      while(fgets(strbuf, sizeof(strbuf), report) != NULL)
+      {
+        if(strstr(strbuf,"Package:") == strbuf)
+        {
+           char pkgname[255], version[255];
+           if(sscanf(strbuf, "Package: %s %s", pkgname, version) == 2)
+              if(strcmp(pkgver.c_str(), version) == 0)
+              {
+                 fclose(report);
+                 return;
+              }
+        }
+      }
+      fclose(report);
+   }
+
+   // now write the report
+   arch = _config->Find("APT::Architecture");
+   report = fopen(reportfile.c_str(),"w");
+   if(report == NULL)
+      return;
+   if(_config->FindB("DPkgPM::InitialReportOnly",false) == true)
+      chmod(reportfile.c_str(), 0);
+   else
+      chmod(reportfile.c_str(), 0600);
+   fprintf(report, "ProblemType: Package\n");
+   fprintf(report, "Architecture: %s\n", arch.c_str());
+   time_t now = time(NULL);
+   fprintf(report, "Date: %s" , ctime(&now));
+   fprintf(report, "Package: %s %s\n", pkgname.c_str(), pkgver.c_str());
+   fprintf(report, "SourcePackage: %s\n", srcpkgname.c_str());
+   fprintf(report, "ErrorMessage:\n %s\n", errormsg);
+
+   // ensure that the log is flushed
+   if(term_out)
+      fflush(term_out);
+
+   // attach terminal log it if we have it
+   string logfile_name = _config->FindFile("Dir::Log::Terminal");
+   if (!logfile_name.empty())
+   {
+      FILE *log = NULL;
+      char buf[1024];
+
+      fprintf(report, "DpkgTerminalLog:\n");
+      log = fopen(logfile_name.c_str(),"r");
+      if(log != NULL)
+      {
+        while( fgets(buf, sizeof(buf), log) != NULL)
+           fprintf(report, " %s", buf);
+        fclose(log);
+      }
+   }
+
+   // log the ordering 
+   const char *ops_str[] = {"Install", "Configure","Remove","Purge"};
+   fprintf(report, "AptOrdering:\n");
+   for (vector<Item>::iterator I = List.begin(); I != List.end(); I++)
+      fprintf(report, " %s: %s\n", (*I).Pkg.Name(), ops_str[(*I).Op]);
+
+   // attach dmesg log (to learn about segfaults)
+   if (FileExists("/bin/dmesg"))
+   {
+      FILE *log = NULL;
+      char buf[1024];
+
+      fprintf(report, "Dmesg:\n");
+      log = popen("/bin/dmesg","r");
+      if(log != NULL)
+      {
+        while( fgets(buf, sizeof(buf), log) != NULL)
+           fprintf(report, " %s", buf);
+        fclose(log);
+      }
+   }
+
+   // attach df -l log (to learn about filesystem status)
+   if (FileExists("/bin/df"))
+   {
+      FILE *log = NULL;
+      char buf[1024];
+
+      fprintf(report, "Df:\n");
+      log = popen("/bin/df -l","r");
+      if(log != NULL)
+      {
+        while( fgets(buf, sizeof(buf), log) != NULL)
+           fprintf(report, " %s", buf);
+        fclose(log);
+      }
+   }
+
+   fclose(report);
+
+}
+                                                                       /*}}}*/
index 330c788a25319fc74e5cea393946bebfe49b893f..160486bf9aba2c24d21cf5400799b0ce0e12e4c0 100644 (file)
@@ -29,10 +29,9 @@ class pkgDPkgPM : public pkgPackageManager
    char dpkgbuf[1024];
    int dpkgbuf_pos;
    FILE *term_out;
-   FILE *history_out;
-   string dpkg_error;
 
    protected:
+   int pkgFailures;
 
    // progress reporting
    struct DpkgState 
@@ -49,6 +48,7 @@ class pkgDPkgPM : public pkgPackageManager
    // the int is the state that is already done (e.g. a package that is
    // going to be install is already in state "half-installed")
    map<string,unsigned int> PackageOpsDone;
+
    // progress reporting
    unsigned int PackagesDone;
    unsigned int PackagesTotal;
@@ -68,7 +68,10 @@ class pkgDPkgPM : public pkgPackageManager
    // Helpers
    bool RunScriptsWithPkgs(const char *Cnf);
    bool SendV2Pkgs(FILE *F);
-   void WriteHistoryTag(string tag, string value);
+   void WriteHistoryTag(FILE* history_out, string tag, string value);
+
+   // apport integration
+   void WriteApportReport(const char *pkgpath, const char *errormsg);
 
    // dpkg log
    bool OpenLog();
index 6310aff112a1ae94ecd4e587e1fed27ecf47dc49..e2f847ed21161c35af7312714a6f14b24eb5cc8c 100644 (file)
@@ -51,6 +51,7 @@ bool pkgInitConfig(Configuration &Cnf)
        
    Cnf.Set("Dir::State::lists","lists/");
    Cnf.Set("Dir::State::cdroms","cdroms.list");
+   Cnf.Set("Dir::State::mirrors","mirrors/");
    
    // Cache
    Cnf.Set("Dir::Cache","var/cache/apt/");
index af1476b7ad82b94ad6399fcac4b8ba8013e523d2..44f5d5ef74eebd28039b68d1957817f06d9700ae 100644 (file)
@@ -49,7 +49,11 @@ class pkgPackageManager : protected pkgCache::Namespace
    bool Debug;
          
    bool DepAdd(pkgOrderList &Order,PkgIterator P,int Depth = 0);
-   void ImmediateAdd(PkgIterator P, bool UseInstallVer, unsigned const int &Depth = 0);
+   // binary-compat change, fix on next abi break
+   void ImmediateAdd(PkgIterator P, bool UseInstallVer) {
+      ImmediateAdd(P, UseInstallVer, 0);
+   }
+   void ImmediateAdd(PkgIterator P, bool UseInstallVer, unsigned const int &Depth);
    virtual OrderResult OrderInstall();
    bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver);
    bool CreateOrderList();
index e506de73a63863a6e2d60e1737be8249d29f8198..a5dab22ffd57f5bce52158f5562ffc528caefc83 100644 (file)
@@ -23,8 +23,8 @@
 pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), 
   Files(Cache.HeaderP->PackageFileCount)
 {
-   for (pkgCache::PkgFileIterator I = Cache.FileBegin();
-        I.end() == false; I++)
+   for (pkgCache::PkgFileIterator I = Cache.FileBegin(); 
+       I.end() == false; I++)
    {
       const pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(I.IndexType());
       if (Type == 0)
index 7c5d15a58b0df992ab95e659d1ba555f9c838649..1c41f1265c206c0a9c77605ead7f94bfb3325298 100644 (file)
@@ -418,6 +418,7 @@ static const char *iTFRewritePackageOrder[] = {
                           "Section",
                           "Installed-Size",
                           "Maintainer",
+                          "Original-Maintainer",
                           "Architecture",
                           "Source",
                           "Version",
@@ -447,6 +448,7 @@ static const char *iTFRewriteSourceOrder[] = {"Package",
                                       "Priority",
                                       "Section",
                                       "Maintainer",
+                                     "Original-Maintainer",
                                       "Build-Depends",
                                       "Build-Depends-Indep",
                                       "Build-Conflicts",
index 26ca86ced44ea15e79c6303dfc13b26a464dc95d..5585ab487b537180aab044f8be3f5bff0340d31c 100644 (file)
@@ -18,4 +18,4 @@ LIBAPTINST_MINOR=$(shell egrep '^MINOR=' $(BASE)/apt-inst/makefile |cut -d '=' -
 # want to drop this, but this a ABI break.
 # And we don't want to do this now. So we hardcode a value here,
 # and drop it later on (hopefully as fast as possible).
-LIBEXT=-libc6.9-6
+LIBEXT=-libc6.10-6
index 286f306cdbc79f2a94e802a5e5eb6779c63f1726..4e68246fba1d5c4d057e3af4bb3fa999a308caf4 100644 (file)
@@ -1273,7 +1273,9 @@ bool DisplayRecord(pkgCache::VerIterator V)
    return true;
 }
                                                                        /*}}}*/
-
+// Search - Perform a search                                           /*{{{*/
+// ---------------------------------------------------------------------
+/* This searches the package names and package descriptions for a pattern */
 struct ExDescFile
 {
    pkgCache::DescFile *Df;
index 0c9aab28cb99915265ffec7a471625c099034ac7..8b9eacae67f0d8734b0e4802c3beb71f9e36f131 100644 (file)
@@ -147,7 +147,7 @@ bool DoAdd(CommandLine &)
    pkgCdrom cdrom;
    bool res = true;
 
-   bool AutoDetect = _config->FindB("Acquire::cdrom::AutoDetect");
+   bool AutoDetect = _config->FindB("Acquire::cdrom::AutoDetect", true);
    unsigned int count = 0;
    
    if (AutoDetect && UdevCdroms.Dlopen())
index d4fefa9c78a7fed6209ff404b4566c22b3755528..ea236676b819504703fa841c94fe5f08776b36ca 100644 (file)
@@ -2190,6 +2190,33 @@ bool DoSource(CommandLine &CmdL)
       if (Last == 0)
         return _error->Error(_("Unable to find a source package for %s"),Src.c_str());
       
+      string srec = Last->AsStr();
+      string::size_type pos = srec.find("\nVcs-");
+      while (pos != string::npos)
+      {
+        pos += strlen("\nVcs-");
+        string vcs = srec.substr(pos,srec.find(":",pos)-pos);
+        if(vcs == "Browser") 
+        {
+           pos = srec.find("\nVcs-", pos);
+           continue;
+        }
+        pos += vcs.length()+2;
+        string::size_type epos = srec.find("\n", pos);
+        string uri = srec.substr(pos,epos-pos).c_str();
+        ioprintf(c1out, _("NOTICE: '%s' packaging is maintained in "
+                          "the '%s' version control system at:\n"
+                          "%s\n"),
+                 Src.c_str(), vcs.c_str(), uri.c_str());
+        if(vcs == "Bzr") 
+           ioprintf(c1out,_("Please use:\n"
+                            "bzr get %s\n"
+                            "to retrieve the latest (possibly unreleased) "
+                            "updates to the package.\n"),
+                    uri.c_str());
+        break;
+      }
+
       // Back track
       vector<pkgSrcRecords::File> Lst;
       if (Last->Files(Lst) == false)
@@ -2847,7 +2874,6 @@ int main(int argc,const char *argv[])                                     /*{{{*/
                                    {"remove",&DoInstall},
                                    {"purge",&DoInstall},
                                   {"autoremove",&DoInstall},
-                                  {"purge",&DoInstall},
                                    {"dist-upgrade",&DoDistUpgrade},
                                    {"dselect-upgrade",&DoDSelectUpgrade},
                                   {"build-dep",&DoBuildDep},
index e45468fd4a1bddaf6407cab9bf4bd4a8fbb71e47..73dfe692501905697d643903de8bfe52dc9f177a 100755 (executable)
@@ -8,13 +8,10 @@ unset GREP_OPTIONS
 GPG_CMD="gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg"
 GPG="$GPG_CMD"
 
-MASTER_KEYRING=""
-ARCHIVE_KEYRING_URI=""
-#MASTER_KEYRING=/usr/share/keyrings/debian-master-keyring.gpg
-#ARCHIVE_KEYRING_URI=http://ftp.debian.org/debian/debian-archive-keyring.gpg
-
-ARCHIVE_KEYRING=/usr/share/keyrings/debian-archive-keyring.gpg
-REMOVED_KEYS=/usr/share/keyrings/debian-archive-removed-keys.gpg
+MASTER_KEYRING=/usr/share/keyrings/ubuntu-master-keyring.gpg
+ARCHIVE_KEYRING=/usr/share/keyrings/ubuntu-archive-keyring.gpg
+REMOVED_KEYS=/usr/share/keyrings/ubuntu-archive-removed-keys.gpg
+ARCHIVE_KEYRING_URI=http://archive.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg
 
 add_keys_with_verify_against_master_keyring() {
     ADD_KEYRING=$1
@@ -85,14 +82,14 @@ net_update() {
 update() {
     if [ ! -f $ARCHIVE_KEYRING ]; then
        echo >&2 "ERROR: Can't find the archive-keyring"
-       echo >&2 "Is the debian-archive-keyring package installed?"
+       echo >&2 "Is the ubuntu-keyring package installed?"
        exit 1
     fi
 
     # add new keys from the package;
 
     # we do not use add_keys_with_verify_against_master_keyring here,
-    # because "update" is run on regular package updates.  A
+    # because we "update" is run on regular package updates.  A
     # attacker might as well replace the master-archive-keyring file
     # in the package and add his own keys. so this check wouldn't
     # add any security. we *need* this check on net-update though
diff --git a/cmdline/apt-report-mirror-failure b/cmdline/apt-report-mirror-failure
new file mode 100755 (executable)
index 0000000..ef77d49
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/python
+
+import sys
+import urllib
+import apt_pkg
+
+apt_pkg.init()
+url = apt_pkg.Config.Find("Acquire::Mirror::ReportFailures", "")
+                          #"http://people.ubuntu.com:9000/mirror-failure")
+                          #"http://localhost:9000/mirror-failure")
+if not url:
+    sys.exit(0)
+
+print "Reporting mirror failure to '%s'" % url
+
+data = {}
+data['mirror'] = sys.argv[1]
+data['failurl'] = sys.argv[2]
+data['error'] = sys.argv[3]
+f = urllib.urlopen(url, urllib.urlencode(data))
+f.read()
+f.close()
+
+
index 3260e375b7ef95236dad2992340a23fb6232fc5a..5ae6fb0f1760ceb76017f056821b2edd4a9db091 100644 (file)
@@ -58,3 +58,9 @@ SOURCE=apt-mark
 TO=$(BIN)
 TARGET=program
 include $(COPY_H)
+
+# The apt-key program
+SOURCE=apt-report-mirror-failure
+TO=$(BIN)
+TARGET=program
+include $(COPY_H)
index 302d88d514a4c6228048506030bf13ffba4e1657..0069020ff80f63fcea8bfab44abf9ee1cd99f605 100644 (file)
@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 
 dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.7.25")
+AC_DEFINE_UNQUOTED(VERSION,"0.7.25ubuntu1")
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
diff --git a/debian/README.ubuntu-dev b/debian/README.ubuntu-dev
new file mode 100644 (file)
index 0000000..9da1525
--- /dev/null
@@ -0,0 +1,6 @@
+Build this package with:
+$ debian/rules arch-build
+or
+$ DEB_BUILD_PROG_OPTS="-S" debian/rules arch-build
+
+make sure you have the pre-build-depds in README.arch installed
index b41be8397fe84a3eecaf7ce1a9f1bc8721ca9ae3..44e6eb69c42c8ca03c7b999d27088f9cee8e604b 100644 (file)
@@ -1,9 +1,23 @@
 APT
 {
   NeverAutoRemove  
-  { 
+  {
+        "^linux-firmware$";
        "^linux-image.*";  
        "^linux-restricted-modules.*";
-       "^kfreebsd-image.*";  
+       "^linux-ubuntu-modules-.*";
+  };
+
+  Never-MarkAuto-Sections
+  { 
+       "metapackages";
+        "restricted/metapackages";
+        "universe/metapackages";
+        "multiverse/metapackages";
+       "oldlibs";
+        "restricted/oldlibs";
+        "universe/oldlibs";
+        "multiverse/oldlibs";
+
   };
 };
diff --git a/debian/apt.conf.ubuntu b/debian/apt.conf.ubuntu
new file mode 100644 (file)
index 0000000..d295aee
--- /dev/null
@@ -0,0 +1,3 @@
+APT
+{
+};
index e59b05ee484534bb0d74bb59718f8cf7fdba1593..aa7b188860676cb3f44a13ba098ca7fc305133d5 100644 (file)
@@ -1,4 +1,6 @@
 #!/bin/sh
+#
+
 #set -e
 #
 # This file understands the following apt configuration variables:
@@ -47,7 +49,7 @@
 #  APT::Periodic::Update-Package-Lists "0";
 #  - Do "apt-get update" automatically every n-days (0=disable)
 #    
-#  APT::Periodic::Download-Upgradeable-Packages "0";
+#  "APT::Periodic::Download-Upgradeable-Packages=0",
 #  - Do "apt-get upgrade --download-only" every n-days (0=disable)
 #
 #  APT::Periodic::Download-Upgradeable-Packages-Debdelta "1";
 #    Requires the package "unattended-upgrades" and will write
 #    a log in /var/log/unattended-upgrades
 # 
-#  APT::Periodic::AutocleanInterval "0";
-#  - Do "apt-get autoclean" every n-days (0=disable)
+#  "APT::Archives::MaxAge",
+#  - Set maximum allowed age of a cache package file. If a cache 
+#    package file is older it is deleted (0=disable)
 #
-#  APT::Periodic::Verbose "0";
-#  - Send report mail to root
-#      0:  no report             (or null string)
-#      1:  progress report       (actually any string)
-#      2:  + command outputs     (remove -qq, remove 2>/dev/null, add -d)
-#      3:  + trace on            
+#  "APT::Archives::MaxSize",
+#  - Set maximum size of the cache in MB (0=disable). If the cache
+#    is bigger, cached package files are deleted until the size
+#    requirement is met (the biggest packages will be deleted 
+#    first).
+#
+#  "APT::Archives::MinAge"
+#  - Set minimum age of a package file. If a file is younger it
+#    will not be deleted (0=disable). Usefull to prevent races 
+#    and to keep backups of the packages for emergency.
+# 
 
 check_stamp()
 {
@@ -108,9 +116,17 @@ check_stamp()
 
     delta=$(($now-$stamp))
 
-    # intervall is in days, convert to sec.
+    # intervall is in days,
     interval=$(($interval*60*60*24))
-    debug_echo "check_stamp: interval=$interval, now=$now, stamp=$stamp, delta=$delta (sec)"
+    #echo "stampfile: $1"
+    #echo "interval=$interval, now=$now, stamp=$stamp, delta=$delta"
+
+    # remove timestamps a day (or more) in the future and force re-check
+    if [ $stamp -gt $(($now+86400)) ]; then
+         echo "WARNING: file $stamp_file has a timestamp in the future: $stamp"
+         rm -f "$stamp_file"
+         return 0
+    fi
 
     # remove timestamps a day (or more) in the future and force re-check
     if [ $stamp -gt $(($now+86400)) ]; then
@@ -129,6 +145,7 @@ check_stamp()
 update_stamp()
 {
     stamp="$1"
+
     touch $stamp
 }
 
@@ -384,11 +401,10 @@ now=$(date +%s)
 # Document only Periodic for all controling parameters of this script.
 
 UpdateInterval=0
-eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists)
-
 DownloadUpgradeableInterval=0
-eval $(apt-config shell DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
-
+eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
+AutocleanInterval=$DownloadUpgradeableInterval
+eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval)
 UnattendedUpgradeInterval=0
 eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
 
@@ -405,7 +421,6 @@ eval $(apt-config shell Debdelta APT::Periodic::Download-Upgradeable-Packages-De
 if [ $UpdateInterval -eq 0 ] &&
    [ $DownloadUpgradeableInterval -eq 0 ] &&
    [ $UnattendedUpgradeInterval -eq 0 ] &&
-   [ $BackupArchiveInterval -eq 0 ] &&
    [ $AutocleanInterval -eq 0 ]; then
 
     # check cache size
@@ -414,6 +429,18 @@ if [ $UpdateInterval -eq 0 ] &&
     exit 0
 fi
 
+# set the proxy based on the admin users gconf settings
+admin_user=$(getent group admin|cut -d: -f4|cut -d, -f1)
+if [ -n "$admin_user" ] && [ -x /usr/bin/sudo ] && [ -z "$http_proxy" ] && [ -x /usr/bin/gconftool ]; then
+       use=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/use_http_proxy 2>/dev/null)
+       host=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/host 2>/dev/null)
+       port=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/port 2>/dev/null)
+       if [ "$use" = "true" ] && [ -n "$host" ] && [ -n "$port" ]; then
+               export http_proxy="http://$host:$port/"
+       fi
+fi
+
+
 # deal with BackupArchiveInterval
 do_cache_backup $BackupArchiveInterval
 
@@ -425,7 +452,13 @@ random_sleep
 UPDATED=0
 UPDATE_STAMP=/var/lib/apt/periodic/update-stamp
 if check_stamp $UPDATE_STAMP $UpdateInterval; then
-    if eval apt-get $XAPTOPT -y update $XSTDERR; then
+    # check for a new archive signing key (against the master keyring)
+    if eval apt-key net-update $XSTDERR; then
+       debug_echo "apt-key net-update (success)"
+    else
+       debug_echo "apt-key net-update (failure)"
+    fi
+    if eval apt-get $XAPTOPT -y update -o APT::Update::Auth-Failure::=\"cp /usr/share/apt/apt-auth-failure.note /var/lib/update-notifier/user.d/\" $XSTDERR; then
        debug_echo "download updated metadata (success)."
        if which dbus-send >/dev/null && pidof dbus-daemon >/dev/null; then
            if dbus-send --system / app.apt.dbus.updated boolean:true ; then
@@ -438,6 +471,11 @@ if check_stamp $UPDATE_STAMP $UpdateInterval; then
        fi
        update_stamp $UPDATE_STAMP
        UPDATED=1
+       # now run apt-xapian-index if it is installed to ensure the index
+       # is up-to-date
+       if [ -x /usr/sbin/update-apt-xapian-index ]; then
+           ionice -c3 update-apt-xapian-index -q
+       fi
     else
        debug_echo "download updated metadata (error)"
     fi
index 66556e45374fea275c07a0fabd0e72ceefe84584..f25e4600b5f794218998852d6b7c918451d23188 100644 (file)
@@ -9,6 +9,7 @@ etc/apt/trusted.gpg.d
 etc/logrotate.d
 var/cache/apt/archives/partial
 var/lib/apt/lists/partial
+var/lib/apt/mirrors/partial
 var/lib/apt/periodic
 var/log/apt
 usr/share/bug/apt
index cc0d8b1fec4ef94f8edfbb6584e26704a2aa8e4e..773077aa56594d5232e1b98c5aabc1a6d9c6c81b 100644 (file)
@@ -15,7 +15,9 @@ set -e
 
 case "$1" in
     configure)
-       apt-key update
+        if ! test -f /etc/apt/trusted.gpg; then
+                cp /usr/share/apt/ubuntu-archive.gpg /etc/apt/trusted.gpg
+        fi
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)
index 6a078c498e4f4449c2d493676ef20110cec3541f..f35a5fe621cfc4b2e64aa844ee2e4ba0f215edcf 100644 (file)
@@ -1,22 +1,12 @@
-apt (0.7.25.4) UNRELEASED; urgency=low
+apt (0.7.25.3ubuntu2) UNRELEASED; urgency=low
 
-  [ Ivan Masár ]
-  * Slovak translation update. Closes: #568294
-  
   [ Michael Vogt ]
-  * merged lp:~mvo/apt/history
-    - this writes a /var/log/apt/history tagfile that contains details
-      from the transaction (complements term.log)
-  * methods/http.cc:
-    - add cache-control headers even if no cache is given to allow
-      adding options for intercepting proxies
-    - add Acquire::http::ProxyAutoDetect configuration that 
-      can be used to call a external helper to figure out the 
-      proxy configuration and return it to apt via stdout
-      (this is a step towards WPAD and zeroconf/avahi support)
   * abicheck/
     - add new abitest tester using the ABI Compliance Checker from
       http://ispras.linuxfoundation.org/index.php/ABI_compliance_checker
+  * debian/apt.conf.autoremove:
+    - add "oldlibs" to the APT::Never-MarkAuto-Sections as its used
+      for transitional packages
   * apt-pkg/deb/dpkgpm.cc:
     - fix backgrounding when dpkg runs (closes: #486222)
   * cmdline/apt-mark:
@@ -33,7 +23,22 @@ apt (0.7.25.4) UNRELEASED; urgency=low
     useful when using several different archives on the same host.
     (Closes: #329814, LP: #22354)
 
- -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 18 Dec 2009 16:54:18 +0100
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 12 Mar 2010 11:10:15 +0100
+
+apt (0.7.25.3ubuntu1) lucid; urgency=low
+
+  [ Michael Vogt ]
+  * merged with the debian-sid branch
+  * methods/http.cc:
+    - add Acquire::http::ProxyAutoDetect configuration that 
+      can be used to call a external helper to figure out the 
+      proxy configuration and return it to apt via stdout
+      (this is a step towards WPAD and zeroconf/avahi support)
+  
+  [ Ivan Masár ]
+  * Slovak translation update. Closes: #568294
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 17 Feb 2010 23:33:32 +0100
 
 apt (0.7.25.3) unstable; urgency=low
 
@@ -155,6 +160,58 @@ apt (0.7.25.1) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Sat, 09 Jan 2010 21:52:36 +0100
 
+apt (0.7.25ubuntu4) lucid; urgency=low
+
+  * cmdline/apt-cdrom.cc:
+    - make Acquire::cdrom::AutoDetect default, this can be
+      turned off with "--no-auto-detect"
+  * methods/http.cc:
+    - add cache-control headers even if no cache is given to allow
+      adding options for intercepting proxies
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 02 Feb 2010 16:58:59 -0800
+
+apt (0.7.25ubuntu3) lucid; urgency=low
+
+  * cmdline/apt-get.cc:
+    - don't mark as manually if in download only (Closes: #468180)
+
+ -- Michael Vogt <mvo@debian.org>  Mon, 01 Feb 2010 18:41:15 +0100
+
+apt (0.7.25.2) unstable; urgency=low
+
+  [ Michael Vogt ]
+  * apt-pkg/contrib/cdromutl.cc:
+    - fix UnmountCdrom() fails, give it a bit more time and try
+      the umount again
+  * apt-pkg/cdrom.cc:
+    - fix crash in pkgUdevCdromDevices
+  * methods/cdrom.cc:
+    - fixes in multi cdrom setup code (closes: #549312)
+    - add new "Acquire::cdrom::AutoDetect" config that enables/disables
+      the dlopen of libudev for automatic cdrom detection. Off by default
+      currently, feedback/testing welcome
+  * cmdline/apt-cdrom.cc:
+    - add new --auto-detect option that uses libudev to figure out
+      the cdrom/mount-point
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 27 Jan 2010 16:11:32 +0100
+
+apt (0.7.25ubuntu2) lucid; urgency=low
+
+  * Change history branch so that it does not break the 
+    apt ABI for the pkgPackageManager interface
+    (can be reverted on the next ABI break)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 23 Dec 2009 10:14:16 +0100
+
+apt (0.7.25ubuntu1) lucid; urgency=low
+
+  * Merged from the mvo branch
+  * merged from the lp:~mvo/apt/history branch
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 22 Dec 2009 09:44:08 +0100
+
 apt (0.7.25) unstable; urgency=low
 
   [ Christian Perrier ]
@@ -298,6 +355,29 @@ apt (0.7.25) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Tue, 15 Dec 2009 09:21:55 +0100
 
+apt (0.7.24ubuntu1) lucid; urgency=low
+
+  [ Michael Vogt ]
+  * apt-pkg/deb/dpkgpm.cc:
+    - include df -l output in the apport log as well (thanks to
+      tjaalton)
+  * apt-pkg/packagemanager.cc:
+    - add output about pre-depends configuring when debug::pkgPackageManager
+      is used
+  * methods/https.cc:
+    - fix incorrect use of CURLOPT_TIMEOUT, closes: #497983, LP: #354972
+      thanks to Brian Thomason for the patch
+  * merge lp:~mvo/apt/netrc branch, this adds support for a
+    /etc/apt/auth.conf that can be used to store username/passwords
+    in a "netrc" style file (with the extension that it supports "/"
+    in a machine definition). Based on the maemo git branch.
+
+  [ Brian Murray ]
+  * apt-pkg/depcache.cc, apt-pkg/indexcopy.cc:
+    - typo fix (LP: #462328)
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 14 Dec 2009 09:27:26 +0100
+
 apt (0.7.24) unstable; urgency=low
 
   [ Nicolas François ]
@@ -367,6 +447,59 @@ apt (0.7.24) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Fri, 25 Sep 2009 19:57:25 +0200
 
+apt (0.7.23.1ubuntu2) karmic; urgency=low
+
+  [ Michael Vogt ]
+  * debian/control:
+    - fix Vcr-Bzr header
+
+  [ Kees Cook ]
+  * debian/apt.cron.daily:
+    - fix quotes for use with "eval", thanks to Lars Ljung (LP: #449535).
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 15 Oct 2009 19:05:19 +0200
+
+apt (0.7.23.1ubuntu1) karmic; urgency=low
+
+  [ Matt Zimmerman ]
+  * apt-pkg/deb/dpkgpm.cc:
+    - Suppress apport reports on dpkg short reads (these I/O errors are not 
+      generally indicative of a bug in the packaging)
+
+  [ Loïc Minier ]
+  * cmdline/apt-key:
+    - Emit a warning if removed keys keyring is missing and skip associated
+      checks (LP: #218971)
+
+  [ Brian Murray ]
+  * cmdline/apt-get.cc:
+    - typo fix (LP: #370094)
+
+  [ Michael Vogt ]
+  * apt-pkg/deb/dpkgpm.cc:
+    - when tcgetattr() returns non-zero skip all pty magic 
+      (thanks to Simon Richter, closes: #509866)
+  * apt-inst/contrib/arfile.cc:
+    - show propper error message for Invalid archive members
+  * apt-pkg/acquire-worker.cc:
+    - show error details of failed methods
+  * apt-pkg/contrib/fileutl.cc:
+    - if a process aborts with signal, show signal number
+  * methods/http.cc:
+    - ignore SIGPIPE, we deal with EPIPE from write in 
+      HttpMethod::ServerDie() (LP: #385144)
+  * debian/apt.cron.daily:
+    - if the timestamp is too far in the future, delete it 
+      (LP: #135262)
+  
+  [ Merge ]
+  * merged from debian, reverted the libdlopen-udev branch
+    because its too late in the release process for this now
+  * not merged the proxy behaviour change from 0.7.23 (that will
+    be part of lucid)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 23 Sep 2009 18:15:10 +0200
+
 apt (0.7.23.1) unstable; urgency=low
 
   [ Michael Vogt ]
@@ -596,6 +729,34 @@ apt (0.7.22) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Wed, 29 Jul 2009 19:16:22 +0200
 
+apt (0.7.21ubuntu1) karmic; urgency=low
+
+  * merged from the debian-sid bzr branch
+  
+  [ Christian Perrier ]
+  * Documentation translations:
+    - Fix a typo in apt-get(8) French translation. Closes: #525043
+      Thanks to Guillaume Delacour for spotting it.
+  * Translations:
+    - fr.po
+    - sk.po. Closes: #525857
+    - ru.po. Closes: #526816
+    - eu.po. Closes: #528985
+    - zh_CN.po. Closes: #531390
+    - fr.po
+    - it.po. Closes: #531758
+    - ca.po. Closes: #531921
+  * Added translations
+    - ast.po (Asturian by Marcos Alvareez Costales).
+      Closes: #529007, #529730
+
+  [ Michael Vogt ]
+  * apt-pkg/acquire.cc:
+    - make the (internal) max pipeline depth of the acquire queue
+      configurable via Acquire::Max-Pipeline-Depth
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 09 Jun 2009 15:49:07 +0200
+
 apt (0.7.21) unstable; urgency=low
 
   [ Christian Perrier ]
@@ -639,6 +800,125 @@ apt (0.7.21) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Tue, 14 Apr 2009 14:12:51 +0200
 
+apt (0.7.20.2ubuntu7) karmic; urgency=low
+
+  * fix problematic use of tolower() when calculating the version 
+    hash by using locale independant tolower_ascii() function. 
+    Thanks to M. Vefa Bicakci (LP: #80248)
+  * build fixes for g++-4.4
+  * include dmesg output in apport package failures
+  * include apt ordering into apport package failures
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 24 Apr 2009 10:14:01 +0200
+
+apt (0.7.20.2ubuntu6) jaunty; urgency=low
+
+  [ Jamie Strandboge ]
+  * apt.cron.daily: catch invalid dates due to DST time changes
+    in the stamp files (LP: #354793)
+
+  [ Michael Vogt ]
+  * methods/gpgv.cc:
+    - properly check for expired and revoked keys (closes: #433091)
+      LP: #356012
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 08 Apr 2009 22:39:50 +0200
+
+apt (0.7.20.2ubuntu5) jaunty; urgency=low
+
+  [ Colin Watson ]
+  * cmdline/acqprogress.cc:
+    - Call pkgAcquireStatus::Pulse even if quiet, so that we still get
+      dlstatus messages on the status-fd (LP: #290234).
+  
+  [ Michael Vogt ]
+  * debian/apt.cron.daily:
+    - do not clutter cron mail with bogus gconftool messages 
+      (LP: #223502)
+    - merge fix for cache locking from debian (closes: #459344)
+    - run update-apt-xapian-index (with ionice) to ensure that
+      the index is up-to-date when synaptic is run (LP: #288797)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 30 Mar 2009 13:22:28 +0200
+
+apt (0.7.20.2ubuntu4) jaunty; urgency=low
+
+  * ftparchive/cachedb.cc:
+    - when apt-ftparchive clean is used, compact the database
+      at the end (thanks to cprov)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 26 Mar 2009 13:43:59 +0100
+
+apt (0.7.20.2ubuntu3) jaunty; urgency=low
+
+  * methods/mirror.cc:
+    - when download the mirror file and the server is down,
+      return a propper error message (LP: #278635)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 19 Mar 2009 15:42:15 +0100
+
+apt (0.7.20.2ubuntu2) jaunty; urgency=low
+
+  * apt-pkg/deb/dpkgpm.cc:
+    - revert termios patch (LP: #338514)
+  * cmdline/apt-get.cc
+    - fix "apt-get source pkg" if there is a binary package and
+      a source package of the same name but from different 
+      packages (LP: #330103)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 09 Mar 2009 16:33:28 +0100
+
+apt (0.7.20.2ubuntu1) jaunty; urgency=low
+
+  [ Christian Perrier ]
+  * Translations:
+    - bg.po. Closes: #513211
+    - zh_TW.po. Closes: #513311
+    - nb.po. Closes: #513843
+  
+  [ Michael Vogt ]
+  * merged from the debian-sid branch
+  * [ABI break] merge support for http redirects, thanks to
+    Jeff Licquia and Anthony Towns
+  * [ABI break] use int for the package IDs (thanks to Steve Cotton)
+  * apt-pkg/contrib/strutl.cc:
+    - fix TimeToStr i18n (LP: #289807)
+  * debian/apt.conf.autoremove:
+    - readd "linux-image" (and friends) to the auto-remove
+     blacklist
+  * fix some i18n issues (thanks to  Gabor Kelemen)
+    LP: #263089
+  * apt-pkg/deb/dpkgpm.cc:
+    - filter "ENOMEM" errors when creating apport reports 
+  * cmdline/apt-get.cc:
+    - fix "apt-get source pkg=ver" if binary name != source name
+      (LP: #202219)
+  * apt-pkg/indexrecords.cc:
+    - fix some i18n issues
+  * apt-pkg/contrib/strutl.h:
+    - add new strprintf() function to make i18n strings easier
+  * apt-pkg/dev/debsystem.cc:
+    - add missing apti18n.h header
+  * cmdline/apt-get.cc:
+    - default to "false" for the "APT::Get::Build-Dep-Automatic"
+      option (follow debian here)
+  * apt-pkg/pkgcache.cc:
+    - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
+      state (LP: #322955)
+  * methods/https.cc:
+    - add Acquire::https::AllowRedirect support
+    - do not unlink files in partial/ (thanks to robbiew)
+
+  [ Dereck Wonnacott ]
+  * Clarify the --help for 'purge' (LP: #243948)
+
+  [ Ian Weisser ]
+  * /apt-pkg/deb/debsystem.cc:
+    - add 'sudo' to the error message to "run 'dpkg --configure -a'"
+      (LP: #52697)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 09 Feb 2009 14:21:05 +0100
+
 apt (0.7.20.2) unstable; urgency=medium
 
   [ Eugene V. Lyubimkin ]
@@ -707,6 +987,12 @@ apt (0.7.20) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Mon, 05 Jan 2009 08:59:20 +0100
 
+apt (0.7.19ubuntu1) jaunty; urgency=low
+
+  * merge from debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 24 Nov 2008 10:52:20 +0100
+
 apt (0.7.19) unstable; urgency=low
 
   [ Eugene V. Lyubimkin ]
@@ -1005,48 +1291,132 @@ apt (0.7.15~exp1) experimental; urgency=low
   
  -- Michael Vogt <mvo@debian.org>  Tue, 16 Sep 2008 21:27:03 +0200
 
-apt (0.7.14) unstable; urgency=low
+apt (0.7.14ubuntu7) jaunty; urgency=low
 
-  [ Christian Perrier ]
-  * Mark a message from dselect backend as translatable
-    Thanks to Frédéric Bothamy for the patch
-    Closes: #322470
+  * cmdline/apt-cache.cc:
+    - remove the gettext from a string that consists entirely 
+      of variables (LP: #56792)
+  * apt-pkg/deb/dpkgpm.cc:
+    - fix potential hang when in a backgroud process group
 
-  [ Program translations ]
-  * Simplified Chinese updated. Closes: #473360
-  * Catalan fixes. Closes: #387141
-  * Typo fix in Greek translation. Closes: #479122
-  * French updated.
-  * Thai updated. Closes: #479313
-  * Italian updated. Closes: #479326
-  * Polish updated. Closes: #479342
-  * Bulgarian updated. Closes: #479379
-  * Finnish updated. Closes: #479403
-  * Korean updated. Closes: #479426
-  * Basque updated. Closes: #479452
-  * Vietnamese updated. Closes: #479748
-  * Russian updated. Closes: #479777, #499029
-  * Galician updated. Closes: #479792
-  * Portuguese updated. Closes: #479847
-  * Swedish updated. Closes: #479871
-  * Dutch updated. Closes: #480125
-  * Kurdish added. Closes: #480150
-  * Brazilian Portuguese updated. Closes: #480561
-  * Hungarian updated. Closes: #480662
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 28 Oct 2008 21:09:12 +0100
 
-  [ Otavio Salvador ]
-  * Apply patch to avoid truncating of arbitrary files. Thanks to Bryan
-    Donlan <bdonlan@fushizen.net> for the patch. Closes: #482476
-  * Avoid using dbus if dbus-daemon isn't running. Closes: #438803
-  
-  [ Michael Vogt ]
-  * debian/apt.cron.daily:
-    - apply patch based on the ideas of Francesco Poli for better 
-      behavior when the cache can not be locked (closes: #459344)
+apt (0.7.14ubuntu6) intrepid; urgency=low
 
- -- Michael Vogt <mvo@debian.org>  Wed, 28 May 2008 15:19:12 +0200
+  * debian/apt.conf.autoremove:
+    - remove "linux-image" (and friends) from the auto-remove
+      blacklist. we have the kernel fallback infrastructure now
+      in intrepid (thanks to BenC)
+  * apt-pkg/indexcopy.cc:
+    - support having CDs with no Packages file (just a Packages.gz)
+      by not forcing a verification on non-existing files
+     (LP: #255545)
+  * apt-pkg/deb/dpkgpm.cc:
+    - improve the filtering for duplicated apport reports (thanks
+      to seb128 for pointing that problem out)
+    - do not report disk full errors from dpkg via apport
 
-apt (0.7.13) unstable; urgency=low
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 07 Aug 2008 16:28:05 +0200
+
+apt (0.7.14ubuntu5) intrepid; urgency=low
+
+  * fix various -Wall warnings
+  * make "apt-get build-dep" installed packages marked automatic
+    by default. This can be changed by setting the value of
+    APT::Get::Build-Dep-Automatic to false (thanks to Aaron 
+    Haviland, closes: #44874, LP: #248268)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 06 Aug 2008 14:00:51 +0200
+
+apt (0.7.14ubuntu4) intrepid; urgency=low
+
+  [ Michael Vogt ]
+  * apt-pkg/deb/dpkgpm.cc:
+    - fix uninitialized variable that caused no apport reports
+      to be written sometimes (thanks to Matt Zimmerman)
+  * merge patch that enforces stricter https server certificate
+    checking (thanks to Arnaud Ebalard, closes: #485960)
+  * allow per-mirror specific https settings
+    (thanks to Arnaud Ebalard, closes: #485965)
+  * add doc/examples/apt-https-method-example.cof
+    (thanks to Arnaud Ebalard, closes: #485964)
+  * add DPkg::NoTriggers option so that applications that call
+    apt/aptitude (like the installer) defer trigger processing
+    (thanks to Joey Hess) 
+  * document --install-recommends and --no-install-recommends
+    (thanks to Dereck Wonnacott, LP: #126180)
+  
+  [ Dereck Wonnacott ]
+  * apt-ftparchive might write corrupt Release files (LP: #46439)
+  * Apply --important option to apt-cache depends (LP: #16947) 
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 05 Aug 2008 10:10:49 +0200
+
+apt (0.7.14ubuntu3) intrepid; urgency=low
+
+  [ Otavio Salvador ]
+  * Apply patch to avoid truncating of arbitrary files. Thanks to Bryan
+    Donlan <bdonlan@fushizen.net> for the patch. Closes: #482476
+  * Avoid using dbus if dbus-daemon isn't running. Closes: #438803
+
+  [ Michael Vogt ]
+  * apt-pkg/deb/dpkgpm.cc:
+    - improve apt progress reporting, display trigger actions
+  * apt-pkg/depcache.cc:
+    - when checking for new important deps, skip critical ones
+      (LP: #236360)
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 03 Jun 2008 17:27:07 +0200
+
+apt (0.7.14ubuntu2) intrepid; urgency=low
+
+  * debian/control:
+    - fix FTBFS by adding missing intltool dependency 
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 09 May 2008 13:50:22 +0200
+
+apt (0.7.14) unstable; urgency=low
+
+  [ Christian Perrier ]
+  * Mark a message from dselect backend as translatable
+    Thanks to Frédéric Bothamy for the patch
+    Closes: #322470
+
+  [ Program translations ]
+  * Simplified Chinese updated. Closes: #473360
+  * Catalan fixes. Closes: #387141
+  * Typo fix in Greek translation. Closes: #479122
+  * French updated.
+  * Thai updated. Closes: #479313
+  * Italian updated. Closes: #479326
+  * Polish updated. Closes: #479342
+  * Bulgarian updated. Closes: #479379
+  * Finnish updated. Closes: #479403
+  * Korean updated. Closes: #479426
+  * Basque updated. Closes: #479452
+  * Vietnamese updated. Closes: #479748
+  * Russian updated. Closes: #479777, #499029
+  * Galician updated. Closes: #479792
+  * Portuguese updated. Closes: #479847
+  * Swedish updated. Closes: #479871
+  * Dutch updated. Closes: #480125
+  * Kurdish added. Closes: #480150
+  * Brazilian Portuguese updated. Closes: #480561
+  * Hungarian updated. Closes: #480662
+
+  [ Otavio Salvador ]
+  * Apply patch to avoid truncating of arbitrary files. Thanks to Bryan
+    Donlan <bdonlan@fushizen.net> for the patch. Closes: #482476
+  * Avoid using dbus if dbus-daemon isn't running. Closes: #438803
+  
+  [ Michael Vogt ]
+  * debian/apt.cron.daily:
+    - apply patch based on the ideas of Francesco Poli for better 
+      behavior when the cache can not be locked (closes: #459344)
+
+ -- Michael Vogt <mvo@debian.org>  Wed, 28 May 2008 15:19:12 +0200
+
+apt (0.7.13) unstable; urgency=low
 
   [ Otavio Salvador ]
   * Add missing build-depends back from build-depends-indep field.
@@ -1231,6 +1601,268 @@ apt (0.7.10) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Mon, 07 Jan 2008 21:40:47 +0100
 
+apt (0.7.9ubuntu17) hardy-proposed; urgency=low
+
+  * apt-pkg/acquire-item.cc:
+    - fix signaure removal on transient network failures LP: #220627
+      (thanks to Scott James Remnant)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 22 Apr 2008 16:32:49 +0200
+
+apt (0.7.9ubuntu16) hardy; urgency=low
+
+  * cmdline/apt-key:
+    - only check against master-keys in net-update to not break
+      custom CDs (thanks to Colin Watson)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 08 Apr 2008 14:17:14 +0200
+
+apt (0.7.9ubuntu15) hardy; urgency=low
+
+  * cmdline/apt-get.cc:
+    - do two passes when installing tasks, first ignoring dependencies,
+      then resolving them and run the problemResolver at the end
+      so that it can correct any missing dependencies. This should
+      fix livecd building for kubuntu (thanks to Jonathan Riddell 
+      for reporting the problem)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 13 Mar 2008 23:25:45 +0100
+
+apt (0.7.9ubuntu14) hardy; urgency=low
+
+  * cmdline/apt-get.cc:
+    - fix incorrect help output for -f (LP: #57487)
+    - run the problemResolver after a task was installed
+      so that it can correct any missing dependencies
+  * typo fixes (LP: #107960)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 11 Mar 2008 21:46:07 +0100
+
+apt (0.7.9ubuntu13) hardy; urgency=low
+
+  [ Lionel Porcheron ]
+  * debian/apt.cron.daily:
+    - only call gconftool if gcontool is installed (LP: #194281)
+
+  [ Michael Vogt ]
+  * doc/apt_preferences.5.xml:
+    - fix typo (LP: #150900)
+  * doc/example/sources.list:
+    - updated for hardy (LP: #195879)
+  * debian/apt.cron.daily:
+    - sleep random amount of time (default within 0-30min) before
+      starting the upate to hit the mirrors less hard
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 04 Mar 2008 15:35:09 +0100
+
+apt (0.7.9ubuntu12) hardy; urgency=low
+
+  * debian/apt.cron.daily:
+    - use admin user proxy settings
+  * cmdline/apt-get.cc:
+    - fix task installation (thanks to Colin Watson)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 21 Feb 2008 15:07:44 +0100
+
+apt (0.7.9ubuntu11) hardy; urgency=low
+
+  * apt-pkg/algorithms.cc: 
+    - add APT::Update::Post-Invoke-Success script slot
+      (LP: #188127)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 10 Jan 2008 12:06:12 +0100
+
+apt (0.7.9ubuntu10) hardy; urgency=low
+
+  * cmdline/apt-key:
+    - add "net-update" command that fetches the 
+      ubuntu-archive-keyring.gpg and add keys from it that are 
+      signed by the ubuntu-master-keyring.gpg 
+      (apt-archive-key-signatures spec)
+  * debian/apt.cron.daily:
+    - add apt-key net-update to the nightly cron job
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 13 Feb 2008 15:50:28 +0100
+
+apt (0.7.9ubuntu9) hardy; urgency=low
+
+  * fix FTBFS due to incorrect intltool build-depends
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 11 Feb 2008 16:04:37 +0100
+
+apt (0.7.9ubuntu8) hardy; urgency=low
+
+  * share/apt-auth-failure.note:
+    - show update-notifier note if the nightly update fails with a
+      authentication failure (apt-authentication-reliability spec)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 11 Feb 2008 14:04:56 +0100
+
+apt (0.7.9ubuntu7) hardy; urgency=low
+
+  * methods/connect.cc:
+    - remember hosts with Resolve failures or connect Timeouts
+      see https://wiki.ubuntu.com/NetworklessInstallationFixes
+  * cmdlines/apt-key:
+    - fix bug in the new apt-key update code that imports only
+      keys signed with the master key (thanks to cjwatson)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 08 Feb 2008 11:38:35 +0100
+
+apt (0.7.9ubuntu6) hardy; urgency=low
+
+  * cmdline/apt-key:
+    - add support for a master-keyring that contains signing keys
+      that can be used to sign the archive signing keys. This should
+      make key-rollover easier.
+  * apt-pkg/deb/dpkgpm.cc:
+    - merged patch from Kees Cook to fix anoying upper-case display
+      on amd64 in sbuild
+  * apt-pkg/algorithms.cc: 
+    - add APT::Update::Post-Invoke-Success script slot
+    - Make the breaks handling use the kill list. This means, that a
+      Breaks: Pkg (<< version) may put Pkg onto the remove list.
+  * apt-pkg/deb/dpkgpm.cc:
+    - add APT::Apport::MaxReports to limit the maximum number
+      of reports generated in a single run (default to 3)
+  * apt-pkg/deb/debmetaindex.cc:
+    - add missing "Release" file uri when apt-get update --print-uris
+      is run
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 04 Feb 2008 14:28:02 +0100
+
+apt (0.7.9ubuntu5) hardy; urgency=low
+
+  * Merged apt-authentication-reliabilty branch. This means
+    that apt will refuse to update and use the old lists if
+    the authentication of a repository that used to be 
+    authenticated fails. See
+    https://wiki.ubuntu.com/AptAuthenticationReliability
+    for more details.
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 16 Jan 2008 10:36:10 +0100
+
+apt (0.7.9ubuntu4) hardy; urgency=low
+
+  * apt-pkg/algorithms.cc:
+    - Since APT::Get::List-Cleanup and APT::List-Cleanup both default to
+      true, the effect of the compatibility code was to require both of them
+      to be set to false in order to disable list cleanup; this broke the
+      installer. Instead, disable list cleanup if either of them is set to
+      false.
+
+ -- Colin Watson <cjwatson@ubuntu.com>  Wed, 09 Jan 2008 22:34:37 +0000
+
+apt (0.7.9ubuntu3) hardy; urgency=low
+
+  * merged the apt--DoListUpdate branch, this provides a common interface
+    for "apt-get update" like operations for the frontends and also provides
+    hooks to run stuff in APT::Update::{Pre,Post}-Invoke
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 07 Jan 2008 19:02:11 +0100
+
+apt (0.7.9ubuntu2) hardy; urgency=low
+
+  [ Otavio Salvador ]
+  * Applied patch from Aurelien Jarno <aurel32@debian.org> to fix building
+    with newest dpkg-shlibdeps changing the packaging building order and a
+    patch from Robert Millan <rmh@aybabtu.com> to fix parallel building,
+    closes: #452862.
+  * Applied patch from Alexander Winston <alexander.winston@comcast.net>
+    to use 'min' as symbol for minute, closes: #219034.
+  * Applied patch from Amos Waterland <apw@us.ibm.com> to allow apt to
+    work properly in initramfs, closes: #448316.
+  * Applied patch from Robert Millan <rmh@aybabtu.com> to make apt-key and
+    apt-get to ignore time conflicts, closes: #451328.
+  * Applied patch from Peter Eisentraut <peter_e@gmx.net> to fix a
+    grammatical error ("manual installed" -> "manually installed"),
+    closes: #438136.
+  * Fix cron.daily job to not call fail if apt isn't installed, closes:
+    #443286.
+  
+  [ Daniel Burrows ]
+  * apt-pkg/contrib/configuration.cc:
+    - if RootDir is set, then FindFile and FindDir will return paths
+      relative to the directory stored in RootDir, closes: #456457.
+
+  [ Christian Perrier ]
+  * Fix wording for "After unpacking...". Thans to Michael Gilbert
+    for the patch. Closes: #260825
+
+  [ Program translations ]
+    - Vietnamese updated. Closes: #453774
+    - Japanese updated. Closes: #456909
+    - French updated.
+
+  [ Michael Vogt ]
+  * apt-pkg/packagemanager.{cc,h}:
+    - propergate the Immediate flag to make hitting the 
+      "E: Internal Error, Could not perform immediate configuration (2)"
+      harder. (LP: #179247)
+  * debian/apt.conf.daily:
+    - print warning if the cache can not be locked (closes: #454561),
+      thanks to Bastian Kleineidam
+  * debian/control:
+    - build against libdb-dev (instead of libdb4.4-dev)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 03 Jan 2008 11:31:45 +0100
+
+apt (0.7.9ubuntu1) hardy; urgency=low
+
+  * merged from http://bzr.debian.org/apt/apt/debian-sid/, remaining
+    changes:
+    - mirror download method (pending merge with debian)
+    - no pdiff download by default (unsuitable for ubuntu)
+    - no recommends-by-default yet
+    - add "Original-Maintainer" field to tagfile
+    - show warning on apt-get source if the package is maintained
+      in a VCS (pedinging merge with debian)
+    - use ubuntu-archive keyring instead of debians one
+    - support metapackages section for autoremoval
+    - debian maintainer field change
+    - send ubuntu string in user-agent
+  
+  * Changes from the debian-sid bzr branch (but not uploaded to debian
+    yet):
+  
+  [ Otavio Salvador ]
+  * Applied patch from Mike O'Connor <stew@vireo.org> to add a manpage to
+    apt-mark, closes: #430207.
+  * Applied patch from Andrei Popescu <andreimpopescu@gmail.com> to add a
+    note about some frontends in apt.8 manpage, closes: #438545.
+  * Applied patch from Aurelien Jarno <aurel32@debian.org> to avoid CPU
+    getting crazy when /dev/null is redirected to stdin (which breaks
+    buildds), closes: #452858.
+
+  [ Program translations ]
+    - Basque updated. Closes: #453088
+
+  [ Michael Vogt ]
+  * debian/rules
+    - fix https install location
+  * methods/gpgv.cc:
+    - remove cruft code that caused timestamp/I-M-S issues
+  * ftparchive/contents.cc:
+    - fix error output
+  * methods/mirror.{cc,h}:
+    - only update mirror list on IndexFile updates 
+  * apt-pkg/acquire-item.{cc,h}:
+    - make the authentication download code more robust against
+      servers/proxies with broken If-Range implementations
+  * debian/control:
+    - build against libdb-dev (instead of libdb4.4-dev)
+  * merged the apt--DoListUpdate branch, this provides a common interface
+    for "apt-get update" like operations for the frontends and also provides
+    hooks to run stuff in APT::Update::{Pre,Post}-Invoke
+
+  [ Chris Cheney ]
+  * ftparchive/contents.cc:
+    - support lzma data members
+  * ftparchive/multicompress.cc:
+    - support lzma output
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 13 Dec 2007 14:46:27 +0100
+
 apt (0.7.9) unstable; urgency=low
 
   [ Christian Perrier ]
@@ -1356,6 +1988,193 @@ apt (0.7.7) unstable; urgency=low
  
  -- Michael Vogt <mvo@debian.org>  Tue, 23 Oct 2007 14:58:03 +0200
 
+apt (0.7.6ubuntu14.1) gutsy-proposed; urgency=low
+
+  [ Michael Vogt ]
+  * apt-pkg/deb/dpkgpm.{cc,h}:
+    - give up timeslice on EIO error in read from master terminal
+  * debian/apt.cron.daily:
+    - only run the cron job if apt-get check succeeds (LP: #131719)
+
+  [ Martin Emrich ]  
+  * apt-pkg/deb/dpkgpm.{cc,h}:
+    - rewrite dpkgpm.cc to use pselect() instead of select()
+      to block signals during select() (LP: #134858)
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Sat, 20 Oct 2007 07:51:12 +0200
+
+apt (0.7.6ubuntu14) gutsy; urgency=low
+
+  * apt-pkg/deb/dpkgpm.cc:
+    - fix resource leak (LP: #148806) 
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 15 Oct 2007 20:57:44 +0200
+
+apt (0.7.6ubuntu13) gutsy; urgency=low
+
+  * apt-pkg/deb/dpkgpm.cc:
+    - fix crash in WriteApportReport (LP: #144537)
+  * apt-pkg/acquire-item.cc
+    - fix disappearing local Packages.gz file (LP: #131166)
+  * methods/https.cc:
+    - fix off-by-one error I-M-S handling
+    - cleanup after I-M-S hit
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 09 Oct 2007 01:48:26 +0200
+
+apt (0.7.6ubuntu12) gutsy; urgency=low
+
+  [ Michael Vogt ]
+  * cmdline/apt-mark:
+    - Fix chmoding after have renamed the extended-states file
+      (thanks to Laurent Bigonville, LP: #140019)
+  * apt-pkg/deb/debmetaindex.cc: comparison with string literal results
+      in unspecified behaviour;
+  * Reset curl options and timestamp between downloaded files. Thanks to
+    Ryan Murray <rmurray@debian.org> for the patch
+
+  [Paul Sladen]
+  * Have 'cron.daily/apt' send D-Bus doesn't exist error messages
+    to the bit bucket.  Thanks to 'dasdda'.  (LP: #115397)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 03 Oct 2007 02:17:45 +0200
+
+apt (0.7.6ubuntu11) gutsy; urgency=low
+
+  * apt-pkg/contrib/mmap.cc:
+    - don't fail if msync() returns > 0 (LP: #144001)
+
+ -- Colin Watson <cjwatson@ubuntu.com>  Sat, 22 Sep 2007 21:39:29 +0100
+
+apt (0.7.6ubuntu10) gutsy; urgency=low
+
+  * apt-pkg/deb/dpkgpm.cc:
+    - fix parse error when dpkg sends unexpected data
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 18 Sep 2007 17:25:09 +0100
+
+apt (0.7.6ubuntu9) gutsy; urgency=low
+
+  * apt-pkg/deb/dpkgpm.cc:
+    - fix progress reporting precent calculation (LP: #137798)
+  * make apt build with g++ 4.3
+  * fix missing SetExecClose() call when the status-fd is used
+    (LP: #136767)
+  * debian/apt.cron.daily:
+    - move unattended-upgrade before apt-get autoclean
+  * fix "purge" commandline argument, closes LP: #125733
+    (thanks to Julien Danjou for the patch)
+  * cmdline/apt-get.cc:
+    - do not change the auto-installed information if a package
+      is reinstalled (LP: #139448)
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 11 Sep 2007 20:55:00 +0200
+
+apt (0.7.6ubuntu8) gutsy; urgency=low
+
+  * apt-pkg/deb/dpkgpm.{cc,h}:
+    - fix bug in dpkg log writing when a signal is caught during
+      select() (LP: #134858)
+    - write end marker in the log as well
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 05 Sep 2007 15:03:46 +0200
+
+apt (0.7.6ubuntu7) gutsy; urgency=low
+
+  * reupload to fix FTBFS
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 16 Aug 2007 19:44:20 +0200
+
+apt (0.7.6ubuntu6) gutsy; urgency=low
+
+  * dpkg-triggers: Deal properly with new package states.
+
+ -- Ian Jackson <iwj@ubuntu.com>  Wed, 15 Aug 2007 20:44:37 +0100
+
+apt (0.7.6ubuntu5) UNRELEASED; urgency=low
+
+  * apt-pkg/acquire-item.cc:
+    - fix file removal on local repo i-m-s hit (LP: #131166)
+  * tests/local-repo:
+    - added regression test for this bug
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 09 Aug 2007 12:34:07 +0200
+
+apt (0.7.6ubuntu4) gutsy; urgency=low
+
+  * cmdline/apt-get.cc:
+    - remove YnPrompt when a XS-Vcs- tag is found, improve the
+      notice (LP: #129575)
+  * methods/copy.cc:
+    - take hashes here too
+  * apt-pkg/acquire-worker.cc:
+    - only pass on computed hash if we recived one from the method
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 08 Aug 2007 19:30:29 +0200
+
+apt (0.7.6ubuntu3) gutsy; urgency=low
+
+  * apt-pkg/deb/dpkgpm.cc:
+    - fix packagename extraction when writting apport reports
+  * apt-pkg/pkgcachegen.cc:
+    - increase default mmap size (LP: #125640)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 07 Aug 2007 09:52:00 +0200
+
+apt (0.7.6ubuntu2) gutsy; urgency=low
+
+  * doc/examples/sources.list:
+    - change example source to gutsy
+  * apt-pkg/deb/dpkgpm.cc:
+    - do not break if no /dev/pts is available
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 06 Aug 2007 15:17:57 +0200
+
+apt (0.7.6ubuntu1) gutsy; urgency=low
+
+  [ Michael Vogt ]
+  * apt-inst/contrib/extracttar.cc:
+    - fix fd leak for zero size files (thanks to Bill Broadley for
+      reporting this bug)
+  * apt-pkg/acquire-item.cc:
+    - remove zero size files on I-M-S hit
+  * methods/https.cc:
+    - only send LastModified if we actually have a file
+    - send range request with if-range 
+    - delete failed downloads
+    (thanks to Thom May for his help here)
+    - delete zero size I-M-S hits
+  * apt-pkg/deb/dpkgpm.{cc,h}:
+    - merged dpkg-log branch, this lets you specify a 
+      Dir::Log::Terminal file to log dpkg output to
+    (ABI break)
+    - when writting apport reports, attach the dpkg
+      terminal log too
+  * merged apt--sha256 branch to fully support the new
+    sha256 checksums in the Packages and Release files
+    (ABI break)
+  * apt-pkg/pkgcachegen.cc:
+    - increase default mmap size
+  * tests/local-repo:
+    - added local repository testcase
+  * make apt build with g++ 4.3
+  * fix missing SetExecClose() call when the status-fd is used
+  * debian/apt.cron.daily:
+    - move unattended-upgrade before apt-get autoclean
+  * fix "purge" commandline argument, closes: #133421
+    (thanks to Julien Danjou for the patch)
+  * cmdline/apt-get.cc:
+    - do not change the auto-installed information if a package
+      is reinstalled
+  * cmdline/apt-mark:
+    - Fix chmoding after have renamed the extended-states file (LP: #140019)
+      (thanks to Laurent Bigonville)
+
+  [ Ian Jackson ]
+  * dpkg-triggers: Deal properly with new package states.
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 02 Aug 2007 11:55:54 +0200
+
 apt (0.7.6) unstable; urgency=low
 
   * Applied patch from Aurelien Jarno <aurel32@debian.org> to fix wrong
@@ -1390,6 +2209,14 @@ apt (0.7.5) unstable; urgency=low
 
  -- Otavio Salvador <otavio@ossystems.com.br>  Wed, 25 Jul 2007 20:16:46 -0300
 
+apt (0.7.4ubuntu1) gutsy; urgency=low
+
+  * debian/apt.conf.ubuntu, apt.conf.autoremove:
+    - Change metapackages to {restricted,universe,multiverse}/metapackages 
+      in Install-Recommends-Sections and Never-MarkAuto-Sections
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 26 Jul 2007 10:42:29 +0200
+
 apt (0.7.4) unstable; urgency=low
 
   [ Michael Vogt ]
@@ -1450,6 +2277,90 @@ apt (0.7.3) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Sun, 01 Jul 2007 12:31:29 +0200
 
+apt (0.7.2ubuntu7) gutsy; urgency=low
+
+  * fix build-dependencies 
+  * fixes in the auto-mark code (thanks to Daniel
+    Burrows)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon,  9 Jul 2007 19:02:54 +0200
+
+apt (0.7.2ubuntu6) gutsy; urgency=low
+
+  [ Michael Vogt]
+  * cmdline/apt-get.cc:
+    - make the XS-Vcs-$foo warning more copy'n'paste
+      friendly (thanks to Matt Zimmerman)
+    - ignore the Vcs-Browser tag (Fixes LP: #121770)
+  * debian/apt.conf.autoremove:
+    - added "linux-ubuntu-modules" to APT::NeverAutoRemove
+
+  [ Sarah Hobbs ]
+  * Change metapackages to *metapackages in Install-Recommends-Section
+    and Never-MarkAuto-Section of debian/apt.conf.autoremove, so that
+    the Recommends of metapackages in universe and multiverse will get
+    installed.
+  * Also make this change in doc/examples/configure-index.
+  * Added a Build Dependancies of automake, docbook-xsl, xsltproc, xmlto,
+    docbook to fix FTBFS.
+  * Added in previous changelog entries, as those who uploaded did not
+    actually commit to Bzr.
+
+ -- Sarah Hobbs <hobbsee@ubuntu.com>  Mon, 09 Jul 2007 01:15:57 +1000
+
+apt (0.7.2ubuntu5) gutsy; urgency=low
+
+  * Rerun autoconf to fix the FTBFS.
+
+ -- Michael Bienia <geser@ubuntu.com>  Fri, 06 Jul 2007 19:17:33 +0200
+
+apt (0.7.2ubuntu4) gutsy; urgency=low
+
+  * Rebuild for the libcurl4 -> libcurl3 transition mess.
+
+ -- Steve Kowalik <stevenk@ubuntu.com>  Fri,  6 Jul 2007 12:44:05 +1000
+
+apt (0.7.2ubuntu3) gutsy; urgency=low
+
+  * cmdline/apt-get.cc:
+    - fix InstallTask code when a pkgRecord ends 
+      with a single '\n' (thanks to Soren Hansen for reporting)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 27 Jun 2007 13:33:38 +0200
+
+apt (0.7.2ubuntu2) gutsy; urgency=low
+
+  * fixed compile errors with g++ 4.3 (thanks to 
+    Daniel Burrows, closes: #429378)
+  * fix FTFBFS by changing build-depends to
+    libcurl4-gnutls-dev (closes: #428363)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 19 Jun 2007 13:47:03 +0200
+
+apt (0.7.2ubuntu1) gutsy; urgency=low
+
+  * apt-pkg/deb/dpkgpm.cc:
+    - apport integration added, this means that a apport
+      report is written on dpkg failures
+  * cmdline/apt-get.cc:
+    - merged http://people.ubuntu.com/~mvo/bzr/apt/xs-vcs-bzr/
+      this will warn when Vcs- headers are found on apt-get source
+      (Fixes LP:#115959)
+  * merged from debian/unstable, remaining changes:
+    - maintainer field changed
+    - merged the apt--mirror branch 
+      http://people.ubuntu.com/~mvo/bzr/apt/apt--mirror/
+    - apport reporting on package install/upgrade/remove failure
+    - support for "Originial-Maintainer" field
+    - merged apt--xs-vcs-bzr branch
+      (http://people.ubuntu.com/~mvo/bzr/apt/xs-vcs-bzr/)
+    - use ubuntu archive keyring by default
+    - debian/apt.conf.autoremove
+      + install recommands for section "metapackages"
+      + do not mark direct dependencies of "metapackages" as autoremoved
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 14 Jun 2007 10:38:36 +0200
+
 apt (0.7.2-0.1) unstable; urgency=low
 
   * Non-maintainer upload.
@@ -1543,7 +2454,121 @@ apt (0.7.1) experimental; urgency=low
   * apt-pkg/policy.cc:
     - allow multiple packages (thanks to David Foerster)
 
- -- Michael Vogt <mvo@debian.org>  Wed,  2 May 2007 13:43:44 +0200
+ -- Michael Vogt <mvo@debian.org>  Wed,  2 May 2007 13:43:44 +0200
+
+apt (0.7.0) experimental; urgency=low
+
+  * Package that contains all the new features
+  * Removed all #pragma interface/implementation
+  * Branch that contains all the new features:
+  * translated package descriptions
+  * task install support
+  * automatic dependency removal (thanks to Daniel Burrows)
+  * merged support for the new dpkg "Breaks" field 
+    (thanks to Ian Jackson)
+  * handle network failures more gracefully on "update"
+  * support for unattended-upgrades (via unattended-upgrades
+    package)
+  * added apt-transport-https method
+  * merged "install-recommends" branch (ABI break): 
+    - new "--install-recommends"
+    - install new recommends on "upgrade" if --install-recommends is 
+      given
+    - new "--fix-policy" option to install all packages with unmet
+      important dependencies (usefull with --install-recommends to
+      see what not-installed recommends are on the system)
+    - fix of recommended packages display (only show CandidateVersion
+      fix or-group handling)
+  * merged "install-task" branch (use with "apt-get install taskname^")
+
+ -- Michael Vogt <mvo@debian.org>  Fri, 12 Jan 2007 20:48:07 +0100
+
+apt (0.6.46.4ubuntu10) feisty; urgency=low
+
+  * apt-pkg/depcache.cc:
+    - added "APT::Never-MarkAuto-Section" and consider dependencies 
+      of packages in this section manual (LP#59893)
+    - ensure proper permissions in the extended_state file (LP#67037)
+  * debian/apt.conf.ubuntu:
+    - added APT::Never-MarkAuto-Section "metapackages" (LP#59893)
+  * cmdline/apt-get.cc:
+    - "apt-get install foo" on a already installed package foo will
+      clean the automatic installed flag (LP#72007)
+    - do not show packages already marked for removal as auto-installed
+      (LP#64493)
+    - applied patch to (optionally) hide the auto-remove information
+      (thanks to Frode M. Døving) (LP#69148)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 14 Mar 2007 13:32:32 +0100
+
+apt (0.6.46.4ubuntu9) feisty; urgency=low
+
+  * debian/control:
+    - set XS-Vcs-Bzr header
+    - Set Ubuntu maintainer address
+  * apt-pkg/cdrom.cc:
+    - only unmount if APT::CDROM::NoMount is false
+    - only umount if it was mounted by the method before
+  * cmdline/apt-get.cc:
+    - fix version output in autoremove list (LP#68941)
+  * apt-pkg/packagemanager.cc:
+    - do not spin 100% cpu in FixMissing() (LP#84476)
+  * apt-pkg/indexfile.cc:
+    - fix problem overwriting APT::Acquire::Translation
+  * doc/examples/configure-index:
+    - document APT::Acquire::Translation
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 13 Mar 2007 15:24:39 +0100
+
+apt (0.6.46.4ubuntu8) feisty; urgency=low
+
+  * fix segfault in the pkgRecords destructor
+  * Bump ABI version
+  * debian/control:
+    - make the libcurl3-gnutls-dev versionized (LP#86614)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 26 Feb 2007 14:26:33 +0100
+
+apt (0.6.46.4ubuntu7) feisty; urgency=low
+
+  * Merged the apt--mirror branch. This means that a new 'mirror' 
+    method is available that will allow dynamic mirror updates.
+    The sources.list entry looks something like this:
+    "deb mirror://mirrors.lp.net/get_mirror feisty main restricted"
+
+    It also supports error reporting to a configurable url for mirror
+    problems/failures.
+  * Bump ABI version
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue,  6 Feb 2007 11:38:06 +0100
+
+apt (0.6.46.4ubuntu6) feisty; urgency=low
+
+  * methods/http.cc:
+    - send apt version in User-Agent
+  * apt-pkg/deb/debrecords.cc:
+    - fix SHA1Hash() return value
+  * apt-pkg/algorithms.cc:
+    - fix resolver bug on removal triggered by weak-dependencies 
+      with or-groups
+    - fix segfault (lp: #76530)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 20 Dec 2006 11:04:36 +0100
+
+apt (0.6.46.4ubuntu5) feisty; urgency=low
+
+  * added apt-transport-https package to provide a optional
+    https transport (apt-https spec)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 19 Dec 2006 16:23:43 +0100
+
+apt (0.6.46.4ubuntu4) feisty; urgency=low
+  
+  * apt-pkg/algorithms.cc:
+    - only increase the score of installed applications if they 
+      are not obsolete 
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 18 Dec 2006 19:39:05 +0100
 
 apt (0.7.0) experimental; urgency=low
 
@@ -1572,6 +2597,29 @@ apt (0.7.0) experimental; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Fri, 12 Jan 2007 20:48:07 +0100
 
+apt (0.6.46.4ubuntu3) feisty; urgency=low
+
+  * apt-pkg/algorithm.cc:
+    - use clog for all debugging
+  * apt-pkg/depcache.cc:
+    - never mark Required package for autoremoval (lp: #75882)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 18 Dec 2006 11:56:05 +0100
+
+apt (0.6.46.4ubuntu2) feisty; urgency=low
+
+  * apt-pkg/algorithms.cc: add missing call to MarkKeep
+    so that dist-upgrade isn't broken by unsatisfiable Breaks.
+    (thanks to Ian Jackson)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  7 Dec 2006 23:07:24 +0100
+
+apt (0.6.46.4ubuntu1) feisty; urgency=low
+
+  * merged with debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  7 Dec 2006 12:13:14 +0100
+
 apt (0.6.46.4-0.1) unstable; urgency=emergency
   
   * NMU
@@ -1607,7 +2655,7 @@ apt (0.6.46.3-0.2) unstable; urgency=high
   * Fix FTBFS on most arches (regression from the fix of #400874)
 
  -- Andreas Barth <aba@not.so.argh.org>  Tue,  5 Dec 2006 15:51:22 +0000 
-  
+
 apt (0.6.46.3-0.1) unstable; urgency=high
 
   * Non-maintainer upload with permission of Michael Vogt.
@@ -1618,6 +2666,26 @@ apt (0.6.46.3-0.1) unstable; urgency=high
   
  -- Andreas Barth <aba@not.so.argh.org>  Tue,  5 Dec 2006 10:34:56 +0000
 
+apt (0.6.46.3ubuntu2) feisty; urgency=low
+
+  * apt-pkg/algorithms.cc: add missing call to MarkKeep
+    so that dist-upgrade isn't broken by unsatisfiable Breaks.
+
+ -- Ian Jackson <iwj@ubuntu.com>  Thu,  7 Dec 2006 15:46:52 +0000
+
+apt (0.6.46.3ubuntu1) feisty; urgency=low
+
+  * doc/apt-get.8.xml:
+    - documented autoremove, thanks to Vladimír Lapá\e%GÄ\8d\e%@ek 
+      (lp: #62919)
+  * fix broken i18n in the dpkg progress reporting, thanks to 
+    Frans Pop and Steinar Gunderson. (closes: #389261)
+  * po/en_GB.po:
+    - typo (lp: #61270)
+  * add apt-secure.8 to "See also" section
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 23 Nov 2006 07:24:12 +0100
+
 apt (0.6.46.3) unstable; urgency=low
 
   * apt-pkg/deb/dpkgpm.cc:
@@ -1713,6 +2781,173 @@ apt (0.6.46) unstable; urgency=low
   
  -- Michael Vogt <mvo@debian.org>  Thu, 21 Sep 2006 10:25:03 +0200
 
+apt (0.6.45ubuntu14) edgy; urgency=low
+
+  * cmdline/apt-get.cc:
+    - fix in the TryInstallTask() code to make sure that all package
+      there are marked manual install (lp: #61684)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 28 Sep 2006 00:34:20 +0200
+
+apt (0.6.45ubuntu13) edgy; urgency=low
+
+  * no-changes upload to make apt rebuild against latest g++ and
+    fix synaptic FTBFS (see bug: #62461 for details)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 26 Sep 2006 22:33:10 +0200
+
+apt (0.6.45ubuntu12) edgy; urgency=low
+
+  * apt-pkg/depcache.cc:
+    - fix in the sweep() code, set garbage flag for packages scheduled 
+      for removal too
+    - do not change the autoFlag in MarkKeep(), this can lead to suprising
+      side effects
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 21 Sep 2006 00:58:24 +0200
+
+apt (0.6.45ubuntu11) edgy; urgency=low
+
+  * removed "installtask" and change it so that tasknames can be given
+    with "apt-get install taskname^"
+  * improve the writeStateFile() code
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 20 Sep 2006 14:14:24 +0200
+
+apt (0.6.45ubuntu10) edgy; urgency=low
+
+  * methods/http.cc:
+    - check more careful for incorrect proxy settings (closes: #378868)
+  * methods/gzip.cc:
+    - don't hang when /var is full (closes: #341537), thanks to
+      Luis Rodrigo Gallardo Cruz for the patch
+  * doc/examples/sources.list:
+    - removed non-us.debian.org from the example (closes: #380030,#316196)
+  * Merged from Christian Perrier bzr branch:
+    * ro.po: Updated to 514t. Closes: #388402
+    * dz.po: Updated to 514t. Closes: #388184
+    * it.po: Fixed typos. Closes: #387812
+    * ku.po: New kurdish translation. Closes: #387766
+    * sk.po: Updated to 514t. Closes: #386851
+    * ja.po: Updated to 514t. Closes: #386537
+    * gl.po: Updated to 514t. Closes: #386397
+    * fr.po: Updated to 516t.
+    * fi.po: Updated to 512t. Closes: #382702
+  * share/archive-archive.gpg:
+    - removed the outdated amd64 and debian-2004 keys
+  * apt-pkg/tagfile.cc:
+    - applied patch from Jeroen van Wolffelaar to make the tags
+      caseinsensitive (closes: #384182)
+    - reverted MMap use in the tagfile because it does not work 
+      across pipes (closes: #383487) 
+  * added "installtask" command
+  * added new ubuntu specific rewrite rule for "Original-Maintainer"
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 19 Sep 2006 15:07:51 +0200
+
+apt (0.6.45ubuntu9) edgy; urgency=low
+
+  * cmdline/apt-get.cc:
+    - if --no-remove is given, do not run the AutoRemove code 
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 13 Sep 2006 11:54:20 +0200
+
+apt (0.6.45ubuntu8) edgy; urgency=low
+
+  * apt-pkg/algorithm.cc:
+    - fix pkgProblemResolver.InstallProtect() to preserve the auto-install
+      information (lp: #59457)
+  * cmdline/apt-get.cc:
+    - fix typo in autoremove information (lp: #59420)
+  * install apt-mark to modify the automatically install information for
+    packages
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri,  8 Sep 2006 20:07:22 +0200
+
+apt (0.6.45ubuntu7) edgy; urgency=low
+
+  * apt-pkg/depcache.cc:
+    - fix a bug in the install-recommends-section code
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  7 Sep 2006 18:22:38 +0200
+
+apt (0.6.45ubuntu6) edgy; urgency=low
+
+  [Michael Vogt]
+  * cmdline/apt-get.cc:
+    - always show auto-removable packages and give a hint how to remove 
+      them
+  * debian/apt.conf.ubuntu:
+    - exlucde linux-image and linux-restricted-modules from ever being 
+      auto-removed
+    - added "metapackages" as the section we want to install recommends
+      by default
+  * apt-pkg/depcache.cc:
+    - added support to turn install-recommends selectively on/off by
+      section
+  [Ian Jackson]
+  * Tests pass without code changes!  Except that we need this:
+  * Bump cache file major version to force rebuild so that Breaks
+    dependencies are included.
+  * Don't depend on or suggest any particular dpkg or dpkg-dev versions;
+    --auto-deconfigure is very very old and dpkg-dev's Breaks support
+    is more or less orthogonal.
+  * Initial draft of `Breaks' implementation.  Appears to compile,
+    but as yet *completely untested*.
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  7 Sep 2006 11:50:52 +0200
+
+apt (0.6.45ubuntu5) edgy; urgency=low
+
+  * apt-pkg/pkgcachegen.cc:
+    - increase the APT::Cache-Limit to deal with the increased demand due
+      to the translated descriptions
+  * apt-pkg/deb/dpkgpm.cc:
+    - pass "--auto-deconfigure" to dpkg on install to support the
+      new "breaks" in dpkg
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 15 Aug 2006 12:06:26 +0200
+
+apt (0.6.45ubuntu4) edgy; urgency=low
+
+  * cmdline/apt-get.cc:
+    - fix in the new --fix-polciy code
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 14 Aug 2006 21:08:11 +0200
+
+apt (0.6.45ubuntu3) edgy; urgency=low
+
+  * ABI break
+  * merged latest apt--install-recommends (closes: #559000)
+  * added "--fix-policy" option to can be used as "--fix-broken" and
+    will install missing weak depends (recommends, and/or suggests 
+    depending on the settings)
+  * merged the apt--ddtp branch
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 11 Aug 2006 12:53:23 +0200
+
+apt (0.6.45ubuntu2) edgy; urgency=low
+
+  * debian/control:
+    - switched to libdb4.4 for building (closes: #381019)
+  * cmdline/apt-get.cc:
+    - show only the recommends/suggests for the candidate-version, not for all
+      versions of the package (closes: #257054)
+    - properly handle recommends/suggests or-groups when printing the list of
+      suggested/recommends packages (closes: #311619)
+  * merged "apt--install-recommends" branch:
+    - added "{no-}install-recommends" commandline option
+    - added APT::Install-{Recommends,Suggests} option
+    - currently Install-Recommends defaults to "False" 
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed,  9 Aug 2006 23:38:46 +0200
+
+apt (0.6.45ubuntu1) edgy; urgency=low
+
+  * merged with debian/unstable
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue,  1 Aug 2006 15:43:22 +0200
+
 apt (0.6.45) unstable; urgency=low
 
   * apt-pkg/contrib/sha256.cc:
@@ -1758,6 +2993,37 @@ apt (0.6.45) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Thu, 27 Jul 2006 00:52:05 +0200
 
+apt (0.6.44.2ubuntu4) edgy; urgency=low
+
+  * Make apt-get dselect-upgrade happy again
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 21 Jul 2006 11:03:02 +0200
+
+apt (0.6.44.2ubuntu3) edgy; urgency=low
+
+  * Close extended_states file after writing it.
+
+ -- Colin Watson <cjwatson@ubuntu.com>  Tue, 18 Jul 2006 00:12:13 +0100
+
+apt (0.6.44.2ubuntu2) edgy; urgency=low
+
+  * create a empty extended_states file if none exists already
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue,  4 Jul 2006 09:23:03 +0200
+
+apt (0.6.44.2ubuntu1) edgy; urgency=low
+
+  * merged with debian/unstable
+  * merged the "auto-mark" branch to support aptitude like
+    marking of automatically installed dependencies and added
+    "apt-get remove --auto-remove" to remove unused auto-installed
+    packages again
+  * changed library version from 3.11 to 3.50 to make it clearly 
+    different from the debian version (we are ABI incompatible because
+    of the auto-mark patch)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon,  3 Jul 2006 18:30:46 +0200
+
 apt (0.6.44.2exp1) experimental; urgency=low
 
   * added support for i18n of the package descriptions
@@ -1846,6 +3112,26 @@ apt (0.6.44) unstable; urgency=low
   
  -- Michael Vogt <mvo@debian.org>  Mon,  8 May 2006 22:28:53 +0200
 
+apt (0.6.43.3ubuntu3) dapper; urgency=low
+
+  * methods/http.cc:
+    - fix the user-agent string
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 26 May 2006 18:09:32 +0200
+
+apt (0.6.43.3ubuntu2) dapper; urgency=low
+
+  * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 18 Apr 2006 13:24:40 +0200
+
+apt (0.6.43.3ubuntu1) dapper; urgency=low
+
+  * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large in 
+    the status-fd (ubuntu #28954)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 28 Mar 2006 20:34:46 +0200
+
 apt (0.6.43.3) unstable; urgency=low
 
   * Merge bubulle@debian.org--2005/apt--main--0 up to patch-186:
@@ -1878,6 +3164,38 @@ apt (0.6.43.3) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Wed, 22 Feb 2006 10:13:04 +0100
 
+apt (0.6.43.2ubuntu1) dapper; urgency=low
+
+  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-182:
+  * ca.po: Completed to 512t. Closes: #351592
+    * eu.po: Completed to 512t. Closes: #350483
+    * ja.po: Completed to 512t. Closes: #349806
+    * pl.po: Completed to 512t. Closes: #349514
+    * sk.po: Completed to 512t. Closes: #349474
+    * gl.po: Completed to 512 strings Closes: #349407
+    * vi.po: Completed to 512 strings
+    * sv.po: Completed to 512 strings Closes: #349210
+    * ru.po: Completed to 512 strings Closes: #349154
+    * da.po: Completed to 512 strings Closes: #349084
+    * fr.po: Completed to 512 strings
+    * LINGUAS: Add Welsh
+    * *.po: Updated from sources (512 strings)
+    * vi.po: Completed to 511 strings  Closes: #348968
+  * apt-pkg/deb/deblistparser.cc:
+    - don't explode on a DepCompareOp in a Provides line, but warn about
+      it and ignore it otherwise (thanks to James Troup for reporting it)
+  * cmdline/apt-get.cc:
+    - don't lock the lists directory in DoInstall, breaks --print-uri 
+      (thanks to James Troup for reporting it)
+  * debian/apt.dirs: create /etc/apt/sources.list.d 
+  * make apt-cache madison work without deb-src entries (#352583)
+  * cmdline/apt-get.cc: only run the list-cleaner if a update was 
+    successfull
+  * apt-get update errors are only warnings nowdays
+  * be more careful with the signature file on network failures
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 20 Feb 2006 22:27:48 +0100
+
 apt (0.6.43.2) unstable; urgency=low
 
   * Merge bubulle@debian.org--2005/apt--main--0 up to patch-166:
@@ -1901,6 +3219,24 @@ apt (0.6.43.2) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Thu, 19 Jan 2006 00:06:33 +0100
 
+apt (0.6.43.1ubuntu1) dapper; urgency=low
+
+  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-159:
+    - en_GB.po, de.po: fix spaces errors in "Ign " translations
+      Closes: #347258
+    - makefile: make update-po a pre-requisite of clean target so
+               that POT and PO files are always up-to-date
+    - sv.po: Completed to 511t. Closes: #346450
+    - sk.po: Completed to 511t. Closes: #346369
+    - fr.po: Completed to 511t
+    - *.po: Updated from sources (511 strings)
+  * add patch to fix http download corruption problem (thanks to
+    Petr Vandrovec, closes: #280844, #290694)
+  * added APT::Periodic::Unattended-Upgrade (requires the package
+    "unattended-upgrade")
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 10 Jan 2006 17:09:31 +0100
+
 apt (0.6.43.1) unstable; urgency=low
 
   * Merge bubulle@debian.org--2005/apt--main--0 up to patch-148:
@@ -1924,6 +3260,19 @@ apt (0.6.43.1) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Fri,  6 Jan 2006 01:17:08 +0100
 
+apt (0.6.43ubuntu2) dapper; urgency=low
+
+  * merged some missing bits that wheren't merged by baz in the previous
+    upload (*grumble*)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu,  8 Dec 2005 18:35:58 +0100
+
+apt (0.6.43ubuntu1) dapper; urgency=low
+
+  * merged with debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 25 Nov 2005 11:36:29 +0100
+
 apt (0.6.43) unstable; urgency=medium
 
   * Merge bubulle@debian.org--2005/apt--main--0 up to patch-132:  
@@ -1944,6 +3293,22 @@ apt (0.6.43) unstable; urgency=medium
   
  -- Michael Vogt <mvo@debian.org>  Tue, 29 Nov 2005 00:17:07 +0100
 
+apt (0.6.42.3ubuntu2) dapper; urgency=low
+
+  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-131:  
+    * zh_CN.po: Completed to 507 strings(Closes: #338267)
+    * gl.po: Completed to 510 strings (Closes: #338356)
+  * added support for "/etc/apt/sources.list.d" directory 
+    (closes: #66325)
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 14 Nov 2005 15:30:12 +0100
+
+apt (0.6.42.3ubuntu1) dapper; urgency=low
+
+  * synced with debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 10 Nov 2005 05:05:56 +0100
+
 apt (0.6.42.3) unstable; urgency=low
 
   * Merge bubulle@debian.org--2005/apt--main--0 up to patch-129:
@@ -1972,7 +3337,7 @@ apt (0.6.42.2) unstable; urgency=high
   * Priority high to get the AMD key into testing ASAP.
 
  -- Frans Pop <fjp@debian.org>  Sun, 30 Oct 2005 21:29:11 +0100
+
 apt (0.6.42.1) unstable; urgency=low
 
   * fix a incorrect example in the apt_prefrences man page
@@ -2050,6 +3415,80 @@ apt (0.6.41) unstable; urgency=low
   
  -- Michael Vogt <mvo@debian.org>  Mon,  5 Sep 2005 22:59:03 +0200
 
+apt (0.6.40.1ubuntu8) breezy; urgency=low
+
+  * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-62:
+    - fix for a bad memory/file leak in the mmap code (ubuntu #15603)
+  * po/de.po, po/fr.po: 
+    - updated the translations
+  * po/makefile:
+    - create a single pot file in each domain dir to make rosetta happy
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 28 Sep 2005 10:16:06 +0200
+
+apt (0.6.40.1ubuntu7) breezy; urgency=low
+
+  * updated the pot/po files , no code changes
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 27 Sep 2005 18:38:16 +0200
+
+apt (0.6.40.1ubuntu6) breezy; urgency=low
+
+  * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-56:
+    - make it possible for apt to handle a failed MediaChange event and
+      fall back to other sources (ubuntu #13713)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 13 Sep 2005 22:09:50 +0200
+
+apt (0.6.40.1ubuntu5) breezy; urgency=low
+
+  * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-{50,51}.
+    This adds media-change reporting to the apt status-fd (ubuntu #15213)
+  * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-55:
+    apt-pkg/cdrom.cc:
+    - unmount the cdrom when apt failed to locate any package files
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 12 Sep 2005 15:44:26 +0200
+
+apt (0.6.40.1ubuntu4) breezy; urgency=low
+
+  * debian/apt.cron.daily:
+    - fix a embarrassing typo
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed,  7 Sep 2005 10:10:37 +0200
+
+apt (0.6.40.1ubuntu3) breezy; urgency=low
+
+  * debian/apt.cron.daily:
+    - use the ctime as well when figuring what packages need to
+      be removed. This fixes the problem that packages copied with    
+      "cp -a" (e.g. from the installer) have old mtimes (ubuntu #14504)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue,  6 Sep 2005 18:30:46 +0200
+
+apt (0.6.40.1ubuntu2) breezy; urgency=low
+
+  * improved the support for "error" and "conffile" reporting from
+    dpkg, added the format to README.progress-reporting
+  * added README.progress-reporting to the apt-doc package
+  * Do md5sum checking for file and cdrom method (closes: #319142)
+  * Change pkgPolicy::Pin from private to protected to let subclasses
+    access it too (closes: #321799)
+  * methods/connect.cc:
+    - send failure reason for EAI_AGAIN (TmpResolveFailure) to acuire-item
+  * apt-pkg/acquire-item.cc:
+    - fail early if a FailReason is TmpResolveFailure (avoids hangs during
+      the install when no network is available)
+  * merged michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 23 Aug 2005 19:44:55 +0200
+
+apt (0.6.40.1ubuntu1) breezy; urgency=low
+
+  * Synchronize with Debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Fri,  5 Aug 2005 14:20:56 +0200
+
 apt (0.6.40.1) unstable; urgency=low
 
   * bugfix in the parsing code for the apt<->dpkg communication. apt 
@@ -2059,6 +3498,12 @@ apt (0.6.40.1) unstable; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Fri,  5 Aug 2005 13:24:58 +0200
 
+apt (0.6.40ubuntu1) breezy; urgency=low
+
+  * Synchronize with Debian
+
+ -- Matt Zimmerman <mdz@ubuntu.com>  Thu,  4 Aug 2005 15:53:22 -0700
+
 apt (0.6.40) unstable; urgency=low
 
   * Patch from Jordi Mallach to mark some additional strings for translation
@@ -2074,6 +3519,39 @@ apt (0.6.40) unstable; urgency=low
 
  -- Matt Zimmerman <mdz@debian.org>  Thu, 28 Jul 2005 11:57:32 -0700
 
+apt (0.6.39ubuntu4) breezy; urgency=low
+
+  * Fix keyring paths in apt-key, apt.postinst (I swear I remember doing this
+    before...)
+
+ -- Matt Zimmerman <mdz@ubuntu.com>  Wed, 29 Jun 2005 08:39:17 -0700
+
+apt (0.6.39ubuntu3) breezy; urgency=low
+
+  * Fix keyring locations for Ubuntu in apt-key too.
+
+ -- Colin Watson <cjwatson@ubuntu.com>  Wed, 29 Jun 2005 14:45:36 +0100
+
+apt (0.6.39ubuntu2) breezy; urgency=low
+
+  * Install ubuntu-archive.gpg rather than debian-archive.gpg as
+    /etc/apt/trusted.gpg.
+
+ -- Colin Watson <cjwatson@ubuntu.com>  Wed, 29 Jun 2005 11:53:34 +0100
+
+apt (0.6.39ubuntu1) breezy; urgency=low
+
+  * Michael Vogt
+    - Change debian/bugscript to use #!/bin/bash (Closes: #313402)
+    - Fix a incorrect example in the man-page (closes: #282918)
+    - Support architecture-specific extra overrides
+      (closes: #225947). Thanks to  Anthony Towns for idea and
+      the patch, thanks to Colin Watson for testing it.
+    - better report network timeouts from the methods to the acuire code,
+      only timeout once per sources.list line
+
+ -- Matt Zimmerman <mdz@ubuntu.com>  Tue, 28 Jun 2005 11:52:24 -0700
+
 apt (0.6.39) unstable; urgency=low
 
   * Welsh translation update: daf@muse.19inch.net--2005/apt--main--0--patch-6
@@ -2086,6 +3564,13 @@ apt (0.6.39) unstable; urgency=low
 
  -- Matt Zimmerman <mdz@debian.org>  Tue, 28 Jun 2005 11:51:09 -0700
 
+apt (0.6.38ubuntu1) breezy; urgency=low
+
+  * First release from Ubuntu branch
+  * Merge with --main--0, switch back to Ubuntu keyring
+
+ -- Matt Zimmerman <mdz@ubuntu.com>  Sat, 25 Jun 2005 16:52:41 -0700
+
 apt (0.6.38) unstable; urgency=low
 
   * Merge michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-6, a workaround
@@ -3964,3 +5449,4 @@ apt (0.0.1) unstable; urgency=low
   * Initial Release.
 
  -- Scott K. Ellis <scott@debian.org>  Tue, 31 Mar 1998 12:49:28 -0500
+
index d756871d12b3673e034b25444df6347fe1ef7d29..0ba851dc26d184446a252b06757682b9c25d889b 100644 (file)
@@ -1,19 +1,21 @@
 Source: apt
 Section: admin
 Priority: important
-Maintainer: APT Development Team <deity@lists.debian.org>
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: APT Development Team <deity@lists.debian.org>
 Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>,
  Christian Perrier <bubulle@debian.org>, Daniel Burrows <dburrows@debian.org>,
  Luca Bruno <lethalman88@gmail.com>, Julian Andres Klode <jak@debian.org>
 Standards-Version: 3.8.3
-Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev | libcurl3-gnutls-dev (>= 7.15.5), debiandoc-sgml, xsltproc, docbook-xsl, po4a (>= 0.34-2), autotools-dev
-Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/
+Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev | libcurl3-gnutls-dev (>= 7.15.5), debiandoc-sgml, xsltproc, docbook-xsl, po4a (>= 0.34-2), autotools-dev, intltool
+Vcs-Bzr: http://code.launchpad.net/~ubuntu-core-dev/apt/ubuntu
 
 Package: apt
 Architecture: any
-Depends: ${shlibs:Depends}, debian-archive-keyring, ${misc:Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
 Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)
 Provides: ${libapt-pkg:provides}
+Recommends: ubuntu-keyring
 Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
 Description: Advanced front-end for dpkg
  This is Debian's next generation front-end for the dpkg package manager.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..c0e89b5
--- /dev/null
@@ -0,0 +1,23 @@
+Apt is copyright 1997, 1998, 1999 Jason Gunthorpe and others.
+Apt is currently developed by APT Development Team <deity@lists.debian.org>.
+
+License: GPLv2+
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+See /usr/share/common-licenses/GPL-2, or
+<http://www.gnu.org/copyleft/gpl.txt> for the terms of the latest version
+of the GNU General Public License.
+
index 37c96ef20eff7914496ae6824949ddcae31ee816..6fc2ec9f0dd33356b78db97dbefc8d8ff06ee803 100755 (executable)
@@ -130,7 +130,7 @@ clean:
        rm -rf build
 
        # Add here commands to clean up after the build process.
-       dh_clean debian/copyright debian/shlibs.local debian/shlibs.local.apt debian/shlibs.local.apt-utils
+       dh_clean debian/shlibs.local debian/shlibs.local.apt debian/shlibs.local.apt-utils
 
 binary-indep: apt-doc libapt-pkg-doc
 # Build architecture-independent files here.
@@ -213,7 +213,10 @@ apt: build build-doc debian/shlibs.local
        cp debian/bugscript debian/$@/usr/share/bug/apt/script
        cp debian/apt.logrotate debian/$@/etc/logrotate.d/apt
 
+       cp share/ubuntu-archive.gpg debian/$@/usr/share/$@
+       sed 's/^_//' share/apt-auth-failure.note > debian/$@/usr/share/$@/apt-auth-failure.note
        cp debian/apt.conf.autoremove debian/$@/etc/apt/apt.conf.d/01autoremove
+       cp debian/apt.conf.ubuntu debian/$@/etc/apt/apt.conf.d/01ubuntu
 #      head -n 500 ChangeLog > debian/ChangeLog
 
        # copy lintian override
@@ -224,6 +227,10 @@ apt: build build-doc debian/shlibs.local
        rm -f build/po/*.pot
        rm -f po/*.pot
 
+       # move the mirror failure script in place
+       mv debian/$@/usr/bin/apt-report-mirror-failure \
+          debian/$@/usr/lib/apt/apt-report-mirror-failure \
+
        dh_installexamples -p$@ $(BLD)/docs/examples/*
        dh_installman -p$@ $(wildcard $(patsubst %,doc/%.[158],$(apt_MANPAGES)) $(patsubst %,doc/*/%.*.[158],$(apt_MANPAGES)))
        dh_installcron -p$@
index 233fa2b7d7b0ac69d4cc25b21066bfb4fcce95cf..1dd11a5b423be1705ee6c8728cc74be58b00bc1c 100644 (file)
@@ -103,6 +103,9 @@ APT
   Install-Recommends "true";
   Install-Suggests "false";
 
+  // install recommends automatically for packages in this section
+  Install-Recommends-Section { "metapackages"; "universe/metapackages"; };
+  
   // consider dependencies of packages in this section manual
   Never-MarkAuto-Sections {"metapackages"; "universe/metapackages"; };
 
@@ -267,6 +270,17 @@ Acquire
    Options {"--ignore-time-conflict";} // not very useful on a normal system
   };
 
+  mirror
+  {
+   RefreshInterval "360"; // refresh interval in minutes
+   MaxAge "90";           // max age for a mirror file in days before 
+                          // it gets deleted
+   // mirror failure reporting script
+   ProblemReporting "/usr/lib/apt/apt-report-mirror-failure"; 
+   // mirror failure reporting url
+   ReportFailures "http://example.com/mirror-failure"; 
+   };
+
   CompressionTypes
   {
     bz2 "bzip2";
@@ -288,6 +302,7 @@ Dir "/"
      userstatus "status.user";
      status "/var/lib/dpkg/status";
      cdroms "cdroms.list";
+     mirrors "mirrors/";
   };
   
   // Location of the cache dir
@@ -417,10 +432,10 @@ Debug
   Acquire::Http "false";   // Show http command traffic
   Acquire::Https "false";   // Show https debug
   Acquire::gpgv "false";   // Show the gpgv traffic
+  Acquire::Mirror "false"; // Show debugging of the mirror method
   aptcdrom "false";        // Show found package files
   IdentCdrom "false";
   acquire::netrc "false";  // netrc parser
-  
 }
 
 /* Whatever you do, do not use this configuration file!! Take out ONLY
index ef729e203d149a0d625f30de75e2c150e10dfed5..cc0fd2b8dd0131e7a8675c66eae69800b073f940 100644 (file)
@@ -1,9 +1,11 @@
 # See sources.list(5) for more information, especialy
 # Remember that you can only use http, ftp or file URIs
 # CDROMs are managed through the apt-cdrom tool.
-deb http://http.us.debian.org/debian stable main contrib non-free
-deb http://security.debian.org stable/updates main contrib non-free
+deb http://us.archive.ubuntu.com/ubuntu hardy main restricted
+deb-src http://us.archive.ubuntu.com/ubuntu hardy main restricted
 
-# Uncomment if you want the apt-get source function to work
-#deb-src http://http.us.debian.org/debian stable main contrib non-free
-#deb-src http://security.debian.org stable/updates main contrib non-free
+deb http://security.ubuntu.com/ubuntu hardy-security main restricted
+deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted
+
+deb http://us.archive.ubuntu.com/ubuntu hardy-updates main restricted
+deb-src http://us.archive.ubuntu.com/ubuntu hardy-updates main restricted
index ed881fa32390860801a637f1de7a6a74a2931b88..a6d12364ec7e1d3076102dafe9c0a869e0eeb40c 100644 (file)
@@ -1059,6 +1059,12 @@ msgstr ""
 #. type: Plain text
 #: apt.ent:362
 #, no-wrap
+#| msgid ""
+#| "<!ENTITY file-sourceslist \"\n"
+#| "     <varlistentry><term><filename>/etc/apt/sources.list</filename></term>\n"
+#| "     <listitem><para>Locations to fetch packages from.\n"
+#| "     Configuration Item: <literal>Dir::Etc::SourceList</literal>.</para></listitem>\n"
+#| "     </varlistentry>\n"
 msgid ""
 "<!ENTITY file-trustedgpg \"\n"
 "     <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>\n"
@@ -1136,7 +1142,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
@@ -2512,7 +2518,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 ""
@@ -2636,8 +2642,7 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml:82 apt-ftparchive.1.xml:106
-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."
@@ -2792,10 +2797,8 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
 #: apt-ftparchive.1.xml:155
-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:157
@@ -3092,6 +3095,9 @@ msgstr "Sources"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
 #: apt-ftparchive.1.xml:288
+#| msgid ""
+#| "Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/"
+#| "source/Sources</filename>"
 msgid ""
 "Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/"
 "source/Sources</filename>"
@@ -3237,6 +3243,10 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
 #: apt-ftparchive.1.xml:354
 #, no-wrap
+#| msgid ""
+#| "for i in Sections do \n"
+#| "   for j in Architectures do\n"
+#| "      Generate for DIST=scope SECTION=i ARCH=j\n"
 msgid ""
 "for i in Sections do \n"
 "   for j in Architectures do\n"
@@ -3250,14 +3260,17 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
 #: apt-ftparchive.1.xml:351
+#| msgid ""
+#| "When processing a <literal>Tree</literal> section <command>apt-"
+#| "ftparchive</command> performs an operation similar to:"
 msgid ""
 "When processing a <literal>Tree</literal> section <command>apt-ftparchive</"
 "command> performs an operation similar to: <placeholder type=\"programlisting"
 "\" id=\"0\"/>"
 msgstr ""
 "Quand il exécute la section <literal>Tree</literal>, <command>apt-"
-"ftparchive</command> effectue une opération analogue à : <placeholder type="
-"\"programlisting\" id=\"0\"/>"
+"ftparchive</command> effectue une opération analogue à : <placeholder type=\"programlisting"
+"\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
 #: apt-ftparchive.1.xml:360
@@ -3683,7 +3696,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 ""
@@ -3701,8 +3714,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
@@ -5060,10 +5072,8 @@ msgstr "Trousseau des clés fiables de l'archive Debian."
 
 #. 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
@@ -5075,7 +5085,7 @@ msgstr "Trousseau des clés fiables supprimées de l'archive Debian."
 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 ""
@@ -5185,10 +5195,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
@@ -5648,7 +5656,7 @@ 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
@@ -5721,8 +5729,7 @@ msgstr ""
 #| 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>."
@@ -7471,7 +7478,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 ""
@@ -7493,8 +7500,7 @@ msgstr "<literal>Debug::Acquire::cdrom</literal>"
 
 #. 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>"
@@ -7507,8 +7513,7 @@ msgstr "<literal>Debug::Acquire::ftp</literal>"
 #. 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
@@ -7518,8 +7523,7 @@ msgstr "<literal>Debug::Acquire::http</literal>"
 #. 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
@@ -7680,8 +7684,7 @@ msgstr "<literal>Debug::pkgAcquire::Worker</literal>"
 
 #. 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."
@@ -7822,8 +7825,7 @@ msgstr "<literal>Debug::pkgPackageManager</literal>"
 
 #. 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>
@@ -7894,13 +7896,13 @@ 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
 msgid "&apt-author.team; &apt-email; &apt-product; <date>04 May 2009</date>"
@@ -8050,8 +8052,7 @@ msgstr "une priorité égale à 990"
 
 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
 #: apt_preferences.5.xml:101
-msgid ""
-"to the versions that are not installed and belong to the target release."
+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."
@@ -8536,8 +8537,7 @@ msgstr ""
 #. type: Content of: <refentry><refsect1><refsect2><title>
 #: apt_preferences.5.xml:313
 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:315
@@ -9630,8 +9630,7 @@ msgstr "$Id: guide.sgml,v 1.7 2003/04/26 23:26:13 doogie Exp $"
 
 #. 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."
@@ -10562,10 +10561,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
index adb16a19973c9341dfc9b38f0a311f913cac63a2..ea3794e16548054e5f6b1c989b46091a2354c64b 100644 (file)
@@ -18,6 +18,7 @@
 #include <stdio.h>
 #include <errno.h>
 #include <unistd.h>
+#include <sstream>
 
 #include<set>
 #include<string>
@@ -70,19 +71,17 @@ static bool DoConnect(struct addrinfo *Addr,string Host,
    Owner->Status(_("Connecting to %s (%s)"),Host.c_str(),Name);
 
    // if that addr did timeout before, we do not try it again
-   if(bad_addr.find(string(Name)) != bad_addr.end()) 
+   if(bad_addr.find(string(Name)) != bad_addr.end())
       return false;
 
    /* If this is an IP rotation store the IP we are using.. If something goes
       wrong this will get tacked onto the end of the error message */
    if (LastHostAddr->ai_next != 0)
    {
-      char Name2[NI_MAXHOST + NI_MAXSERV + 10];
-      snprintf(Name2,sizeof(Name2),_("[IP: %s %s]"),Name,Service);
-      Owner->SetFailExtraMsg(string(Name2));
-   }   
-   else
-      Owner->SetFailExtraMsg("");
+      std::stringstream ss;
+      ioprintf(ss, _("[IP: %s %s]"),Name,Service);
+      Owner->SetIP(ss.str());
+   }
       
    // Get a socket
    if ((Fd = socket(Addr->ai_family,Addr->ai_socktype,
@@ -100,7 +99,7 @@ static bool DoConnect(struct addrinfo *Addr,string Host,
       nonblocking */
    if (WaitFd(Fd,true,TimeOut) == false) {
       bad_addr.insert(bad_addr.begin(), string(Name));
-      Owner->SetFailExtraMsg("\nFailReason: Timeout");
+      Owner->SetFailReason("Timeout");
       return _error->Error(_("Could not connect to %s:%s (%s), "
                           "connection timed out"),Host.c_str(),Service,Name);
    }
@@ -115,7 +114,7 @@ static bool DoConnect(struct addrinfo *Addr,string Host,
    {
       errno = Err;
       if(errno == ECONNREFUSED)
-         Owner->SetFailExtraMsg("\nFailReason: ConnectionRefused");
+         Owner->SetFailReason("ConnectionRefused");
       return _error->Errno("connect",_("Could not connect to %s:%s (%s)."),Host.c_str(),
                           Service,Name);
    }
@@ -181,13 +180,13 @@ bool Connect(string Host,int Port,const char *Service,int DefPort,int &Fd,
                  continue;
               }
               bad_addr.insert(bad_addr.begin(), Host);
-              Owner->SetFailExtraMsg("\nFailReason: ResolveFailure");
+              Owner->SetFailReason("ResolveFailure");
               return _error->Error(_("Could not resolve '%s'"),Host.c_str());
            }
            
            if (Res == EAI_AGAIN)
            {
-              Owner->SetFailExtraMsg("\nFailReason: TmpResolveFailure");
+              Owner->SetFailReason("TmpResolveFailure");
               return _error->Error(_("Temporary failure resolving '%s'"),
                                    Host.c_str());
            }
index 72896b4c076e77ce56086c6a3519770571d599c4..027b59f4632ada50b809cbe78e2792c3756afb83 100644 (file)
@@ -84,6 +84,7 @@ bool CopyMethod::Fetch(FetchItem *Itm)
    FileFd Fd(Res.Filename, FileFd::ReadOnly);
    Hash.AddFD(Fd.Fd(), Fd.Size());
    Res.TakeHashes(Hash);
+
    URIDone(Res);
    return true;
 }
index b054446910ae8004cbd85bdd3e1306f5f40621d5..904030e0a83d4115f619fd68f6d9e37882c072c7 100644 (file)
@@ -734,7 +734,7 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out)
           Base64Encode(Uri.User + ":" + Uri.Password) + "\r\n";
    }
    Req += "User-Agent: " + _config->Find("Acquire::http::User-Agent",
-               "Debian APT-HTTP/1.3 ("VERSION")") + "\r\n\r\n";
+               "Ubuntu APT-HTTP/1.3 ("VERSION")") + "\r\n\r\n";
    
    if (Debug == true)
       cerr << Req << endl;
@@ -958,6 +958,9 @@ int HttpMethod::DealWithHeaders(FetchResult &Res,ServerState *Srv)
       failure */
    if (Srv->Result < 200 || Srv->Result >= 300)
    {
+      char err[255];
+      snprintf(err,sizeof(err)-1,"HttpError%i",Srv->Result);
+      SetFailReason(err);
       _error->Error("%u %s",Srv->Result,Srv->Code);
       if (Srv->HaveContent == true)
         return 4;
@@ -1034,7 +1037,7 @@ void HttpMethod::SigTerm(int)
    depth. */
 bool HttpMethod::Fetch(FetchItem *)
 {
-   if (Server == 0)
+   if (Server == 0) 
       return true;
 
    // Queue the requests
@@ -1371,15 +1374,4 @@ bool HttpMethod::AutoDetectProxy()
 }
                                                                        /*}}}*/
 
-int main()
-{
-   setlocale(LC_ALL, "");
-   // ignore SIGPIPE, this can happen on write() if the socket
-   // closes the connection (this is dealt with via ServerDie())
-   signal(SIGPIPE, SIG_IGN);
-
-   HttpMethod Mth;
-   return Mth.Loop();
-}
-
 
index ceee36cbeb9814ae3380a4637f912e334d1e4921..bac94e177d2822b4455e8f4361d84e6e219acbfd 100644 (file)
@@ -13,7 +13,7 @@
 
 #define MAXLEN 360
 
-#include <iostream>
+
 
 using std::cout;
 using std::endl;
@@ -136,7 +136,6 @@ class HttpMethod : public pkgAcqMethod
    int DealWithHeaders(FetchResult &Res,ServerState *Srv);
    bool AutoDetectProxy();
 
-   virtual bool Fetch(FetchItem *);
    virtual bool Configuration(string Message);
    
    // In the event of a fatal signal this file will be closed and timestamped.
@@ -144,6 +143,9 @@ class HttpMethod : public pkgAcqMethod
    static int FailFd;
    static time_t FailTime;
    static void SigTerm(int);
+
+   protected:
+   virtual bool Fetch(FetchItem *);
    
    string NextURI;
    string AutoDetectProxyCmd;
diff --git a/methods/http_main.cc b/methods/http_main.cc
new file mode 100644 (file)
index 0000000..7815c2f
--- /dev/null
@@ -0,0 +1,20 @@
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/acquire-method.h>
+#include <signal.h>
+
+#include "connect.h"
+#include "rfc2553emu.h"
+#include "http.h"
+
+
+int main()
+{
+   setlocale(LC_ALL, "");
+
+   // ignore SIGPIPE, this can happen on write() if the socket
+   // closes the connection (this is dealt with via ServerDie())
+   signal(SIGPIPE, SIG_IGN);
+
+   HttpMethod Mth;
+   return Mth.Loop();
+}
index 7bcae6b9b59ba2f967fdc545cf9f2a263a4c4537..eabe85cfd468e7b2da3533169bf435fc5eb76072 100644 (file)
@@ -48,7 +48,7 @@ include $(PROGRAM_H)
 PROGRAM=http
 SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS)
 LIB_MAKES = apt-pkg/makefile
-SOURCE = http.cc rfc2553emu.cc connect.cc
+SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc
 include $(PROGRAM_H)
 
 # The https method
@@ -79,9 +79,17 @@ LIB_MAKES = apt-pkg/makefile
 SOURCE = rsh.cc
 include $(PROGRAM_H)
 
+# The mirror method
+PROGRAM=mirror
+SLIBS = -lapt-pkg $(SOCKETLIBS)
+LIB_MAKES = apt-pkg/makefile
+SOURCE = mirror.cc http.cc rfc2553emu.cc connect.cc
+include $(PROGRAM_H)
+
 # SSH and bzip2 method symlink
 binary: $(BIN)/ssh $(BIN)/bzip2 $(BIN)/lzma
 veryclean: clean-$(BIN)/ssh clean-$(BIN)/bzip2 clean-$(BIN)/lzma
+
 $(BIN)/ssh:
        echo "Installing ssh method link"
        ln -fs rsh $(BIN)/ssh
diff --git a/methods/mirror.cc b/methods/mirror.cc
new file mode 100644 (file)
index 0000000..b3a956b
--- /dev/null
@@ -0,0 +1,330 @@
+// -*- mode: cpp; mode: fold -*-
+// Description                                                         /*{{{*/
+// $Id: mirror.cc,v 1.59 2004/05/08 19:42:35 mdz Exp $
+/* ######################################################################
+
+   Mirror Aquire Method - This is the Mirror aquire method for APT.
+   
+   ##################################################################### */
+                                                                       /*}}}*/
+// Include Files                                                       /*{{{*/
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/acquire-method.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/sourcelist.h>
+
+#include <fstream>
+#include <iostream>
+#include <stdarg.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+using namespace std;
+
+#include "mirror.h"
+#include "http.h"
+#include "apti18n.h"
+                                                                       /*}}}*/
+
+/* Done:
+ * - works with http (only!)
+ * - always picks the first mirror from the list
+ * - call out to problem reporting script
+ * - supports "deb mirror://host/path/to/mirror-list/// dist component"
+ * - uses pkgAcqMethod::FailReason() to have a string representation
+ *   of the failure that is also send to LP
+ * 
+ * TODO: 
+ * - deal with runing as non-root because we can't write to the lists 
+     dir then -> use the cached mirror file
+ * - better method to download than having a pkgAcquire interface here
+ *   and better error handling there!
+ * - support more than http
+ * - testing :)
+ */
+
+MirrorMethod::MirrorMethod()
+   : HttpMethod(), DownloadedMirrorFile(false)
+{
+};
+
+// HttpMethod::Configuration - Handle a configuration message          /*{{{*/
+// ---------------------------------------------------------------------
+/* We stash the desired pipeline depth */
+bool MirrorMethod::Configuration(string Message)
+{
+   if (pkgAcqMethod::Configuration(Message) == false)
+      return false;
+   Debug = _config->FindB("Debug::Acquire::mirror",false);
+   
+   return true;
+}
+                                                                       /*}}}*/
+
+// clean the mirrors dir based on ttl information
+bool MirrorMethod::Clean(string Dir)
+{
+   vector<metaIndex *>::const_iterator I;
+
+   if(Debug)
+      clog << "MirrorMethod::Clean(): " << Dir << endl;
+
+   if(Dir == "/")
+      return _error->Error("will not clean: '/'");
+
+   // read sources.list
+   pkgSourceList list;
+   list.ReadMainList();
+
+   DIR *D = opendir(Dir.c_str());   
+   if (D == 0)
+      return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+   
+   string StartDir = SafeGetCWD();
+   if (chdir(Dir.c_str()) != 0)
+   {
+      closedir(D);
+      return _error->Errno("chdir",_("Unable to change to %s"),Dir.c_str());
+   }
+   
+   for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+   {
+      // Skip some files..
+      if (strcmp(Dir->d_name,"lock") == 0 ||
+         strcmp(Dir->d_name,"partial") == 0 ||
+         strcmp(Dir->d_name,".") == 0 ||
+         strcmp(Dir->d_name,"..") == 0)
+        continue;
+
+      // see if we have that uri
+      for(I=list.begin(); I != list.end(); I++)
+      {
+        string uri = (*I)->GetURI();
+        if(uri.substr(0,strlen("mirror://")) != string("mirror://"))
+           continue;
+        string BaseUri = uri.substr(0,uri.size()-1);
+        if (URItoFileName(BaseUri) == Dir->d_name)
+           break;
+      }
+      // nothing found, nuke it
+      if (I == list.end())
+        unlink(Dir->d_name);
+   };
+   
+   chdir(StartDir.c_str());
+   closedir(D);
+   return true;   
+}
+
+
+bool MirrorMethod::DownloadMirrorFile(string mirror_uri_str)
+{
+   if(Debug)
+      clog << "MirrorMethod::DownloadMirrorFile(): " << endl;
+
+   // check the file, if it is not older than RefreshInterval just use it
+   // otherwise try to get a new one
+   if(FileExists(MirrorFile)) 
+   {
+      struct stat buf;
+      time_t t,now,refresh;
+      if(stat(MirrorFile.c_str(), &buf) != 0)
+        return false;
+      t = std::max(buf.st_mtime, buf.st_ctime);
+      now = time(NULL);
+      refresh = 60*_config->FindI("Acquire::Mirror::RefreshInterval",360);
+      if(t + refresh > now)
+      {
+        if(Debug)
+           clog << "Mirror file is in RefreshInterval" << endl;
+        DownloadedMirrorFile = true;
+        return true;
+      }
+      if(Debug)
+        clog << "Mirror file " << MirrorFile << " older than " << refresh << "min, re-download it" << endl;
+   }
+
+   // not that great to use pkgAcquire here, but we do not have 
+   // any other way right now
+   string fetch = BaseUri;
+   fetch.replace(0,strlen("mirror://"),"http://");
+
+   pkgAcquire Fetcher;
+   new pkgAcqFile(&Fetcher, fetch, "", 0, "", "", "", MirrorFile);
+   bool res = (Fetcher.Run() == pkgAcquire::Continue);
+   if(res)
+      DownloadedMirrorFile = true;
+   Fetcher.Shutdown();
+   return res;
+}
+
+bool MirrorMethod::SelectMirror()
+{
+   // if we do not have a MirrorFile, fallback
+   if(!FileExists(MirrorFile))
+   {
+      // FIXME: fallback to a default mirror here instead 
+      //        and provide a config option to define that default
+      return _error->Error(_("No mirror file '%s' found "), MirrorFile.c_str());
+   }
+
+   // FIXME: make the mirror selection more clever, do not 
+   //        just use the first one!
+   // BUT: we can not make this random, the mirror has to be
+   //      stable accross session, because otherwise we can
+   //      get into sync issues (got indexfiles from mirror A,
+   //      but packages from mirror B - one might be out of date etc)
+   ifstream in(MirrorFile.c_str());
+   getline(in, Mirror);
+   if(Debug)
+      cerr << "Using mirror: " << Mirror << endl;
+
+   UsedMirror = Mirror;
+   return true;
+}
+
+string MirrorMethod::GetMirrorFileName(string mirror_uri_str)
+{
+   /* 
+    - a mirror_uri_str looks like this:
+    mirror://people.ubuntu.com/~mvo/apt/mirror/mirrors/dists/feisty/Release.gpg
+   
+    - the matching source.list entry
+    deb mirror://people.ubuntu.com/~mvo/apt/mirror/mirrors feisty main
+   
+    - we actually want to go after:
+    http://people.ubuntu.com/~mvo/apt/mirror/mirrors
+
+    And we need to save the BaseUri for later:
+    - mirror://people.ubuntu.com/~mvo/apt/mirror/mirrors
+
+   FIXME: what if we have two similar prefixes?
+     mirror://people.ubuntu.com/~mvo/mirror
+     mirror://people.ubuntu.com/~mvo/mirror2
+   then mirror_uri_str looks like:
+     mirror://people.ubuntu.com/~mvo/apt/mirror/dists/feisty/Release.gpg
+     mirror://people.ubuntu.com/~mvo/apt/mirror2/dists/feisty/Release.gpg
+   we search sources.list and find:
+     mirror://people.ubuntu.com/~mvo/apt/mirror
+   in both cases! So we need to apply some domain knowledge here :( and
+   check for /dists/ or /Release.gpg as suffixes
+   */
+   string name;
+   if(Debug)
+      std::cerr << "GetMirrorFileName: " << mirror_uri_str << std::endl;
+
+   // read sources.list and find match
+   vector<metaIndex *>::const_iterator I;
+   pkgSourceList list;
+   list.ReadMainList();
+   for(I=list.begin(); I != list.end(); I++)
+   {
+      string uristr = (*I)->GetURI();
+      if(Debug)
+        std::cerr << "Checking: " << uristr << std::endl;
+      if(uristr.substr(0,strlen("mirror://")) != string("mirror://"))
+        continue;
+      // find matching uri in sources.list
+      if(mirror_uri_str.substr(0,uristr.size()) == uristr)
+      {
+        if(Debug)
+           std::cerr << "found BaseURI: " << uristr << std::endl;
+        BaseUri = uristr.substr(0,uristr.size()-1);
+      }
+   }
+   // get new file
+   name = _config->FindDir("Dir::State::mirrors") + URItoFileName(BaseUri);
+
+   if(Debug) 
+   {
+      cerr << "base-uri: " << BaseUri << endl;
+      cerr << "mirror-file: " << name << endl;
+   }
+   return name;
+}
+
+// MirrorMethod::Fetch - Fetch an item                                 /*{{{*/
+// ---------------------------------------------------------------------
+/* This adds an item to the pipeline. We keep the pipeline at a fixed
+   depth. */
+bool MirrorMethod::Fetch(FetchItem *Itm)
+{
+   if(Debug)
+      clog << "MirrorMethod::Fetch()" << endl;
+
+   // the http method uses Fetch(0) as a way to update the pipeline,
+   // just let it do its work in this case - Fetch() with a valid
+   // Itm will always run before the first Fetch(0)
+   if(Itm == NULL) 
+      return HttpMethod::Fetch(Itm);
+
+   // if we don't have the name of the mirror file on disk yet,
+   // calculate it now (can be derived from the uri)
+   if(MirrorFile.empty())
+      MirrorFile = GetMirrorFileName(Itm->Uri);
+
+  // download mirror file once (if we are after index files)
+   if(Itm->IndexFile && !DownloadedMirrorFile)
+   {
+      Clean(_config->FindDir("Dir::State::mirrors"));
+      DownloadMirrorFile(Itm->Uri);
+   }
+
+   if(Mirror.empty()) {
+      if(!SelectMirror()) {
+        // no valid mirror selected, something went wrong downloading
+        // from the master mirror site most likely and there is
+        // no old mirror file availalbe
+        return false;
+      }
+   }
+   if(Debug)
+      clog << "selected mirror: " << Mirror << endl;
+
+
+   for (FetchItem *I = Queue; I != 0; I = I->Next)
+   {
+      if(I->Uri.find("mirror://") != string::npos)
+        I->Uri.replace(0,BaseUri.size(), Mirror);
+   }
+   
+   // now run the real fetcher
+   return HttpMethod::Fetch(Itm);
+};
+
+void MirrorMethod::Fail(string Err,bool Transient)
+{
+   if(Queue->Uri.find("http://") != string::npos)
+      Queue->Uri.replace(0,Mirror.size(), BaseUri);
+   pkgAcqMethod::Fail(Err, Transient);
+}
+
+void MirrorMethod::URIStart(FetchResult &Res)
+{
+   if(Queue->Uri.find("http://") != string::npos)
+      Queue->Uri.replace(0,Mirror.size(), BaseUri);
+   pkgAcqMethod::URIStart(Res);
+}
+
+void MirrorMethod::URIDone(FetchResult &Res,FetchResult *Alt)
+{
+   if(Queue->Uri.find("http://") != string::npos)
+      Queue->Uri.replace(0,Mirror.size(), BaseUri);
+   pkgAcqMethod::URIDone(Res, Alt);
+}
+
+
+int main()
+{
+   setlocale(LC_ALL, "");
+
+   MirrorMethod Mth;
+
+   return Mth.Loop();
+}
+
+
diff --git a/methods/mirror.h b/methods/mirror.h
new file mode 100644 (file)
index 0000000..ed81780
--- /dev/null
@@ -0,0 +1,52 @@
+// -*- mode: cpp; mode: fold -*-
+// Description                                                         /*{{{*/// $Id: http.h,v 1.12 2002/04/18 05:09:38 jgg Exp $
+// $Id: http.h,v 1.12 2002/04/18 05:09:38 jgg Exp $
+/* ######################################################################
+
+   MIRROR Aquire Method - This is the MIRROR aquire method for APT.
+
+   ##################################################################### */
+                                                                       /*}}}*/
+
+#ifndef APT_MIRROR_H
+#define APT_MIRROR_H
+
+
+#include <iostream>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+
+#include "http.h"
+
+class MirrorMethod : public HttpMethod
+{
+   FetchResult Res;
+   // we simply transform between BaseUri and Mirror
+   string BaseUri;    // the original mirror://... url
+   string Mirror;     // the selected mirror uri (http://...)
+   string MirrorFile; // the file that contains the list of mirrors
+   bool DownloadedMirrorFile; // already downloaded this session
+
+   bool Debug;
+
+ protected:
+   bool DownloadMirrorFile(string uri);
+   string GetMirrorFileName(string uri);
+   bool SelectMirror();
+   bool Clean(string dir);
+   
+   // we need to overwrite those to transform the url back
+   virtual void Fail(string Why, bool Transient = false);
+   virtual void URIStart(FetchResult &Res);
+   virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0);
+   virtual bool Configuration(string Message);
+
+ public:
+   MirrorMethod();
+   virtual bool Fetch(FetchItem *Itm);
+};
+
+
+#endif
diff --git a/mirror-failure.py b/mirror-failure.py
new file mode 100644 (file)
index 0000000..e7d2bbf
--- /dev/null
@@ -0,0 +1,23 @@
+# File: cgihttpserver-example-1.py
+
+import CGIHTTPServer
+import BaseHTTPServer
+
+class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
+    #cgi_directories = ["/cgi"]
+    def do_POST(self):
+       print "do_POST"
+        #print self.command
+        #print self.path
+        #print self.headers
+        print self.client_address
+        data = self.rfile.read(int(self.headers["content-length"]))
+        print data
+        self.wfile.write("200 Ok\n");
+
+PORT = 8000
+
+httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler)
+print "serving at port", PORT
+httpd.serve_forever()
+
index d849c7cca927391c8741f424382e7fb7b97c4c15..46871528d80f5a157d0424fe037880d38713abfd 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-11 15:17+0100\n"
+"POT-Creation-Date: 2009-09-15 22:58+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -144,9 +144,14 @@ msgstr ""
 msgid "  Version table:"
 msgstr ""
 
+#: cmdline/apt-cache.cc:1623
+#, c-format
+msgid "       %4i %s\n"
+msgstr ""
+
 #: cmdline/apt-cache.cc:1718 cmdline/apt-cdrom.cc:134 cmdline/apt-config.cc:70
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
-#: cmdline/apt-get.cc:2675 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2626 cmdline/apt-sortpkgs.cc:144
 #, c-format
 msgid "%s %s for %s compiled on %s %s\n"
 msgstr ""
@@ -191,7 +196,7 @@ msgid ""
 msgstr ""
 
 #: cmdline/apt-cdrom.cc:77
-msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
+msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
 msgstr ""
 
 #: cmdline/apt-cdrom.cc:92
@@ -241,7 +246,7 @@ msgid ""
 "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
 msgstr ""
 
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:863
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:830
 #, c-format
 msgid "Unable to write to %s"
 msgstr ""
@@ -337,7 +342,7 @@ msgstr ""
 
 #: ftparchive/cachedb.cc:72
 msgid ""
-"DB format is invalid. If you upgraded from an older version of apt, please "
+"DB format is invalid. If you upgraded from a older version of apt, please "
 "remove and re-create the database."
 msgstr ""
 
@@ -352,11 +357,11 @@ msgstr ""
 msgid "Failed to stat %s"
 msgstr ""
 
-#: ftparchive/cachedb.cc:242
+#: ftparchive/cachedb.cc:238
 msgid "Archive has no control record"
 msgstr ""
 
-#: ftparchive/cachedb.cc:448
+#: ftparchive/cachedb.cc:444
 msgid "Unable to get a cursor"
 msgstr ""
 
@@ -421,26 +426,26 @@ msgstr ""
 msgid " DeLink limit of %sB hit.\n"
 msgstr ""
 
-#: ftparchive/writer.cc:389
+#: ftparchive/writer.cc:387
 msgid "Archive had no package field"
 msgstr ""
 
-#: ftparchive/writer.cc:397 ftparchive/writer.cc:628
+#: ftparchive/writer.cc:395 ftparchive/writer.cc:610
 #, c-format
 msgid "  %s has no override entry\n"
 msgstr ""
 
-#: ftparchive/writer.cc:458 ftparchive/writer.cc:716
+#: ftparchive/writer.cc:440 ftparchive/writer.cc:698
 #, c-format
 msgid "  %s maintainer is %s not %s\n"
 msgstr ""
 
-#: ftparchive/writer.cc:638
+#: ftparchive/writer.cc:620
 #, c-format
 msgid "  %s has no source override entry\n"
 msgstr ""
 
-#: ftparchive/writer.cc:642
+#: ftparchive/writer.cc:624
 #, c-format
 msgid "  %s has no binary override entry either\n"
 msgstr ""
@@ -544,7 +549,7 @@ msgstr ""
 msgid "Y"
 msgstr ""
 
-#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1740
+#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1695
 #, c-format
 msgid "Regex compilation error - %s"
 msgstr ""
@@ -687,7 +692,7 @@ msgstr ""
 msgid "Some packages could not be authenticated"
 msgstr ""
 
-#: cmdline/apt-get.cc:734 cmdline/apt-get.cc:890
+#: cmdline/apt-get.cc:734 cmdline/apt-get.cc:886
 msgid "There are problems and -y was used without --force-yes"
 msgstr ""
 
@@ -703,11 +708,11 @@ msgstr ""
 msgid "Internal error, Ordering didn't finish"
 msgstr ""
 
-#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2082 cmdline/apt-get.cc:2115
+#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2037 cmdline/apt-get.cc:2070
 msgid "Unable to lock the download directory"
 msgstr ""
 
-#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2163 cmdline/apt-get.cc:2416
+#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2118 cmdline/apt-get.cc:2367
 #: apt-pkg/cachefile.cc:65
 msgid "The list of sources could not be read."
 msgstr ""
@@ -736,26 +741,25 @@ msgstr ""
 msgid "After this operation, %sB disk space will be freed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2259
-#: cmdline/apt-get.cc:2262
+#: cmdline/apt-get.cc:866 cmdline/apt-get.cc:2213
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:880
+#: cmdline/apt-get.cc:876
 #, c-format
 msgid "You don't have enough free space in %s."
 msgstr ""
 
-#: cmdline/apt-get.cc:896 cmdline/apt-get.cc:916
+#: cmdline/apt-get.cc:892 cmdline/apt-get.cc:912
 msgid "Trivial Only specified but this is not a trivial operation."
 msgstr ""
 
-#: cmdline/apt-get.cc:898
+#: cmdline/apt-get.cc:894
 msgid "Yes, do as I say!"
 msgstr ""
 
-#: cmdline/apt-get.cc:900
+#: cmdline/apt-get.cc:896
 #, c-format
 msgid ""
 "You are about to do something potentially harmful.\n"
@@ -763,74 +767,74 @@ msgid ""
 " ?] "
 msgstr ""
 
-#: cmdline/apt-get.cc:906 cmdline/apt-get.cc:925
+#: cmdline/apt-get.cc:902 cmdline/apt-get.cc:921
 msgid "Abort."
 msgstr ""
 
-#: cmdline/apt-get.cc:921
+#: cmdline/apt-get.cc:917
 msgid "Do you want to continue [Y/n]? "
 msgstr ""
 
-#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2313 apt-pkg/algorithms.cc:1389
+#: cmdline/apt-get.cc:989 cmdline/apt-get.cc:2264 apt-pkg/algorithms.cc:1389
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1011
+#: cmdline/apt-get.cc:1007
 msgid "Some files failed to download"
 msgstr ""
 
-#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2322
+#: cmdline/apt-get.cc:1008 cmdline/apt-get.cc:2273
 msgid "Download complete and in download only mode"
 msgstr ""
 
-#: cmdline/apt-get.cc:1018
+#: cmdline/apt-get.cc:1014
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
 "missing?"
 msgstr ""
 
-#: cmdline/apt-get.cc:1022
+#: cmdline/apt-get.cc:1018
 msgid "--fix-missing and media swapping is not currently supported"
 msgstr ""
 
-#: cmdline/apt-get.cc:1027
+#: cmdline/apt-get.cc:1023
 msgid "Unable to correct missing packages."
 msgstr ""
 
-#: cmdline/apt-get.cc:1028
+#: cmdline/apt-get.cc:1024
 msgid "Aborting install."
 msgstr ""
 
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1058
 #, c-format
 msgid "Note, selecting %s instead of %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1097
+#: cmdline/apt-get.cc:1068
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1115
+#: cmdline/apt-get.cc:1086
 #, c-format
 msgid "Package %s is not installed, so not removed\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1126
+#: cmdline/apt-get.cc:1097
 #, c-format
 msgid "Package %s is a virtual package provided by:\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1138
+#: cmdline/apt-get.cc:1109
 msgid " [Installed]"
 msgstr ""
 
-#: cmdline/apt-get.cc:1143
+#: cmdline/apt-get.cc:1114
 msgid "You should explicitly select one to install."
 msgstr ""
 
-#: cmdline/apt-get.cc:1148
+#: cmdline/apt-get.cc:1119
 #, c-format
 msgid ""
 "Package %s is not available, but is referred to by another package.\n"
@@ -838,84 +842,73 @@ msgid ""
 "is only available from another source\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1167
+#: cmdline/apt-get.cc:1138
 msgid "However the following packages replace it:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1170
+#: cmdline/apt-get.cc:1141
 #, c-format
 msgid "Package %s has no installation candidate"
 msgstr ""
 
-#: cmdline/apt-get.cc:1190
+#: cmdline/apt-get.cc:1161
 #, c-format
 msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1198
+#: cmdline/apt-get.cc:1169
 #, c-format
 msgid "%s is already the newest version.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1227
+#: cmdline/apt-get.cc:1198
 #, c-format
 msgid "Release '%s' for '%s' was not found"
 msgstr ""
 
-#: cmdline/apt-get.cc:1229
+#: cmdline/apt-get.cc:1200
 #, c-format
 msgid "Version '%s' for '%s' was not found"
 msgstr ""
 
-#: cmdline/apt-get.cc:1235
+#: cmdline/apt-get.cc:1206
 #, c-format
 msgid "Selected version %s (%s) for %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1321
-#, c-format
-msgid "Ignore unavailable target release '%s' of package '%s'"
-msgstr ""
-
-#: cmdline/apt-get.cc:1352
+#: cmdline/apt-get.cc:1323
 #, c-format
-msgid "Picking '%s' as source package instead of '%s'\n"
+msgid "No source package '%s' picking '%s' instead\n"
 msgstr ""
 
-#. if (VerTag.empty() == false && Last == 0)
-#: cmdline/apt-get.cc:1389
-#, c-format
-msgid "Ignore unavailable version '%s' of package '%s'"
-msgstr ""
-
-#: cmdline/apt-get.cc:1405
+#: cmdline/apt-get.cc:1360
 msgid "The update command takes no arguments"
 msgstr ""
 
-#: cmdline/apt-get.cc:1418
+#: cmdline/apt-get.cc:1373
 msgid "Unable to lock the list directory"
 msgstr ""
 
-#: cmdline/apt-get.cc:1474
+#: cmdline/apt-get.cc:1429
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
 msgstr ""
 
-#: cmdline/apt-get.cc:1523
+#: cmdline/apt-get.cc:1478
 msgid ""
 "The following packages were automatically installed and are no longer "
 "required:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1480
 #, c-format
 msgid "%lu packages were automatically installed and are no longer required.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1526
+#: cmdline/apt-get.cc:1481
 msgid "Use 'apt-get autoremove' to remove them."
 msgstr ""
 
-#: cmdline/apt-get.cc:1531
+#: cmdline/apt-get.cc:1486
 msgid ""
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "shouldn't happen. Please file a bug report against apt."
@@ -931,49 +924,49 @@ msgstr ""
 #. "that package should be filed.") << endl;
 #. }
 #.
-#: cmdline/apt-get.cc:1534 cmdline/apt-get.cc:1824
+#: cmdline/apt-get.cc:1489 cmdline/apt-get.cc:1779
 msgid "The following information may help to resolve the situation:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1493
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:1557
+#: cmdline/apt-get.cc:1512
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1567
 #, c-format
 msgid "Couldn't find task %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:1727 cmdline/apt-get.cc:1763
+#: cmdline/apt-get.cc:1682 cmdline/apt-get.cc:1718
 #, c-format
 msgid "Couldn't find package %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:1750
+#: cmdline/apt-get.cc:1705
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1781
+#: cmdline/apt-get.cc:1736
 #, c-format
 msgid "%s set to manually installed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1794
+#: cmdline/apt-get.cc:1749
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1797
+#: cmdline/apt-get.cc:1752
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
 msgstr ""
 
-#: cmdline/apt-get.cc:1809
+#: cmdline/apt-get.cc:1764
 msgid ""
 "Some packages could not be installed. This may mean that you have\n"
 "requested an impossible situation or if you are using the unstable\n"
@@ -981,152 +974,152 @@ msgid ""
 "or been moved out of Incoming."
 msgstr ""
 
-#: cmdline/apt-get.cc:1827
+#: cmdline/apt-get.cc:1782
 msgid "Broken packages"
 msgstr ""
 
-#: cmdline/apt-get.cc:1856
+#: cmdline/apt-get.cc:1811
 msgid "The following extra packages will be installed:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1945
+#: cmdline/apt-get.cc:1900
 msgid "Suggested packages:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1946
+#: cmdline/apt-get.cc:1901
 msgid "Recommended packages:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1975
+#: cmdline/apt-get.cc:1930
 msgid "Calculating upgrade... "
 msgstr ""
 
-#: cmdline/apt-get.cc:1978 methods/ftp.cc:708 methods/connect.cc:112
+#: cmdline/apt-get.cc:1933 methods/ftp.cc:707 methods/connect.cc:112
 msgid "Failed"
 msgstr ""
 
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1938
 msgid "Done"
 msgstr ""
 
-#: cmdline/apt-get.cc:2050 cmdline/apt-get.cc:2058
+#: cmdline/apt-get.cc:2005 cmdline/apt-get.cc:2013
 msgid "Internal error, problem resolver broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:2158
+#: cmdline/apt-get.cc:2113
 msgid "Must specify at least one package to fetch source for"
 msgstr ""
 
-#: cmdline/apt-get.cc:2188 cmdline/apt-get.cc:2434
+#: cmdline/apt-get.cc:2143 cmdline/apt-get.cc:2385
 #, c-format
 msgid "Unable to find a source package for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2237
+#: cmdline/apt-get.cc:2192
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2272
+#: cmdline/apt-get.cc:2223
 #, c-format
 msgid "You don't have enough free space in %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2278
+#: cmdline/apt-get.cc:2229
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2281
+#: cmdline/apt-get.cc:2232
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2287
+#: cmdline/apt-get.cc:2238
 #, c-format
 msgid "Fetch source %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2318
+#: cmdline/apt-get.cc:2269
 msgid "Failed to fetch some archives."
 msgstr ""
 
-#: cmdline/apt-get.cc:2346
+#: cmdline/apt-get.cc:2297
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2358
+#: cmdline/apt-get.cc:2309
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2359
+#: cmdline/apt-get.cc:2310
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2376
+#: cmdline/apt-get.cc:2327
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2395
+#: cmdline/apt-get.cc:2346
 msgid "Child process failed"
 msgstr ""
 
-#: cmdline/apt-get.cc:2411
+#: cmdline/apt-get.cc:2362
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 
-#: cmdline/apt-get.cc:2439
+#: cmdline/apt-get.cc:2390
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2459
+#: cmdline/apt-get.cc:2410
 #, c-format
 msgid "%s has no build depends.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2511
+#: cmdline/apt-get.cc:2462
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "found"
 msgstr ""
 
-#: cmdline/apt-get.cc:2564
+#: cmdline/apt-get.cc:2515
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
 "package %s can satisfy version requirements"
 msgstr ""
 
-#: cmdline/apt-get.cc:2600
+#: cmdline/apt-get.cc:2551
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 
-#: cmdline/apt-get.cc:2627
+#: cmdline/apt-get.cc:2578
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2643
+#: cmdline/apt-get.cc:2594
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr ""
 
-#: cmdline/apt-get.cc:2648
+#: cmdline/apt-get.cc:2599
 msgid "Failed to process build dependencies"
 msgstr ""
 
-#: cmdline/apt-get.cc:2680
+#: cmdline/apt-get.cc:2631
 msgid "Supported modules:"
 msgstr ""
 
-#: cmdline/apt-get.cc:2721
+#: cmdline/apt-get.cc:2672
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1170,7 +1163,7 @@ msgid ""
 "                       This APT has Super Cow Powers.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2889
+#: cmdline/apt-get.cc:2839
 msgid ""
 "NOTE: This is only a simulation!\n"
 "      apt-get needs root privileges for real execution.\n"
@@ -1244,11 +1237,11 @@ msgid "Do you want to erase any previously downloaded .deb files?"
 msgstr ""
 
 #: dselect/install:101
-msgid "Some errors occurred while unpacking. Packages that were installed"
+msgid "Some errors occurred while unpacking. I'm going to configure the"
 msgstr ""
 
 #: dselect/install:102
-msgid "will be configured. This may result in duplicate errors"
+msgid "packages that were installed. This may result in duplicate errors"
 msgstr ""
 
 #: dselect/install:103
@@ -1293,12 +1286,7 @@ msgstr ""
 msgid "Error reading archive member header"
 msgstr ""
 
-#: apt-inst/contrib/arfile.cc:90
-#, c-format
-msgid "Invalid archive member header %s"
-msgstr ""
-
-#: apt-inst/contrib/arfile.cc:102
+#: apt-inst/contrib/arfile.cc:90 apt-inst/contrib/arfile.cc:102
 msgid "Invalid archive member header"
 msgstr ""
 
@@ -1400,10 +1388,11 @@ msgstr ""
 
 #. Only warn if there are no sources.list.d.
 #. Only warn if there is no sources.list file.
-#: apt-inst/extract.cc:464 apt-pkg/contrib/cdromutl.cc:157
-#: apt-pkg/contrib/fileutl.cc:240 apt-pkg/sourcelist.cc:159
-#: apt-pkg/sourcelist.cc:165 apt-pkg/acquire.cc:419 apt-pkg/init.cc:90
-#: apt-pkg/init.cc:98 apt-pkg/clean.cc:33 apt-pkg/policy.cc:279
+#: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:843
+#: apt-pkg/contrib/cdromutl.cc:157 apt-pkg/sourcelist.cc:166
+#: apt-pkg/sourcelist.cc:172 apt-pkg/sourcelist.cc:327 apt-pkg/acquire.cc:419
+#: apt-pkg/init.cc:89 apt-pkg/init.cc:97 apt-pkg/clean.cc:33
+#: apt-pkg/policy.cc:281 apt-pkg/policy.cc:287
 #, c-format
 msgid "Unable to read %s"
 msgstr ""
@@ -1433,9 +1422,9 @@ msgid "The info and temp directories need to be on the same filesystem"
 msgstr ""
 
 #. Build the status cache
-#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:793
-#: apt-pkg/pkgcachegen.cc:865 apt-pkg/pkgcachegen.cc:870
-#: apt-pkg/pkgcachegen.cc:1008
+#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:763
+#: apt-pkg/pkgcachegen.cc:832 apt-pkg/pkgcachegen.cc:837
+#: apt-pkg/pkgcachegen.cc:961
 msgid "Reading package lists"
 msgstr ""
 
@@ -1564,11 +1553,11 @@ msgid "File not found"
 msgstr ""
 
 #: methods/copy.cc:43 methods/gzip.cc:141 methods/gzip.cc:150
-#: methods/rred.cc:483 methods/rred.cc:492
+#: methods/rred.cc:234 methods/rred.cc:243
 msgid "Failed to stat"
 msgstr ""
 
-#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:489
+#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:240
 msgid "Failed to set modification time"
 msgstr ""
 
@@ -1577,147 +1566,147 @@ msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
 #. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc:168
+#: methods/ftp.cc:167
 msgid "Logging in"
 msgstr ""
 
-#: methods/ftp.cc:174
+#: methods/ftp.cc:173
 msgid "Unable to determine the peer name"
 msgstr ""
 
-#: methods/ftp.cc:179
+#: methods/ftp.cc:178
 msgid "Unable to determine the local name"
 msgstr ""
 
-#: methods/ftp.cc:210 methods/ftp.cc:238
+#: methods/ftp.cc:209 methods/ftp.cc:237
 #, c-format
 msgid "The server refused the connection and said: %s"
 msgstr ""
 
-#: methods/ftp.cc:216
+#: methods/ftp.cc:215
 #, c-format
 msgid "USER failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:223
+#: methods/ftp.cc:222
 #, c-format
 msgid "PASS failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:243
+#: methods/ftp.cc:242
 msgid ""
 "A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
 "is empty."
 msgstr ""
 
-#: methods/ftp.cc:271
+#: methods/ftp.cc:270
 #, c-format
 msgid "Login script command '%s' failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:297
+#: methods/ftp.cc:296
 #, c-format
 msgid "TYPE failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226
+#: methods/ftp.cc:334 methods/ftp.cc:445 methods/rsh.cc:183 methods/rsh.cc:226
 msgid "Connection timeout"
 msgstr ""
 
-#: methods/ftp.cc:341
+#: methods/ftp.cc:340
 msgid "Server closed the connection"
 msgstr ""
 
-#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:667 methods/rsh.cc:190
+#: methods/ftp.cc:343 apt-pkg/contrib/fileutl.cc:543 methods/rsh.cc:190
 msgid "Read error"
 msgstr ""
 
-#: methods/ftp.cc:351 methods/rsh.cc:197
+#: methods/ftp.cc:350 methods/rsh.cc:197
 msgid "A response overflowed the buffer."
 msgstr ""
 
-#: methods/ftp.cc:368 methods/ftp.cc:380
+#: methods/ftp.cc:367 methods/ftp.cc:379
 msgid "Protocol corruption"
 msgstr ""
 
-#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:706 methods/rsh.cc:232
+#: methods/ftp.cc:451 apt-pkg/contrib/fileutl.cc:582 methods/rsh.cc:232
 msgid "Write error"
 msgstr ""
 
-#: methods/ftp.cc:693 methods/ftp.cc:699 methods/ftp.cc:735
+#: methods/ftp.cc:692 methods/ftp.cc:698 methods/ftp.cc:734
 msgid "Could not create a socket"
 msgstr ""
 
-#: methods/ftp.cc:704
+#: methods/ftp.cc:703
 msgid "Could not connect data socket, connection timed out"
 msgstr ""
 
-#: methods/ftp.cc:710
+#: methods/ftp.cc:709
 msgid "Could not connect passive socket."
 msgstr ""
 
-#: methods/ftp.cc:728
+#: methods/ftp.cc:727
 msgid "getaddrinfo was unable to get a listening socket"
 msgstr ""
 
-#: methods/ftp.cc:742
+#: methods/ftp.cc:741
 msgid "Could not bind a socket"
 msgstr ""
 
-#: methods/ftp.cc:746
+#: methods/ftp.cc:745
 msgid "Could not listen on the socket"
 msgstr ""
 
-#: methods/ftp.cc:753
+#: methods/ftp.cc:752
 msgid "Could not determine the socket's name"
 msgstr ""
 
-#: methods/ftp.cc:785
+#: methods/ftp.cc:784
 msgid "Unable to send PORT command"
 msgstr ""
 
-#: methods/ftp.cc:795
+#: methods/ftp.cc:794
 #, c-format
 msgid "Unknown address family %u (AF_*)"
 msgstr ""
 
-#: methods/ftp.cc:804
+#: methods/ftp.cc:803
 #, c-format
 msgid "EPRT failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:824
+#: methods/ftp.cc:823
 msgid "Data socket connect timed out"
 msgstr ""
 
-#: methods/ftp.cc:831
+#: methods/ftp.cc:830
 msgid "Unable to accept connection"
 msgstr ""
 
-#: methods/ftp.cc:870 methods/http.cc:1000 methods/rsh.cc:303
+#: methods/ftp.cc:869 methods/http.cc:996 methods/rsh.cc:303
 msgid "Problem hashing file"
 msgstr ""
 
-#: methods/ftp.cc:883
+#: methods/ftp.cc:882
 #, c-format
 msgid "Unable to fetch file, server said '%s'"
 msgstr ""
 
-#: methods/ftp.cc:898 methods/rsh.cc:322
+#: methods/ftp.cc:897 methods/rsh.cc:322
 msgid "Data socket timed out"
 msgstr ""
 
-#: methods/ftp.cc:928
+#: methods/ftp.cc:927
 #, c-format
 msgid "Data transfer failed, server said '%s'"
 msgstr ""
 
 #. Get the files information
-#: methods/ftp.cc:1005
+#: methods/ftp.cc:1002
 msgid "Query"
 msgstr ""
 
-#: methods/ftp.cc:1117
+#: methods/ftp.cc:1114
 msgid "Unable to invoke "
 msgstr ""
 
@@ -1758,63 +1747,58 @@ msgstr ""
 msgid "Connecting to %s"
 msgstr ""
 
-#: methods/connect.cc:166 methods/connect.cc:185
+#: methods/connect.cc:165 methods/connect.cc:184
 #, c-format
 msgid "Could not resolve '%s'"
 msgstr ""
 
-#: methods/connect.cc:191
+#: methods/connect.cc:190
 #, c-format
 msgid "Temporary failure resolving '%s'"
 msgstr ""
 
-#: methods/connect.cc:194
+#: methods/connect.cc:193
 #, c-format
-msgid "Something wicked happened resolving '%s:%s' (%i - %s)"
+msgid "Something wicked happened resolving '%s:%s' (%i)"
 msgstr ""
 
-#: methods/connect.cc:241
+#: methods/connect.cc:240
 #, c-format
-msgid "Unable to connect to %s:%s:"
+msgid "Unable to connect to %s %s:"
 msgstr ""
 
-#. TRANSLATOR: %s is the trusted keyring parts directory
-#: methods/gpgv.cc:78
+#: methods/gpgv.cc:71
 #, c-format
-msgid "No keyring installed in %s."
+msgid "Couldn't access keyring: '%s'"
 msgstr ""
 
-#: methods/gpgv.cc:104
-msgid "E: Too many keyrings should be passed to gpgv. Exiting."
-msgstr ""
-
-#: methods/gpgv.cc:121
+#: methods/gpgv.cc:107
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
 msgstr ""
 
-#: methods/gpgv.cc:237
+#: methods/gpgv.cc:223
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
 msgstr ""
 
-#: methods/gpgv.cc:242
+#: methods/gpgv.cc:228
 msgid "At least one invalid signature was encountered."
 msgstr ""
 
-#: methods/gpgv.cc:246
+#: methods/gpgv.cc:232
 #, c-format
 msgid "Could not execute '%s' to verify signature (is gpgv installed?)"
 msgstr ""
 
-#: methods/gpgv.cc:251
+#: methods/gpgv.cc:237
 msgid "Unknown error executing gpgv"
 msgstr ""
 
-#: methods/gpgv.cc:285 methods/gpgv.cc:292
+#: methods/gpgv.cc:271 methods/gpgv.cc:278
 msgid "The following signatures were invalid:\n"
 msgstr ""
 
-#: methods/gpgv.cc:299
+#: methods/gpgv.cc:285
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
@@ -1830,80 +1814,80 @@ msgstr ""
 msgid "Read error from %s process"
 msgstr ""
 
-#: methods/http.cc:385
+#: methods/http.cc:384
 msgid "Waiting for headers"
 msgstr ""
 
-#: methods/http.cc:531
+#: methods/http.cc:530
 #, c-format
 msgid "Got a single header line over %u chars"
 msgstr ""
 
-#: methods/http.cc:539
+#: methods/http.cc:538
 msgid "Bad header line"
 msgstr ""
 
-#: methods/http.cc:558 methods/http.cc:565
+#: methods/http.cc:557 methods/http.cc:564
 msgid "The HTTP server sent an invalid reply header"
 msgstr ""
 
-#: methods/http.cc:594
+#: methods/http.cc:593
 msgid "The HTTP server sent an invalid Content-Length header"
 msgstr ""
 
-#: methods/http.cc:609
+#: methods/http.cc:608
 msgid "The HTTP server sent an invalid Content-Range header"
 msgstr ""
 
-#: methods/http.cc:611
+#: methods/http.cc:610
 msgid "This HTTP server has broken range support"
 msgstr ""
 
-#: methods/http.cc:635
+#: methods/http.cc:634
 msgid "Unknown date format"
 msgstr ""
 
-#: methods/http.cc:791
+#: methods/http.cc:787
 msgid "Select failed"
 msgstr ""
 
-#: methods/http.cc:796
+#: methods/http.cc:792
 msgid "Connection timed out"
 msgstr ""
 
-#: methods/http.cc:819
+#: methods/http.cc:815
 msgid "Error writing to output file"
 msgstr ""
 
-#: methods/http.cc:850
+#: methods/http.cc:846
 msgid "Error writing to file"
 msgstr ""
 
-#: methods/http.cc:878
+#: methods/http.cc:874
 msgid "Error writing to the file"
 msgstr ""
 
-#: methods/http.cc:892
+#: methods/http.cc:888
 msgid "Error reading from server. Remote end closed connection"
 msgstr ""
 
-#: methods/http.cc:894
+#: methods/http.cc:890
 msgid "Error reading from server"
 msgstr ""
 
-#: methods/http.cc:985 apt-pkg/contrib/mmap.cc:233
+#: methods/http.cc:981 apt-pkg/contrib/mmap.cc:215
 msgid "Failed to truncate file"
 msgstr ""
 
-#: methods/http.cc:1150
+#: methods/http.cc:1146
 msgid "Bad header data"
 msgstr ""
 
-#: methods/http.cc:1167 methods/http.cc:1222
+#: methods/http.cc:1163 methods/http.cc:1218
 msgid "Connection failed"
 msgstr ""
 
-#: methods/http.cc:1314
+#: methods/http.cc:1310
 msgid "Internal error"
 msgstr ""
 
@@ -1911,25 +1895,18 @@ msgstr ""
 msgid "Can't mmap an empty file"
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:202
+#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:187
 #, c-format
 msgid "Couldn't make mmap of %lu bytes"
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:252
+#: apt-pkg/contrib/mmap.cc:234
 #, c-format
 msgid ""
 "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. "
 "Current value: %lu. (man 5 apt.conf)"
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:347
-#, c-format
-msgid ""
-"The size of a MMap has already reached the defined limit of %lu bytes,abort "
-"the try to grow the MMap."
-msgstr ""
-
 #. d means days, h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc:346
 #, c-format
@@ -1959,52 +1936,52 @@ msgstr ""
 msgid "Selection %s not found"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:452
+#: apt-pkg/contrib/configuration.cc:458
 #, c-format
 msgid "Unrecognized type abbreviation: '%c'"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:510
+#: apt-pkg/contrib/configuration.cc:516
 #, c-format
 msgid "Opening configuration file %s"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:678
+#: apt-pkg/contrib/configuration.cc:684
 #, c-format
 msgid "Syntax error %s:%u: Block starts with no name."
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:697
+#: apt-pkg/contrib/configuration.cc:703
 #, c-format
 msgid "Syntax error %s:%u: Malformed tag"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:714
+#: apt-pkg/contrib/configuration.cc:720
 #, c-format
 msgid "Syntax error %s:%u: Extra junk after value"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:754
+#: apt-pkg/contrib/configuration.cc:760
 #, c-format
 msgid "Syntax error %s:%u: Directives can only be done at the top level"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:761
+#: apt-pkg/contrib/configuration.cc:767
 #, c-format
 msgid "Syntax error %s:%u: Too many nested includes"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:765 apt-pkg/contrib/configuration.cc:770
+#: apt-pkg/contrib/configuration.cc:771 apt-pkg/contrib/configuration.cc:776
 #, c-format
 msgid "Syntax error %s:%u: Included from here"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:774
+#: apt-pkg/contrib/configuration.cc:780
 #, c-format
 msgid "Syntax error %s:%u: Unsupported directive '%s'"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:825
+#: apt-pkg/contrib/configuration.cc:831
 #, c-format
 msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr ""
@@ -2080,75 +2057,75 @@ msgstr ""
 msgid "Failed to stat the cdrom"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:151
+#: apt-pkg/contrib/fileutl.cc:149
 #, c-format
 msgid "Not using locking for read only lock file %s"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:156
+#: apt-pkg/contrib/fileutl.cc:154
 #, c-format
 msgid "Could not open lock file %s"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:174
+#: apt-pkg/contrib/fileutl.cc:172
 #, c-format
 msgid "Not using locking for nfs mounted lock file %s"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:178
+#: apt-pkg/contrib/fileutl.cc:176
 #, c-format
 msgid "Could not get lock %s"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:568
+#: apt-pkg/contrib/fileutl.cc:444
 #, c-format
 msgid "Waited for %s but it wasn't there"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:580
+#: apt-pkg/contrib/fileutl.cc:456
 #, c-format
 msgid "Sub-process %s received a segmentation fault."
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:582
+#: apt-pkg/contrib/fileutl.cc:458
 #, c-format
 msgid "Sub-process %s received signal %u."
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:586
+#: apt-pkg/contrib/fileutl.cc:462
 #, c-format
 msgid "Sub-process %s returned an error code (%u)"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:588
+#: apt-pkg/contrib/fileutl.cc:464
 #, c-format
 msgid "Sub-process %s exited unexpectedly"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:632
+#: apt-pkg/contrib/fileutl.cc:508
 #, c-format
 msgid "Could not open file %s"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:688
+#: apt-pkg/contrib/fileutl.cc:564
 #, c-format
 msgid "read, still have %lu to read but none left"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:718
+#: apt-pkg/contrib/fileutl.cc:594
 #, c-format
 msgid "write, still have %lu to write but couldn't"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:793
+#: apt-pkg/contrib/fileutl.cc:669
 msgid "Problem closing the file"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:799
+#: apt-pkg/contrib/fileutl.cc:675
 msgid "Problem unlinking the file"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:810
+#: apt-pkg/contrib/fileutl.cc:686
 msgid "Problem syncing the file"
 msgstr ""
 
@@ -2265,64 +2242,57 @@ msgstr ""
 msgid "Unable to parse package file %s (2)"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:83
+#: apt-pkg/sourcelist.cc:90
 #, c-format
 msgid "Malformed line %lu in source list %s (URI)"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:85
+#: apt-pkg/sourcelist.cc:92
 #, c-format
 msgid "Malformed line %lu in source list %s (dist)"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:88
+#: apt-pkg/sourcelist.cc:95
 #, c-format
 msgid "Malformed line %lu in source list %s (URI parse)"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:94
+#: apt-pkg/sourcelist.cc:101
 #, c-format
 msgid "Malformed line %lu in source list %s (absolute dist)"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:101
+#: apt-pkg/sourcelist.cc:108
 #, c-format
 msgid "Malformed line %lu in source list %s (dist parse)"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:199
+#: apt-pkg/sourcelist.cc:206
 #, c-format
 msgid "Opening %s"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:216 apt-pkg/cdrom.cc:445
+#: apt-pkg/sourcelist.cc:223 apt-pkg/cdrom.cc:445
 #, c-format
 msgid "Line %u too long in source list %s."
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:236
+#: apt-pkg/sourcelist.cc:243
 #, c-format
 msgid "Malformed line %u in source list %s (type)"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:240
+#: apt-pkg/sourcelist.cc:247
 #, c-format
 msgid "Type '%s' is not known on line %u in source list %s"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:248 apt-pkg/sourcelist.cc:251
+#: apt-pkg/sourcelist.cc:255 apt-pkg/sourcelist.cc:258
 #, c-format
 msgid "Malformed line %u in source list %s (vendor id)"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:324 apt-pkg/packagemanager.cc:586
-#, c-format
-msgid ""
-"Could not perform immediate configuration on '%s'.Please see man 5 apt.conf "
-"under APT::Immediate-Configure for details. (%d)"
-msgstr ""
-
-#: apt-pkg/packagemanager.cc:440
+#: apt-pkg/packagemanager.cc:436
 #, c-format
 msgid ""
 "This installation run will require temporarily removing the essential "
@@ -2330,13 +2300,6 @@ msgid ""
 "you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:478
-#, c-format
-msgid ""
-"Could not perform immediate configuration on already unpacked '%s'.Please "
-"see man 5 apt.conf under APT::Immediate-Configure for details."
-msgstr ""
-
 #: apt-pkg/pkgrecords.cc:32
 #, c-format
 msgid "Index file type '%s' is not supported"
@@ -2401,12 +2364,12 @@ msgstr ""
 msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
 msgstr ""
 
-#: apt-pkg/init.cc:133
+#: apt-pkg/init.cc:132
 #, c-format
 msgid "Packaging system '%s' is not supported"
 msgstr ""
 
-#: apt-pkg/init.cc:149
+#: apt-pkg/init.cc:148
 msgid "Unable to determine a suitable packaging system type"
 msgstr ""
 
@@ -2427,17 +2390,17 @@ msgstr ""
 msgid "You may want to run apt-get update to correct these problems"
 msgstr ""
 
-#: apt-pkg/policy.cc:316
+#: apt-pkg/policy.cc:347
 #, c-format
 msgid "Invalid record in the preferences file %s, no Package header"
 msgstr ""
 
-#: apt-pkg/policy.cc:338
+#: apt-pkg/policy.cc:369
 #, c-format
 msgid "Did not understand pin type %s"
 msgstr ""
 
-#: apt-pkg/policy.cc:346
+#: apt-pkg/policy.cc:377
 msgid "No priority (or zero) specified for pin"
 msgstr ""
 
@@ -2521,16 +2484,16 @@ msgstr ""
 msgid "Package %s %s was not found while processing file dependencies"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:706
+#: apt-pkg/pkgcachegen.cc:693
 #, c-format
 msgid "Couldn't stat source package list %s"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:808
+#: apt-pkg/pkgcachegen.cc:778
 msgid "Collecting File Provides"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:952 apt-pkg/pkgcachegen.cc:959
+#: apt-pkg/pkgcachegen.cc:907 apt-pkg/pkgcachegen.cc:914
 msgid "IO Error saving source cache"
 msgstr ""
 
@@ -2539,39 +2502,39 @@ msgstr ""
 msgid "rename failed, %s (%s -> %s)."
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:432
+#: apt-pkg/acquire-item.cc:395
 msgid "MD5Sum mismatch"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:693 apt-pkg/acquire-item.cc:1455
+#: apt-pkg/acquire-item.cc:649 apt-pkg/acquire-item.cc:1411
 msgid "Hash Sum mismatch"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1150
+#: apt-pkg/acquire-item.cc:1106
 msgid "There is no public key available for the following key IDs:\n"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1260
+#: apt-pkg/acquire-item.cc:1216
 #, c-format
 msgid ""
 "I wasn't able to locate a file for the %s package. This might mean you need "
 "to manually fix this package. (due to missing arch)"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1319
+#: apt-pkg/acquire-item.cc:1275
 #, c-format
 msgid ""
 "I wasn't able to locate file for the %s package. This might mean you need to "
 "manually fix this package."
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1360
+#: apt-pkg/acquire-item.cc:1316
 #, c-format
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1447
+#: apt-pkg/acquire-item.cc:1403
 msgid "Size mismatch"
 msgstr ""
 
@@ -2698,96 +2661,76 @@ msgstr ""
 msgid "Wrote %i records with %i missing files and %i mismatched files\n"
 msgstr ""
 
-#: apt-pkg/indexcopy.cc:530
-#, c-format
-msgid "Skipping nonexistent file %s"
-msgstr ""
-
-#: apt-pkg/indexcopy.cc:536
-#, c-format
-msgid "Can't find authentication record for: %s"
-msgstr ""
-
-#: apt-pkg/indexcopy.cc:542
-#, c-format
-msgid "Hash mismatch for: %s"
-msgstr ""
-
 #: apt-pkg/deb/dpkgpm.cc:49
 #, c-format
 msgid "Installing %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:661
+#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:659
 #, c-format
 msgid "Configuring %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:668
+#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:666
 #, c-format
 msgid "Removing %s"
 msgstr ""
 
 #: apt-pkg/deb/dpkgpm.cc:52
 #, c-format
-msgid "Completely removing %s"
-msgstr ""
-
-#: apt-pkg/deb/dpkgpm.cc:53
-#, c-format
 msgid "Running post-installation trigger %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:558
+#: apt-pkg/deb/dpkgpm.cc:557
 #, c-format
 msgid "Directory '%s' missing"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:654
+#: apt-pkg/deb/dpkgpm.cc:652
 #, c-format
 msgid "Preparing %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:655
+#: apt-pkg/deb/dpkgpm.cc:653
 #, c-format
 msgid "Unpacking %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:660
+#: apt-pkg/deb/dpkgpm.cc:658
 #, c-format
 msgid "Preparing to configure %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:662
+#: apt-pkg/deb/dpkgpm.cc:660
 #, c-format
 msgid "Installed %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:667
+#: apt-pkg/deb/dpkgpm.cc:665
 #, c-format
 msgid "Preparing for removal of %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:669
+#: apt-pkg/deb/dpkgpm.cc:667
 #, c-format
 msgid "Removed %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:674
+#: apt-pkg/deb/dpkgpm.cc:672
 #, c-format
 msgid "Preparing to completely remove %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:675
+#: apt-pkg/deb/dpkgpm.cc:673
 #, c-format
 msgid "Completely removed %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:879
+#: apt-pkg/deb/dpkgpm.cc:861
 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:909
+#: apt-pkg/deb/dpkgpm.cc:889
 msgid "Running dpkg"
 msgstr ""
 
@@ -2813,18 +2756,8 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
-#: methods/rred.cc:465
-#, c-format
-msgid ""
-"Could not patch %s with mmap and with file operation usage - the patch seems "
-"to be corrupt."
-msgstr ""
-
-#: methods/rred.cc:470
-#, c-format
-msgid ""
-"Could not patch %s with mmap (but no mmap specific fail) - the patch seems "
-"to be corrupt."
+#: methods/rred.cc:219
+msgid "Could not patch file"
 msgstr ""
 
 #: methods/rsh.cc:330
index c5fbe9077d6d77aa7ccf5ae5436c0b0e4dd75523..eaa24a32f0b1099afceb4e7af0d719263cf6cf08 100644 (file)
--- a/po/ar.po
+++ b/po/ar.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt_po\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-01 19:13+0100\n"
+"POT-Creation-Date: 2009-11-27 00:15+0100\n"
 "PO-Revision-Date: 2006-10-20 21:28+0300\n"
 "Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n"
 "Language-Team: Arabic <support@arabeyes.org>\n"
@@ -149,9 +149,14 @@ msgstr ""
 msgid "  Version table:"
 msgstr " جدول النسخ:"
 
+#: cmdline/apt-cache.cc:1623
+#, c-format
+msgid "       %4i %s\n"
+msgstr "       %4i %s\n"
+
 #: cmdline/apt-cache.cc:1718 cmdline/apt-cdrom.cc:134 cmdline/apt-config.cc:70
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
-#: cmdline/apt-get.cc:2665 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2653 cmdline/apt-sortpkgs.cc:144
 #, fuzzy, c-format
 msgid "%s %s for %s compiled on %s %s\n"
 msgstr "%s %s لـ%s %s مُجمّع على %s %s\n"
@@ -550,7 +555,7 @@ msgstr "فشل تغيير اسم %s إلى %s"
 msgid "Y"
 msgstr "Y"
 
-#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1730
+#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1718
 #, c-format
 msgid "Regex compilation error - %s"
 msgstr ""
@@ -711,11 +716,11 @@ msgstr "حزم بحاجة للإزالة لكن الإزالة مُعطّلة."
 msgid "Internal error, Ordering didn't finish"
 msgstr "خطأ داخلي، لم تنته عملية الترتيب"
 
-#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2072 cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2060 cmdline/apt-get.cc:2093
 msgid "Unable to lock the download directory"
 msgstr "تعذر قَفْل دليل التنزيل"
 
-#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2153 cmdline/apt-get.cc:2406
+#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2141 cmdline/apt-get.cc:2394
 #: apt-pkg/cachefile.cc:65
 msgid "The list of sources could not be read."
 msgstr "تعذرت قراءة قائمة المصادر."
@@ -744,8 +749,8 @@ msgstr "بعد الاستخراج %sب من المساحة الإضافيّة س
 msgid "After this operation, %sB disk space will be freed.\n"
 msgstr "بعد الاستخراج %sب من المساحة ستفرّغ.\n"
 
-#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2249
-#: cmdline/apt-get.cc:2252
+#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2237
+#: cmdline/apt-get.cc:2240
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgstr "تعذر حساب المساحة الحرة في %s"
@@ -782,7 +787,7 @@ msgstr "إجهاض."
 msgid "Do you want to continue [Y/n]? "
 msgstr "هل تريد الاستمرار [Y/n]؟"
 
-#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2303 apt-pkg/algorithms.cc:1389
+#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2291 apt-pkg/algorithms.cc:1389
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgstr "فشل إحضار %s  %s\n"
@@ -791,7 +796,7 @@ msgstr "فشل إحضار %s  %s\n"
 msgid "Some files failed to download"
 msgstr "فشل تنزيل بعض الملفات"
 
-#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2312
+#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2300
 msgid "Download complete and in download only mode"
 msgstr "اكتمل التنزيل وفي وضع التنزيل فقط"
 
@@ -886,50 +891,50 @@ msgid "Selected version %s (%s) for %s\n"
 msgstr "النسخة المحددة %s (%s) للإصدارة %s\n"
 
 #. if (VerTag.empty() == false && Last == 0)
-#: cmdline/apt-get.cc:1311 cmdline/apt-get.cc:1379
+#: cmdline/apt-get.cc:1305 cmdline/apt-get.cc:1367
 #, c-format
 msgid "Ignore unavailable version '%s' of package '%s'"
 msgstr ""
 
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1307
 #, c-format
 msgid "Ignore unavailable target release '%s' of package '%s'"
 msgstr ""
 
-#: cmdline/apt-get.cc:1342
+#: cmdline/apt-get.cc:1332
 #, c-format
 msgid "Picking '%s' as source package instead of '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1395
+#: cmdline/apt-get.cc:1383
 msgid "The update command takes no arguments"
 msgstr "لا يقبل الأمر update أية مُعطيات"
 
-#: cmdline/apt-get.cc:1408
+#: cmdline/apt-get.cc:1396
 msgid "Unable to lock the list directory"
 msgstr "تعذر قفل دليل القائمة"
 
-#: cmdline/apt-get.cc:1464
+#: cmdline/apt-get.cc:1452
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
 msgstr ""
 
-#: cmdline/apt-get.cc:1513
+#: cmdline/apt-get.cc:1501
 #, fuzzy
 msgid ""
 "The following packages were automatically installed and are no longer "
 "required:"
 msgstr "سيتم تثبيت الحزم الجديدة التالية:"
 
-#: cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:1503
 #, fuzzy, c-format
 msgid "%lu packages were automatically installed and are no longer required.\n"
 msgstr "سيتم تثبيت الحزم الجديدة التالية:"
 
-#: cmdline/apt-get.cc:1516
+#: cmdline/apt-get.cc:1504
 msgid "Use 'apt-get autoremove' to remove them."
 msgstr ""
 
-#: cmdline/apt-get.cc:1521
+#: cmdline/apt-get.cc:1509
 msgid ""
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "shouldn't happen. Please file a bug report against apt."
@@ -945,51 +950,51 @@ msgstr ""
 #. "that package should be filed.") << endl;
 #. }
 #.
-#: cmdline/apt-get.cc:1524 cmdline/apt-get.cc:1814
+#: cmdline/apt-get.cc:1512 cmdline/apt-get.cc:1802
 msgid "The following information may help to resolve the situation:"
 msgstr "قد تساعد المعلومات التالية في حل المشكلة:"
 
-#: cmdline/apt-get.cc:1528
+#: cmdline/apt-get.cc:1516
 #, fuzzy
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "خطأ داخلي، عطب AllUpgrade بعض الأشياء"
 
-#: cmdline/apt-get.cc:1547
+#: cmdline/apt-get.cc:1535
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr "خطأ داخلي، عطب AllUpgrade بعض الأشياء"
 
-#: cmdline/apt-get.cc:1602
+#: cmdline/apt-get.cc:1590
 #, fuzzy, c-format
 msgid "Couldn't find task %s"
 msgstr "تعذر العثور على الحزمة %s"
 
-#: cmdline/apt-get.cc:1717 cmdline/apt-get.cc:1753
+#: cmdline/apt-get.cc:1705 cmdline/apt-get.cc:1741
 #, c-format
 msgid "Couldn't find package %s"
 msgstr "تعذر العثور على الحزمة %s"
 
-#: cmdline/apt-get.cc:1740
+#: cmdline/apt-get.cc:1728
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr "لاحظ، تحديد %s بسبب صيغة regex '%s'\n"
 
-#: cmdline/apt-get.cc:1771
+#: cmdline/apt-get.cc:1759
 #, fuzzy, c-format
 msgid "%s set to manually installed.\n"
 msgstr "إلا أنه سيتم تثبيت %s"
 
-#: cmdline/apt-get.cc:1784
+#: cmdline/apt-get.cc:1772
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr "قد ترغب بتشغيل `apt-get -f install' لتصحيح هذه:"
 
-#: cmdline/apt-get.cc:1787
+#: cmdline/apt-get.cc:1775
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
 msgstr ""
 "مُعتمدات غير مستوفاة. جرب 'apt-get -f install' بدون أسماء حزم (أو حدّد حلاً)."
 
-#: cmdline/apt-get.cc:1799
+#: cmdline/apt-get.cc:1787
 msgid ""
 "Some packages could not be installed. This may mean that you have\n"
 "requested an impossible situation or if you are using the unstable\n"
@@ -997,152 +1002,152 @@ msgid ""
 "or been moved out of Incoming."
 msgstr ""
 
-#: cmdline/apt-get.cc:1817
+#: cmdline/apt-get.cc:1805
 msgid "Broken packages"
 msgstr "حزم معطوبة"
 
-#: cmdline/apt-get.cc:1846
+#: cmdline/apt-get.cc:1834
 msgid "The following extra packages will be installed:"
 msgstr "سيتم تثبيت الحزم الإضافيّة التالية:"
 
-#: cmdline/apt-get.cc:1935
+#: cmdline/apt-get.cc:1923
 msgid "Suggested packages:"
 msgstr "الحزم المقترحة:"
 
-#: cmdline/apt-get.cc:1936
+#: cmdline/apt-get.cc:1924
 msgid "Recommended packages:"
 msgstr "الحزم المستحسنة:"
 
-#: cmdline/apt-get.cc:1965
+#: cmdline/apt-get.cc:1953
 msgid "Calculating upgrade... "
 msgstr "حساب الترقية..."
 
-#: cmdline/apt-get.cc:1968 methods/ftp.cc:708 methods/connect.cc:112
+#: cmdline/apt-get.cc:1956 methods/ftp.cc:707 methods/connect.cc:112
 msgid "Failed"
 msgstr "فشل"
 
-#: cmdline/apt-get.cc:1973
+#: cmdline/apt-get.cc:1961
 msgid "Done"
 msgstr "تمّ"
 
-#: cmdline/apt-get.cc:2040 cmdline/apt-get.cc:2048
+#: cmdline/apt-get.cc:2028 cmdline/apt-get.cc:2036
 msgid "Internal error, problem resolver broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:2148
+#: cmdline/apt-get.cc:2136
 msgid "Must specify at least one package to fetch source for"
 msgstr "يجب تحديد حزمة واحدة على الأقل لجلب مصدرها"
 
-#: cmdline/apt-get.cc:2178 cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2166 cmdline/apt-get.cc:2412
 #, c-format
 msgid "Unable to find a source package for %s"
 msgstr "تعذر العثور على مصدر الحزمة %s"
 
-#: cmdline/apt-get.cc:2227
+#: cmdline/apt-get.cc:2215
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
 msgstr "تخطي الملف '%s' المنزل مسبقاً\n"
 
-#: cmdline/apt-get.cc:2262
+#: cmdline/apt-get.cc:2250
 #, c-format
 msgid "You don't have enough free space in %s"
 msgstr "ليس هناك مساحة كافية في %s"
 
-#: cmdline/apt-get.cc:2268
+#: cmdline/apt-get.cc:2256
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr "يجب جلب %sب/%sب من الأرشيفات المصدرية.\n"
 
-#: cmdline/apt-get.cc:2271
+#: cmdline/apt-get.cc:2259
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgstr "يجب جلب %sب من الأرشيفات المصدريّة.\n"
 
-#: cmdline/apt-get.cc:2277
+#: cmdline/apt-get.cc:2265
 #, c-format
 msgid "Fetch source %s\n"
 msgstr "إحضار المصدر %s\n"
 
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2296
 msgid "Failed to fetch some archives."
 msgstr "فشل إحضار بعض الأرشيفات."
 
-#: cmdline/apt-get.cc:2336
+#: cmdline/apt-get.cc:2324
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2348
+#: cmdline/apt-get.cc:2336
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgstr "أمر فك الحزمة '%s' فشل.\n"
 
-#: cmdline/apt-get.cc:2349
+#: cmdline/apt-get.cc:2337
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2366
+#: cmdline/apt-get.cc:2354
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgstr "أمر البناء '%s' فشل.\n"
 
-#: cmdline/apt-get.cc:2385
+#: cmdline/apt-get.cc:2373
 msgid "Child process failed"
 msgstr ""
 
-#: cmdline/apt-get.cc:2401
+#: cmdline/apt-get.cc:2389
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 
-#: cmdline/apt-get.cc:2429
+#: cmdline/apt-get.cc:2417
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2449
+#: cmdline/apt-get.cc:2437
 #, c-format
 msgid "%s has no build depends.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2501
+#: cmdline/apt-get.cc:2489
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "found"
 msgstr ""
 
-#: cmdline/apt-get.cc:2554
+#: cmdline/apt-get.cc:2542
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
 "package %s can satisfy version requirements"
 msgstr ""
 
-#: cmdline/apt-get.cc:2590
+#: cmdline/apt-get.cc:2578
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 
-#: cmdline/apt-get.cc:2617
+#: cmdline/apt-get.cc:2605
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2633
+#: cmdline/apt-get.cc:2621
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr ""
 
-#: cmdline/apt-get.cc:2638
+#: cmdline/apt-get.cc:2626
 msgid "Failed to process build dependencies"
 msgstr ""
 
-#: cmdline/apt-get.cc:2670
+#: cmdline/apt-get.cc:2658
 msgid "Supported modules:"
 msgstr "الوحدات المدعومة:"
 
-#: cmdline/apt-get.cc:2711
+#: cmdline/apt-get.cc:2699
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1186,7 +1191,7 @@ msgid ""
 "                       This APT has Super Cow Powers.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2879
+#: cmdline/apt-get.cc:2866
 msgid ""
 "NOTE: This is only a simulation!\n"
 "      apt-get needs root privileges for real execution.\n"
@@ -1424,7 +1429,7 @@ msgstr ""
 #: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:843
 #: apt-pkg/contrib/cdromutl.cc:157 apt-pkg/sourcelist.cc:166
 #: apt-pkg/sourcelist.cc:172 apt-pkg/sourcelist.cc:327 apt-pkg/acquire.cc:419
-#: apt-pkg/init.cc:90 apt-pkg/init.cc:98 apt-pkg/clean.cc:33
+#: apt-pkg/init.cc:89 apt-pkg/init.cc:97 apt-pkg/clean.cc:33
 #: apt-pkg/policy.cc:281 apt-pkg/policy.cc:287
 #, c-format
 msgid "Unable to read %s"
@@ -1588,11 +1593,11 @@ msgid "File not found"
 msgstr "لم يُعثر على الملف"
 
 #: methods/copy.cc:43 methods/gzip.cc:141 methods/gzip.cc:150
-#: methods/rred.cc:234 methods/rred.cc:243
+#: methods/rred.cc:483 methods/rred.cc:492
 msgid "Failed to stat"
 msgstr "فشيل تنفيذ stat"
 
-#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:240
+#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:489
 msgid "Failed to set modification time"
 msgstr "فشل تعيين وقت التعديل"
 
@@ -1601,34 +1606,34 @@ msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
 #. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc:168
+#: methods/ftp.cc:167
 msgid "Logging in"
 msgstr "تسجيل الدخول"
 
-#: methods/ftp.cc:174
+#: methods/ftp.cc:173
 msgid "Unable to determine the peer name"
 msgstr ""
 
-#: methods/ftp.cc:179
+#: methods/ftp.cc:178
 msgid "Unable to determine the local name"
 msgstr ""
 
-#: methods/ftp.cc:210 methods/ftp.cc:238
+#: methods/ftp.cc:209 methods/ftp.cc:237
 #, c-format
 msgid "The server refused the connection and said: %s"
 msgstr "رفض الخادم اتصالنا بالرد: %s"
 
-#: methods/ftp.cc:216
+#: methods/ftp.cc:215
 #, c-format
 msgid "USER failed, server said: %s"
 msgstr "فشل USER، ردّ الخادم: %s"
 
-#: methods/ftp.cc:223
+#: methods/ftp.cc:222
 #, c-format
 msgid "PASS failed, server said: %s"
 msgstr "فشل PASS، ردّ الخادم: %s"
 
-#: methods/ftp.cc:243
+#: methods/ftp.cc:242
 msgid ""
 "A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
 "is empty."
@@ -1636,114 +1641,114 @@ msgstr ""
 "تم تحديد خادم بروكسي ولكن دون نص تسجيل دخول برمجي،  Acquire::ftp::ProxyLogin "
 "فارغ."
 
-#: methods/ftp.cc:271
+#: methods/ftp.cc:270
 #, c-format
 msgid "Login script command '%s' failed, server said: %s"
 msgstr "فشل أمر نص تسجيل الدخول البرمجي '%s'، ردّ الخادم: %s"
 
-#: methods/ftp.cc:297
+#: methods/ftp.cc:296
 #, c-format
 msgid "TYPE failed, server said: %s"
 msgstr "فشل TYPE، ردّ الخادم: %s"
 
-#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226
+#: methods/ftp.cc:334 methods/ftp.cc:445 methods/rsh.cc:183 methods/rsh.cc:226
 msgid "Connection timeout"
 msgstr "انتهى وقت الاتصال"
 
-#: methods/ftp.cc:341
+#: methods/ftp.cc:340
 msgid "Server closed the connection"
 msgstr "أغلق الخادم الاتصال"
 
-#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:543 methods/rsh.cc:190
+#: methods/ftp.cc:343 apt-pkg/contrib/fileutl.cc:543 methods/rsh.cc:190
 msgid "Read error"
 msgstr "خطأ في القراءة"
 
-#: methods/ftp.cc:351 methods/rsh.cc:197
+#: methods/ftp.cc:350 methods/rsh.cc:197
 msgid "A response overflowed the buffer."
 msgstr ""
 
-#: methods/ftp.cc:368 methods/ftp.cc:380
+#: methods/ftp.cc:367 methods/ftp.cc:379
 msgid "Protocol corruption"
 msgstr ""
 
-#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:582 methods/rsh.cc:232
+#: methods/ftp.cc:451 apt-pkg/contrib/fileutl.cc:582 methods/rsh.cc:232
 msgid "Write error"
 msgstr "خطأ في الكتابة"
 
-#: methods/ftp.cc:693 methods/ftp.cc:699 methods/ftp.cc:735
+#: methods/ftp.cc:692 methods/ftp.cc:698 methods/ftp.cc:734
 msgid "Could not create a socket"
 msgstr ""
 
-#: methods/ftp.cc:704
+#: methods/ftp.cc:703
 msgid "Could not connect data socket, connection timed out"
 msgstr ""
 
-#: methods/ftp.cc:710
+#: methods/ftp.cc:709
 msgid "Could not connect passive socket."
 msgstr ""
 
-#: methods/ftp.cc:728
+#: methods/ftp.cc:727
 msgid "getaddrinfo was unable to get a listening socket"
 msgstr ""
 
-#: methods/ftp.cc:742
+#: methods/ftp.cc:741
 msgid "Could not bind a socket"
 msgstr ""
 
-#: methods/ftp.cc:746
+#: methods/ftp.cc:745
 msgid "Could not listen on the socket"
 msgstr ""
 
-#: methods/ftp.cc:753
+#: methods/ftp.cc:752
 msgid "Could not determine the socket's name"
 msgstr ""
 
-#: methods/ftp.cc:785
+#: methods/ftp.cc:784
 msgid "Unable to send PORT command"
 msgstr "تعذر إرسال الأمر PORT"
 
-#: methods/ftp.cc:795
+#: methods/ftp.cc:794
 #, c-format
 msgid "Unknown address family %u (AF_*)"
 msgstr ""
 
-#: methods/ftp.cc:804
+#: methods/ftp.cc:803
 #, c-format
 msgid "EPRT failed, server said: %s"
 msgstr "فشل EPRT، ردّ الخادم: %s"
 
-#: methods/ftp.cc:824
+#: methods/ftp.cc:823
 msgid "Data socket connect timed out"
 msgstr ""
 
-#: methods/ftp.cc:831
+#: methods/ftp.cc:830
 msgid "Unable to accept connection"
 msgstr "تعذر قبول الاتصال"
 
-#: methods/ftp.cc:870 methods/http.cc:999 methods/rsh.cc:303
+#: methods/ftp.cc:869 methods/http.cc:997 methods/rsh.cc:303
 msgid "Problem hashing file"
 msgstr ""
 
-#: methods/ftp.cc:883
+#: methods/ftp.cc:882
 #, c-format
 msgid "Unable to fetch file, server said '%s'"
 msgstr "تعذر إحضار الملف، ردّ الخادم '%s'"
 
-#: methods/ftp.cc:898 methods/rsh.cc:322
+#: methods/ftp.cc:897 methods/rsh.cc:322
 msgid "Data socket timed out"
 msgstr ""
 
-#: methods/ftp.cc:928
+#: methods/ftp.cc:927
 #, c-format
 msgid "Data transfer failed, server said '%s'"
 msgstr "فشل نقل البيانات، ردّ الخادم '%s'"
 
 #. Get the files information
-#: methods/ftp.cc:1005
+#: methods/ftp.cc:1002
 msgid "Query"
 msgstr "استعلام"
 
-#: methods/ftp.cc:1117
+#: methods/ftp.cc:1114
 msgid "Unable to invoke "
 msgstr ""
 
@@ -1851,81 +1856,81 @@ msgstr ""
 msgid "Read error from %s process"
 msgstr ""
 
-#: methods/http.cc:385
+#: methods/http.cc:384
 msgid "Waiting for headers"
 msgstr "بانتظار الترويسات"
 
-#: methods/http.cc:531
+#: methods/http.cc:530
 #, c-format
 msgid "Got a single header line over %u chars"
 msgstr ""
 
-#: methods/http.cc:539
+#: methods/http.cc:538
 msgid "Bad header line"
 msgstr "سطر ترويسة سيء"
 
-#: methods/http.cc:558 methods/http.cc:565
+#: methods/http.cc:557 methods/http.cc:564
 msgid "The HTTP server sent an invalid reply header"
 msgstr "أرسل خادم http ترويسة ردّ غير صالحة"
 
-#: methods/http.cc:594
+#: methods/http.cc:593
 msgid "The HTTP server sent an invalid Content-Length header"
 msgstr "أرسل خادم http ترويسة طول محتويات (ِContent-Length) غير صالحة"
 
-#: methods/http.cc:609
+#: methods/http.cc:608
 msgid "The HTTP server sent an invalid Content-Range header"
 msgstr "أرسل خادم http ترويسة مدى محتويات (ِContent-Range) غير صالحة"
 
-#: methods/http.cc:611
+#: methods/http.cc:610
 msgid "This HTTP server has broken range support"
 msgstr "خادم http له دعم مدى معطوب"
 
-#: methods/http.cc:635
+#: methods/http.cc:634
 msgid "Unknown date format"
 msgstr "نسق تاريخ مجهول"
 
-#: methods/http.cc:790
+#: methods/http.cc:788
 msgid "Select failed"
 msgstr "فشل التحديد"
 
-#: methods/http.cc:795
+#: methods/http.cc:793
 msgid "Connection timed out"
 msgstr "انتهى وقت الاتصال"
 
-#: methods/http.cc:818
+#: methods/http.cc:816
 msgid "Error writing to output file"
 msgstr "خطأ في الكتابة إلى ملف المُخرجات"
 
-#: methods/http.cc:849
+#: methods/http.cc:847
 msgid "Error writing to file"
 msgstr "خطأ في الكتابة إلى الملف"
 
-#: methods/http.cc:877
+#: methods/http.cc:875
 msgid "Error writing to the file"
 msgstr "خطأ في الكتابة إلى الملف"
 
-#: methods/http.cc:891
+#: methods/http.cc:889
 msgid "Error reading from server. Remote end closed connection"
 msgstr "خطأ في القراءة من الخادم. أقفل الطرف الآخر الاتصال"
 
-#: methods/http.cc:893
+#: methods/http.cc:891
 msgid "Error reading from server"
 msgstr "خطأ في القراءة من الخادم"
 
-#: methods/http.cc:984 apt-pkg/contrib/mmap.cc:215
+#: methods/http.cc:982 apt-pkg/contrib/mmap.cc:233
 #, fuzzy
 msgid "Failed to truncate file"
 msgstr "فشلت كتابة الملف %s"
 
-#: methods/http.cc:1149
+#: methods/http.cc:1147
 msgid "Bad header data"
 msgstr "بيانات ترويسة سيئة"
 
-#: methods/http.cc:1166 methods/http.cc:1221
+#: methods/http.cc:1164 methods/http.cc:1219
 msgid "Connection failed"
 msgstr "فشل الاتصال"
 
-#: methods/http.cc:1313
+#: methods/http.cc:1311
 msgid "Internal error"
 msgstr "خطأ داخلي"
 
@@ -1933,18 +1938,25 @@ msgstr "خطأ داخلي"
 msgid "Can't mmap an empty file"
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:187
+#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:202
 #, c-format
 msgid "Couldn't make mmap of %lu bytes"
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:234
+#: apt-pkg/contrib/mmap.cc:252
 #, c-format
 msgid ""
 "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. "
 "Current value: %lu. (man 5 apt.conf)"
 msgstr ""
 
+#: apt-pkg/contrib/mmap.cc:347
+#, c-format
+msgid ""
+"The size of a MMap has already reached the defined limit of %lu bytes,abort "
+"the try to grow the MMap."
+msgstr ""
+
 #. d means days, h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc:346
 #, c-format
@@ -2331,14 +2343,14 @@ msgstr ""
 msgid "Malformed line %u in source list %s (vendor id)"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:324 apt-pkg/packagemanager.cc:586
+#: apt-pkg/packagemanager.cc:321 apt-pkg/packagemanager.cc:576
 #, c-format
 msgid ""
 "Could not perform immediate configuration on '%s'.Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:440
+#: apt-pkg/packagemanager.cc:437
 #, c-format
 msgid ""
 "This installation run will require temporarily removing the essential "
@@ -2346,7 +2358,7 @@ msgid ""
 "you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:478
+#: apt-pkg/packagemanager.cc:475
 #, c-format
 msgid ""
 "Could not perform immediate configuration on already unpacked '%s'.Please "
@@ -2417,12 +2429,12 @@ msgstr ""
 msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
 msgstr "الرجاء إدخال القرص المُسمّى  '%s' في السوّاقة '%s' وضغط مفتاح الإدخال."
 
-#: apt-pkg/init.cc:133
+#: apt-pkg/init.cc:132
 #, c-format
 msgid "Packaging system '%s' is not supported"
 msgstr "نظام الحزم '%s' غير مدعوم"
 
-#: apt-pkg/init.cc:149
+#: apt-pkg/init.cc:148
 msgid "Unable to determine a suitable packaging system type"
 msgstr ""
 
@@ -2555,40 +2567,40 @@ msgstr ""
 msgid "rename failed, %s (%s -> %s)."
 msgstr "فشل إعادة التسمية ، %s (%s -> %s)."
 
-#: apt-pkg/acquire-item.cc:395
+#: apt-pkg/acquire-item.cc:396
 msgid "MD5Sum mismatch"
 msgstr "MD5Sum غير متطابقة"
 
-#: apt-pkg/acquire-item.cc:649 apt-pkg/acquire-item.cc:1411
+#: apt-pkg/acquire-item.cc:657 apt-pkg/acquire-item.cc:1419
 #, fuzzy
 msgid "Hash Sum mismatch"
 msgstr "MD5Sum غير متطابقة"
 
-#: apt-pkg/acquire-item.cc:1106
+#: apt-pkg/acquire-item.cc:1114
 msgid "There is no public key available for the following key IDs:\n"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1216
+#: apt-pkg/acquire-item.cc:1224
 #, c-format
 msgid ""
 "I wasn't able to locate a file for the %s package. This might mean you need "
 "to manually fix this package. (due to missing arch)"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1275
+#: apt-pkg/acquire-item.cc:1283
 #, c-format
 msgid ""
 "I wasn't able to locate file for the %s package. This might mean you need to "
 "manually fix this package."
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1316
+#: apt-pkg/acquire-item.cc:1324
 #, c-format
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1403
+#: apt-pkg/acquire-item.cc:1411
 msgid "Size mismatch"
 msgstr "الحجم غير متطابق"
 
@@ -2718,98 +2730,76 @@ msgstr ""
 msgid "Wrote %i records with %i missing files and %i mismatched files\n"
 msgstr ""
 
-#: apt-pkg/indexcopy.cc:530
-#, fuzzy, c-format
-#| msgid "Opening configuration file %s"
-msgid "Skipping nonexistent file %s"
-msgstr "فتح ملف التهيئة %s"
-
-#: apt-pkg/indexcopy.cc:536
-#, c-format
-msgid "Can't find authentication record for: %s"
-msgstr ""
-
-#: apt-pkg/indexcopy.cc:542
-#, fuzzy, c-format
-msgid "Hash mismatch for: %s"
-msgstr "MD5Sum غير متطابقة"
-
 #: apt-pkg/deb/dpkgpm.cc:49
 #, fuzzy, c-format
 msgid "Installing %s"
 msgstr "تم تثبيت %s"
 
-#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:661
+#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:660
 #, c-format
 msgid "Configuring %s"
 msgstr "تهيئة %s"
 
-#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:668
+#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:667
 #, c-format
 msgid "Removing %s"
 msgstr "إزالة %s"
 
 #: apt-pkg/deb/dpkgpm.cc:52
-#, fuzzy, c-format
-#| msgid "Completely removed %s"
-msgid "Completely removing %s"
-msgstr "تمت إزالة %s بالكامل"
-
-#: apt-pkg/deb/dpkgpm.cc:53
 #, c-format
 msgid "Running post-installation trigger %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:558
+#: apt-pkg/deb/dpkgpm.cc:557
 #, c-format
 msgid "Directory '%s' missing"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:654
+#: apt-pkg/deb/dpkgpm.cc:653
 #, c-format
 msgid "Preparing %s"
 msgstr "تحضير %s"
 
-#: apt-pkg/deb/dpkgpm.cc:655
+#: apt-pkg/deb/dpkgpm.cc:654
 #, c-format
 msgid "Unpacking %s"
 msgstr "فتح %s"
 
-#: apt-pkg/deb/dpkgpm.cc:660
+#: apt-pkg/deb/dpkgpm.cc:659
 #, c-format
 msgid "Preparing to configure %s"
 msgstr "التحضير لتهيئة %s"
 
-#: apt-pkg/deb/dpkgpm.cc:662
+#: apt-pkg/deb/dpkgpm.cc:661
 #, c-format
 msgid "Installed %s"
 msgstr "تم تثبيت %s"
 
-#: apt-pkg/deb/dpkgpm.cc:667
+#: apt-pkg/deb/dpkgpm.cc:666
 #, c-format
 msgid "Preparing for removal of %s"
 msgstr "التحضير لإزالة %s"
 
-#: apt-pkg/deb/dpkgpm.cc:669
+#: apt-pkg/deb/dpkgpm.cc:668
 #, c-format
 msgid "Removed %s"
 msgstr "تم إزالة %s"
 
-#: apt-pkg/deb/dpkgpm.cc:674
+#: apt-pkg/deb/dpkgpm.cc:673
 #, c-format
 msgid "Preparing to completely remove %s"
 msgstr "التحضير لإزالة %s بالكامل"
 
-#: apt-pkg/deb/dpkgpm.cc:675
+#: apt-pkg/deb/dpkgpm.cc:674
 #, c-format
 msgid "Completely removed %s"
 msgstr "تمت إزالة %s بالكامل"
 
-#: apt-pkg/deb/dpkgpm.cc:879
+#: apt-pkg/deb/dpkgpm.cc:878
 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:909
+#: apt-pkg/deb/dpkgpm.cc:907
 msgid "Running dpkg"
 msgstr ""
 
@@ -2835,17 +2825,24 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
-#: methods/rred.cc:219
-msgid "Could not patch file"
+#: methods/rred.cc:465
+#, c-format
+msgid ""
+"Could not patch %s with mmap and with file operation usage - the patch seems "
+"to be corrupt."
+msgstr ""
+
+#: methods/rred.cc:470
+#, c-format
+msgid ""
+"Could not patch %s with mmap (but no mmap specific fail) - the patch seems "
+"to be corrupt."
 msgstr ""
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgstr ""
 
-#~ msgid "       %4i %s\n"
-#~ msgstr "       %4i %s\n"
-
 #~ msgid "%4i %s\n"
 #~ msgstr "%4i %s\n"
 
index 2c9c3dcfb804f1edabf95f34cd1d4f9dd2a2b017..752e98f8f2aacbe8ac4a738b2b8f03bcca28a42f 100644 (file)
--- a/po/ku.po
+++ b/po/ku.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-ku\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-01 19:13+0100\n"
+"POT-Creation-Date: 2009-11-27 00:15+0100\n"
 "PO-Revision-Date: 2008-05-08 12:48+0200\n"
 "Last-Translator: Erdal Ronahi <erdal dot ronahi at gmail dot com>\n"
 "Language-Team: ku <ubuntu-l10n-kur@lists.ubuntu.com>\n"
@@ -149,9 +149,14 @@ msgstr "  Destika pakêtê:"
 msgid "  Version table:"
 msgstr "  Tabloya guhertoyan:"
 
+#: cmdline/apt-cache.cc:1623
+#, c-format
+msgid "       %4i %s\n"
+msgstr "       %4i %s\n"
+
 #: cmdline/apt-cache.cc:1718 cmdline/apt-cdrom.cc:134 cmdline/apt-config.cc:70
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
-#: cmdline/apt-get.cc:2665 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2653 cmdline/apt-sortpkgs.cc:144
 #, fuzzy, c-format
 msgid "%s %s for %s compiled on %s %s\n"
 msgstr "%s %s ji bo %s %s komkirî di %s %s de\n"
@@ -562,7 +567,7 @@ msgstr ""
 msgid "Y"
 msgstr "E"
 
-#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1730
+#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1718
 #, c-format
 msgid "Regex compilation error - %s"
 msgstr ""
@@ -721,11 +726,11 @@ msgstr ""
 msgid "Internal error, Ordering didn't finish"
 msgstr ""
 
-#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2072 cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2060 cmdline/apt-get.cc:2093
 msgid "Unable to lock the download directory"
 msgstr "Pelrêça daxistinê nayê quflekirin"
 
-#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2153 cmdline/apt-get.cc:2406
+#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2141 cmdline/apt-get.cc:2394
 #: apt-pkg/cachefile.cc:65
 msgid "The list of sources could not be read."
 msgstr ""
@@ -754,8 +759,8 @@ msgstr ""
 msgid "After this operation, %sB disk space will be freed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2249
-#: cmdline/apt-get.cc:2252
+#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2237
+#: cmdline/apt-get.cc:2240
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgstr "Nikarî cihê vala li %s tesbît bike"
@@ -789,7 +794,7 @@ msgstr "Betal."
 msgid "Do you want to continue [Y/n]? "
 msgstr "Dixwazî bidomînî [E/n]?"
 
-#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2303 apt-pkg/algorithms.cc:1389
+#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2291 apt-pkg/algorithms.cc:1389
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgstr "Anîna %s %s biserneket\n"
@@ -798,7 +803,7 @@ msgstr "Anîna %s %s biserneket\n"
 msgid "Some files failed to download"
 msgstr "Daxistina çend pelan biserneket"
 
-#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2312
+#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2300
 msgid "Download complete and in download only mode"
 msgstr ""
 
@@ -891,50 +896,50 @@ msgid "Selected version %s (%s) for %s\n"
 msgstr ""
 
 #. if (VerTag.empty() == false && Last == 0)
-#: cmdline/apt-get.cc:1311 cmdline/apt-get.cc:1379
+#: cmdline/apt-get.cc:1305 cmdline/apt-get.cc:1367
 #, c-format
 msgid "Ignore unavailable version '%s' of package '%s'"
 msgstr ""
 
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1307
 #, c-format
 msgid "Ignore unavailable target release '%s' of package '%s'"
 msgstr ""
 
-#: cmdline/apt-get.cc:1342
+#: cmdline/apt-get.cc:1332
 #, c-format
 msgid "Picking '%s' as source package instead of '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1395
+#: cmdline/apt-get.cc:1383
 msgid "The update command takes no arguments"
 msgstr ""
 
-#: cmdline/apt-get.cc:1408
+#: cmdline/apt-get.cc:1396
 msgid "Unable to lock the list directory"
 msgstr ""
 
-#: cmdline/apt-get.cc:1464
+#: cmdline/apt-get.cc:1452
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
 msgstr ""
 
-#: cmdline/apt-get.cc:1513
+#: cmdline/apt-get.cc:1501
 #, fuzzy
 msgid ""
 "The following packages were automatically installed and are no longer "
 "required:"
 msgstr "Ev pakêtên NÛ dê werine sazkirin:"
 
-#: cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:1503
 #, fuzzy, c-format
 msgid "%lu packages were automatically installed and are no longer required.\n"
 msgstr "Ev pakêtên NÛ dê werine sazkirin:"
 
-#: cmdline/apt-get.cc:1516
+#: cmdline/apt-get.cc:1504
 msgid "Use 'apt-get autoremove' to remove them."
 msgstr ""
 
-#: cmdline/apt-get.cc:1521
+#: cmdline/apt-get.cc:1509
 msgid ""
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "shouldn't happen. Please file a bug report against apt."
@@ -950,49 +955,49 @@ msgstr ""
 #. "that package should be filed.") << endl;
 #. }
 #.
-#: cmdline/apt-get.cc:1524 cmdline/apt-get.cc:1814
+#: cmdline/apt-get.cc:1512 cmdline/apt-get.cc:1802
 msgid "The following information may help to resolve the situation:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1528
+#: cmdline/apt-get.cc:1516
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:1547
+#: cmdline/apt-get.cc:1535
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:1602
+#: cmdline/apt-get.cc:1590
 #, c-format
 msgid "Couldn't find task %s"
 msgstr "Peywira %s nehate dîtin"
 
-#: cmdline/apt-get.cc:1717 cmdline/apt-get.cc:1753
+#: cmdline/apt-get.cc:1705 cmdline/apt-get.cc:1741
 #, c-format
 msgid "Couldn't find package %s"
 msgstr "Nikarî pakêta %s bibîne"
 
-#: cmdline/apt-get.cc:1740
+#: cmdline/apt-get.cc:1728
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1771
+#: cmdline/apt-get.cc:1759
 #, fuzzy, c-format
 msgid "%s set to manually installed.\n"
 msgstr "lê %s dê were sazkirin"
 
-#: cmdline/apt-get.cc:1784
+#: cmdline/apt-get.cc:1772
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1787
+#: cmdline/apt-get.cc:1775
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
 msgstr ""
 
-#: cmdline/apt-get.cc:1799
+#: cmdline/apt-get.cc:1787
 msgid ""
 "Some packages could not be installed. This may mean that you have\n"
 "requested an impossible situation or if you are using the unstable\n"
@@ -1000,152 +1005,152 @@ msgid ""
 "or been moved out of Incoming."
 msgstr ""
 
-#: cmdline/apt-get.cc:1817
+#: cmdline/apt-get.cc:1805
 msgid "Broken packages"
 msgstr "Paketên şikestî"
 
-#: cmdline/apt-get.cc:1846
+#: cmdline/apt-get.cc:1834
 msgid "The following extra packages will be installed:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1935
+#: cmdline/apt-get.cc:1923
 msgid "Suggested packages:"
 msgstr "Paketên tên pêşniyaz kirin:"
 
-#: cmdline/apt-get.cc:1936
+#: cmdline/apt-get.cc:1924
 msgid "Recommended packages:"
 msgstr "Paketên tên tawsiyê kirin:"
 
-#: cmdline/apt-get.cc:1965
+#: cmdline/apt-get.cc:1953
 msgid "Calculating upgrade... "
 msgstr "Bilindkirin tê hesibandin..."
 
-#: cmdline/apt-get.cc:1968 methods/ftp.cc:708 methods/connect.cc:112
+#: cmdline/apt-get.cc:1956 methods/ftp.cc:707 methods/connect.cc:112
 msgid "Failed"
 msgstr "Serneket"
 
-#: cmdline/apt-get.cc:1973
+#: cmdline/apt-get.cc:1961
 msgid "Done"
 msgstr "Temam"
 
-#: cmdline/apt-get.cc:2040 cmdline/apt-get.cc:2048
+#: cmdline/apt-get.cc:2028 cmdline/apt-get.cc:2036
 msgid "Internal error, problem resolver broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:2148
+#: cmdline/apt-get.cc:2136
 msgid "Must specify at least one package to fetch source for"
 msgstr ""
 
-#: cmdline/apt-get.cc:2178 cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2166 cmdline/apt-get.cc:2412
 #, c-format
 msgid "Unable to find a source package for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2227
+#: cmdline/apt-get.cc:2215
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2262
+#: cmdline/apt-get.cc:2250
 #, c-format
 msgid "You don't have enough free space in %s"
 msgstr "Cihê vala li %s têre nake"
 
-#: cmdline/apt-get.cc:2268
+#: cmdline/apt-get.cc:2256
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2271
+#: cmdline/apt-get.cc:2259
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2277
+#: cmdline/apt-get.cc:2265
 #, c-format
 msgid "Fetch source %s\n"
 msgstr "Çavkanîna %s bîne\n"
 
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2296
 msgid "Failed to fetch some archives."
 msgstr "Anîna çend arşîvan biserneket."
 
-#: cmdline/apt-get.cc:2336
+#: cmdline/apt-get.cc:2324
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2348
+#: cmdline/apt-get.cc:2336
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2349
+#: cmdline/apt-get.cc:2337
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2366
+#: cmdline/apt-get.cc:2354
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2385
+#: cmdline/apt-get.cc:2373
 msgid "Child process failed"
 msgstr ""
 
-#: cmdline/apt-get.cc:2401
+#: cmdline/apt-get.cc:2389
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 
-#: cmdline/apt-get.cc:2429
+#: cmdline/apt-get.cc:2417
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2449
+#: cmdline/apt-get.cc:2437
 #, c-format
 msgid "%s has no build depends.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2501
+#: cmdline/apt-get.cc:2489
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "found"
 msgstr ""
 
-#: cmdline/apt-get.cc:2554
+#: cmdline/apt-get.cc:2542
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
 "package %s can satisfy version requirements"
 msgstr ""
 
-#: cmdline/apt-get.cc:2590
+#: cmdline/apt-get.cc:2578
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 
-#: cmdline/apt-get.cc:2617
+#: cmdline/apt-get.cc:2605
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2633
+#: cmdline/apt-get.cc:2621
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr ""
 
-#: cmdline/apt-get.cc:2638
+#: cmdline/apt-get.cc:2626
 msgid "Failed to process build dependencies"
 msgstr ""
 
-#: cmdline/apt-get.cc:2670
+#: cmdline/apt-get.cc:2658
 msgid "Supported modules:"
 msgstr ""
 
-#: cmdline/apt-get.cc:2711
+#: cmdline/apt-get.cc:2699
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1189,7 +1194,7 @@ msgid ""
 "                       This APT has Super Cow Powers.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2879
+#: cmdline/apt-get.cc:2866
 msgid ""
 "NOTE: This is only a simulation!\n"
 "      apt-get needs root privileges for real execution.\n"
@@ -1425,7 +1430,7 @@ msgstr ""
 #: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:843
 #: apt-pkg/contrib/cdromutl.cc:157 apt-pkg/sourcelist.cc:166
 #: apt-pkg/sourcelist.cc:172 apt-pkg/sourcelist.cc:327 apt-pkg/acquire.cc:419
-#: apt-pkg/init.cc:90 apt-pkg/init.cc:98 apt-pkg/clean.cc:33
+#: apt-pkg/init.cc:89 apt-pkg/init.cc:97 apt-pkg/clean.cc:33
 #: apt-pkg/policy.cc:281 apt-pkg/policy.cc:287
 #, c-format
 msgid "Unable to read %s"
@@ -1587,12 +1592,12 @@ msgid "File not found"
 msgstr "Pel nehate dîtin"
 
 #: methods/copy.cc:43 methods/gzip.cc:141 methods/gzip.cc:150
-#: methods/rred.cc:234 methods/rred.cc:243
+#: methods/rred.cc:483 methods/rred.cc:492
 #, fuzzy
 msgid "Failed to stat"
 msgstr "%s venebû"
 
-#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:240
+#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:489
 msgid "Failed to set modification time"
 msgstr ""
 
@@ -1601,147 +1606,147 @@ msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
 #. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc:168
+#: methods/ftp.cc:167
 msgid "Logging in"
 msgstr "Têketin"
 
-#: methods/ftp.cc:174
+#: methods/ftp.cc:173
 msgid "Unable to determine the peer name"
 msgstr ""
 
-#: methods/ftp.cc:179
+#: methods/ftp.cc:178
 msgid "Unable to determine the local name"
 msgstr "Nikare navê herêmî tesbît bike"
 
-#: methods/ftp.cc:210 methods/ftp.cc:238
+#: methods/ftp.cc:209 methods/ftp.cc:237
 #, c-format
 msgid "The server refused the connection and said: %s"
 msgstr ""
 
-#: methods/ftp.cc:216
+#: methods/ftp.cc:215
 #, c-format
 msgid "USER failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:223
+#: methods/ftp.cc:222
 #, c-format
 msgid "PASS failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:243
+#: methods/ftp.cc:242
 msgid ""
 "A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
 "is empty."
 msgstr ""
 
-#: methods/ftp.cc:271
+#: methods/ftp.cc:270
 #, c-format
 msgid "Login script command '%s' failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:297
+#: methods/ftp.cc:296
 #, c-format
 msgid "TYPE failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226
+#: methods/ftp.cc:334 methods/ftp.cc:445 methods/rsh.cc:183 methods/rsh.cc:226
 msgid "Connection timeout"
 msgstr ""
 
-#: methods/ftp.cc:341
+#: methods/ftp.cc:340
 msgid "Server closed the connection"
 msgstr ""
 
-#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:543 methods/rsh.cc:190
+#: methods/ftp.cc:343 apt-pkg/contrib/fileutl.cc:543 methods/rsh.cc:190
 msgid "Read error"
 msgstr "Çewiya xwendinê"
 
-#: methods/ftp.cc:351 methods/rsh.cc:197
+#: methods/ftp.cc:350 methods/rsh.cc:197
 msgid "A response overflowed the buffer."
 msgstr ""
 
-#: methods/ftp.cc:368 methods/ftp.cc:380
+#: methods/ftp.cc:367 methods/ftp.cc:379
 msgid "Protocol corruption"
 msgstr ""
 
-#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:582 methods/rsh.cc:232
+#: methods/ftp.cc:451 apt-pkg/contrib/fileutl.cc:582 methods/rsh.cc:232
 msgid "Write error"
 msgstr "Çewtiya nivîsînê"
 
-#: methods/ftp.cc:693 methods/ftp.cc:699 methods/ftp.cc:735
+#: methods/ftp.cc:692 methods/ftp.cc:698 methods/ftp.cc:734
 msgid "Could not create a socket"
 msgstr ""
 
-#: methods/ftp.cc:704
+#: methods/ftp.cc:703
 msgid "Could not connect data socket, connection timed out"
 msgstr ""
 
-#: methods/ftp.cc:710
+#: methods/ftp.cc:709
 msgid "Could not connect passive socket."
 msgstr ""
 
-#: methods/ftp.cc:728
+#: methods/ftp.cc:727
 msgid "getaddrinfo was unable to get a listening socket"
 msgstr ""
 
-#: methods/ftp.cc:742
+#: methods/ftp.cc:741
 msgid "Could not bind a socket"
 msgstr ""
 
-#: methods/ftp.cc:746
+#: methods/ftp.cc:745
 msgid "Could not listen on the socket"
 msgstr ""
 
-#: methods/ftp.cc:753
+#: methods/ftp.cc:752
 msgid "Could not determine the socket's name"
 msgstr ""
 
-#: methods/ftp.cc:785
+#: methods/ftp.cc:784
 msgid "Unable to send PORT command"
 msgstr ""
 
-#: methods/ftp.cc:795
+#: methods/ftp.cc:794
 #, c-format
 msgid "Unknown address family %u (AF_*)"
 msgstr ""
 
-#: methods/ftp.cc:804
+#: methods/ftp.cc:803
 #, c-format
 msgid "EPRT failed, server said: %s"
 msgstr ""
 
-#: methods/ftp.cc:824
+#: methods/ftp.cc:823
 msgid "Data socket connect timed out"
 msgstr ""
 
-#: methods/ftp.cc:831
+#: methods/ftp.cc:830
 msgid "Unable to accept connection"
 msgstr ""
 
-#: methods/ftp.cc:870 methods/http.cc:999 methods/rsh.cc:303
+#: methods/ftp.cc:869 methods/http.cc:997 methods/rsh.cc:303
 msgid "Problem hashing file"
 msgstr ""
 
-#: methods/ftp.cc:883
+#: methods/ftp.cc:882
 #, fuzzy, c-format
 msgid "Unable to fetch file, server said '%s'"
 msgstr "Danegira %s nehate vekirin: %s"
 
-#: methods/ftp.cc:898 methods/rsh.cc:322
+#: methods/ftp.cc:897 methods/rsh.cc:322
 msgid "Data socket timed out"
 msgstr ""
 
-#: methods/ftp.cc:928
+#: methods/ftp.cc:927
 #, c-format
 msgid "Data transfer failed, server said '%s'"
 msgstr ""
 
 #. Get the files information
-#: methods/ftp.cc:1005
+#: methods/ftp.cc:1002
 msgid "Query"
 msgstr "Lêpirsîn"
 
-#: methods/ftp.cc:1117
+#: methods/ftp.cc:1114
 #, fuzzy
 msgid "Unable to invoke "
 msgstr "%s venebû"
@@ -1851,82 +1856,82 @@ msgstr ""
 msgid "Read error from %s process"
 msgstr ""
 
-#: methods/http.cc:385
+#: methods/http.cc:384
 msgid "Waiting for headers"
 msgstr ""
 
-#: methods/http.cc:531
+#: methods/http.cc:530
 #, c-format
 msgid "Got a single header line over %u chars"
 msgstr ""
 
-#: methods/http.cc:539
+#: methods/http.cc:538
 msgid "Bad header line"
 msgstr ""
 
-#: methods/http.cc:558 methods/http.cc:565
+#: methods/http.cc:557 methods/http.cc:564
 msgid "The HTTP server sent an invalid reply header"
 msgstr ""
 
-#: methods/http.cc:594
+#: methods/http.cc:593
 msgid "The HTTP server sent an invalid Content-Length header"
 msgstr ""
 
-#: methods/http.cc:609
+#: methods/http.cc:608
 msgid "The HTTP server sent an invalid Content-Range header"
 msgstr ""
 
-#: methods/http.cc:611
+#: methods/http.cc:610
 msgid "This HTTP server has broken range support"
 msgstr ""
 
-#: methods/http.cc:635
+#: methods/http.cc:634
 msgid "Unknown date format"
 msgstr ""
 
-#: methods/http.cc:790
+#: methods/http.cc:788
 msgid "Select failed"
 msgstr "Hilbijartin neserketî"
 
-#: methods/http.cc:795
+#: methods/http.cc:793
 msgid "Connection timed out"
 msgstr ""
 
-#: methods/http.cc:818
+#: methods/http.cc:816
 #, fuzzy
 msgid "Error writing to output file"
 msgstr "Dema li dosyeya naverokê joreagahî dihate nivîsîn çewtî"
 
-#: methods/http.cc:849
+#: methods/http.cc:847
 msgid "Error writing to file"
 msgstr "Dema li pelî dihate nivîsîn çewtî"
 
-#: methods/http.cc:877
+#: methods/http.cc:875
 msgid "Error writing to the file"
 msgstr "Dema li pelî dihate nivîsîn çewtî"
 
-#: methods/http.cc:891
+#: methods/http.cc:889
 msgid "Error reading from server. Remote end closed connection"
 msgstr ""
 
-#: methods/http.cc:893
+#: methods/http.cc:891
 msgid "Error reading from server"
 msgstr ""
 
-#: methods/http.cc:984 apt-pkg/contrib/mmap.cc:215
+#: methods/http.cc:982 apt-pkg/contrib/mmap.cc:233
 #, fuzzy
 msgid "Failed to truncate file"
 msgstr "Nivîsîna pelê %s biserneket"
 
-#: methods/http.cc:1149
+#: methods/http.cc:1147
 msgid "Bad header data"
 msgstr ""
 
-#: methods/http.cc:1166 methods/http.cc:1221
+#: methods/http.cc:1164 methods/http.cc:1219
 msgid "Connection failed"
 msgstr "Girêdan pêk nehatiye"
 
-#: methods/http.cc:1313
+#: methods/http.cc:1311
 msgid "Internal error"
 msgstr "Çewtiya hundirîn"
 
@@ -1934,18 +1939,25 @@ msgstr "Çewtiya hundirîn"
 msgid "Can't mmap an empty file"
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:187
+#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:202
 #, c-format
 msgid "Couldn't make mmap of %lu bytes"
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:234
+#: apt-pkg/contrib/mmap.cc:252
 #, c-format
 msgid ""
 "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. "
 "Current value: %lu. (man 5 apt.conf)"
 msgstr ""
 
+#: apt-pkg/contrib/mmap.cc:347
+#, c-format
+msgid ""
+"The size of a MMap has already reached the defined limit of %lu bytes,abort "
+"the try to grow the MMap."
+msgstr ""
+
 #. d means days, h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc:346
 #, c-format
@@ -2331,14 +2343,14 @@ msgstr ""
 msgid "Malformed line %u in source list %s (vendor id)"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:324 apt-pkg/packagemanager.cc:586
+#: apt-pkg/packagemanager.cc:321 apt-pkg/packagemanager.cc:576
 #, c-format
 msgid ""
 "Could not perform immediate configuration on '%s'.Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:440
+#: apt-pkg/packagemanager.cc:437
 #, c-format
 msgid ""
 "This installation run will require temporarily removing the essential "
@@ -2346,7 +2358,7 @@ msgid ""
 "you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:478
+#: apt-pkg/packagemanager.cc:475
 #, c-format
 msgid ""
 "Could not perform immediate configuration on already unpacked '%s'.Please "
@@ -2417,12 +2429,12 @@ msgstr ""
 msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
 msgstr "Dîsketê siwar bike û piştre bişkoja derbaskirinê bitikîne"
 
-#: apt-pkg/init.cc:133
+#: apt-pkg/init.cc:132
 #, c-format
 msgid "Packaging system '%s' is not supported"
 msgstr ""
 
-#: apt-pkg/init.cc:149
+#: apt-pkg/init.cc:148
 msgid "Unable to determine a suitable packaging system type"
 msgstr ""
 
@@ -2555,39 +2567,39 @@ msgstr ""
 msgid "rename failed, %s (%s -> %s)."
 msgstr "nav guherandin biserneket, %s (%s -> %s)"
 
-#: apt-pkg/acquire-item.cc:395
+#: apt-pkg/acquire-item.cc:396
 msgid "MD5Sum mismatch"
 msgstr "MD5Sum li hev nayên"
 
-#: apt-pkg/acquire-item.cc:649 apt-pkg/acquire-item.cc:1411
+#: apt-pkg/acquire-item.cc:657 apt-pkg/acquire-item.cc:1419
 msgid "Hash Sum mismatch"
 msgstr "Hash Sum li hev nayên"
 
-#: apt-pkg/acquire-item.cc:1106
+#: apt-pkg/acquire-item.cc:1114
 msgid "There is no public key available for the following key IDs:\n"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1216
+#: apt-pkg/acquire-item.cc:1224
 #, c-format
 msgid ""
 "I wasn't able to locate a file for the %s package. This might mean you need "
 "to manually fix this package. (due to missing arch)"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1275
+#: apt-pkg/acquire-item.cc:1283
 #, c-format
 msgid ""
 "I wasn't able to locate file for the %s package. This might mean you need to "
 "manually fix this package."
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1316
+#: apt-pkg/acquire-item.cc:1324
 #, c-format
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:1403
+#: apt-pkg/acquire-item.cc:1411
 msgid "Size mismatch"
 msgstr "Mezinahî li hev nayên"
 
@@ -2716,98 +2728,76 @@ msgstr ""
 msgid "Wrote %i records with %i missing files and %i mismatched files\n"
 msgstr ""
 
-#: apt-pkg/indexcopy.cc:530
-#, c-format
-msgid "Skipping nonexistent file %s"
-msgstr ""
-
-#: apt-pkg/indexcopy.cc:536
-#, c-format
-msgid "Can't find authentication record for: %s"
-msgstr ""
-
-#: apt-pkg/indexcopy.cc:542
-#, fuzzy, c-format
-#| msgid "Hash Sum mismatch"
-msgid "Hash mismatch for: %s"
-msgstr "Hash Sum li hev nayên"
-
 #: apt-pkg/deb/dpkgpm.cc:49
 #, fuzzy, c-format
 msgid "Installing %s"
 msgstr "%s hatine sazkirin"
 
-#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:661
+#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:660
 #, c-format
 msgid "Configuring %s"
 msgstr "%s tê mîhengkirin"
 
-#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:668
+#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:667
 #, c-format
 msgid "Removing %s"
 msgstr "%s tê rakirin"
 
 #: apt-pkg/deb/dpkgpm.cc:52
-#, fuzzy, c-format
-#| msgid "Completely removed %s"
-msgid "Completely removing %s"
-msgstr "%s bi tevahî hatine rakirin"
-
-#: apt-pkg/deb/dpkgpm.cc:53
 #, c-format
 msgid "Running post-installation trigger %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:558
+#: apt-pkg/deb/dpkgpm.cc:557
 #, c-format
 msgid "Directory '%s' missing"
 msgstr "Peldanka '%s' kêm e"
 
-#: apt-pkg/deb/dpkgpm.cc:654
+#: apt-pkg/deb/dpkgpm.cc:653
 #, c-format
 msgid "Preparing %s"
 msgstr "%s tê amadekirin"
 
-#: apt-pkg/deb/dpkgpm.cc:655
+#: apt-pkg/deb/dpkgpm.cc:654
 #, c-format
 msgid "Unpacking %s"
 msgstr "%s tê derxistin"
 
-#: apt-pkg/deb/dpkgpm.cc:660
+#: apt-pkg/deb/dpkgpm.cc:659
 #, c-format
 msgid "Preparing to configure %s"
 msgstr "Mîhengkirina %s tê amadekirin"
 
-#: apt-pkg/deb/dpkgpm.cc:662
+#: apt-pkg/deb/dpkgpm.cc:661
 #, c-format
 msgid "Installed %s"
 msgstr "%s hatine sazkirin"
 
-#: apt-pkg/deb/dpkgpm.cc:667
+#: apt-pkg/deb/dpkgpm.cc:666
 #, c-format
 msgid "Preparing for removal of %s"
 msgstr "Rakirina %s tê amadekirin"
 
-#: apt-pkg/deb/dpkgpm.cc:669
+#: apt-pkg/deb/dpkgpm.cc:668
 #, c-format
 msgid "Removed %s"
 msgstr "%s hatine rakirin"
 
-#: apt-pkg/deb/dpkgpm.cc:674
+#: apt-pkg/deb/dpkgpm.cc:673
 #, c-format
 msgid "Preparing to completely remove %s"
 msgstr "Bi tevahî rakirina %s tê amadekirin"
 
-#: apt-pkg/deb/dpkgpm.cc:675
+#: apt-pkg/deb/dpkgpm.cc:674
 #, c-format
 msgid "Completely removed %s"
 msgstr "%s bi tevahî hatine rakirin"
 
-#: apt-pkg/deb/dpkgpm.cc:879
+#: apt-pkg/deb/dpkgpm.cc:878
 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:909
+#: apt-pkg/deb/dpkgpm.cc:907
 msgid "Running dpkg"
 msgstr ""
 
@@ -2833,17 +2823,27 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
-#: methods/rred.cc:219
-#, fuzzy
-msgid "Could not patch file"
-msgstr "Danegira %s nehate vekirin: %s"
+#: methods/rred.cc:465
+#, c-format
+msgid ""
+"Could not patch %s with mmap and with file operation usage - the patch seems "
+"to be corrupt."
+msgstr ""
+
+#: methods/rred.cc:470
+#, c-format
+msgid ""
+"Could not patch %s with mmap (but no mmap specific fail) - the patch seems "
+"to be corrupt."
+msgstr ""
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgstr "Girêdan zû hatiye girtin"
 
-#~ msgid "       %4i %s\n"
-#~ msgstr "       %4i %s\n"
+#, fuzzy
+#~ msgid "Could not patch file"
+#~ msgstr "Danegira %s nehate vekirin: %s"
 
 #~ msgid "%4i %s\n"
 #~ msgstr "%4i %s\n"
index 976b44b4479fdbbec47dcc3327f40e6e53a23694..e8a750ce2e8d278aa7c971b296de095793733814 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-all\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-01 19:13+0100\n"
+"POT-Creation-Date: 2009-11-27 00:15+0100\n"
 "PO-Revision-Date: 2006-07-29 15:57+0300\n"
 "Last-Translator: Artem Bondarenko <artem.brz@gmail.com>\n"
 "Language-Team: Українська <uk@li.org>\n"
@@ -146,9 +146,14 @@ msgstr "  Фіксатор(pin) пакунка: "
 msgid "  Version table:"
 msgstr "  Таблиця версій:"
 
+#: cmdline/apt-cache.cc:1623
+#, c-format
+msgid "       %4i %s\n"
+msgstr "       %4i %s\n"
+
 #: cmdline/apt-cache.cc:1718 cmdline/apt-cdrom.cc:134 cmdline/apt-config.cc:70
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
-#: cmdline/apt-get.cc:2665 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2653 cmdline/apt-sortpkgs.cc:144
 #, fuzzy, c-format
 msgid "%s %s for %s compiled on %s %s\n"
 msgstr "%s %s для %s %s скомпільовано %s %s\n"
@@ -655,7 +660,7 @@ msgstr "Не вдалося перейменувати %s в %s"
 msgid "Y"
 msgstr "Т"
 
-#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1730
+#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1718
 #, c-format
 msgid "Regex compilation error - %s"
 msgstr "Помилка компіляції регулярного виразу - %s"
@@ -820,11 +825,11 @@ msgstr "Пакунки необхідно видалити, але видале
 msgid "Internal error, Ordering didn't finish"
 msgstr "Внутрішня помилка, Ordering не завершилася"
 
-#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2072 cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2060 cmdline/apt-get.cc:2093
 msgid "Unable to lock the download directory"
 msgstr "Неможливо заблокувати теку для завантаження"
 
-#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2153 cmdline/apt-get.cc:2406
+#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2141 cmdline/apt-get.cc:2394
 #: apt-pkg/cachefile.cc:65
 msgid "The list of sources could not be read."
 msgstr "Неможливо прочитати перелік джерел."
@@ -854,8 +859,8 @@ msgid "After this operation, %sB disk space will be freed.\n"
 msgstr ""
 "Після розпакування об'єм зайнятого дискового простору зменшиться на %sB.\n"
 
-#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2249
-#: cmdline/apt-get.cc:2252
+#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2237
+#: cmdline/apt-get.cc:2240
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgstr "Не вдалося визначити кількість вільного місця в %s"
@@ -894,7 +899,7 @@ msgstr "Перервано."
 msgid "Do you want to continue [Y/n]? "
 msgstr "Бажаєте продовжити [Т/н]? "
 
-#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2303 apt-pkg/algorithms.cc:1389
+#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2291 apt-pkg/algorithms.cc:1389
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgstr "Не вдалося завантажити %s  %s\n"
@@ -903,7 +908,7 @@ msgstr "Не вдалося завантажити %s  %s\n"
 msgid "Some files failed to download"
 msgstr "Деякі файли не вдалося завантажити"
 
-#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2312
+#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2300
 msgid "Download complete and in download only mode"
 msgstr "Вказано режим \"тільки завантаження\", і завантаження завершено"
 
@@ -1004,50 +1009,50 @@ msgid "Selected version %s (%s) for %s\n"
 msgstr "Обрана версія %s (%s) для %s\n"
 
 #. if (VerTag.empty() == false && Last == 0)
-#: cmdline/apt-get.cc:1311 cmdline/apt-get.cc:1379
+#: cmdline/apt-get.cc:1305 cmdline/apt-get.cc:1367
 #, c-format
 msgid "Ignore unavailable version '%s' of package '%s'"
 msgstr ""
 
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1307
 #, c-format
 msgid "Ignore unavailable target release '%s' of package '%s'"
 msgstr ""
 
-#: cmdline/apt-get.cc:1342
+#: cmdline/apt-get.cc:1332
 #, fuzzy, c-format
 msgid "Picking '%s' as source package instead of '%s'\n"
 msgstr "Не вдалося прочитати атрибути переліку вихідних текстів%s"
 
-#: cmdline/apt-get.cc:1395
+#: cmdline/apt-get.cc:1383
 msgid "The update command takes no arguments"
 msgstr "Команді update не потрібні аргументи"
 
-#: cmdline/apt-get.cc:1408
+#: cmdline/apt-get.cc:1396
 msgid "Unable to lock the list directory"
 msgstr "Неможливо заблокувати теку з переліками пакунків"
 
-#: cmdline/apt-get.cc:1464
+#: cmdline/apt-get.cc:1452
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
 msgstr ""
 
-#: cmdline/apt-get.cc:1513
+#: cmdline/apt-get.cc:1501
 #, fuzzy
 msgid ""
 "The following packages were automatically installed and are no longer "
 "required:"
 msgstr "НОВІ пакунки були встановлені автоматично і більше не потрібні:"
 
-#: cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:1503
 #, fuzzy, c-format
 msgid "%lu packages were automatically installed and are no longer required.\n"
 msgstr "НОВІ пакунки були встановлені автоматично і більше не потрібні:"
 
-#: cmdline/apt-get.cc:1516
+#: cmdline/apt-get.cc:1504
 msgid "Use 'apt-get autoremove' to remove them."
 msgstr "Використовуйте 'apt-get autoremove' щоб видалити їх."
 
-#: cmdline/apt-get.cc:1521
+#: cmdline/apt-get.cc:1509
 msgid ""
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "shouldn't happen. Please file a bug report against apt."
@@ -1065,46 +1070,46 @@ msgstr ""
 #. "that package should be filed.") << endl;
 #. }
 #.
-#: cmdline/apt-get.cc:1524 cmdline/apt-get.cc:1814
+#: cmdline/apt-get.cc:1512 cmdline/apt-get.cc:1802
 msgid "The following information may help to resolve the situation:"
 msgstr "Наступна інформація можливо допоможе Вам:"
 
-#: cmdline/apt-get.cc:1528
+#: cmdline/apt-get.cc:1516
 #, fuzzy
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr "Внутрішня помилка, вирішувач проблем все поламав"
 
-#: cmdline/apt-get.cc:1547
+#: cmdline/apt-get.cc:1535
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr "Внутрішня помилка, AllUpgrade все поламав"
 
-#: cmdline/apt-get.cc:1602
+#: cmdline/apt-get.cc:1590
 #, fuzzy, c-format
 msgid "Couldn't find task %s"
 msgstr "Не можу знайти пакунок %s"
 
-#: cmdline/apt-get.cc:1717 cmdline/apt-get.cc:1753
+#: cmdline/apt-get.cc:1705 cmdline/apt-get.cc:1741
 #, c-format
 msgid "Couldn't find package %s"
 msgstr "Не можу знайти пакунок %s"
 
-#: cmdline/apt-get.cc:1740
+#: cmdline/apt-get.cc:1728
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr "Помітьте, регулярний вираз %2$s призводить до вибору %1$s\n"
 
-#: cmdline/apt-get.cc:1771
+#: cmdline/apt-get.cc:1759
 #, fuzzy, c-format
 msgid "%s set to manually installed.\n"
 msgstr "але %s буде встановлений"
 
-#: cmdline/apt-get.cc:1784
+#: cmdline/apt-get.cc:1772
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr ""
 "Можливо, для виправлення цих помилок Ви захочете скористатися 'apt-get -f "
 "install':"
 
-#: cmdline/apt-get.cc:1787
+#: cmdline/apt-get.cc:1775
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
@@ -1112,7 +1117,7 @@ msgstr ""
 "Незадоволені залежності. Спробуйте виконати 'apt-get -f install', не "
 "вказуючи імені пакунка (або знайдіть інше рішення)."
 
-#: cmdline/apt-get.cc:1799
+#: cmdline/apt-get.cc:1787
 msgid ""
 "Some packages could not be installed. This may mean that you have\n"
 "requested an impossible situation or if you are using the unstable\n"
@@ -1123,121 +1128,121 @@ msgstr ""
 "або ж використаєте нестабільний дистрибутив, і запитані Вами пакунки\n"
 "ще не створені або були вилучені з Incoming."
 
-#: cmdline/apt-get.cc:1817
+#: cmdline/apt-get.cc:1805
 msgid "Broken packages"
 msgstr "Зламані пакунки"
 
-#: cmdline/apt-get.cc:1846
+#: cmdline/apt-get.cc:1834
 msgid "The following extra packages will be installed:"
 msgstr "Будуть встановлені наступні додаткові пакунки:"
 
-#: cmdline/apt-get.cc:1935
+#: cmdline/apt-get.cc:1923
 msgid "Suggested packages:"
 msgstr "Пропоновані пакунки:"
 
-#: cmdline/apt-get.cc:1936
+#: cmdline/apt-get.cc:1924
 msgid "Recommended packages:"
 msgstr "Рекомендовані пакунки:"
 
-#: cmdline/apt-get.cc:1965
+#: cmdline/apt-get.cc:1953
 msgid "Calculating upgrade... "
 msgstr "Обчислення оновлень... "
 
-#: cmdline/apt-get.cc:1968 methods/ftp.cc:708 methods/connect.cc:112
+#: cmdline/apt-get.cc:1956 methods/ftp.cc:707 methods/connect.cc:112
 msgid "Failed"
 msgstr "Невдача"
 
-#: cmdline/apt-get.cc:1973
+#: cmdline/apt-get.cc:1961
 msgid "Done"
 msgstr "Виконано"
 
-#: cmdline/apt-get.cc:2040 cmdline/apt-get.cc:2048
+#: cmdline/apt-get.cc:2028 cmdline/apt-get.cc:2036
 msgid "Internal error, problem resolver broke stuff"
 msgstr "Внутрішня помилка, вирішувач проблем все поламав"
 
-#: cmdline/apt-get.cc:2148
+#: cmdline/apt-get.cc:2136
 msgid "Must specify at least one package to fetch source for"
 msgstr ""
 "Вкажіть як мінімум один пакунок, для якого необхідно завантажити вихідні "
 "тексти"
 
-#: cmdline/apt-get.cc:2178 cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2166 cmdline/apt-get.cc:2412
 #, c-format
 msgid "Unable to find a source package for %s"
 msgstr "Неможливо знайти пакунок з вихідними текстами для %s"
 
-#: cmdline/apt-get.cc:2227
+#: cmdline/apt-get.cc:2215
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
 msgstr "Пропускаємо вже завантажений файл '%s'\n"
 
-#: cmdline/apt-get.cc:2262
+#: cmdline/apt-get.cc:2250
 #, c-format
 msgid "You don't have enough free space in %s"
 msgstr "Недостатньо місця в %s"
 
-#: cmdline/apt-get.cc:2268
+#: cmdline/apt-get.cc:2256
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr "Необхідно завантажити %sB/%sB з архівів вихідних текстів.\n"
 
-#: cmdline/apt-get.cc:2271
+#: cmdline/apt-get.cc:2259
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgstr "Потрібно завантажити %sB архівів з вихідними текстами.\n"
 
-#: cmdline/apt-get.cc:2277
+#: cmdline/apt-get.cc:2265
 #, c-format
 msgid "Fetch source %s\n"
 msgstr "Завантаження вихідних текстів %s\n"
 
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2296
 msgid "Failed to fetch some archives."
 msgstr "Деякі архіви не вдалося завантажити."
 
-#: cmdline/apt-get.cc:2336
+#: cmdline/apt-get.cc:2324
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr ""
 "Розпакування вихідних текстів пропущено, тому що в %s вже перебувають "
 "розпаковані вихідні тексти\n"
 
-#: cmdline/apt-get.cc:2348
+#: cmdline/apt-get.cc:2336
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgstr "Команда розпакування '%s' завершилася невдало.\n"
 
-#: cmdline/apt-get.cc:2349
+#: cmdline/apt-get.cc:2337
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgstr "Перевірте, чи встановлений пакунок 'dpkg-dev'.\n"
 
-#: cmdline/apt-get.cc:2366
+#: cmdline/apt-get.cc:2354
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgstr "Команда побудови '%s' закінчилася невдало.\n"
 
-#: cmdline/apt-get.cc:2385
+#: cmdline/apt-get.cc:2373
 msgid "Child process failed"
 msgstr "Породжений процес завершився невдало"
 
-#: cmdline/apt-get.cc:2401
+#: cmdline/apt-get.cc:2389
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 "Для перевірки залежностей для побудови необхідно вказати як мінімум один "
 "пакунок"
 
-#: cmdline/apt-get.cc:2429
+#: cmdline/apt-get.cc:2417
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgstr "Неможливо одержати інформацію про залежності для побудови %s"
 
-#: cmdline/apt-get.cc:2449
+#: cmdline/apt-get.cc:2437
 #, c-format
 msgid "%s has no build depends.\n"
 msgstr "%s не має залежностей для побудови.\n"
 
-#: cmdline/apt-get.cc:2501
+#: cmdline/apt-get.cc:2489
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
@@ -1245,7 +1250,7 @@ msgid ""
 msgstr ""
 "Залежність типу %s для %s не може бути задоволена, бо пакунок %s не знайдено"
 
-#: cmdline/apt-get.cc:2554
+#: cmdline/apt-get.cc:2542
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
@@ -1254,32 +1259,32 @@ msgstr ""
 "Залежність типу %s для %s не може бути задоволена, бо ні одна з версій "
 "пакунка %s не задовольняє умови"
 
-#: cmdline/apt-get.cc:2590
+#: cmdline/apt-get.cc:2578
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 "Не вдалося задовольнити залежність типу %s для пакунка %s: Встановлений "
 "пакунок %s новіше, аніж треба"
 
-#: cmdline/apt-get.cc:2617
+#: cmdline/apt-get.cc:2605
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr "Неможливо задовольнити залежність типу %s для пакунка %s: %s"
 
-#: cmdline/apt-get.cc:2633
+#: cmdline/apt-get.cc:2621
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr "Залежності для побудови %s не можуть бути задоволені."
 
-#: cmdline/apt-get.cc:2638
+#: cmdline/apt-get.cc:2626
 msgid "Failed to process build dependencies"
 msgstr "Обробка залежностей для побудови закінчилася невдало"
 
-#: cmdline/apt-get.cc:2670
+#: cmdline/apt-get.cc:2658
 msgid "Supported modules:"
 msgstr "Підтримувані модулі:"
 
-#: cmdline/apt-get.cc:2711
+#: cmdline/apt-get.cc:2699
 #, fuzzy
 msgid ""
 "Usage: apt-get [options] command\n"
@@ -1366,7 +1371,7 @@ msgstr ""
 "містять більше інформації.\n"
 "                       This APT has Super Cow Powers.\n"
 
-#: cmdline/apt-get.cc:2879
+#: cmdline/apt-get.cc:2866
 msgid ""
 "NOTE: This is only a simulation!\n"
 "      apt-get needs root privileges for real execution.\n"
@@ -1620,7 +1625,7 @@ msgstr "Файл %s/%s перезаписує інший з пакету %s"
 #: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:843
 #: apt-pkg/contrib/cdromutl.cc:157 apt-pkg/sourcelist.cc:166
 #: apt-pkg/sourcelist.cc:172 apt-pkg/sourcelist.cc:327 apt-pkg/acquire.cc:419
-#: apt-pkg/init.cc:90 apt-pkg/init.cc:98 apt-pkg/clean.cc:33
+#: apt-pkg/init.cc:89 apt-pkg/init.cc:97 apt-pkg/clean.cc:33
 #: apt-pkg/policy.cc:281 apt-pkg/policy.cc:287
 #, c-format
 msgid "Unable to read %s"
@@ -1790,11 +1795,11 @@ msgid "File not found"
 msgstr "Файл не знайдено"
 
 #: methods/copy.cc:43 methods/gzip.cc:141 methods/gzip.cc:150
-#: methods/rred.cc:234 methods/rred.cc:243
+#: methods/rred.cc:483 methods/rred.cc:492
 msgid "Failed to stat"
 msgstr "Не вдалося одержати атрибути"
 
-#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:240
+#: methods/copy.cc:80 methods/gzip.cc:147 methods/rred.cc:489
 msgid "Failed to set modification time"
 msgstr "Не вдалося встановити час модифікації"
 
@@ -1803,34 +1808,34 @@ msgid "Invalid URI, local URIS must not start with //"
 msgstr "Невірне посилання, локальні посилання повинні починатися з //"
 
 #. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc:168
+#: methods/ftp.cc:167
 msgid "Logging in"
 msgstr "Логінюсь в"
 
-#: methods/ftp.cc:174
+#: methods/ftp.cc:173
 msgid "Unable to determine the peer name"
 msgstr "Неможливо визначити назву вузла"
 
-#: methods/ftp.cc:179
+#: methods/ftp.cc:178
 msgid "Unable to determine the local name"
 msgstr "Неможливо визначити локальну назву"
 
-#: methods/ftp.cc:210 methods/ftp.cc:238
+#: methods/ftp.cc:209 methods/ftp.cc:237
 #, c-format
 msgid "The server refused the connection and said: %s"
 msgstr "Сервер розірвав з'єднання і мовив: %s"
 
-#: methods/ftp.cc:216
+#: methods/ftp.cc:215
 #, c-format
 msgid "USER failed, server said: %s"
 msgstr "USER невдало, сервер мовив: %s"
 
-#: methods/ftp.cc:223
+#: methods/ftp.cc:222
 #, c-format
 msgid "PASS failed, server said: %s"
 msgstr "PASS невдало, сервер мовив: %s"
 
-#: methods/ftp.cc:243
+#: methods/ftp.cc:242
 msgid ""
 "A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
 "is empty."
@@ -1838,116 +1843,116 @@ msgstr ""
 "Вказано проксі-сервер, але відсутній скрипт логіну, Acquire::ftp::ProxyLogin "
 "пустий."
 
-#: methods/ftp.cc:271
+#: methods/ftp.cc:270
 #, c-format
 msgid "Login script command '%s' failed, server said: %s"
 msgstr "Команда '%s'скрипту логіна не вдалася, сервер мовив: %s"
 
-#: methods/ftp.cc:297
+#: methods/ftp.cc:296
 #, c-format
 msgid "TYPE failed, server said: %s"
 msgstr "TYPE невдало, сервер мовив: %s"
 
-#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226
+#: methods/ftp.cc:334 methods/ftp.cc:445 methods/rsh.cc:183 methods/rsh.cc:226
 msgid "Connection timeout"
 msgstr "Час з'єднання вичерпався"
 
-#: methods/ftp.cc:341
+#: methods/ftp.cc:340
 msgid "Server closed the connection"
 msgstr "Сервер закрив з'єднання"
 
-#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:543 methods/rsh.cc:190
+#: methods/ftp.cc:343 apt-pkg/contrib/fileutl.cc:543 methods/rsh.cc:190
 msgid "Read error"
 msgstr "Помилка читання"
 
-#: methods/ftp.cc:351 methods/rsh.cc:197
+#: methods/ftp.cc:350 methods/rsh.cc:197
 msgid "A response overflowed the buffer."
 msgstr "Відповідь переповнила буфер."
 
-#: methods/ftp.cc:368 methods/ftp.cc:380
+#: methods/ftp.cc:367 methods/ftp.cc:379
 msgid "Protocol corruption"
 msgstr "Спотворений протокол"
 
-#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:582 methods/rsh.cc:232
+#: methods/ftp.cc:451 apt-pkg/contrib/fileutl.cc:582 methods/rsh.cc:232
 msgid "Write error"
 msgstr "Помилка запису"
 
-#: methods/ftp.cc:693 methods/ftp.cc:699 methods/ftp.cc:735
+#: methods/ftp.cc:692 methods/ftp.cc:698 methods/ftp.cc:734
 msgid "Could not create a socket"
 msgstr "Неможливо створити сокет (socket)"
 
-#: methods/ftp.cc:704
+#: methods/ftp.cc:703
 msgid "Could not connect data socket, connection timed out"
 msgstr "Неможливо під'єднати сокет (socket) з даними, час з'єднання вичерпався"
 
-#: methods/ftp.cc:710
+#: methods/ftp.cc:709
 msgid "Could not connect passive socket."
 msgstr "Неможливо під'єднати пасивний сокет (passive socket)."
 
-#: methods/ftp.cc:728
+#: methods/ftp.cc:727
 #, fuzzy
 msgid "getaddrinfo was unable to get a listening socket"
 msgstr "Виклик getaddrinfo не зміг отримати сокет"
 
-#: methods/ftp.cc:742
+#: methods/ftp.cc:741
 msgid "Could not bind a socket"
 msgstr "Неможливо приєднатися до сокета"
 
-#: methods/ftp.cc:746
+#: methods/ftp.cc:745
 #, fuzzy
 msgid "Could not listen on the socket"
 msgstr "Не можливо утримувати з'єднання на сокеті"
 
-#: methods/ftp.cc:753
+#: methods/ftp.cc:752
 msgid "Could not determine the socket's name"
 msgstr "Не вдалося визначити назву сокета"
 
-#: methods/ftp.cc:785
+#: methods/ftp.cc:784
 msgid "Unable to send PORT command"
 msgstr "Неможливо відіслати команду PORT"
 
-#: methods/ftp.cc:795
+#: methods/ftp.cc:794
 #, c-format
 msgid "Unknown address family %u (AF_*)"
 msgstr "Невідоме адресове сімейство %u (AF_*)"
 
-#: methods/ftp.cc:804
+#: methods/ftp.cc:803
 #, c-format
 msgid "EPRT failed, server said: %s"
 msgstr "EPRT невдало, сервер мовив: %s"
 
-#: methods/ftp.cc:824
+#: methods/ftp.cc:823
 msgid "Data socket connect timed out"
 msgstr "Час з'єднання з сокетом даних вичерпався"
 
-#: methods/ftp.cc:831
+#: methods/ftp.cc:830
 msgid "Unable to accept connection"
 msgstr "Неможливо прийняти з'єднання"
 
-#: methods/ftp.cc:870 methods/http.cc:999 methods/rsh.cc:303
+#: methods/ftp.cc:869 methods/http.cc:997 methods/rsh.cc:303
 msgid "Problem hashing file"
 msgstr "Проблема хешування файла"
 
-#: methods/ftp.cc:883
+#: methods/ftp.cc:882
 #, c-format
 msgid "Unable to fetch file, server said '%s'"
 msgstr "Неможливо завантажити файл, сервер мовив: '%s'"
 
-#: methods/ftp.cc:898 methods/rsh.cc:322
+#: methods/ftp.cc:897 methods/rsh.cc:322
 msgid "Data socket timed out"
 msgstr "Час з'єднання з сокетом (socket) з даними вичерпався"
 
-#: methods/ftp.cc:928
+#: methods/ftp.cc:927
 #, c-format
 msgid "Data transfer failed, server said '%s'"
 msgstr "Передача даних обірвалася, сервер мовив '%s'"
 
 #. Get the files information
-#: methods/ftp.cc:1005
+#: methods/ftp.cc:1002
 msgid "Query"
 msgstr "Черга"
 
-#: methods/ftp.cc:1117
+#: methods/ftp.cc:1114
 msgid "Unable to invoke "
 msgstr "Неможливо викликати "
 
@@ -2060,83 +2065,83 @@ msgstr "Неможливо відкрити канал (pipe) для %s"
 msgid "Read error from %s process"
 msgstr "Помилка читання з процесу %s"
 
-#: methods/http.cc:385
+#: methods/http.cc:384
 msgid "Waiting for headers"
 msgstr "Очікування на заголовки"
 
-#: methods/http.cc:531
+#: methods/http.cc:530
 #, c-format
 msgid "Got a single header line over %u chars"
 msgstr "Отримано одну заголовкову лінію понад %u символів"
 
-#: methods/http.cc:539
+#: methods/http.cc:538
 msgid "Bad header line"
 msgstr "Невірна лінія заголовку"
 
-#: methods/http.cc:558 methods/http.cc:565
+#: methods/http.cc:557 methods/http.cc:564
 msgid "The HTTP server sent an invalid reply header"
 msgstr "HTTP сервер відіслав невірний заголовок 'reply'"
 
-#: methods/http.cc:594
+#: methods/http.cc:593
 msgid "The HTTP server sent an invalid Content-Length header"
 msgstr "HTTP сервер відіслав невірний заголовок 'Content-Length'"
 
-#: methods/http.cc:609
+#: methods/http.cc:608
 msgid "The HTTP server sent an invalid Content-Range header"
 msgstr "HTTP сервер відіслав невірний заголовок 'Content-Length'"
 
-#: methods/http.cc:611
+#: methods/http.cc:610
 msgid "This HTTP server has broken range support"
 msgstr "Цей HTTP сервер має поламану підтримку 'range'"
 
-#: methods/http.cc:635
+#: methods/http.cc:634
 msgid "Unknown date format"
 msgstr "Невідомий формат дати"
 
-#: methods/http.cc:790
+#: methods/http.cc:788
 msgid "Select failed"
 msgstr "Вибір не вдався"
 
-#: methods/http.cc:795
+#: methods/http.cc:793
 msgid "Connection timed out"
 msgstr "Час очікування з'єднання вийшов"
 
-#: methods/http.cc:818
+#: methods/http.cc:816
 msgid "Error writing to output file"
 msgstr "Помилка запису в вихідний файл"
 
-#: methods/http.cc:849
+#: methods/http.cc:847
 #, fuzzy
 msgid "Error writing to file"
 msgstr "Помилка запису в файл"
 
-#: methods/http.cc:877
+#: methods/http.cc:875
 #, fuzzy
 msgid "Error writing to the file"
 msgstr "Помилка запису в файл"
 
-#: methods/http.cc:891
+#: methods/http.cc:889
 msgid "Error reading from server. Remote end closed connection"
 msgstr "Помилка читання з сервера. Віддалена сторона закрила з'єднання"
 
-#: methods/http.cc:893
+#: methods/http.cc:891
 msgid "Error reading from server"
 msgstr "Помилка читання з сервера"
 
-#: methods/http.cc:984 apt-pkg/contrib/mmap.cc:215
+#: methods/http.cc:982 apt-pkg/contrib/mmap.cc:233
 #, fuzzy
 msgid "Failed to truncate file"
 msgstr "Не вдалося записати файл %s"
 
-#: methods/http.cc:1149
+#: methods/http.cc:1147
 msgid "Bad header data"
 msgstr "Погана заголовкова інформація"
 
-#: methods/http.cc:1166 methods/http.cc:1221
+#: methods/http.cc:1164 methods/http.cc:1219
 msgid "Connection failed"
 msgstr "З'єднання не вдалося"
 
-#: methods/http.cc:1313
+#: methods/http.cc:1311
 msgid "Internal error"
 msgstr "Внутрішня помилка"
 
@@ -2144,18 +2149,25 @@ msgstr "Внутрішня помилка"
 msgid "Can't mmap an empty file"
 msgstr "Неможливо відобразити в пам'яті пустий файл"
 
-#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:187
+#: apt-pkg/contrib/mmap.cc:81 apt-pkg/contrib/mmap.cc:202
 #, c-format
 msgid "Couldn't make mmap of %lu bytes"
 msgstr "Неможливо відобразити в пам'яті %lu байт"
 
-#: apt-pkg/contrib/mmap.cc:234
+#: apt-pkg/contrib/mmap.cc:252
 #, c-format
 msgid ""
 "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. "
 "Current value: %lu. (man 5 apt.conf)"
 msgstr ""
 
+#: apt-pkg/contrib/mmap.cc:347
+#, c-format
+msgid ""
+"The size of a MMap has already reached the defined limit of %lu bytes,abort "
+"the try to grow the MMap."
+msgstr ""
+
 #. d means days, h means hours, min means minutes, s means seconds
 #: apt-pkg/contrib/strutl.cc:346
 #, c-format
@@ -2550,14 +2562,14 @@ msgstr "Невідомий тип '%s' в лінії %u в переліку дж
 msgid "Malformed line %u in source list %s (vendor id)"
 msgstr "Спотворена лінія %u у переліку джерел %s (vendor id)"
 
-#: apt-pkg/packagemanager.cc:324 apt-pkg/packagemanager.cc:586
+#: apt-pkg/packagemanager.cc:321 apt-pkg/packagemanager.cc:576
 #, c-format
 msgid ""
 "Could not perform immediate configuration on '%s'.Please see man 5 apt.conf "
 "under APT::Immediate-Configure for details. (%d)"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:440
+#: apt-pkg/packagemanager.cc:437
 #, c-format
 msgid ""
 "This installation run will require temporarily removing the essential "
@@ -2569,7 +2581,7 @@ msgstr ""
 "погано, але якщо Ви дійсно бажаєте зробити це, активуйте параметр APT::Force-"
 "LoopBreak."
 
-#: apt-pkg/packagemanager.cc:478
+#: apt-pkg/packagemanager.cc:475
 #, c-format
 msgid ""
 "Could not perform immediate configuration on already unpacked '%s'.Please "
@@ -2647,12 +2659,12 @@ msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
 msgstr ""
 "Будь-ласка, вставте диск з поміткою: '%s' в CD привід '%s' і натисніть Enter."
 
-#: apt-pkg/init.cc:133
+#: apt-pkg/init.cc:132
 #, c-format
 msgid "Packaging system '%s' is not supported"
 msgstr "Система пакування '%s' не підтримується"
 
-#: apt-pkg/init.cc:149
+#: apt-pkg/init.cc:148
 msgid "Unable to determine a suitable packaging system type"
 msgstr "Неможливо визначити тип необхідної системи пакування "
 
@@ -2787,21 +2799,21 @@ msgstr "Помилка IO під час збереження джерельно
 msgid "rename failed, %s (%s -> %s)."
 msgstr "Не вдалося перейменувати, %s (%s -> %s)."
 
-#: apt-pkg/acquire-item.cc:395
+#: apt-pkg/acquire-item.cc:396
 msgid "MD5Sum mismatch"
 msgstr "Невідповідність MD5Sum"
 
-#: apt-pkg/acquire-item.cc:649 apt-pkg/acquire-item.cc:1411
+#: apt-pkg/acquire-item.cc:657 apt-pkg/acquire-item.cc:1419
 #, fuzzy
 msgid "Hash Sum mismatch"
 msgstr "Невідповідність MD5Sum"
 
-#: apt-pkg/acquire-item.cc:1106
+#: apt-pkg/acquire-item.cc:1114
 #, fuzzy
 msgid "There is no public key available for the following key IDs:\n"
 msgstr "Відсутній публічний ключ для заданих ID ключа:\n"
 
-#: apt-pkg/acquire-item.cc:1216
+#: apt-pkg/acquire-item.cc:1224
 #, c-format
 msgid ""
 "I wasn't able to locate a file for the %s package. This might mean you need "
@@ -2810,7 +2822,7 @@ msgstr ""
 "Я не можу знайти файл для пакунку %s. Можливо, Ви захочете власноруч "
 "виправити цей пакунок. (due to missing arch)"
 
-#: apt-pkg/acquire-item.cc:1275
+#: apt-pkg/acquire-item.cc:1283
 #, c-format
 msgid ""
 "I wasn't able to locate file for the %s package. This might mean you need to "
@@ -2819,14 +2831,14 @@ msgstr ""
 "Я не можу знайти файл для пакунку %s. Можливо, Ви захочете власноруч "
 "виправити цей пакунок."
 
-#: apt-pkg/acquire-item.cc:1316
+#: apt-pkg/acquire-item.cc:1324
 #, c-format
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
 msgstr ""
 "Індексні файли пакунків пошкоджені. Немає поля Filename для пакунку %s."
 
-#: apt-pkg/acquire-item.cc:1403
+#: apt-pkg/acquire-item.cc:1411
 msgid "Size mismatch"
 msgstr "Невідповідність розміру"
 
@@ -2958,99 +2970,77 @@ msgstr "Записано %i записів з %i невідповідними ф
 msgid "Wrote %i records with %i missing files and %i mismatched files\n"
 msgstr "Записано %i записів з %i відсутніми і %i невідповідними файлами\n"
 
-#: apt-pkg/indexcopy.cc:530
-#, fuzzy, c-format
-#| msgid "Opening configuration file %s"
-msgid "Skipping nonexistent file %s"
-msgstr "Відкривається конфігураційний файл %s"
-
-#: apt-pkg/indexcopy.cc:536
-#, c-format
-msgid "Can't find authentication record for: %s"
-msgstr ""
-
-#: apt-pkg/indexcopy.cc:542
-#, fuzzy, c-format
-msgid "Hash mismatch for: %s"
-msgstr "Невідповідність MD5Sum"
-
 #: apt-pkg/deb/dpkgpm.cc:49
 #, fuzzy, c-format
 msgid "Installing %s"
 msgstr "Встановлено %s"
 
-#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:661
+#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:660
 #, c-format
 msgid "Configuring %s"
 msgstr "Конфігурація %s"
 
-#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:668
+#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:667
 #, c-format
 msgid "Removing %s"
 msgstr "Видаляється %s"
 
 #: apt-pkg/deb/dpkgpm.cc:52
-#, fuzzy, c-format
-#| msgid "Completely removed %s"
-msgid "Completely removing %s"
-msgstr "Повністю видалено %s"
-
-#: apt-pkg/deb/dpkgpm.cc:53
 #, c-format
 msgid "Running post-installation trigger %s"
 msgstr ""
 
-#: apt-pkg/deb/dpkgpm.cc:558
+#: apt-pkg/deb/dpkgpm.cc:557
 #, fuzzy, c-format
 msgid "Directory '%s' missing"
 msgstr "Lists тека %spartial відсутня."
 
-#: apt-pkg/deb/dpkgpm.cc:654
+#: apt-pkg/deb/dpkgpm.cc:653
 #, c-format
 msgid "Preparing %s"
 msgstr "Підготовка %s"
 
-#: apt-pkg/deb/dpkgpm.cc:655
+#: apt-pkg/deb/dpkgpm.cc:654
 #, c-format
 msgid "Unpacking %s"
 msgstr "Розпакування %s"
 
-#: apt-pkg/deb/dpkgpm.cc:660
+#: apt-pkg/deb/dpkgpm.cc:659
 #, c-format
 msgid "Preparing to configure %s"
 msgstr "Підготовка до конфігурації %s"
 
-#: apt-pkg/deb/dpkgpm.cc:662
+#: apt-pkg/deb/dpkgpm.cc:661
 #, c-format
 msgid "Installed %s"
 msgstr "Встановлено %s"
 
-#: apt-pkg/deb/dpkgpm.cc:667
+#: apt-pkg/deb/dpkgpm.cc:666
 #, c-format
 msgid "Preparing for removal of %s"
 msgstr "Підготовка до видалення %s"
 
-#: apt-pkg/deb/dpkgpm.cc:669
+#: apt-pkg/deb/dpkgpm.cc:668
 #, c-format
 msgid "Removed %s"
 msgstr "Видалено %s"
 
-#: apt-pkg/deb/dpkgpm.cc:674
+#: apt-pkg/deb/dpkgpm.cc:673
 #, c-format
 msgid "Preparing to completely remove %s"
 msgstr "Підготовка до повного видалення %s"
 
-#: apt-pkg/deb/dpkgpm.cc:675
+#: apt-pkg/deb/dpkgpm.cc:674
 #, c-format
 msgid "Completely removed %s"
 msgstr "Повністю видалено %s"
 
-#: apt-pkg/deb/dpkgpm.cc:879
+#: apt-pkg/deb/dpkgpm.cc:878
 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
 msgstr ""
 "Неможливо записати в лог, проблема з openpty() (не змонтовано /dev/pts?)\n"
 
-#: apt-pkg/deb/dpkgpm.cc:909
+#: apt-pkg/deb/dpkgpm.cc:907
 msgid "Running dpkg"
 msgstr ""
 
@@ -3076,16 +3066,26 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
-#: methods/rred.cc:219
-msgid "Could not patch file"
-msgstr "Неможливо накласти латку на файл"
+#: methods/rred.cc:465
+#, c-format
+msgid ""
+"Could not patch %s with mmap and with file operation usage - the patch seems "
+"to be corrupt."
+msgstr ""
+
+#: methods/rred.cc:470
+#, c-format
+msgid ""
+"Could not patch %s with mmap (but no mmap specific fail) - the patch seems "
+"to be corrupt."
+msgstr ""
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgstr "З'єднання завершено передчасно"
 
-#~ msgid "       %4i %s\n"
-#~ msgstr "       %4i %s\n"
+#~ msgid "Could not patch file"
+#~ msgstr "Неможливо накласти латку на файл"
 
 #~ msgid "%4i %s\n"
 #~ msgstr "%4i %s\n"
diff --git a/share/apt-auth-failure.note b/share/apt-auth-failure.note
new file mode 100644 (file)
index 0000000..3e8a9e7
--- /dev/null
@@ -0,0 +1,11 @@
+_Name: Apt Authentication issue
+Priority: High
+Terminal: False
+Command: gksu -- synaptic --non-interactive --update-at-startup --hide-main-window
+GettextDomain: apt
+_Description: Problem during package list update. 
+ The package list update failed with a authentication failure.
+ This usually happens behind a network proxy server. Please try
+ to click on the "Run this action now" button to correct the problem or
+ update the list manually by running Update Manager and clicking
+ on "Check". 
diff --git a/share/debian-archive.gpg.moved b/share/debian-archive.gpg.moved
new file mode 100644 (file)
index 0000000..bb5ed50
Binary files /dev/null and b/share/debian-archive.gpg.moved differ
diff --git a/share/makefile b/share/makefile
new file mode 100644 (file)
index 0000000..e35376d
--- /dev/null
@@ -0,0 +1,12 @@
+
+BASE=..
+SUBDIR=share
+
+# Bring in the default rules
+include ../buildlib/defaults.mak
+
+binary: apt-auth-failure.note.h
+
+apt-auth-failure.note.h: apt-auth-failure.note
+       intltool-extract -t gettext/rfc822deb apt-auth-failure.note
+       echo "share/apt-auth-failure.note.h" >> $(BUILD)/po/domains/apt/apt-auth-failure.note.srclist
diff --git a/share/ubuntu-archive.gpg b/share/ubuntu-archive.gpg
new file mode 100644 (file)
index 0000000..2ce60d4
Binary files /dev/null and b/share/ubuntu-archive.gpg differ
diff --git a/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Packages b/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Packages
new file mode 100644 (file)
index 0000000..3e72654
--- /dev/null
@@ -0,0 +1,25 @@
+Package: libglib2.0-data
+Priority: optional
+Section: misc
+Installed-Size: 2288
+Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
+Original-Maintainer: Loic Minier <lool@dooz.org>
+Architecture: all
+Source: glib2.0
+Version: 2.13.6-1ubuntu1
+Replaces: libglib1.3, libglib1.3-data
+Depends: libglib2.0-0 (>= 2.13.6-1ubuntu1)
+Conflicts: libglib1.3-data
+Filename: ./libglib2.0-data_2.13.6-1ubuntu1_all.deb
+Size: 958
+MD5sum: 803fc5e2e31a4345b3e9c771e1eae49f
+SHA1: 75b2c62b21bae60c58e694dd40ed6d4df946e304
+SHA256: 142d8466eac252f06bc957d76fe1bb87f86f2d3512b99c8d4b08c1ad79fbe59e
+Description: Common files for GLib library
+ GLib is a library containing many useful C routines for things such
+ as trees, hashes, lists, and strings.  It is a useful general-purpose
+ C library used by projects such as GTK+, GIMP, and GNOME.
+ .
+ This package is needed for the runtime libraries to display messages in
+ languages other than English.
+
diff --git a/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Release b/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Release
new file mode 100644 (file)
index 0000000..7ecd4cd
--- /dev/null
@@ -0,0 +1,13 @@
+Date: Fri, 27 Jul 2007 14:39:41 UTC
+MD5Sum:
+ 4672dadea6a144839f823c9f3d5fd44b              934 Packages
+ 82ebcf09a8d78a2b9cf7759349da4936              603 Packages.gz
+ d41d8cd98f00b204e9800998ecf8427e                0 Release
+SHA1:
+ fa0f294aa30789529371066b10e9497be1284d26              934 Packages
+ f4032808663b2810d87b4a4dab6f5ae4a1e8fa8e              603 Packages.gz
+ da39a3ee5e6b4b0d3255bfef95601890afd80709                0 Release
+SHA256:
+ 92c9b605480dc74e6be79c0ddc24738bfcbd6dd3148af531acd68717de528049              934 Packages
+ 659ccc0d07ff21f0247f9fa5abe149221c90d5e17da52c7afddb035b93c23d39              603 Packages.gz
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855                0 Release
diff --git a/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Release.gpg b/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Release.gpg
new file mode 100644 (file)
index 0000000..85c356e
--- /dev/null
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+iD8DBQBGqgOwliSD4VZixzQRAs6jAJ9p7Aiob9gzkUNCtoW8UPrBo0E/YwCdEaz0
+CQJszU6fRYX5jGWXSWzfc5c=
+=ugH0
+-----END PGP SIGNATURE-----
diff --git a/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Packages b/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Packages
new file mode 100644 (file)
index 0000000..3e72654
--- /dev/null
@@ -0,0 +1,25 @@
+Package: libglib2.0-data
+Priority: optional
+Section: misc
+Installed-Size: 2288
+Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
+Original-Maintainer: Loic Minier <lool@dooz.org>
+Architecture: all
+Source: glib2.0
+Version: 2.13.6-1ubuntu1
+Replaces: libglib1.3, libglib1.3-data
+Depends: libglib2.0-0 (>= 2.13.6-1ubuntu1)
+Conflicts: libglib1.3-data
+Filename: ./libglib2.0-data_2.13.6-1ubuntu1_all.deb
+Size: 958
+MD5sum: 803fc5e2e31a4345b3e9c771e1eae49f
+SHA1: 75b2c62b21bae60c58e694dd40ed6d4df946e304
+SHA256: 142d8466eac252f06bc957d76fe1bb87f86f2d3512b99c8d4b08c1ad79fbe59e
+Description: Common files for GLib library
+ GLib is a library containing many useful C routines for things such
+ as trees, hashes, lists, and strings.  It is a useful general-purpose
+ C library used by projects such as GTK+, GIMP, and GNOME.
+ .
+ This package is needed for the runtime libraries to display messages in
+ languages other than English.
+
diff --git a/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release b/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release
new file mode 100644 (file)
index 0000000..7ecd4cd
--- /dev/null
@@ -0,0 +1,13 @@
+Date: Fri, 27 Jul 2007 14:39:41 UTC
+MD5Sum:
+ 4672dadea6a144839f823c9f3d5fd44b              934 Packages
+ 82ebcf09a8d78a2b9cf7759349da4936              603 Packages.gz
+ d41d8cd98f00b204e9800998ecf8427e                0 Release
+SHA1:
+ fa0f294aa30789529371066b10e9497be1284d26              934 Packages
+ f4032808663b2810d87b4a4dab6f5ae4a1e8fa8e              603 Packages.gz
+ da39a3ee5e6b4b0d3255bfef95601890afd80709                0 Release
+SHA256:
+ 92c9b605480dc74e6be79c0ddc24738bfcbd6dd3148af531acd68717de528049              934 Packages
+ 659ccc0d07ff21f0247f9fa5abe149221c90d5e17da52c7afddb035b93c23d39              603 Packages.gz
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855                0 Release
diff --git a/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release.gpg b/test/authReliability/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release.gpg
new file mode 100644 (file)
index 0000000..85c356e
--- /dev/null
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+iD8DBQBGqgOwliSD4VZixzQRAs6jAJ9p7Aiob9gzkUNCtoW8UPrBo0E/YwCdEaz0
+CQJszU6fRYX5jGWXSWzfc5c=
+=ugH0
+-----END PGP SIGNATURE-----
diff --git a/test/authReliability/sources.list.failure b/test/authReliability/sources.list.failure
new file mode 100644 (file)
index 0000000..110f318
--- /dev/null
@@ -0,0 +1,2 @@
+deb http://people.ubuntu.com/~mvo/apt/auth-test-suit/gpg-package-broken/ /
+
diff --git a/test/authReliability/sources.list.good b/test/authReliability/sources.list.good
new file mode 100644 (file)
index 0000000..2e9a445
--- /dev/null
@@ -0,0 +1,2 @@
+deb http://people.ubuntu.com/~mvo/apt/auth-test-suit/gpg-package-ok/ /
+
index 268b3d6720a321093faad41a6e6b35bfb7d5b8e4..97a0ec4c4c274929dc4f603b79642c20ab1bc912 100755 (executable)
@@ -4,6 +4,8 @@ import sys
 import os
 import glob
 import os.path
+import shutil
+import time
 from subprocess import call, PIPE
 
 import unittest
@@ -11,7 +13,102 @@ import unittest
 stdout = os.open("/dev/null",0) #sys.stdout
 stderr = os.open("/dev/null",0) # sys.stderr
 
-apt_args = []  # ["-o","Debug::pkgAcquire::Auth=true"]
+apt_args = [] 
+#apt_args = ["-o","Debug::pkgAcquire::Auth=true"]
+
+class testAptAuthenticationReliability(unittest.TestCase):
+    """
+    test if the spec https://wiki.ubuntu.com/AptAuthenticationReliability 
+    is properly implemented
+    """
+    #apt = "../bin/apt-get"
+    apt = "apt-get"
+
+    def setUp(self):
+        if os.path.exists("/tmp/autFailure"):
+            os.unlink("/tmp/authFailure");
+        if os.path.exists("/tmp/autFailure2"):
+            os.unlink("/tmp/authFailure2");
+    def testRepositorySigFailure(self):
+        """
+        test if a repository that used to be authenticated and fails on
+        apt-get update refuses to update and uses the old state
+        """
+        # copy valid signatures into lists (those are ok, even
+        # if the name is "-broken-" ...
+        for f in glob.glob("./authReliability/lists/*"):
+            shutil.copy(f,"/var/lib/apt/lists")
+            # ensure we do *not* get a I-M-S hit
+            os.utime("/var/lib/apt/lists/%s" % os.path.basename(f), (0,0))
+        res = call([self.apt,
+                    "update",
+                    "-o","Dir::Etc::sourcelist=./authReliability/sources.list.failure", 
+                    "-o",'APT::Update::Auth-Failure::=touch /tmp/authFailure',
+                   ] + apt_args,
+                   stdout=stdout, stderr=stderr)
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Release.gpg"),
+                     "The gpg file disappeared, this should not happen")
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Packages"),
+                     "The Packages file disappeared, this should not happen")
+        self.assert_(os.path.exists("/tmp/authFailure"),
+                     "The APT::Update::Auth-Failure script did not run (1)")
+        # the same with i-m-s hit this time
+        for f in glob.glob("./authReliability/lists/*"):
+            shutil.copy(f,"/var/lib/apt/lists")
+            os.utime("/var/lib/apt/lists/%s" % os.path.basename(f), (time.time(),time.time()))
+        res = call([self.apt,
+                    "update",
+                    "-o","Dir::Etc::sourcelist=./authReliability/sources.list.failure",
+                    "-o",'APT::Update::Auth-Failure::=touch /tmp/authFailure2',
+                   ] + apt_args,
+                   stdout=stdout, stderr=stderr)
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Release.gpg"),
+                     "The gpg file disappeared, this should not happen")
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-broken_Packages"),
+                     "The Packages file disappeared, this should not happen")
+        self.assert_(os.path.exists("/tmp/authFailure2"),
+                     "The APT::Update::Auth-Failure script did not run (2)")
+    def testRepositorySigGood(self):
+        """
+        test that a regular repository with good data stays good
+        """
+        res = call([self.apt,
+                    "update",
+                    "-o","Dir::Etc::sourcelist=./authReliability/sources.list.good"
+                   ] + apt_args,
+                   stdout=stdout, stderr=stderr)
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release.gpg"),
+                     "The gpg file disappeared after a regular download, this should not happen")
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Packages"),
+                     "The Packages file disappeared, this should not happen")
+        # test good is still good after non I-M-S hit and a previous files in lists/
+        for f in glob.glob("./authReliability/lists/*"):
+            shutil.copy(f,"/var/lib/apt/lists")
+            # ensure we do *not* get a I-M-S hit
+            os.utime("/var/lib/apt/lists/%s" % os.path.basename(f), (0,0))
+        res = call([self.apt,
+                    "update",
+                    "-o","Dir::Etc::sourcelist=./authReliability/sources.list.good"
+                   ] + apt_args,
+                   stdout=stdout, stderr=stderr)
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release.gpg"),
+                     "The gpg file disappeared after a I-M-S hit, this should not happen")
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Packages"),
+                     "The Packages file disappeared, this should not happen")
+        # test good is still good after I-M-S hit
+        for f in glob.glob("./authReliability/lists/*"):
+            shutil.copy(f,"/var/lib/apt/lists")
+            # ensure we do get a I-M-S hit
+            os.utime("/var/lib/apt/lists/%s" % os.path.basename(f), (time.time(),time.time()))
+        res = call([self.apt,
+                    "update",
+                    "-o","Dir::Etc::sourcelist=./authReliability/sources.list.good"
+                   ] + apt_args,
+                   stdout=stdout, stderr=stderr)
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Release.gpg"),
+                     "The gpg file disappeared, this should not happen")
+        self.assert_(os.path.exists("/var/lib/apt/lists/people.ubuntu.com_%7emvo_apt_auth-test-suit_gpg-package-ok_Packages"),
+                     "The Packages file disappeared, this should not happen")
 
 
 class testAuthentication(unittest.TestCase):
@@ -149,6 +246,7 @@ if __name__ == "__main__":
     if len(sys.argv) > 1 and sys.argv[1] == "-v":
         stdout = sys.stdout
         stderr = sys.stderr
+    
+    # run only one for now
+    #unittest.main(defaultTest="testAptAuthenticationReliability")
     unittest.main()
-
-