Просмотр исходного кода

merged from David, uncommited the previous i18n commit first as its part of the merge from David already but for some reason bzr is confused and gives a gazillion of conflicts in doc/po/de.po without the uncommit first

Michael Vogt лет назад: 14
Родитель
Сommit
6c1f5d2c3c
62 измененных файлов с 6912 добавлено и 19508 удалено
  1. 6 3
      Makefile
  2. 13 28
      apt-pkg/acquire-method.cc
  3. 3 0
      apt-pkg/acquire-method.h
  4. 15 0
      apt-pkg/acquire-worker.cc
  5. 34 5
      apt-pkg/acquire.cc
  6. 6 0
      apt-pkg/algorithms.cc
  7. 1 0
      apt-pkg/algorithms.h
  8. 1 1
      apt-pkg/aptconfiguration.cc
  9. 41 24
      apt-pkg/contrib/fileutl.cc
  10. 1 1
      apt-pkg/packagemanager.cc
  11. 2 2
      apt-pkg/pkgcachegen.cc
  12. 1 0
      apt-pkg/srcrecords.h
  13. 5 6
      buildlib/configure.mak
  14. 1 1
      buildlib/copy.mak
  15. 1 1
      buildlib/defaults.mak
  16. 2 1
      buildlib/manpage.mak
  17. 6 2
      buildlib/po4a_manpage.mak
  18. 3 3
      buildlib/podomain.mak
  19. 12 2
      cmdline/apt-get.cc
  20. 64 0
      debian/changelog
  21. 3 2
      debian/control
  22. 0 1
      debian/libapt-pkg4.12.symbols
  23. 10 4
      debian/rules
  24. 19 21
      doc/apt-cache.8.xml
  25. 3 3
      doc/apt-cdrom.8.xml
  26. 7 6
      doc/apt-config.8.xml
  27. 4 3
      doc/apt-extracttemplates.1.xml
  28. 51 51
      doc/apt-ftparchive.1.xml
  29. 22 32
      doc/apt-get.8.xml
  30. 23 16
      doc/apt-key.8.xml
  31. 13 13
      doc/apt-mark.8.xml
  32. 9 2
      doc/apt-secure.8.xml
  33. 1 1
      doc/apt-sortpkgs.1.xml
  34. 8 2
      doc/apt-verbatim.ent
  35. 101 94
      doc/apt.conf.5.xml
  36. 10 20
      doc/apt.ent
  37. 3 2
      doc/apt_preferences.5.xml
  38. 19 9
      doc/makefile
  39. 8 0
      doc/manpage-style.xsl
  40. 523 1830
      doc/po/apt-doc.pot
  41. 856 2336
      doc/po/de.po
  42. 767 2213
      doc/po/es.po
  43. 778 2179
      doc/po/fr.po
  44. 538 1860
      doc/po/it.po
  45. 751 2276
      doc/po/ja.po
  46. 685 2263
      doc/po/pl.po
  47. 768 2211
      doc/po/pt.po
  48. 569 1919
      doc/po/pt_BR.po
  49. 18 13
      doc/po4a.conf
  50. 3 3
      doc/sources.list.5.xml
  51. 1 0
      ftparchive/writer.cc
  52. 6 3
      methods/http.cc
  53. 1 1
      methods/https.cc
  54. 1 1
      methods/mirror.cc
  55. 8 3
      prepare-release
  56. 1 1
      test/Makefile
  57. 7 5
      test/integration/skip-bug-602412-dequote-redirect
  58. 23 0
      test/integration/test-673536-pre-depends-breaks-loop
  59. 42 24
      test/integration/test-bug-632221-cross-dependency-satisfaction
  60. 21 0
      test/libapt/assert.h
  61. 11 4
      test/libapt/getlanguages_test.cc
  62. 2 1
      test/libapt/run-tests

+ 6 - 3
Makefile

@@ -10,7 +10,7 @@ endif
 default: startup all
 
 .PHONY: headers library clean veryclean all binary program doc test update-po
-startup all headers library clean veryclean binary program doc dirs test update-po:
+all headers library clean veryclean binary program doc manpages test update-po startup dirs:
 	$(MAKE) -C apt-pkg $@
 	$(MAKE) -C apt-inst $@
 	$(MAKE) -C methods $@
@@ -21,11 +21,14 @@ startup all headers library clean veryclean binary program doc dirs test update-
 	$(MAKE) -C po $@
 	$(MAKE) -C test $@
 
-update-po: startup
+all headers library clean veryclean binary program doc manpages test update-po: startup dirs
+
+dirs: startup
 
 # Some very common aliases
-.PHONY: maintainer-clean dist-clean distclean pristine sanity 
+.PHONY: maintainer-clean dist-clean distclean pristine sanity
 maintainer-clean dist-clean distclean pristine sanity: veryclean
+veryclean: clean
 
 # The startup target builds the necessary configure scripts. It should
 # be used after a CVS checkout.

+ 13 - 28
apt-pkg/acquire-method.cc

@@ -95,12 +95,7 @@ void pkgAcqMethod::Fail(string Err,bool Transient)
    {
       std::cout << "400 URI Failure\nURI: " << Queue->Uri << "\n"
 		<< "Message: " << Err << " " << IP << "\n";
-      // Dequeue
-      FetchItem *Tmp = Queue;
-      Queue = Queue->Next;
-      delete Tmp;
-      if (Tmp == QueueBack)
-	 QueueBack = Queue;
+      Dequeue();
    }
    else
       std::cout << "400 URI Failure\nURI: <UNKNOWN>\nMessage: " << Err << "\n";
@@ -211,13 +206,7 @@ void pkgAcqMethod::URIDone(FetchResult &Res, FetchResult *Alt)
    }
 
    std::cout << "\n" << std::flush;
-
-   // Dequeue
-   FetchItem *Tmp = Queue;
-   Queue = Queue->Next;
-   delete Tmp;
-   if (Tmp == QueueBack)
-      QueueBack = Queue;
+   Dequeue();
 }
 									/*}}}*/
 // AcqMethod::MediaFail - Syncronous request for new media		/*{{{*/
@@ -423,26 +412,14 @@ void pkgAcqMethod::Status(const char *Format,...)
 									/*}}}*/
 // AcqMethod::Redirect - Send a redirect message                       /*{{{*/
 // ---------------------------------------------------------------------
-/* This method sends the redirect message and also manipulates the queue
-   to keep the pipeline synchronized. */
+/* This method sends the redirect message and dequeues the item as
+ * the worker will enqueue again later on to the right queue */
 void pkgAcqMethod::Redirect(const string &NewURI)
 {
    std::cout << "103 Redirect\nURI: " << Queue->Uri << "\n"
 	     << "New-URI: " << NewURI << "\n"
 	     << "\n" << std::flush;
-
-   // Change the URI for the request.
-   Queue->Uri = NewURI;
-
-   /* To keep the pipeline synchronized, move the current request to
-      the end of the queue, past the end of the current pipeline. */
-   FetchItem *I;
-   for (I = Queue; I->Next != 0; I = I->Next) ;
-   I->Next = Queue;
-   Queue = Queue->Next;
-   I->Next->Next = 0;
-   if (QueueBack == 0)
-      QueueBack = I->Next;
+   Dequeue();
 }
                                                                         /*}}}*/
 // AcqMethod::FetchResult::FetchResult - Constructor			/*{{{*/
@@ -465,3 +442,11 @@ void pkgAcqMethod::FetchResult::TakeHashes(Hashes &Hash)
    SHA512Sum = Hash.SHA512.Result();
 }
 									/*}}}*/
+void pkgAcqMethod::Dequeue() {						/*{{{*/
+   FetchItem const * const Tmp = Queue;
+   Queue = Queue->Next;
+   if (Tmp == QueueBack)
+      QueueBack = Queue;
+   delete Tmp;
+}
+									/*}}}*/

+ 3 - 0
apt-pkg/acquire-method.h

@@ -104,6 +104,9 @@ class pkgAcqMethod
    
    pkgAcqMethod(const char *Ver,unsigned long Flags = 0);
    virtual ~pkgAcqMethod() {};
+
+   private:
+   void Dequeue();
 };
 
 /** @} */

+ 15 - 0
apt-pkg/acquire-worker.cc

@@ -244,6 +244,21 @@ bool pkgAcquire::Worker::RunMessages()
  
             string NewURI = LookupTag(Message,"New-URI",URI.c_str());
             Itm->URI = NewURI;
+
+	    ItemDone();
+
+	    pkgAcquire::Item *Owner = Itm->Owner;
+	    pkgAcquire::ItemDesc Desc = *Itm;
+
+	    // Change the status so that it can be dequeued
+	    Owner->Status = pkgAcquire::Item::StatIdle;
+	    // Mark the item as done (taking care of all queues)
+	    // and then put it in the main queue again
+	    OwnerQ->ItemDone(Itm);
+	    OwnerQ->Owner->Enqueue(Desc);
+
+	    if (Log != 0)
+	       Log->Done(Desc);
             break;
          }
    

+ 34 - 5
apt-pkg/acquire.cc

@@ -244,11 +244,19 @@ void pkgAcquire::Dequeue(Item *Itm)
 {
    Queue *I = Queues;
    bool Res = false;
-   for (; I != 0; I = I->Next)
-      Res |= I->Dequeue(Itm);
-   
    if (Debug == true)
       clog << "Dequeuing " << Itm->DestFile << endl;
+
+   for (; I != 0; I = I->Next)
+   {
+      if (I->Dequeue(Itm))
+      {
+         Res = true;
+	 if (Debug == true)
+	    clog << "Dequeued from " << I->Name << endl;
+      }
+   }
+
    if (Res == true)
       ToFetch--;
 }
@@ -269,9 +277,30 @@ string pkgAcquire::QueueName(string Uri,MethodConfig const *&Config)
    /* Single-Instance methods get exactly one queue per URI. This is
       also used for the Access queue method  */
    if (Config->SingleInstance == true || QueueMode == QueueAccess)
-       return U.Access;
+      return U.Access;
+
+   string AccessSchema = U.Access + ':',
+	FullQueueName = AccessSchema + U.Host;
+   unsigned int Instances = 0, SchemaLength = AccessSchema.length();
+
+   Queue *I = Queues;
+   for (; I != 0; I = I->Next) {
+      // if the queue already exists, re-use it
+      if (I->Name == FullQueueName)
+	 return FullQueueName;
+
+      if (I->Name.compare(0, SchemaLength, AccessSchema) == 0)
+	 Instances++;
+   }
+
+   if (Debug) {
+      clog << "Found " << Instances << " instances of " << U.Access << endl;
+   }
+
+   if (Instances >= (unsigned int)_config->FindI("Acquire::QueueHost::Limit",10))
+      return U.Access;
 
-   return U.Access + ':' + U.Host;
+   return FullQueueName;
 }
 									/*}}}*/
 // Acquire::GetConfig - Fetch the configuration information		/*{{{*/

+ 6 - 0
apt-pkg/algorithms.cc

@@ -58,6 +58,12 @@ pkgSimulate::pkgSimulate(pkgDepCache *Cache) : pkgPackageManager(Cache),
       FileNames[I] = Jnk;
 }
 									/*}}}*/
+// Simulate::~Simulate - Destructor					/*{{{*/
+pkgSimulate::~pkgSimulate()
+{
+   delete[] Flags;
+}
+									/*}}}*/
 // Simulate::Describe - Describe a package				/*{{{*/
 // ---------------------------------------------------------------------
 /* Parameter Current == true displays the current package version,

+ 1 - 0
apt-pkg/algorithms.h

@@ -78,6 +78,7 @@ private:
    public:
 
    pkgSimulate(pkgDepCache *Cache);
+   ~pkgSimulate();
 };
 									/*}}}*/
 class pkgProblemResolver						/*{{{*/

+ 1 - 1
apt-pkg/aptconfiguration.cc

@@ -144,7 +144,7 @@ std::vector<std::string> const Configuration::getLanguages(bool const &All,
 	if (D != 0) {
 		builtin.push_back("none");
 		for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) {
-			string const name = Ent->d_name;
+			string const name = SubstVar(Ent->d_name, "%5f", "_");
 			size_t const foundDash = name.rfind("-");
 			size_t const foundUnderscore = name.rfind("_", foundDash);
 			if (foundDash == string::npos || foundUnderscore == string::npos ||

+ 41 - 24
apt-pkg/contrib/fileutl.cc

@@ -81,6 +81,31 @@ class FileFdPrivate {
 	FileFdPrivate() : gz(NULL), bz2(NULL),
 			  compressed_fd(-1), compressor_pid(-1), pipe(false),
 			  openmode(0), seekpos(0) {};
+	bool CloseDown(std::string const &FileName)
+	{
+	   bool Res = true;
+#ifdef HAVE_ZLIB
+	   if (gz != NULL) {
+	      int const e = gzclose(gz);
+	      gz = NULL;
+	      // gzdclose() on empty files always fails with "buffer error" here, ignore that
+	      if (e != 0 && e != Z_BUF_ERROR)
+		 Res &= _error->Errno("close",_("Problem closing the gzip file %s"), FileName.c_str());
+	   }
+#endif
+#ifdef HAVE_BZ2
+	   if (bz2 != NULL) {
+	      BZ2_bzclose(bz2);
+	      bz2 = NULL;
+	   }
+#endif
+	   if (compressor_pid > 0)
+	      ExecWait(compressor_pid, "FileFdCompressor", true);
+	   compressor_pid = -1;
+
+	   return Res;
+	}
+	~FileFdPrivate() { CloseDown(""); }
 };
 
 // RunScripts - Run a set of scripts from a configuration subtree	/*{{{*/
@@ -1171,6 +1196,12 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C
 FileFd::~FileFd()
 {
    Close();
+   if (d != NULL)
+   {
+      d->CloseDown(FileName);
+      delete d;
+      d = NULL;
+   }
 }
 									/*}}}*/
 // FileFd::Read - Read a bit of the file				/*{{{*/
@@ -1397,7 +1428,7 @@ bool FileFd::Seek(unsigned long long To)
 	 if (d->compressed_fd > 0)
 	    if (lseek(d->compressed_fd, 0, SEEK_SET) != 0)
 	       iFd = d->compressed_fd;
-	 if (iFd <= 0)
+	 if (iFd < 0)
 	 {
 	    Flags |= Fail;
 	    return _error->Error("Reopen is not implemented for pipes opened with FileFd::OpenDescriptor()!");
@@ -1670,21 +1701,15 @@ bool FileFd::Close()
    bool Res = true;
    if ((Flags & AutoClose) == AutoClose)
    {
-#ifdef HAVE_ZLIB
-      if (d != NULL && d->gz != NULL) {
-	 int const e = gzclose(d->gz);
-	 // gzdclose() on empty files always fails with "buffer error" here, ignore that
-	 if (e != 0 && e != Z_BUF_ERROR)
-	    Res &= _error->Errno("close",_("Problem closing the gzip file %s"), FileName.c_str());
-      } else
-#endif
-#ifdef HAVE_BZ2
-      if (d != NULL && d->bz2 != NULL)
-	 BZ2_bzclose(d->bz2);
-      else
-#endif
-	 if (iFd > 0 && close(iFd) != 0)
-	    Res &= _error->Errno("close",_("Problem closing the file %s"), FileName.c_str());
+      if ((Flags & Compressed) != Compressed && iFd > 0 && close(iFd) != 0)
+	 Res &= _error->Errno("close",_("Problem closing the file %s"), FileName.c_str());
+
+      if (d != NULL)
+      {
+	 Res &= d->CloseDown(FileName);
+	 delete d;
+	 d = NULL;
+      }
    }
 
    if ((Flags & Replace) == Replace && iFd >= 0) {
@@ -1702,14 +1727,6 @@ bool FileFd::Close()
       if (unlink(FileName.c_str()) != 0)
 	 Res &= _error->WarningE("unlnk",_("Problem unlinking the file %s"), FileName.c_str());
 
-   if (d != NULL)
-   {
-      if (d->compressor_pid > 0)
-	 ExecWait(d->compressor_pid, "FileFdCompressor", true);
-      delete d;
-      d = NULL;
-   }
-
    if (Res == false)
       Flags |= Fail;
    return Res;

+ 1 - 1
apt-pkg/packagemanager.cc

@@ -785,7 +785,7 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
 			   VerIterator V(Cache,*I);
 			   PkgIterator P = V.ParentPkg();
 			   // we are checking for installation as an easy 'protection' against or-groups and (unchosen) providers
-			   if (P->CurrentVer == 0 || P != Pkg || (P.CurrentVer() != V && Cache[P].InstallVer != V))
+			   if (P != Pkg || (P.CurrentVer() != V && Cache[P].InstallVer != V))
 			      continue;
 			   circle = true;
 			   break;

+ 2 - 2
apt-pkg/pkgcachegen.cc

@@ -38,7 +38,7 @@
 typedef std::vector<pkgIndexFile *>::iterator FileIterator;
 template <typename Iter> std::vector<Iter*> pkgCacheGenerator::Dynamic<Iter>::toReMap;
 
-bool IsDuplicateDescription(pkgCache::DescIterator Desc,
+static bool IsDuplicateDescription(pkgCache::DescIterator Desc,
 			    MD5SumValue const &CurMd5, std::string const &CurLang);
 
 using std::string;
@@ -1455,7 +1455,7 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O
 }
 									/*}}}*/
 // IsDuplicateDescription						/*{{{*/
-bool IsDuplicateDescription(pkgCache::DescIterator Desc,
+static bool IsDuplicateDescription(pkgCache::DescIterator Desc,
 			    MD5SumValue const &CurMd5, std::string const &CurLang)
 {
    // Descriptions in the same link-list have all the same md5

+ 1 - 0
apt-pkg/srcrecords.h

@@ -71,6 +71,7 @@ class pkgSrcRecords
       virtual std::string Section() const = 0;
       virtual const char **Binaries() = 0;   // Ownership does not transfer
 
+      //FIXME: Add a parameter to specify which architecture to use for [wildcard] matching
       virtual bool BuildDepends(std::vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) = 0;
       static const char *BuildDepType(unsigned char const &Type);
 

+ 5 - 6
buildlib/configure.mak

@@ -20,16 +20,15 @@ startup: configure $(BUILDDIR)/config.status $(addprefix $(BUILDDIR)/,$(CONVERTE
 buildlib/config.sub:
 	ln -sf /usr/share/misc/config.sub buildlib/config.sub
 buildlib/config.guess:
-	ln -sf /usr/share/misc/config.guess buildlib/config.guess	
+	ln -sf /usr/share/misc/config.guess buildlib/config.guess
 configure: aclocal.m4 configure.in buildlib/config.guess buildlib/config.sub
 	autoconf
 
 aclocal.m4: $(wildcard buildlib/*.m4)
 	aclocal -I buildlib
-	
+
 $(BUILDDIR)/config.status: configure
-	/usr/bin/test -e $(BUILDDIR) || mkdir $(BUILDDIR)	
+	/usr/bin/test -e $(BUILDDIR) || mkdir $(BUILDDIR)
 	(HERE=`pwd`; cd $(BUILDDIR) && $$HERE/configure)
-	
-$(addprefix $(BUILDDIR)/,$(CONVERTED)):
-	(cd $(BUILDDIR) && ./config.status)
+
+$(addprefix $(BUILDDIR)/,$(CONVERTED)): $(BUILDDIR)/config.status

+ 1 - 1
buildlib/copy.mak

@@ -21,7 +21,7 @@ veryclean: veryclean/$(LOCAL)
 
 MKDIRS += $(dir $($(LOCAL)-LIST))
 
-$($(LOCAL)-LIST) : $(TO)/% : %
+$($(LOCAL)-LIST) : $(TO)/% : % dirs
 	echo Installing $< to $(@D)
 	cp $< $(@D)
 

+ 1 - 1
buildlib/defaults.mak

@@ -121,7 +121,7 @@ MKDIRS := $(BIN)
 all: dirs binary doc
 binary: library program
 maintainer-clean dist-clean distclean pristine sanity: veryclean
-startup headers library clean veryclean program test update-po:
+startup headers library clean veryclean program test update-po manpages:
 
 veryclean:
 	echo Very Clean done for $(SUBDIR)

+ 2 - 1
buildlib/manpage.mak

@@ -14,7 +14,8 @@ LOCAL := manpage-$(firstword $(SOURCE))
 $(LOCAL)-LIST := $(addprefix $(DOC)/,$(SOURCE))
 
 # Install generation hooks
-doc: $($(LOCAL)-LIST)
+doc: manpages
+manpages: $($(LOCAL)-LIST)
 veryclean: veryclean/$(LOCAL)
 
 MKDIRS += $(DOC)

+ 6 - 2
buildlib/po4a_manpage.mak

@@ -16,7 +16,7 @@ INCLUDES = apt.ent apt-verbatim.ent
 # Do not use XMLTO, build the manpages directly with XSLTPROC
 ifdef XSLTPROC
 
-STYLESHEET=../manpage-style.xsl
+STYLESHEET=manpage-style.xsl
 
 LOCAL := po4a-manpage-$(firstword $(SOURCE))
 $(LOCAL)-LIST := $(SOURCE)
@@ -28,7 +28,11 @@ veryclean: veryclean/$(LOCAL)
 apt-verbatim.ent: ../apt-verbatim.ent
 	cp ../apt-verbatim.ent .
 
-$($(LOCAL)-LIST) :: % : %.xml $(INCLUDES)
+manpage-style.xsl: ../manpage-style.xsl
+	sed "/<!-- LANGUAGE -->/ i\
+<xsl:param name=\"l10n.gentext.default.language\" select=\"'$(LC)'\" />" ../manpage-style.xsl > manpage-style.xsl
+
+$($(LOCAL)-LIST) :: % : %.xml $(STYLESHEET) $(INCLUDES)
 	echo Creating man page $@
 	$(XSLTPROC) -o $@ $(STYLESHEET) $< || exit 200 # why xsltproc doesn't respect the -o flag here???
 	test -f $(subst .$(LC),,$@) || echo FIXME: xsltproc respect the -o flag now, workaround can be removed

+ 3 - 3
buildlib/podomain.mak

@@ -11,9 +11,9 @@ MY_DOMAIN := $(APT_DOMAIN)
 endif
 
 MKDIRS += $(PO_DOMAINS)/$(MY_DOMAIN)
-$(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: SRC := $(addprefix $(SUBDIR)/,$(SOURCE))
-$(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: makefile
-	(echo $(SRC) | xargs -n1 echo) > $@
+$(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: $(addprefix $(BASE)/$(SUBDIR)/,$(SOURCE))
+$(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: makefile dirs
+	(echo $(addprefix $(SUBDIR)/,$(SOURCE)) | xargs -n1 echo) > $@
 startup binary program clean: $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list
 
 veryclean: veryclean/$(LOCAL)

+ 12 - 2
cmdline/apt-get.cc

@@ -2789,8 +2789,18 @@ bool DoBuildDep(CommandLine &CmdL)
             
       // Process the build-dependencies
       vector<pkgSrcRecords::Parser::BuildDepRec> BuildDeps;
-      if (Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only", false), StripMultiArch) == false)
-      	return _error->Error(_("Unable to get build-dependency information for %s"),Src.c_str());
+      // FIXME: Can't specify architecture to use for [wildcard] matching, so switch default arch temporary
+      if (hostArch.empty() == false)
+      {
+	 std::string nativeArch = _config->Find("APT::Architecture");
+	 _config->Set("APT::Architecture", hostArch);
+	 bool Success = Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only", false), StripMultiArch);
+	 _config->Set("APT::Architecture", nativeArch);
+	 if (Success == false)
+	    return _error->Error(_("Unable to get build-dependency information for %s"),Src.c_str());
+      }
+      else if (Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only", false), StripMultiArch) == false)
+	    return _error->Error(_("Unable to get build-dependency information for %s"),Src.c_str());
    
       // Also ensure that build-essential packages are present
       Configuration::Item const *Opts = _config->Tree("APT::Build-Essential");

+ 64 - 0
debian/changelog

@@ -1,3 +1,67 @@
+apt (0.9.4) UNRELEASED; urgency=low
+
+  [ David Kalnischkies ]
+  * methods/http.cc:
+    - after many years of pointless discussions disable http/1.1 pipelining
+      by default as many webservers and proxies seem to be unable to conform
+      to specification must's (rfc2616 section 8.1.2.2) (LP: #996151)
+    - add spaces around PACKAGE_VERSION to fix FTBFS with -std=c++11
+  * apt-pkg/pkgcachegen.cc:
+    - make IsDuplicatedDescription static so that it is really private
+      as we don't need a symbol for it as it is not in a header
+  * Makefile, buildlib/*.mak:
+    - reshuffle dependencies so that parallel building seems to work
+    - separate manpages from the rest of the doc building
+  * prepare-release:
+    - apt-inst version isn't apt versions, so don't override variable
+  * debian/rules:
+    - apt-utils packages manpages, so it should depend on build-doc
+    - make apt and apt-utils packages depend on manpages instead of full doc
+  * debian/control:
+    - move doxygen and debiandoc-sgml to Build-Depends-Indep as docs
+      are no longer build in the same target as the manpages
+  * apt-pkg/acquire-methods.cc:
+    - factor out into private Dequeue() to fix access to deleted pointer
+  * apt-pkg/contrib/fileutl.cc:
+    - ensure that we close compressed fds, wait for forks and such even if
+      the FileFd itself is set to not autoclose the given Fd
+  * cmdline/apt-get.cc:
+    - use the host architecture, not the build architecture for matching
+      of [architecture restrictions] in Build-Depends (Closes: #672927)
+  * doc/makefile:
+    - build manpages with the correct l10n.gentext.default.language setting
+      to get the correct section titles provided by docbook
+  * doc/po/de.po:
+    - updated german manpage translation by Chris Leick, thanks!
+  * apt-pkg/packagemanager.cc:
+    - do not run into loop on new-pre-depends-breaks (Closes: #673536)
+  * doc/*.xml:
+    - add a few translator notes and reword some paragraphs to ensure that
+      translators and users alike can better understand them (Closes: #669409)
+    - in <term> mark all options with <option> and mark <term><option>
+      as untranslated for po4a removing ~200 unless "translateable" strings
+  * apt-pkg/aptconfiguration.cc:
+    - longcode Translation files are saved with encoded underscore,
+      so make sure to pick these files up as well for Acquire::Languages
+  * ftparchive/writer.cc:
+    - include Contents-* files in Release files (Closes: #673647)
+
+  [ Raphael Geissert ]
+  * apt-pkg/acquire*.cc:
+    - handle redirections in the worker with the right method instead of
+      in the method the redirection occured in (Closes: #668111)
+  * methods/http.cc:
+    - forbid redirects to change protocol
+  * methods/mirror.cc:
+    - generate an equal sign also for the first arch (Closes: #669142)
+
+
+  [ Marius Vollmer ]
+  * apt-pkg/algorithms.cc:
+    - fix memory leak of Flags in pkgSimulate by a proper destructor
+
+ -- David Kalnischkies <kalnischkies@gmail.com>  Fri, 11 May 2012 23:26:59 +0200
+
 apt (0.9.3) unstable; urgency=low
 
   [ David Kalnischkies ]

+ 3 - 2
debian/control

@@ -8,8 +8,9 @@ Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>,
 Standards-Version: 3.9.3
 Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 8.1.3~), libdb-dev,
  gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.0),
- zlib1g-dev, libbz2-dev, debiandoc-sgml, xsltproc, docbook-xsl, docbook-xml,
- po4a (>= 0.34-2), autotools-dev, autoconf, automake, doxygen
+ zlib1g-dev, libbz2-dev, xsltproc, docbook-xsl, docbook-xml,
+ po4a (>= 0.34-2), autotools-dev, autoconf, automake
+Build-Depends-Indep: debiandoc-sgml, doxygen
 Build-Conflicts: autoconf2.13, automake1.4
 Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/
 Vcs-Browser: http://bzr.debian.org/loggerhead/apt/debian-sid/

+ 0 - 1
debian/libapt-pkg4.12.symbols

@@ -1530,4 +1530,3 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER#
  (c++|optional=private)"pkgCacheGenerator::MergeListVersion(pkgCacheGenerator::ListParser&, pkgCache::PkgIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgCache::VerIterator*&)@Base" 0.8.16~exp7
  (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator&, pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.16~exp7
  (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::VerIterator&, pkgCache::PkgIterator&)@Base" 0.8.16~exp7
- (c++|optional=internal)"IsDuplicateDescription(pkgCache::DescIterator, HashSumValue<128> const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp7

+ 10 - 4
debian/rules

@@ -67,7 +67,8 @@ LIBAPT_INST=libapt-inst$(LIBAPTINST_MAJOR)
 export DPKG_GENSYMBOLS_CHECK_LEVEL=0
 
 build: build/build-stamp
-build-doc: build/build-doc-stamp
+build-doc: build-manpages build/build-doc-stamp
+build-manpages: build/build-manpages-stamp
 
 # Note that this is unconditionally done first as part of loading environment.mak
 # The true is needed to force make to reload environment.mak after running
@@ -97,11 +98,16 @@ else
 endif
 	touch $@
 
-build/build-doc-stamp: build/configure-stamp
+build/build-doc-stamp: build/build-manpages-stamp build/configure-stamp
 	# Add here commands to compile the package.
 	$(MAKE) doc
 	touch $@
 
+build/build-manpages-stamp: build/configure-stamp
+	# Add here commands to compile the package.
+	$(MAKE) manpages
+	touch $@
+
 clean:
 	dh_testdir
 
@@ -167,7 +173,7 @@ apt-doc: build-doc
 
 binary-arch: $(LIBAPT_PKG) $(LIBAPT_INST) apt libapt-pkg-dev apt-utils apt-transport-https
 apt_MANPAGES = apt-cache apt-cdrom apt-config apt-get apt-key apt-mark apt-secure apt apt.conf apt_preferences sources.list
-apt: build build-doc
+apt: build build-manpages
 	dh_testdir -p$@
 	dh_testroot -p$@
 	dh_prep -p$@
@@ -231,7 +237,7 @@ libapt-pkg-dev: build debian/libapt-pkg-dev.install
 	dh_builddeb -p$@
 
 apt-utils_MANPAGES = apt-sortpkgs apt-ftparchive apt-extracttemplates
-apt-utils: build
+apt-utils: build build-manpages
 	dh_testdir -p$@
 	dh_testroot -p$@
 	dh_prep -p$@

+ 19 - 21
doc/apt-cache.8.xml

@@ -18,7 +18,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>04 February 2011</date>
+   <date>2012-05-21T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -45,14 +45,12 @@
    commands below must be present.</para>
 
    <variablelist>
-     <varlistentry><term>gencaches</term>
-     <listitem><para><literal>gencaches</literal> performs the same operation as 
-     <command>apt-get check</command>. It builds the source and package caches from 
-     the sources in &sources-list; and from
-     <filename>/var/lib/dpkg/status</filename>.</para></listitem>
+     <varlistentry><term><option>gencaches</option></term>
+     <listitem><para><literal>gencaches</literal> creates APT's package cache. This is done
+     implicitly by all commands needing this cache if it is missing or outdated.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>showpkg <replaceable>pkg(s)</replaceable></term>
+     <varlistentry><term><option>showpkg</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
      <listitem><para><literal>showpkg</literal> displays information about the packages listed on the 
      command line. Remaining arguments are package names. The available 
      versions and reverse dependencies of each package listed are listed, as 
@@ -86,7 +84,7 @@ Reverse Provides:
      is best to consult the apt source code.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>stats</term><listitem><para><literal>stats</literal> displays some statistics about the cache.
+     <varlistentry><term><option>stats</option></term><listitem><para><literal>stats</literal> displays some statistics about the cache.
      No further arguments are expected. Statistics reported are:
      <itemizedlist>
        <listitem><para><literal>Total package names</literal> is the number of package names found 
@@ -141,34 +139,34 @@ Reverse Provides:
      </para></listitem>
      </varlistentry>
      
-     <varlistentry><term>showsrc <replaceable>pkg(s)</replaceable></term>
+     <varlistentry><term><option>showsrc</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
      <listitem><para><literal>showsrc</literal> displays all the source package records that match
      the given package names. All versions are shown, as well as all 
      records that declare the name to be a Binary.</para></listitem>
      </varlistentry>
      
-     <varlistentry><term>dump</term>
+     <varlistentry><term><option>dump</option></term>
      <listitem><para><literal>dump</literal> shows a short listing of every package in the cache. It is 
      primarily for debugging.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>dumpavail</term>
+     <varlistentry><term><option>dumpavail</option></term>
      <listitem><para><literal>dumpavail</literal> prints out an available list to stdout. This is 
      suitable for use with &dpkg; and is used by the &dselect; method.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>unmet</term>
+     <varlistentry><term><option>unmet</option></term>
      <listitem><para><literal>unmet</literal> displays a summary of all unmet dependencies in the 
      package cache.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>show <replaceable>pkg(s)</replaceable></term>
+     <varlistentry><term><option>show</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
      <listitem><para><literal>show</literal> performs a function similar to 
      <command>dpkg --print-avail</command>; it displays the package records for the 
      named packages.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>search <replaceable>regex [ regex ... ]</replaceable></term>
+     <varlistentry><term><option>search</option> <option><replaceable>&synopsis-regex;</replaceable>…</option></term>
      <listitem><para><literal>search</literal> performs a full text search on all available package
      lists for the POSIX regex pattern given, see 
      <citerefentry><refentrytitle><command>regex</command></refentrytitle>
@@ -186,17 +184,17 @@ Reverse Provides:
      are and'ed together.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>depends <replaceable>pkg(s)</replaceable></term>
+     <varlistentry><term><option>depends</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
      <listitem><para><literal>depends</literal> shows a listing of each dependency a package has 
      and all the possible other packages that can fulfill that dependency.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>rdepends <replaceable>pkg(s)</replaceable></term>
+     <varlistentry><term><option>rdepends</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
      <listitem><para><literal>rdepends</literal> shows a listing of each reverse dependency a
       package has.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>pkgnames <replaceable>[ prefix ]</replaceable></term>
+     <varlistentry><term><option>pkgnames</option> <optional><replaceable>&synopsis-prefix;</replaceable></optional></term>
      <listitem><para>This command prints the name of each package APT knows. The optional
      argument is a prefix match to filter the name list. The output is suitable
      for use in a shell tab complete function and the output is generated 
@@ -207,7 +205,7 @@ Reverse Provides:
      </para></listitem>
      </varlistentry>
      
-     <varlistentry><term>dotty <replaceable>pkg(s)</replaceable></term>
+     <varlistentry><term><option>dotty</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
      <listitem><para><literal>dotty</literal> takes a list of packages on the command line and 
      generates output suitable for use by dotty from the 
      <ulink url="http://www.research.att.com/sw/tools/graphviz/">GraphViz</ulink>
@@ -225,19 +223,19 @@ Reverse Provides:
      <para>Caution, dotty cannot graph larger sets of packages.</para></listitem>
      </varlistentry>
      
-     <varlistentry><term>xvcg <replaceable>pkg(s)</replaceable></term>
+     <varlistentry><term><option>xvcg</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
 	 <listitem><para>The same as <literal>dotty</literal>, only for xvcg from the
 	 <ulink url="http://rw4.cs.uni-sb.de/users/sander/html/gsvcg1.html">VCG tool</ulink>.
 	 </para></listitem></varlistentry>
 
-     <varlistentry><term>policy <replaceable>[ pkg(s) ]</replaceable></term>
+	 <varlistentry><term><option>policy</option> <optional><replaceable>&synopsis-pkg;</replaceable>…</optional></term>
      <listitem><para><literal>policy</literal> is meant to help debug issues relating to the 
      preferences file. With no arguments it will print out the 
      priorities of each source. Otherwise it prints out detailed information
      about the priority selection of the named package.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>madison <replaceable>[ pkg(s) ]</replaceable></term>
+     <varlistentry><term><option>madison</option> <option><replaceable>&synopsis-pkg;</replaceable>…</option></term>
      <listitem><para><literal>apt-cache</literal>'s <literal>madison</literal> command attempts to mimic
      the output format and a subset of the functionality of the Debian
      archive management tool, <literal>madison</literal>.  It displays

+ 3 - 3
doc/apt-cdrom.8.xml

@@ -17,7 +17,7 @@
    &apt-author.team;
    &apt-email;
    &apt-product;
-   <date>14 February 2004</date>
+   <date>2004-02-14T00:00:00Z</date>
  </refentryinfo>
 
  <refmeta>
@@ -52,7 +52,7 @@
     given one of the commands below must be present.
    
     <variablelist>
-     <varlistentry><term>add</term>
+     <varlistentry><term><option>add</option></term>
      <listitem><para><literal>add</literal> is used to add a new disc to the
      source list. It will unmount the
      CDROM device, prompt for a disk to be inserted and then proceed to 
@@ -68,7 +68,7 @@
      </listitem>
      </varlistentry>
      
-     <varlistentry><term>ident</term>
+     <varlistentry><term><option>ident</option></term>
      <listitem><para>A debugging tool to report the identity of the current
       disc as well as the stored file name
      </para>

+ 7 - 6
doc/apt-config.8.xml

@@ -18,7 +18,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>29 February 2004</date>
+   <date>2012-05-11T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -46,7 +46,7 @@
    </para>
    
    <variablelist>
-     <varlistentry><term>shell</term>
+     <varlistentry><term><option>shell</option></term>
      <listitem><para>
      shell is used to access the configuration information from a shell 
      script. It is given pairs of arguments, the first being a shell 
@@ -72,7 +72,7 @@ eval $RES
      </listitem>
      </varlistentry>
 
-     <varlistentry><term>dump</term>
+     <varlistentry><term><option>dump</option></term>
      <listitem><para>
      Just show the contents of the configuration space.</para>
      </listitem>
@@ -93,9 +93,10 @@ eval $RES
 
      <varlistentry>
       <term><option>--format '<replaceable>&percnt;f &#x0022;&percnt;v&#x0022;;&percnt;n</replaceable>'</option></term>
-      <listitem><para>Defines the output of each config option. &percnt;t will be replaced with the tagname,
-		      &percnt;f with the complete tagname and &percnt;v with the value of the option.
-		      Use uppercase letters and the respective values will be quoted. Additionally
+      <listitem><para>Defines the output of each config option. &percnt;t will be replaced with the name of the option,
+		      &percnt;f with the complete optionname and &percnt;v with the value of the option.
+		      Use uppercase letters and special characters in the value will be encoded to ensure that
+		      it can e.g. be savely used in a quoted-string as defined by RFC822. Additionally
 		      &percnt;n will be replaced by a newline, &percnt;N by a tab. A &percnt; can be
 		      printed by using &percnt;&percnt;.</para></listitem>
      </varlistentry>

+ 4 - 3
doc/apt-extracttemplates.1.xml

@@ -18,7 +18,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>29 February 2004</date>
+   <date>2004-02-29T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -43,8 +43,9 @@
    in the format:</para>
    <para>package version template-file config-script</para>
    <para>template-file and config-script are written to the temporary directory
-   specified by the -t or --tempdir (<literal>APT::ExtractTemplates::TempDir</literal>) 
-   directory, with filenames of the form <filename>package.template.XXXX</filename> and 
+   specified by the <option>-t</option> or <option>--tempdir</option>
+   (<literal>APT::ExtractTemplates::TempDir</literal>) directory,
+   with filenames of the form <filename>package.template.XXXX</filename> and
    <filename>package.config.XXXX</filename></para>
  </refsect1>
  

+ 51 - 51
doc/apt-ftparchive.1.xml

@@ -18,7 +18,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>17 August 2009</date>
+   <date>2009-08-17T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -55,7 +55,7 @@
    commands below must be present.</para>
    
    <variablelist>
-     <varlistentry><term>packages</term>
+     <varlistentry><term><option>packages</option></term>
      <listitem><para>
      The packages command generates a package file from a directory tree. It
      takes the given directory and recursively searches it for .deb files, 
@@ -65,7 +65,7 @@
      <para>The option <option>--db</option> can be used to specify a binary caching DB.</para></listitem>
      </varlistentry>
      
-     <varlistentry><term>sources</term>
+     <varlistentry><term><option>sources</option></term>
      <listitem><para>
      The <literal>sources</literal> command generates a source index file from a directory tree. 
      It takes the given directory and recursively searches it for .dsc files,
@@ -77,7 +77,7 @@
      used to change the source override file that will be used.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>contents</term>
+     <varlistentry><term><option>contents</option></term>
      <listitem><para>
      The <literal>contents</literal> command generates a contents file from a directory tree. It
      takes the given directory and recursively searches it for .deb files, 
@@ -89,7 +89,7 @@
      The option <option>--db</option> can be used to specify a binary caching DB.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>release</term>
+     <varlistentry><term><option>release</option></term>
      <listitem><para>
      The <literal>release</literal> command generates a Release file from a
      directory tree. It recursively searches the given directory for uncompressed
@@ -112,7 +112,7 @@
 
      </varlistentry>
 
-     <varlistentry><term>generate</term>
+     <varlistentry><term><option>generate</option></term>
      <listitem><para>
      The <literal>generate</literal> command is designed to be runnable from a cron script and
      builds indexes according to the given config file. The config language
@@ -121,7 +121,7 @@
      required settings.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>clean</term>
+     <varlistentry><term><option>clean</option></term>
      <listitem><para>
      The <literal>clean</literal> command tidies the databases used by the given 
      configuration file by removing any records that are no longer necessary.</para></listitem>
@@ -148,24 +148,24 @@
      directories are prepended certain relative paths defined in later 
      sections to produce a complete an absolute path.</para>
      <variablelist>     
-      <varlistentry><term>ArchiveDir</term>
+      <varlistentry><term><option>ArchiveDir</option></term>
       <listitem><para>
       Specifies the root of the FTP archive, in a standard
       Debian configuration this is the directory that contains the 
       <filename>ls-LR</filename> and dist nodes.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>OverrideDir</term>
+      <varlistentry><term><option>OverrideDir</option></term>
       <listitem><para>
       Specifies the location of the override files.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>CacheDir</term>
+      <varlistentry><term><option>CacheDir</option></term>
       <listitem><para>
       Specifies the location of the cache files</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>FileListDir</term>
+      <varlistentry><term><option>FileListDir</option></term>
       <listitem><para>
       Specifies the location of the file list files, 
       if the <literal>FileList</literal> setting is used below.</para></listitem>
@@ -179,7 +179,7 @@
      that control the operation of the generator. Other sections may override 
      these defaults with a per-section setting.</para>
      <variablelist>     
-      <varlistentry><term>Packages::Compress</term>
+      <varlistentry><term><option>Packages::Compress</option></term>
       <listitem><para>
       Sets the default compression schemes to use 
       for the Package index files. It is a string that contains a space 
@@ -187,51 +187,51 @@
       'bzip2'. The default for all compression schemes is '. gzip'.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>Packages::Extensions</term>
+      <varlistentry><term><option>Packages::Extensions</option></term>
       <listitem><para>
       Sets the default list of file extensions that are package files.
       This defaults to '.deb'.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Sources::Compress</term>
+      <varlistentry><term><option>Sources::Compress</option></term>
       <listitem><para>
       This is similar to <literal>Packages::Compress</literal> 
       except that it controls the compression for the Sources files.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Sources::Extensions</term>
+      <varlistentry><term><option>Sources::Extensions</option></term>
       <listitem><para>
       Sets the default list of file extensions that are source files.
       This defaults to '.dsc'.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Contents::Compress</term>
+      <varlistentry><term><option>Contents::Compress</option></term>
       <listitem><para>
       This is similar to <literal>Packages::Compress</literal> 
       except that it controls the compression for the Contents files.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>Translation::Compress</term>
+      <varlistentry><term><option>Translation::Compress</option></term>
       <listitem><para>
       This is similar to <literal>Packages::Compress</literal> 
       except that it controls the compression for the Translation-en master file.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>DeLinkLimit</term>
+      <varlistentry><term><option>DeLinkLimit</option></term>
       <listitem><para>
       Specifies the number of kilobytes to delink (and 
       replace with hard links) per run. This is used in conjunction with the 
       per-section <literal>External-Links</literal> setting.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>FileMode</term>
+      <varlistentry><term><option>FileMode</option></term>
       <listitem><para>
       Specifies the mode of all created index files. It 
       defaults to 0644. All index files are set to this mode with no regard 
       to the umask.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>LongDescription</term>
+      <varlistentry><term><option>LongDescription</option></term>
       <listitem><para>
       Sets if long descriptions should be included in the Packages file or split
       out into a master Translation-en file.</para></listitem>
@@ -246,14 +246,14 @@
      $(SECTION) and $(ARCH) replaced with their respective values.</para>
      
      <variablelist>     
-      <varlistentry><term>MaxContentsChange</term>
+      <varlistentry><term><option>MaxContentsChange</option></term>
       <listitem><para>
       Sets  the number of kilobytes of contents 
       files that are generated each day. The contents files are round-robined
       so that over several days they will all be rebuilt.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>ContentsAge</term>
+      <varlistentry><term><option>ContentsAge</option></term>
       <listitem><para>
       Controls the number of days a contents file is allowed
       to be checked without changing. If this limit is passed the mtime of the 
@@ -264,45 +264,45 @@
       the units are in days.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Directory</term>
+      <varlistentry><term><option>Directory</option></term>
       <listitem><para>
       Sets the top of the .deb directory tree. Defaults to
       <filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename></para></listitem>
       </varlistentry>
       
-      <varlistentry><term>SrcDirectory</term>
+      <varlistentry><term><option>SrcDirectory</option></term>
       <listitem><para>
       Sets the top of the source package directory tree. Defaults to
       <filename>$(DIST)/$(SECTION)/source/</filename></para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Packages</term>
+      <varlistentry><term><option>Packages</option></term>
       <listitem><para>
       Sets the output Packages file. Defaults to 
       <filename>$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename></para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Sources</term>
+      <varlistentry><term><option>Sources</option></term>
       <listitem><para>
       Sets the output Sources file. Defaults to 
       <filename>$(DIST)/$(SECTION)/source/Sources</filename></para></listitem>
       </varlistentry>
 
-      <varlistentry><term>Translation</term>
+      <varlistentry><term><option>Translation</option></term>
       <listitem><para>
       Set the output Translation-en master file with the long descriptions if they
       should be not included in the Packages file. Defaults to
       <filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename></para></listitem>
       </varlistentry>
 
-      <varlistentry><term>InternalPrefix</term>
+      <varlistentry><term><option>InternalPrefix</option></term>
       <listitem><para>
       Sets the path prefix that causes a symlink to be
       considered an internal link instead of an external link. Defaults to
       <filename>$(DIST)/$(SECTION)/</filename></para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Contents</term>
+      <varlistentry><term><option>Contents</option></term>
       <listitem><para>
       Sets the output Contents file. Defaults to
       <filename>$(DIST)/Contents-$(ARCH)</filename>. If this setting causes multiple 
@@ -311,25 +311,25 @@
       together automatically.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Contents::Header</term>
+      <varlistentry><term><option>Contents::Header</option></term>
       <listitem><para>
       Sets header file to prepend to the contents output.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>BinCacheDB</term>
+      <varlistentry><term><option>BinCacheDB</option></term>
       <listitem><para>
       Sets the binary cache database to use for this 
       section. Multiple sections can share the same database.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>FileList</term>
+      <varlistentry><term><option>FileList</option></term>
       <listitem><para>
       Specifies that instead of walking the directory tree, 
       <command>apt-ftparchive</command> should read the list of files from the given 
       file. Relative files names are prefixed with the archive directory.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>SourceFileList</term>
+      <varlistentry><term><option>SourceFileList</option></term>
       <listitem><para>
       Specifies that instead of walking the directory tree, 
       <command>apt-ftparchive</command> should read the list of files from the given 
@@ -363,44 +363,44 @@ for i in Sections do
      </programlisting></para>
 
      <variablelist>     
-      <varlistentry><term>Sections</term>
+      <varlistentry><term><option>Sections</option></term>
       <listitem><para>
       This is a space separated list of sections which appear 
       under the distribution, typically this is something like 
       <literal>main contrib non-free</literal></para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Architectures</term>
+      <varlistentry><term><option>Architectures</option></term>
       <listitem><para>
       This is a space separated list of all the 
       architectures that appear under search section. The special architecture 
       'source' is used to indicate that this tree has a source archive.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>LongDescription</term>
+      <varlistentry><term><option>LongDescription</option></term>
       <listitem><para>
       Sets if long descriptions should be included in the Packages file or split
       out into a master Translation-en file.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>BinOverride</term>
+      <varlistentry><term><option>BinOverride</option></term>
       <listitem><para>
       Sets the binary override file. The override file 
       contains section, priority and maintainer address information.</para></listitem>
       </varlistentry>
 
-      <varlistentry><term>SrcOverride</term>
+      <varlistentry><term><option>SrcOverride</option></term>
       <listitem><para>
       Sets the source override file. The override file 
       contains section information.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>ExtraOverride</term>
+      <varlistentry><term><option>ExtraOverride</option></term>
       <listitem><para>
       Sets the binary extra override file.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>SrcExtraOverride</term>
+      <varlistentry><term><option>SrcExtraOverride</option></term>
       <listitem><para>
       Sets the source extra override file.</para></listitem> 
       </varlistentry>
@@ -415,53 +415,53 @@ for i in Sections do
      section with no substitution variables or
      <literal>Section</literal><literal>Architecture</literal> settings.</para>
      <variablelist>
-      <varlistentry><term>Packages</term>
+      <varlistentry><term><option>Packages</option></term>
       <listitem><para>
       Sets the Packages file output.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Sources</term>
+      <varlistentry><term><option>Sources</option></term>
       <listitem><para>
       Sets the Sources file output. At least one of
       <literal>Packages</literal> or <literal>Sources</literal> is required.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>Contents</term>
+      <varlistentry><term><option>Contents</option></term>
       <listitem><para>
       Sets the Contents file output. (optional)</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>BinOverride</term>
+      <varlistentry><term><option>BinOverride</option></term>
       <listitem><para>
       Sets the binary override file.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>SrcOverride</term>
+      <varlistentry><term><option>SrcOverride</option></term>
       <listitem><para>
       Sets the source override file.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>ExtraOverride</term>
+      <varlistentry><term><option>ExtraOverride</option></term>
       <listitem><para>
       Sets the binary extra override file.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>SrcExtraOverride</term>
+      <varlistentry><term><option>SrcExtraOverride</option></term>
       <listitem><para>
       Sets the source extra override file.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>BinCacheDB</term>
+      <varlistentry><term><option>BinCacheDB</option></term>
       <listitem><para>
       Sets the cache DB.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>PathPrefix</term>
+      <varlistentry><term><option>PathPrefix</option></term>
       <listitem><para>
       Appends a path to all the output paths.</para></listitem>
       </varlistentry>
       
-      <varlistentry><term>FileList, SourceFileList</term>
+      <varlistentry><term><option>FileList</option></term><term><option>SourceFileList</option></term>
       <listitem><para>
       Specifies the file list file.</para></listitem>
       </varlistentry>
@@ -505,7 +505,7 @@ for i in Sections do
    &apt-cmdblurb;
    
    <variablelist>
-     <varlistentry><term><option>--md5</option>, <option>--sha1</option>, <option>--sha256</option></term>
+     <varlistentry><term><option>--md5</option></term><term><option>--sha1</option></term><term><option>--sha256</option></term>
      <listitem><para>
      Generate the given checksum. These options default to on, when turned off the generated
      index files will not have the checksum fields where possible.

+ 22 - 32
doc/apt-get.8.xml

@@ -18,7 +18,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>08 November 2008</date>
+   <date>2012-05-21T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -45,7 +45,7 @@
    commands below must be present.</para>
    
    <variablelist>
-     <varlistentry><term>update</term>
+     <varlistentry><term><option>update</option></term>
      <listitem><para><literal>update</literal> is used to resynchronize the package index files from
      their sources. The indexes of available packages are fetched from the
      location(s) specified in <filename>/etc/apt/sources.list</filename>.
@@ -57,7 +57,7 @@
      of the package files cannot be known in advance.</para></listitem>
      </varlistentry>
      
-     <varlistentry><term>upgrade</term>
+     <varlistentry><term><option>upgrade</option></term>
      <listitem><para><literal>upgrade</literal> is used to install the newest versions of all packages 
      currently installed on the system from the sources enumerated in
      <filename>/etc/apt/sources.list</filename>. Packages currently installed with 
@@ -70,7 +70,7 @@
      available.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>dselect-upgrade</term>
+     <varlistentry><term><option>dselect-upgrade</option></term>
      <listitem><para><literal>dselect-upgrade</literal>
      is used in conjunction with the traditional Debian packaging
      front-end, &dselect;. <literal>dselect-upgrade</literal>
@@ -80,7 +80,7 @@
      packages).</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>dist-upgrade</term>
+     <varlistentry><term><option>dist-upgrade</option></term>
      <listitem><para><literal>dist-upgrade</literal> in addition to performing the function of 
      <literal>upgrade</literal>, also intelligently handles changing dependencies 
      with new versions of packages; <command>apt-get</command> has a "smart" conflict 
@@ -93,7 +93,7 @@
      overriding the general settings for individual packages.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>install</term>
+     <varlistentry><term><option>install</option></term>
      <listitem>
 	 <para><literal>install</literal> is followed by one or more 
 	 packages desired for installation or upgrading. 
@@ -147,7 +147,7 @@
      with a '^' or '$' character, or create a more specific regular expression.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>remove</term>
+     <varlistentry><term><option>remove</option></term>
      <listitem><para><literal>remove</literal> is identical to <literal>install</literal> except that packages are 
 	 removed instead of installed. Note the removing a package leaves its
 	 configuration files in system. If a plus sign is appended to the package 
@@ -155,12 +155,12 @@
      installed instead of removed.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>purge</term>
+     <varlistentry><term><option>purge</option></term>
      <listitem><para><literal>purge</literal> is identical to <literal>remove</literal> except that packages are 
      removed and purged (any configuration files are deleted too).</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>source</term>
+     <varlistentry><term><option>source</option></term>
      <listitem><para><literal>source</literal> causes <command>apt-get</command> to fetch source packages. APT 
      will examine the available packages to decide which source package to 
      fetch. It will then find and download into the current directory the 
@@ -194,25 +194,25 @@
      tar balls.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>build-dep</term>
+     <varlistentry><term><option>build-dep</option></term>
      <listitem><para><literal>build-dep</literal> causes apt-get to install/remove packages in an 
      attempt to satisfy the build dependencies for a source package. By default the dependencies are
      satisfied to build the package natively. If desired a host-architecture can be specified
      with the <option>--host-architecture</option> option instead.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>check</term>
+     <varlistentry><term><option>check</option></term>
      <listitem><para><literal>check</literal> is a diagnostic tool; it updates the package cache and checks 
      for broken dependencies.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>download</term>
+     <varlistentry><term><option>download</option></term>
        <listitem><para><literal>download</literal> will download the given
            binary package into the current directory.
        </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>clean</term>
+     <varlistentry><term><option>clean</option></term>
      <listitem><para><literal>clean</literal> clears out the local repository of retrieved package 
      files. It removes everything but the lock file from 
      <filename>&cachedir;/archives/</filename> and 
@@ -222,7 +222,7 @@
      from time to time to free up disk space.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>autoclean</term>
+     <varlistentry><term><option>autoclean</option></term>
      <listitem><para>Like <literal>clean</literal>, <literal>autoclean</literal> clears out the local 
      repository of retrieved package files. The difference is that it only 
      removes package files that can no longer be downloaded, and are largely 
@@ -232,17 +232,17 @@
      erased if it is set to off.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>autoremove</term>
+     <varlistentry><term><option>autoremove</option></term>
      <listitem><para><literal>autoremove</literal> is used to remove packages that were automatically
      installed to satisfy dependencies for other packages and are now no longer needed.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>changelog</term>
+     <varlistentry><term><option>changelog</option></term>
        <listitem><para><literal>changelog</literal> downloads a package changelog and displays
            it through <command>sensible-pager</command>. The server name and base
            directory is defined in the <literal>APT::Changelogs::Server</literal>
-           variable (e. g. <ulink>http://packages.debian.org/changelogs</ulink> for
-           Debian or <ulink>http://changelogs.ubuntu.com/changelogs</ulink> for
+	   variable (e. g. <ulink url="http://packages.debian.org/changelogs">packages.debian.org/changelogs</ulink> for
+	   Debian or <ulink url="http://changelogs.ubuntu.com/changelogs">changelogs.ubuntu.com/changelogs</ulink> for
            Ubuntu).
            By default it displays the changelog for the version that is
            installed.  However, you can specify the same options as for
@@ -397,9 +397,10 @@
      </varlistentry>
 
      <varlistentry><term><option>--only-upgrade</option></term>
-     <listitem><para>Do not install new packages; When used in conjunction with <literal>install</literal>,
-     <literal>only-upgrade</literal> will prevent packages on the command line
-     from being upgraded if they are not already installed.
+     <listitem><para>Do not install new packages; When used in conjunction
+     with <literal>install</literal>, <literal>only-upgrade</literal> will
+     install upgrades for already installed packages only and ignore requests
+     to install new packages.
      Configuration Item: <literal>APT::Get::Only-Upgrade</literal>.</para></listitem>
      </varlistentry>
 
@@ -534,16 +535,5 @@
  <refsect1><title>Diagnostics</title>
    <para><command>apt-get</command> returns zero on normal operation, decimal 100 on error.</para>
  </refsect1>
- <refsect1>
-	 <title>ORIGINAL AUTHORS</title>
-	 <para>&apt-author.jgunthorpe;</para>
- </refsect1>
- <refsect1>
-	 <title>CURRENT AUTHORS</title>
-	 <para>
-		 &apt-author.team;
-	 </para>
-		 &apt-qapage;
- </refsect1>
  &manbugs;
 </refentry>

+ 23 - 16
doc/apt-key.8.xml

@@ -11,8 +11,15 @@
 ]>
 
 <refentry>
- &apt-docinfo;
- 
+ <refentryinfo>
+   &apt-author.jgunthorpe;
+   &apt-author.team;
+   &apt-email;
+   &apt-product;
+   <!-- The last update date -->
+   <date>2012-05-21T00:00:00Z</date>
+ </refentryinfo>
+
  <refmeta>
    <refentrytitle>apt-key</refentrytitle>
    <manvolnum>8</manvolnum>
@@ -37,19 +44,19 @@
 
 <refsect1><title>Commands</title>
    <variablelist>
-     <varlistentry><term>add &synopsis-param-filename;</term>
+     <varlistentry><term><option>add</option> <option>&synopsis-param-filename;</option></term>
      <listitem>
      <para>
-
-       Add a new key to the list of trusted keys.  The key is read
-       from &synopsis-param-filename;, or standard input if
-       &synopsis-param-filename; is <literal>-</literal>.
+       Add a new key to the list of trusted keys.
+       The key is read from the filename given with the parameter
+       &synopsis-param-filename; or if the filename is <literal>-</literal>
+       from standard input.
      </para>
 
      </listitem>
      </varlistentry>
 
-     <varlistentry><term>del &synopsis-param-keyid;</term>
+     <varlistentry><term><option>del</option> <option>&synopsis-param-keyid;</option></term>
      <listitem>
      <para>
 
@@ -60,7 +67,7 @@
      </listitem>
      </varlistentry>
 
-     <varlistentry><term>export &synopsis-param-keyid;</term>
+     <varlistentry><term><option>export</option> <option>&synopsis-param-keyid;</option></term>
      <listitem>
      <para>
 
@@ -71,7 +78,7 @@
      </listitem>
      </varlistentry>
 
-     <varlistentry><term>exportall</term>
+     <varlistentry><term><option>exportall</option></term>
      <listitem>
      <para>
 
@@ -82,7 +89,7 @@
      </listitem>
      </varlistentry>
 
-     <varlistentry><term>list</term>
+     <varlistentry><term><option>list</option></term>
      <listitem>
      <para>
 
@@ -93,7 +100,7 @@
      </listitem>
      </varlistentry>
      
-	 <varlistentry><term>finger</term>
+     <varlistentry><term><option>finger</option></term>
      <listitem>
      <para>
 
@@ -104,7 +111,7 @@
      </listitem>
      </varlistentry>
      
-	 <varlistentry><term>adv</term>
+     <varlistentry><term><option>adv</option></term>
      <listitem>
      <para>
 
@@ -116,7 +123,7 @@
      </listitem>
      </varlistentry>
 
-     <varlistentry><term>update</term>
+     <varlistentry><term><option>update</option></term>
      <listitem>
      <para>
 
@@ -130,7 +137,7 @@
      </listitem>
      </varlistentry>
      
-     <varlistentry><term>net-update</term>
+     <varlistentry><term><option>net-update</option></term>
      <listitem>
      <para>
 
@@ -153,7 +160,7 @@
  <refsect1><title>Options</title>
 <para>Note that options need to be defined before the commands described in the previous section.</para>
    <variablelist>
-      <varlistentry><term>--keyring &synopsis-param-filename;</term>
+      <varlistentry><term><option>--keyring</option> <option>&synopsis-param-filename;</option></term>
       <listitem><para>With this option it is possible to specify a specific keyring
       file the command should operate on. The default is that a command is executed
       on the <filename>trusted.gpg</filename> file as well as on all parts in the

+ 13 - 13
doc/apt-mark.8.xml

@@ -18,7 +18,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>21 April 2011</date>
+   <date>2011-04-21T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -48,7 +48,7 @@
      <command>apt-get</command> or <command>aptitude</command>.
    </para>
      <variablelist>
-       <varlistentry><term>auto</term>
+     <varlistentry><term><option>auto</option></term>
 	 <listitem><para><literal>auto</literal> is used to mark a
      package as being automatically installed, which will cause the
      package to be removed when no more manually installed packages
@@ -56,7 +56,7 @@
        </para></listitem>
        </varlistentry>
 
-       <varlistentry><term>manual</term>
+     <varlistentry><term><option>manual</option></term>
 	 <listitem><para><literal>manual</literal> is used to mark a
      package as being manually installed, which will prevent the
      package from being automatically removed if no other packages
@@ -64,7 +64,7 @@
        </para></listitem>
        </varlistentry>
 
-       <varlistentry><term>hold</term>
+       <varlistentry><term><option>hold</option></term>
 	 <listitem><para><literal>hold</literal> is used to mark a
        package as hold back, which will prevent the package from being
        automatically installed, upgraded or removed.
@@ -74,13 +74,13 @@
        </para></listitem>
        </varlistentry>
 
-       <varlistentry><term>unhold</term>
+       <varlistentry><term><option>unhold</option></term>
 	 <listitem><para><literal>unhold</literal> is used to cancel a
        previously set hold on a package to allow all actions again.
        </para></listitem>
        </varlistentry>
 
-       <varlistentry><term>showauto</term>
+       <varlistentry><term><option>showauto</option></term>
 	 <listitem><para><literal>showauto</literal> is used to print a
      list of automatically installed packages with each package on a new line.
      All automatically installed packages will be listed if no package is given.
@@ -88,14 +88,14 @@
        </para></listitem>
        </varlistentry>
 
-       <varlistentry><term>showmanual</term>
+       <varlistentry><term><option>showmanual</option></term>
 	 <listitem><para><literal>showmanual</literal> can be used in
      the same way as <literal>showauto</literal> except that it will print
      a list of manually installed packages instead.
        </para></listitem>
        </varlistentry>
 
-       <varlistentry><term>showhold</term>
+       <varlistentry><term><option>showhold</option></term>
 	 <listitem><para><literal>showhold</literal> is used to print a list
      of packages on hold in the same way as for the other show commands.
        </para></listitem>
@@ -109,12 +109,12 @@
    
    <variablelist>
 	<varlistentry>
-		<term><option>-f=<filename><replaceable>FILENAME</replaceable></filename></option></term>
-		<term><option>--file=<filename><replaceable>FILENAME</replaceable></filename></option></term>
+		<term><option>-f=<filename><replaceable>&synopsis-filename;</replaceable></filename></option></term>
+		<term><option>--file=<filename><replaceable>&synopsis-filename;</replaceable></filename></option></term>
      <listitem><para>
-      
-     Read/Write package stats from <filename><replaceable>FILENAME</replaceable></filename>
-     instead of the default location, which
+     Read/Write package stats from the filename given with the parameter
+     <filename><replaceable>&synopsis-filename;</replaceable></filename>
+     instead of from the default location, which
      is <filename>extended_status</filename> in the directory defined
      by the Configuration Item: <literal>Dir::State</literal>.</para></listitem>
      </varlistentry>

+ 9 - 2
doc/apt-secure.8.xml

@@ -11,8 +11,15 @@
 ]>
 
 <refentry>
- &apt-docinfo;
- 
+ <refentryinfo>
+   &apt-author.jgunthorpe;
+   &apt-author.team;
+   &apt-email;
+   &apt-product;
+   <!-- The last update date -->
+   <date>2012-05-21T00:00:00Z</date>
+ </refentryinfo>
+
  <refmeta>
    <refentrytitle>apt-secure</refentrytitle>
    <manvolnum>8</manvolnum>

+ 1 - 1
doc/apt-sortpkgs.1.xml

@@ -18,7 +18,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>29 February 2004</date>
+   <date>2004-02-29T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>

+ 8 - 2
doc/apt-verbatim.ent

@@ -177,6 +177,12 @@
    </author>
 ">
 
+<!ENTITY apt-name.dburrows "
+     <firstname>Daniel</firstname>
+     <surname>Burrows</surname>
+     <email>dburrows@debian.org</email>
+">
+
 <!ENTITY apt-copyright "
     <copyright>
      <holder>Jason Gunthorpe</holder>
@@ -249,10 +255,10 @@
 		<arg choice='plain'>show &synopsis-arg-pkgver;</arg>
 		<arg choice='plain'>depends &synopsis-arg-pkgver;</arg>
 		<arg choice='plain'>rdepends &synopsis-arg-pkgver;</arg>
-		<arg choice='plain'>pkgnames <arg choice='plain'><replaceable>&synopsis-prefix;</replaceable></arg></arg>
+		<arg choice='plain'>pkgnames <arg><replaceable>&synopsis-prefix;</replaceable></arg></arg>
 		<arg choice='plain'>dotty &synopsis-arg-pkgver;</arg>
 		<arg choice='plain'>xvcg &synopsis-arg-pkgver;</arg>
-		<arg choice='plain'>policy &synopsis-arg-pkg;</arg>
+		<arg choice='plain'>policy <arg rep='repeat'><replaceable>&synopsis-pkg;</replaceable></arg></arg>
 		<arg choice='plain'>madison &synopsis-arg-pkg;</arg>
 		&synopsis-help;
 	</group>

+ 101 - 94
doc/apt.conf.5.xml

@@ -16,15 +16,13 @@
    &apt-author.jgunthorpe;
    &apt-author.team;
    <author>
-     <firstname>Daniel</firstname>
-     <surname>Burrows</surname>
+     &apt-name.dburrows;
      <contrib>Initial documentation of Debug::*.</contrib>
-     <email>dburrows@debian.org</email>
    </author>
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>16 January 2010</date>
+   <date>2012-05-21T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -127,14 +125,14 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    <para>All of the APT tools take a -o option which allows an arbitrary configuration 
    directive to be specified on the command line. The syntax is a full option
    name (<literal>APT::Get::Assume-Yes</literal> for instance) followed by an equals
-   sign then the new value of the option. Lists can be appended too by adding 
-   a trailing :: to the list name. (As you might suspect: The scope syntax can't be used
-   on the command line.)</para>
+   sign then the new value of the option. To append a new element to a list, add a
+   trailing :: to the name of the list. (As you might suspect: The scope syntax can't
+   be used on the command line.)</para>
 
    <para>Note that you can use :: only for appending one item per line to a list and
    that you should not use it in combination with the scope syntax.
    (The scope syntax implicit insert ::) Using both syntaxes together will trigger a bug
-   which some users unfortunately relay on: An option with the unusual name "<literal>::</literal>"
+   which some users unfortunately depend on: An option with the unusual name "<literal>::</literal>"
    which acts like every other option with a name. These introduces many problems
    including that a user who writes multiple lines in this <emphasis>wrong</emphasis> syntax in
    the hope to append to a list will gain the opposite as only the last assignment for this option
@@ -148,39 +146,41 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    options for all of the tools.</para>
 
    <variablelist>
-     <varlistentry><term>Architecture</term>
+     <varlistentry><term><option>Architecture</option></term>
      <listitem><para>System Architecture; sets the architecture to use when fetching files and
      parsing package lists. The internal default is the architecture apt was 
      compiled for.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Architectures</term>
-     <listitem><para>All Architectures the system supports. Processors implementing the <literal>amd64</literal>
-     are e.g. also able to execute binaries compiled for <literal>i386</literal>; This list is use when fetching files and
+     <varlistentry><term><option>Architectures</option></term>
+     <listitem><para>All Architectures the system supports. Processors implementing the
+     <literal>amd64</literal> (also called <literal>x86-64</literal>) instruction set are
+     e.g. also able to execute binaries compiled for the <literal>i386</literal>
+     (<literal>x86</literal>) instruction set; This list is use when fetching files and
      parsing package lists. The internal default is always the native architecture (<literal>APT::Architecture</literal>)
      and all foreign architectures it can retrieve by calling <command>dpkg --print-foreign-architectures</command>.
      </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Default-Release</term>
+     <varlistentry><term><option>Default-Release</option></term>
      <listitem><para>Default release to install packages from if more than one
      version available. Contains release name, codename or release version. Examples: 'stable', 'testing',
      'unstable', '&stable-codename;', '&testing-codename;', '4.0', '5.0*'. See also &apt-preferences;.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Ignore-Hold</term>
+     <varlistentry><term><option>Ignore-Hold</option></term>
      <listitem><para>Ignore Held packages; This global option causes the problem resolver to
      ignore held packages in its decision making.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Clean-Installed</term>
+     <varlistentry><term><option>Clean-Installed</option></term>
      <listitem><para>Defaults to on. When turned on the autoclean feature will remove any packages
      which can no longer be downloaded from the cache. If turned off then
      packages that are locally installed are also excluded from cleaning - but
      note that APT provides no direct means to reinstall them.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Immediate-Configure</term>
+     <varlistentry><term><option>Immediate-Configure</option></term>
      <listitem><para>Defaults to on which will cause APT to install essential and important packages
      as fast as possible in the install/upgrade operation. This is done to limit the effect of a failing
      &dpkg; call: If this option is disabled APT does treat an important package in the same way as
@@ -203,7 +203,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      improving or correcting the upgrade process.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Force-LoopBreak</term>
+     <varlistentry><term><option>Force-LoopBreak</option></term>
      <listitem><para>Never Enable this option unless you -really- know what you are doing. It
      permits APT to temporarily remove an essential package to break a
      Conflicts/Conflicts or Conflicts/Pre-Depend loop between two essential
@@ -212,14 +212,14 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      anything that those packages depend on.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Cache-Start, Cache-Grow and Cache-Limit</term>
+     <varlistentry><term><option>Cache-Start</option></term><term><option>Cache-Grow</option></term><term><option>Cache-Limit</option></term>
      <listitem><para>APT uses since version 0.7.26 a resizable memory mapped cache file to store the 'available'
      information. <literal>Cache-Start</literal> acts as a hint to which size the Cache will grow
      and is therefore the amount of memory APT will request at startup. The default value is
-     20971520 bytes (~20 MB). Note that these amount of space need to be available for APT
-     otherwise it will likely fail ungracefully, so for memory restricted devices these value should
-     be lowered while on systems with a lot of configured sources this might be increased.
-     <literal>Cache-Grow</literal> defines in byte with the default of 1048576 (~1 MB) how much
+     20971520 bytes (~20 MB). Note that this amount of space needs to be available for APT
+     otherwise it will likely fail ungracefully, so for memory restricted devices this value should
+     be lowered while on systems with a lot of configured sources it should be increased.
+     <literal>Cache-Grow</literal> defines in bytes with the default of 1048576 (~1 MB) how much
      the Cache size will be increased in the event the space defined by <literal>Cache-Start</literal>
      is not enough. These value will be applied again and again until either the cache is big
      enough to store all information or the size of the cache reaches the <literal>Cache-Limit</literal>.
@@ -228,21 +228,21 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Build-Essential</term>
+     <varlistentry><term><option>Build-Essential</option></term>
      <listitem><para>Defines which package(s) are considered essential build dependencies.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Get</term>
+     <varlistentry><term><option>Get</option></term>
      <listitem><para>The Get subsection controls the &apt-get; tool, please see its
      documentation for more information about the options here.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Cache</term>
+     <varlistentry><term><option>Cache</option></term>
      <listitem><para>The Cache subsection controls the &apt-cache; tool, please see its
      documentation for more information about the options here.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>CDROM</term>
+     <varlistentry><term><option>CDROM</option></term>
      <listitem><para>The CDROM subsection controls the &apt-cdrom; tool, please see its
      documentation for more information about the options here.</para></listitem>
      </varlistentry>
@@ -254,7 +254,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    and the URI handlers. 
 
    <variablelist>
-     <varlistentry><term>Check-Valid-Until</term>
+     <varlistentry><term><option>Check-Valid-Until</option></term>
 	 <listitem><para>Security related option defaulting to true as an
 	 expiring validation for a Release file prevents longtime replay attacks
 	 and can e.g. also help users to identify no longer updated mirrors -
@@ -265,18 +265,18 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
 	 </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Max-ValidTime</term>
+     <varlistentry><term><option>Max-ValidTime</option></term>
 	 <listitem><para>Seconds the Release file should be considered valid after
 	 it was created (indicated by the <literal>Date</literal> header).
 	 If the Release file itself includes a <literal>Valid-Until</literal> header
 	 the earlier date of the two is used as the expiration date.
-	 The default value is <literal>0</literal> which stands for "for ever".
+	 The default value is <literal>0</literal> which stands for "for ever valid".
 	 Archive specific settings can be made by appending the label of the archive
 	 to the option name.
 	 </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Min-ValidTime</term>
+     <varlistentry><term><option>Min-ValidTime</option></term>
 	 <listitem><para>Minimum of seconds the Release file should be considered
 	 valid after it was created (indicated by the <literal>Date</literal> header).
 	 Use this if you need to use a seldomly updated (local) mirror of a more
@@ -287,20 +287,20 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
 	 </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>PDiffs</term>
+     <varlistentry><term><option>PDiffs</option></term>
 	 <listitem><para>Try to download deltas called <literal>PDiffs</literal> for
 	 Packages or Sources files instead of downloading whole ones. True
 	 by default.</para>
 	 <para>Two sub-options to limit the use of PDiffs are also available:
 	 With <literal>FileLimit</literal> can be specified how many PDiff files
-	 are downloaded at most to patch a file. <literal>SizeLimit</literal>
+	 are downloaded at most to update a file. <literal>SizeLimit</literal>
 	 on the other hand is the maximum percentage of the size of all patches
 	 compared to the size of the targeted file. If one of these limits is
 	 exceeded the complete file is downloaded instead of the patches.
 	 </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Queue-Mode</term>
+     <varlistentry><term><option>Queue-Mode</option></term>
      <listitem><para>Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</literal> or 
      <literal>access</literal> which determines how  APT parallelizes outgoing 
      connections. <literal>host</literal> means that one connection per target host 
@@ -308,17 +308,17 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      will be opened.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Retries</term>
+     <varlistentry><term><option>Retries</option></term>
      <listitem><para>Number of retries to perform. If this is non-zero APT will retry failed 
      files the given number of times.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Source-Symlinks</term>
+     <varlistentry><term><option>Source-Symlinks</option></term>
      <listitem><para>Use symlinks for source archives. If set to true then source archives will
      be symlinked when possible instead of copying. True is the default.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>http</term>
+     <varlistentry><term><option>http</option></term>
      <listitem><para>HTTP URIs; http::Proxy is the default http proxy to use. It is in the 
      standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per 
      host proxies can also be specified by using the form 
@@ -340,13 +340,15 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      <para>The option <literal>timeout</literal> sets the timeout timer used by the method, 
      this applies to all things including connection timeout and data timeout.</para>
 
-     <para>One setting is provided to control the pipeline depth in cases where the
-     remote server is not RFC conforming or buggy (such as Squid 2.0.2).
-     <literal>Acquire::http::Pipeline-Depth</literal> can be a value from 0 to 5 
-     indicating how many outstanding requests APT should send. A value of
-     zero MUST be specified if the remote host does not properly linger
-     on TCP connections - otherwise data corruption will occur. Hosts which
-     require this are in violation of RFC 2068.</para>
+     <para>The setting <literal>Acquire::http::Pipeline-Depth</literal> can be used to
+     enabled HTTP pipeling (RFC 2616 section 8.1.2.2) which can be beneficial e.g. on
+     high-latency connections. It specifies how many requests are send in a pipeline.
+     Previous APT versions had a default of 10 for this setting, but the default value
+     is now 0 (= disabled) to avoid problems with the ever-growing amount of webservers
+     and proxies which choose to not conform to the HTTP/1.1 specification.</para>
+
+     <para><literal>Acquire::http::AllowRedirect</literal> controls if APT will follow
+     redirects, which is enabled by default.</para>
 
      <para>The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</literal>
      which accepts integer values in kilobyte. The default value is 0 which deactivates
@@ -359,7 +361,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      </listitem>
      </varlistentry>
 
-     <varlistentry><term>https</term>
+     <varlistentry><term><option>https</option></term>
 	 <listitem><para>HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and
 	 proxy options are the same as for <literal>http</literal> method and will also
 	 default to the options from the <literal>http</literal> method if they are not
@@ -384,7 +386,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
 	 <literal>&lt;host&gt;::SslForceVersion</literal> is corresponding per-host option.
 	 </para></listitem></varlistentry>
 
-     <varlistentry><term>ftp</term>
+     <varlistentry><term><option>ftp</option></term>
      <listitem><para>FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the 
      standard form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per 
      host proxies can also be specified by using the form 
@@ -423,7 +425,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      do not support RFC2428.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>cdrom</term>
+     <varlistentry><term><option>cdrom</option></term>
      <listitem><para>CDROM URIs; the only setting for CDROM URIs is the mount point, 
      <literal>cdrom::Mount</literal> which must be the mount point for the CDROM drive 
      as specified in <filename>/etc/fstab</filename>. It is possible to provide 
@@ -434,13 +436,13 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      commands can be specified using UMount.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>gpgv</term>
+     <varlistentry><term><option>gpgv</option></term>
      <listitem><para>GPGV URIs; the only option for GPGV URIs is the option to pass additional parameters to gpgv.
      <literal>gpgv::Options</literal> Additional options passed to gpgv.
      </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>CompressionTypes</term>
+     <varlistentry><term><option>CompressionTypes</option></term>
      <listitem><para>List of compression types which are understood by the acquire methods.
      Files like <filename>Packages</filename> can be available in various compression formats.
      Per default the acquire methods can decompress <command>bzip2</command>, <command>lzma</command>
@@ -468,7 +470,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      useable for local mirrors.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>GzipIndexes</term>
+     <varlistentry><term><option>GzipIndexes</option></term>
 	 <listitem><para>
 	 When downloading <literal>gzip</literal> compressed indexes (Packages, Sources, or
 	 Translations), keep them gzip compressed locally instead of unpacking
@@ -477,7 +479,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
 	 </para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Languages</term>
+     <varlistentry><term><option>Languages</option></term>
      <listitem><para>The Languages subsection controls which <filename>Translation</filename> files are downloaded
      and in which order APT tries to display the Description-Translations. APT will try to display the first
      available Description in the Language which is listed at first. Languages can be defined with their
@@ -494,7 +496,12 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      actually use them if the environment doesn't specify this languages. So the following example configuration will
      result in the order "en, de" in an english and in "de, en" in a german localization. Note that "fr" is downloaded,
      but not used if APT is not used in a french localization, in such an environment the order would be "fr, de, en".
-     <programlisting>Acquire::Languages { "environment"; "de"; "en"; "none"; "fr"; };</programlisting></para></listitem>
+     <programlisting>Acquire::Languages { "environment"; "de"; "en"; "none"; "fr"; };</programlisting></para>
+     <para>Note: To prevent problems resulting from APT being executed in different environments
+     (e.g. by different users or by other programs) all Translation files which are found in
+     <filename>/var/lib/apt/lists/</filename> will be added to the end of the list
+     (after an implicit "<literal>none</literal>").</para>
+     </listitem>
      </varlistentry>
 
    </variablelist>
@@ -506,7 +513,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    <para>The <literal>Dir::State</literal> section has directories that pertain to local 
    state information. <literal>lists</literal> is the directory to place downloaded 
    package lists in and <literal>status</literal> is the name of the dpkg status file.
-   <literal>preferences</literal> is the name of the APT preferences file.
+   <literal>preferences</literal> is the name of the APT <filename>preferences</filename> file.
    <literal>Dir::State</literal> contains the default directory to prefix on all sub 
    items if they do not start with <filename>/</filename> or <filename>./</filename>.</para>
 
@@ -565,7 +572,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    control the default behaviour. These are in the <literal>DSelect</literal> section.</para>
    
    <variablelist>
-     <varlistentry><term>Clean</term>
+     <varlistentry><term><option>Clean</option></term>
      <listitem><para>Cache Clean mode; this value may be one of always, prompt, auto,
      pre-auto and never.  always and prompt will remove all packages from
      the cache after upgrading, prompt (the default) does so conditionally. 
@@ -574,17 +581,17 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      action before downloading new packages.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>options</term>
+     <varlistentry><term><option>options</option></term>
      <listitem><para>The contents of this variable is passed to &apt-get; as command line
      options when it is run for the install phase.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Updateoptions</term>
+     <varlistentry><term><option>Updateoptions</option></term>
      <listitem><para>The contents of this variable is passed to &apt-get; as command line
      options when it is run for the update phase.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>PromptAfterUpdate</term>
+     <varlistentry><term><option>PromptAfterUpdate</option></term>
      <listitem><para>If true the [U]pdate operation in &dselect; will always prompt to continue. 
      The default is to prompt only on error.</para></listitem>
      </varlistentry>
@@ -596,20 +603,20 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    in the <literal>DPkg</literal> section.</para>
 
    <variablelist>
-     <varlistentry><term>options</term>
+     <varlistentry><term><option>options</option></term>
      <listitem><para>This is a list of options to pass to dpkg. The options must be specified
      using the list notation and each list item is passed as a single argument
      to &dpkg;.</para></listitem>
      </varlistentry>
      
-     <varlistentry><term>Pre-Invoke</term><term>Post-Invoke</term>
+     <varlistentry><term><option>Pre-Invoke</option></term><term><option>Post-Invoke</option></term>
      <listitem><para>This is a list of shell commands to run before/after invoking &dpkg;. 
      Like <literal>options</literal> this must be specified in list notation. The 
      commands are invoked in order using <filename>/bin/sh</filename>, should any 
      fail APT will abort.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Pre-Install-Pkgs</term>
+     <varlistentry><term><option>Pre-Install-Pkgs</option></term>
      <listitem><para>This is a list of shell commands to run before invoking dpkg. Like
      <literal>options</literal> this must be specified in list notation. The commands
      are invoked in order using <filename>/bin/sh</filename>, should any fail APT 
@@ -623,12 +630,12 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      command given to <literal>Pre-Install-Pkgs</literal>.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Run-Directory</term>
+     <varlistentry><term><option>Run-Directory</option></term>
      <listitem><para>APT chdirs to this directory before invoking dpkg, the default is 
      <filename>/</filename>.</para></listitem>
      </varlistentry>
 
-     <varlistentry><term>Build-options</term>
+     <varlistentry><term><option>Build-options</option></term>
      <listitem><para>These options are passed to &dpkg-buildpackage; when compiling packages,
      the default is to disable signing and produce all binaries.</para></listitem>
      </varlistentry>
@@ -656,7 +663,7 @@ DPkg::ConfigurePending "true";
 DPkg::TriggersPending "true";</literallayout></para>
 
      <variablelist>
-       <varlistentry><term>DPkg::NoTriggers</term>
+       <varlistentry><term><option>DPkg::NoTriggers</option></term>
        <listitem><para>Add the no triggers flag to all dpkg calls (except the ConfigurePending call).
        See &dpkg; if you are interested in what this actually means. In short: dpkg will not run the
        triggers when this flag is present unless it is explicitly called to do so in an extra call.
@@ -664,7 +671,7 @@ DPkg::TriggersPending "true";</literallayout></para>
        meaning: Previously these option only append --no-triggers to the configure calls to dpkg -
        now apt will add these flag also to the unpack and remove calls.</para></listitem>
        </varlistentry>
-       <varlistentry><term>PackageManager::Configure</term>
+       <varlistentry><term><option>PackageManager::Configure</option></term>
        <listitem><para>Valid values are "<literal>all</literal>", "<literal>smart</literal>" and "<literal>no</literal>".
        "<literal>all</literal>" is the default value and causes APT to configure all packages explicit.
        The "<literal>smart</literal>" way is it to configure only packages which need to be configured before
@@ -675,20 +682,20 @@ DPkg::TriggersPending "true";</literallayout></para>
        default as otherwise the system could end in an unconfigured status which could be unbootable!
        </para></listitem>
        </varlistentry>
-       <varlistentry><term>DPkg::ConfigurePending</term>
+       <varlistentry><term><option>DPkg::ConfigurePending</option></term>
        <listitem><para>If this option is set apt will call <command>dpkg --configure --pending</command>
        to let dpkg handle all required configurations and triggers. This option is activated automatic
        per default if the previous option is not set to <literal>all</literal>, but deactivating could be useful
        if you want to run APT multiple times in a row - e.g. in an installer. In these sceneries you could
        deactivate this option in all but the last run.</para></listitem>
        </varlistentry>
-       <varlistentry><term>DPkg::TriggersPending</term>
+       <varlistentry><term><option>DPkg::TriggersPending</option></term>
        <listitem><para>Useful for <literal>smart</literal> configuration as a package which has pending
        triggers is not considered as <literal>installed</literal> and dpkg treats them as <literal>unpacked</literal>
        currently which is a dealbreaker for Pre-Dependencies (see debbugs #526774). Note that this will
        process all triggers, not only the triggers needed to configure this package.</para></listitem>
        </varlistentry>
-       <varlistentry><term>PackageManager::UnpackAll</term>
+       <varlistentry><term><option>PackageManager::UnpackAll</option></term>
        <listitem><para>As the configuration can be deferred to be done at the end by dpkg it can be
        tried to order the unpack series only by critical needs, e.g. by Pre-Depends. Default is true
        and therefore the "old" method of ordering in various steps by everything. While both method
@@ -696,7 +703,7 @@ DPkg::TriggersPending "true";</literallayout></para>
        this method is very experimental and needs further improvements before becoming really useful.
        </para></listitem>
        </varlistentry>
-       <varlistentry><term>OrderList::Score::Immediate</term>
+       <varlistentry><term><option>OrderList::Score::Immediate</option></term>
        <listitem><para>Essential packages (and there dependencies) should be configured immediately
        after unpacking. It will be a good idea to do this quite early in the upgrade process as these
        these configure calls require currently also <literal>DPkg::TriggersPending</literal> which
@@ -779,7 +786,7 @@ DPkg::TriggersPending "true";</literallayout></para>
 
    <variablelist>
      <varlistentry>
-       <term><literal>Debug::Acquire::cdrom</literal></term>
+       <term><option>Debug::Acquire::cdrom</option></term>
 
        <listitem>
 	 <para>
@@ -790,7 +797,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::Acquire::ftp</literal></term>
+       <term><option>Debug::Acquire::ftp</option></term>
 
        <listitem>
 	 <para>
@@ -801,7 +808,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::Acquire::http</literal></term>
+       <term><option>Debug::Acquire::http</option></term>
 
        <listitem>
 	 <para>
@@ -812,7 +819,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::Acquire::https</literal></term>
+       <term><option>Debug::Acquire::https</option></term>
 
        <listitem>
 	 <para>
@@ -823,7 +830,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::Acquire::gpgv</literal></term>
+       <term><option>Debug::Acquire::gpgv</option></term>
 
        <listitem>
 	 <para>
@@ -834,7 +841,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::aptcdrom</literal></term>
+       <term><option>Debug::aptcdrom</option></term>
 
        <listitem>
 	 <para>
@@ -845,7 +852,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::BuildDeps</literal></term>
+       <term><option>Debug::BuildDeps</option></term>
        <listitem>
 	 <para>
 	   Describes the process of resolving build-dependencies in
@@ -855,7 +862,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::Hashes</literal></term>
+       <term><option>Debug::Hashes</option></term>
        <listitem>
 	 <para>
 	   Output each cryptographic hash that is generated by the
@@ -865,7 +872,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::IdentCDROM</literal></term>
+       <term><option>Debug::IdentCDROM</option></term>
        <listitem>
 	 <para>
 	   Do not include information from <literal>statfs</literal>,
@@ -876,7 +883,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::NoLocking</literal></term>
+       <term><option>Debug::NoLocking</option></term>
        <listitem>
 	 <para>
 	   Disable all file locking.  For instance, this will allow
@@ -887,7 +894,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgAcquire</literal></term>
+       <term><option>Debug::pkgAcquire</option></term>
 
        <listitem>
 	 <para>
@@ -898,7 +905,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgAcquire::Auth</literal></term>
+       <term><option>Debug::pkgAcquire::Auth</option></term>
        <listitem>
 	 <para>
 	   Output status messages and errors related to verifying
@@ -908,7 +915,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgAcquire::Diffs</literal></term>
+       <term><option>Debug::pkgAcquire::Diffs</option></term>
        <listitem>
 	 <para>
 	   Output information about downloading and applying package
@@ -919,7 +926,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgAcquire::RRed</literal></term>
+       <term><option>Debug::pkgAcquire::RRed</option></term>
 
        <listitem>
 	 <para>
@@ -930,7 +937,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgAcquire::Worker</literal></term>
+       <term><option>Debug::pkgAcquire::Worker</option></term>
 
        <listitem>
 	 <para>
@@ -941,7 +948,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgAutoRemove</literal></term>
+       <term><option>Debug::pkgAutoRemove</option></term>
 
        <listitem>
 	 <para>
@@ -952,7 +959,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgDepCache::AutoInstall</literal></term>
+       <term><option>Debug::pkgDepCache::AutoInstall</option></term>
        <listitem>
 	 <para>
 	   Generate debug messages describing which packages are being
@@ -966,7 +973,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgDepCache::Marker</literal></term>
+       <term><option>Debug::pkgDepCache::Marker</option></term>
        <listitem>
         <para>
            Generate debug messages describing which package is marked
@@ -988,7 +995,7 @@ DPkg::TriggersPending "true";</literallayout></para>
 
      <!-- Question: why doesn't this do anything?  The code says it should. -->
      <varlistentry>
-       <term><literal>Debug::pkgInitConfig</literal></term>
+       <term><option>Debug::pkgInitConfig</option></term>
        <listitem>
 	 <para>
 	   Dump the default configuration to standard error on
@@ -998,7 +1005,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgDPkgPM</literal></term>
+       <term><option>Debug::pkgDPkgPM</option></term>
        <listitem>
 	 <para>
 	   When invoking &dpkg;, output the precise command line with
@@ -1009,7 +1016,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgDPkgProgressReporting</literal></term>
+       <term><option>Debug::pkgDPkgProgressReporting</option></term>
        <listitem>
 	 <para>
 	   Output all the data received from &dpkg; on the status file
@@ -1019,7 +1026,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgOrderList</literal></term>
+       <term><option>Debug::pkgOrderList</option></term>
 
        <listitem>
 	 <para>
@@ -1031,7 +1038,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgPackageManager</literal></term>
+       <term><option>Debug::pkgPackageManager</option></term>
 
        <listitem>
 	 <para>
@@ -1042,7 +1049,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgPolicy</literal></term>
+       <term><option>Debug::pkgPolicy</option></term>
 
        <listitem>
 	 <para>
@@ -1052,7 +1059,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgProblemResolver</literal></term>
+       <term><option>Debug::pkgProblemResolver</option></term>
 
        <listitem>
 	 <para>
@@ -1064,7 +1071,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::pkgProblemResolver::ShowScores</literal></term>
+       <term><option>Debug::pkgProblemResolver::ShowScores</option></term>
        <listitem>
         <para>
           Display a list of all installed packages with their calculated score
@@ -1075,7 +1082,7 @@ DPkg::TriggersPending "true";</literallayout></para>
      </varlistentry>
 
      <varlistentry>
-       <term><literal>Debug::sourceList</literal></term>
+       <term><option>Debug::sourceList</option></term>
 
        <listitem>
 	 <para>

+ 10 - 20
doc/apt.ent

@@ -1,19 +1,3 @@
-<!-- -*- mode: sgml; mode: fold -*- -->
-
-<!-- Boiler plate docinfo section -->
-<!ENTITY apt-docinfo "
- <refentryinfo>
-   <address><email>apt@packages.debian.org</email></address>
-   <author>
-     <firstname>Jason</firstname> <surname>Gunthorpe</surname>
-     <contrib></contrib>
-   </author>
-   <copyright><year>1998-2001</year> <holder>Jason Gunthorpe</holder></copyright>
-   <date>28 October 2008</date>
-   <productname>Linux</productname>
- </refentryinfo>
-">
-
 <!ENTITY apt-author.team "
    <author>
     <othername>APT team</othername>
@@ -119,7 +103,7 @@
 
      <varlistentry><term><filename>&cachedir;/archives/partial/</filename></term>
      <listitem><para>Storage area for package files in transit.
-     Configuration Item: <literal>Dir::Cache::Archives</literal> (implicit partial). </para></listitem>
+     Configuration Item: <literal>Dir::Cache::Archives</literal> (<filename>partial</filename> will be implicitly appended). </para></listitem>
      </varlistentry>
 ">
 
@@ -160,7 +144,7 @@
 
      <varlistentry><term><filename>&statedir;/lists/partial/</filename></term>
      <listitem><para>Storage area for state information in transit.
-     Configuration Item: <literal>Dir::State::Lists</literal> (implicit partial).</para></listitem>
+     Configuration Item: <literal>Dir::State::Lists</literal> (<filename>partial</filename> will be implicitly appended).</para></listitem>
      </varlistentry>
 ">
 
@@ -242,11 +226,17 @@
 <!-- TRANSLATOR: used as in apt-extracttemplates filename -->
 <!ENTITY synopsis-filename "filename">
 
-<!-- TRANSLATOR: used as parameters for apt-ftparchive  e.g. apt-ftparchive packages path override pathprefix -->
+<!-- TRANSLATOR: used as parameter for apt-ftparchive  e.g. apt-ftparchive packages path override-file pathprefix -->
 <!ENTITY synopsis-path "path">
+
+<!-- TRANSLATOR: used as parameter for apt-ftparchive  e.g. apt-ftparchive packages path override-file pathprefix -->
+<!ENTITY synopsis-override "override-file">
+
+<!-- TRANSLATOR: used as parameter for apt-ftparchive  e.g. apt-ftparchive packages path override-file pathprefix -->
 <!ENTITY synopsis-pathprefix "pathprefix">
+
+<!-- TRANSLATOR: used as parameter for apt-ftparchive  e.g. apt-ftparchive generate section -->
 <!ENTITY synopsis-section "section">
-<!ENTITY synopsis-override "override">
 
 <!-- TRANSLATOR: used as in apt-key export keyid  e.g. apt-key export 473041FA -->
 <!ENTITY synopsis-keyid "keyid">

+ 3 - 2
doc/apt_preferences.5.xml

@@ -17,7 +17,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>16 February 2010</date>
+   <date>2010-02-16T00:00:00Z</date>
  </refentryinfo>
 
  <refmeta>
@@ -287,6 +287,7 @@ Pin: release n=karmic*
 Pin-Priority: 990
 </programlisting>
 
+<para>
 If a regular expression occurs in a <literal>Package</literal> field,
 the behavior is the same as if this regular expression were replaced
 with a list of all package names it matches. It is undecided whether
@@ -295,7 +296,7 @@ pins first, so later specific pins override it.
 
 The pattern "<literal>*</literal>" in a Package field is not considered
 a glob() expression in itself.
-
+</para>
 </refsect2>
 
 

+ 19 - 9
doc/makefile

@@ -11,6 +11,11 @@ SOURCE = $(wildcard *.sgml)
 DEBIANDOC_HTML_OPTIONS=-l en.UTF-8
 include $(DEBIANDOC_H)
 
+MANPAGEPO = $(patsubst %.po,%,$(notdir $(wildcard po/*.po)))
+MANPAGEPOLIST = $(patsubst %,manpages-translation-%,$(MANPAGEPO))
+
+doc: manpages
+
 # Do not use XMLTO, build the manpages directly with XSLTPROC
 ifdef XSLTPROC
 # generate a list of accepted man page translations
@@ -22,15 +27,26 @@ LOCAL := manpage-$(firstword $(SOURCE))
 $(LOCAL)-LIST := $(SOURCE)
 
 # Install generation hooks
-doc: $($(LOCAL)-LIST)
-veryclean: veryclean/$(LOCAL)
+manpages: $(MANPAGEPOLIST) $($(LOCAL)-LIST)
 
-$($(LOCAL)-LIST) :: % : %.xml $(INCLUDES)
+$($(LOCAL)-LIST) :: % : %.xml $(STYLESHEET) $(INCLUDES)
 	echo Creating man page $@
 	$(XSLTPROC) -o $@ $(STYLESHEET) $<
 
+$(MANPAGEPOLIST) :: manpages-translation-% : %/makefile po4a
+	$(MAKE) -C $(dir $<) doc
+
+.PHONY: manpages dirs-manpage-subdirs $(MANPAGEPOLIST)
+dirs: dirs-manpage-subdirs
+dirs-manpage-subdirs:
+	for i in $(MANPAGEPO); do \
+		test -d $$i || mkdir $$i; \
+		test -f $$i/makefile || sed "s#@@LANG@@#$$i#" lang.makefile > $$i/makefile; \
+	done
+
 # Clean rule
 .PHONY: veryclean/$(LOCAL)
+veryclean: veryclean/$(LOCAL)
 veryclean/$(LOCAL):
 	-rm -rf $($(@F)-LIST)
 
@@ -47,12 +63,6 @@ TARGET = binary
 include $(COPY_H)
 
 .PHONY: clean clean-subdirs veryclean veryclean-subdirs all binary doc
-doc:
-	for i in $(shell ls po/*.po | sed -r 's#po/([a-z]+[A-Z_]*).po#\1#'); do \
-		test -d $$i || mkdir $$i; \
-		test -f $$i/makefile || sed "s#@@LANG@@#$$i#" lang.makefile > $$i/makefile; \
-		$(MAKE) -C $$i $@; \
-	done
 
 clean: clean-subdirs
 veryclean: veryclean-subdirs

+ 8 - 0
doc/manpage-style.xsl

@@ -5,7 +5,15 @@
 <xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl" />
 
 <xsl:param name="man.output.encoding" select="'UTF-8'" />
+<!-- LANGUAGE -->
 
 <xsl:template match="email">&lt;<xsl:apply-templates/>&gt;</xsl:template>
 
+<xsl:template match="date">
+	<xsl:call-template name="datetime.format">
+		<xsl:with-param name="date" select="."/>
+		<xsl:with-param name="format" select="'d B Y'"/>
+	</xsl:call-template>
+</xsl:template>
+
 </xsl:stylesheet>

Разница между файлами не показана из-за своего большого размера
+ 523 - 1830
doc/po/apt-doc.pot


Разница между файлами не показана из-за своего большого размера
+ 856 - 2336
doc/po/de.po


Разница между файлами не показана из-за своего большого размера
+ 767 - 2213
doc/po/es.po


Разница между файлами не показана из-за своего большого размера
+ 778 - 2179
doc/po/fr.po


Разница между файлами не показана из-за своего большого размера
+ 538 - 1860
doc/po/it.po


Разница между файлами не показана из-за своего большого размера
+ 751 - 2276
doc/po/ja.po


Разница между файлами не показана из-за своего большого размера
+ 685 - 2263
doc/po/pl.po


Разница между файлами не показана из-за своего большого размера
+ 768 - 2211
doc/po/pt.po


Разница между файлами не показана из-за своего большого размера
+ 569 - 1919
doc/po/pt_BR.po


+ 18 - 13
doc/po4a.conf

@@ -3,23 +3,28 @@
 
 # Entities need to be present, even if not translated
 [po4a_alias:entity] text opt:"-k 0"
+[po4a_alias:manpage] docbook opt:"\
+	-o untranslated='<term><option> <refname> <refentrytitle> <date> <refentryinfo>' \
+	-o break='<term><option>' \
+	-o nodefault='<option> <refname> <refentrytitle> <date> <refentryinfo>' \
+	-o inline='<para><option> <refentrytitle>'"
 
 # define source file and translated file (one file per line)
 [type: man]     apt.8 $lang:$lang/apt.$lang.8
 [type: entity]  apt.ent $lang:$lang/apt.ent
-[type: docbook] apt-cache.8.xml $lang:$lang/apt-cache.$lang.8.xml add_$lang:xml.add
-[type: docbook] apt-cdrom.8.xml $lang:$lang/apt-cdrom.$lang.8.xml add_$lang:xml.add
-[type: docbook] apt-config.8.xml $lang:$lang/apt-config.$lang.8.xml add_$lang:xml.add
-[type: docbook] apt-extracttemplates.1.xml $lang:$lang/apt-extracttemplates.$lang.1.xml add_$lang:xml.add
-[type: docbook] apt-ftparchive.1.xml $lang:$lang/apt-ftparchive.$lang.1.xml add_$lang:xml.add
-[type: docbook] apt-get.8.xml $lang:$lang/apt-get.$lang.8.xml add_$lang:xml.add
-[type: docbook] apt-key.8.xml $lang:$lang/apt-key.$lang.8.xml add_$lang:xml.add
-[type: docbook] apt-mark.8.xml $lang:$lang/apt-mark.$lang.8.xml add_$lang:xml.add
-[type: docbook] apt-secure.8.xml $lang:$lang/apt-secure.$lang.8.xml add_$lang:xml.add
-[type: docbook] apt-sortpkgs.1.xml $lang:$lang/apt-sortpkgs.$lang.1.xml add_$lang:xml.add
-[type: docbook] apt.conf.5.xml $lang:$lang/apt.conf.$lang.5.xml add_$lang:xml.add
-[type: docbook] apt_preferences.5.xml $lang:$lang/apt_preferences.$lang.5.xml add_$lang:xml.add
-[type: docbook] sources.list.5.xml $lang:$lang/sources.list.$lang.5.xml add_$lang:xml.add
+[type: manpage] apt-cache.8.xml $lang:$lang/apt-cache.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-cdrom.8.xml $lang:$lang/apt-cdrom.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-config.8.xml $lang:$lang/apt-config.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-extracttemplates.1.xml $lang:$lang/apt-extracttemplates.$lang.1.xml add_$lang:xml.add
+[type: manpage] apt-ftparchive.1.xml $lang:$lang/apt-ftparchive.$lang.1.xml add_$lang:xml.add
+[type: manpage] apt-get.8.xml $lang:$lang/apt-get.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-key.8.xml $lang:$lang/apt-key.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-mark.8.xml $lang:$lang/apt-mark.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-secure.8.xml $lang:$lang/apt-secure.$lang.8.xml add_$lang:xml.add
+[type: manpage] apt-sortpkgs.1.xml $lang:$lang/apt-sortpkgs.$lang.1.xml add_$lang:xml.add
+[type: manpage] apt.conf.5.xml $lang:$lang/apt.conf.$lang.5.xml add_$lang:xml.add
+[type: manpage] apt_preferences.5.xml $lang:$lang/apt_preferences.$lang.5.xml add_$lang:xml.add
+[type: manpage] sources.list.5.xml $lang:$lang/sources.list.$lang.5.xml add_$lang:xml.add
 
 [type: sgml]    guide.sgml $lang:$lang/guide.$lang.sgml
 #                 add_$lang::$lang/addendum/debiandoc_$lang.add

+ 3 - 3
doc/sources.list.5.xml

@@ -18,7 +18,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>29 February 2004</date>
+   <date>2004-02-29T00:00:00Z</date>
  </refentryinfo>
  
  <refmeta>
@@ -119,10 +119,10 @@
    be downloaded. If this option is not set all architectures defined by the
    <literal>APT::Architectures</literal> option will be downloaded.</para></listitem>
    <listitem><para><literal>trusted=yes</literal> can be set to indicate that packages
-   from this source are always authenificated even if the <filename>Release</filename> file
+   from this source are always authenticated even if the <filename>Release</filename> file
    is not signed or the signature can't be checked. This disables parts of &apt-secure;
    and should therefore only be used in a local and trusted context. <literal>trusted=no</literal>
-   is the opposite which handles even correctly authenificated sources as not authenificated.</para></listitem>
+   is the opposite which handles even correctly authenticated sources as not authenticated.</para></listitem>
    </itemizedlist></para>
 
    <para>It is important to list sources in order of preference, with the most

+ 1 - 0
ftparchive/writer.cc

@@ -948,6 +948,7 @@ ReleaseWriter::ReleaseWriter(string const &DB)
       AddPattern("Sources.lzma");
       AddPattern("Sources.xz");
       AddPattern("Release");
+      AddPattern("Contents-*");
       AddPattern("Index");
       AddPattern("md5sum.txt");
    }

+ 6 - 3
methods/http.cc

@@ -61,7 +61,7 @@ using namespace std;
 string HttpMethod::FailFile;
 int HttpMethod::FailFd = -1;
 time_t HttpMethod::FailTime = 0;
-unsigned long PipelineDepth = 10;
+unsigned long PipelineDepth = 0;
 unsigned long TimeOut = 120;
 bool AllowRedirect = false;
 bool Debug = false;
@@ -758,7 +758,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 ("PACKAGE_VERSION")") + "\r\n\r\n";
+		"Debian APT-HTTP/1.3 (" PACKAGE_VERSION ")") + "\r\n\r\n";
    
    if (Debug == true)
       cerr << Req << endl;
@@ -985,7 +985,10 @@ HttpMethod::DealWithHeaders(FetchResult &Res,ServerState *Srv)
       else
       {
          NextURI = DeQuoteString(Srv->Location);
-         return TRY_AGAIN_OR_REDIRECT;
+         URI tmpURI = NextURI;
+         // Do not allow a redirection to switch protocol
+         if (tmpURI.Access == "http")
+            return TRY_AGAIN_OR_REDIRECT;
       }
       /* else pass through for error message */
    }

+ 1 - 1
methods/https.cc

@@ -219,7 +219,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm)
    curl_easy_setopt(curl, CURLOPT_USERAGENT,
 	_config->Find("Acquire::https::User-Agent",
 		_config->Find("Acquire::http::User-Agent",
-			"Debian APT-CURL/1.0 ("PACKAGE_VERSION")").c_str()).c_str());
+			"Debian APT-CURL/1.0 (" PACKAGE_VERSION ")").c_str()).c_str());
 
    // set timeout
    int const timeout = _config->FindI("Acquire::https::Timeout",

+ 1 - 1
methods/mirror.cc

@@ -150,7 +150,7 @@ bool MirrorMethod::DownloadMirrorFile(string mirror_uri_str)
    for (std::vector<std::string>::const_iterator I = vec.begin();
         I != vec.end(); ++I)
       if (I == vec.begin())
-         fetch += "?arch" + (*I);
+         fetch += "?arch=" + (*I);
       else
          fetch += "&arch=" + (*I);
 

+ 8 - 3
prepare-release

@@ -8,8 +8,8 @@ LIBAPTINSTVERSION="$(egrep '^MAJOR=' apt-inst/makefile |cut -d '=' -f 2)"
 
 if [ "$1" = 'pre-export' ]; then
 	libraryversioncheck() {
-		LIBRARY="$1"
-		VERSION="$2"
+		local LIBRARY="$1"
+		local VERSION="$2"
 		if [ ! -e "debian/${LIBRARY}${VERSION}.symbols" ]; then
 		   echo >&2 "Library ${LIBRARY} in version ${VERSION} has no symbols file! (maybe forgot to rename?)"
 		   exit 1
@@ -46,10 +46,15 @@ elif [ "$1" = 'post-build' ]; then
 	else
 		echo >&2 'REMEMBER: Change to a valid distribution before release'
 	fi
+	if ! xmllint --nonet --valid --noout $(find doc/ -maxdepth 1 -name '*.xml'); then
+		echo >&2 'WARNING: original docbook manpages have errors!'
+	elif ! xmllint --nonet --valid --noout $(find doc/ -mindepth 2 -maxdepth 2 -name '*.xml'); then
+		echo >&2 'WARNING: translated docbook manpages have errors, but originals are okay!'
+	fi
 elif [ "$1" = 'library' ]; then
 	librarysymbols() {
 		echo "Checking $1 in version $2"
-		tmpfile=$(mktemp)
+		local tmpfile=$(mktemp)
 		dpkg-gensymbols -p${1}${2} -ebuild/bin/${1}.so.${2} -Idebian/${1}${2}.symbols -O/dev/null 2> /dev/null > $tmpfile
 		echo '=== Missing symbols:'
 		grep '^+#MISSING' $tmpfile

+ 1 - 1
test/Makefile

@@ -7,7 +7,7 @@ ifndef NOISY
 endif
 
 .PHONY: startup headers library clean veryclean all binary program doc test update-po
-startup all clean veryclean binary program dirs test update-po:
+startup all clean veryclean binary program dirs test update-po manpages:
 	$(MAKE) -C libapt $@
 	$(MAKE) -C interactive-helper $@
 

+ 7 - 5
test/integration/skip-bug-602412-dequote-redirect

@@ -19,18 +19,20 @@ echo "server.modules = ( \"mod_redirect\" )
 server.document-root = \"$(readlink -f ./aptarchive)\"
 server.port = 8080
 server.stat-cache-engine = \"disable\"
-url.redirect = ( \"^/pool/(.*)$\" => \"/newpool/\$1\" )" > lighttpd.conf
+url.redirect = ( \"^/pool/(.*)$\" => \"/newpool/\$1\",
+ \"^/dists/(.*)$\" => \"/newdists/\$1\" )" > lighttpd.conf
 
 mv aptarchive/pool aptarchive/newpool
+mv aptarchive/dists aptarchive/newdists
+
 lighttpd -t -f lighttpd.conf >/dev/null || msgdie 'Can not change to webserver: our lighttpd config is invalid'
 lighttpd -D -f lighttpd.conf 2>/dev/null >/dev/null &
 addtrap "kill $!;"
 
-local APTARCHIVE="file://$(readlink -f ./aptarchive)"
+APTARCHIVE="file://$(readlink -f ./aptarchive)"
 for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do
 	sed -i $LIST -e "s#$APTARCHIVE#http://localhost:8080/#"
 done
 
-aptget update -qq || msgdie 'apt-get update failed'
-aptget install unrelated --download-only -qq || msgdie 'downloading package failed'
-
+aptget update || msgdie 'apt-get update failed'
+aptget install unrelated --download-only || msgdie 'downloading package failed'

+ 23 - 0
test/integration/test-673536-pre-depends-breaks-loop

@@ -0,0 +1,23 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'native'
+
+buildsimplenativepackage 'basic' 'native' '1' 'stable'
+buildsimplenativepackage 'basic' 'native' '2' 'unstable' 'Pre-Depends: common'
+buildsimplenativepackage 'common' 'native' '2' 'unstable' 'Breaks: basic (<= 1)'
+
+setupaptarchive
+
+# we check with 'real' packages here as the simulation reports a 'Conf broken'
+# which is technical correct for the simulation, but testing errormsg is ugly
+
+aptget install basic=1 -qq > /dev/null
+testdpkginstalled basic
+testdpkgnotinstalled common
+
+aptget dist-upgrade -qq > /dev/null
+testdpkginstalled basic common

+ 42 - 24
test/integration/test-bug-632221-cross-dependency-satisfaction

@@ -18,8 +18,10 @@ insertpackage 'unstable' 'libfwibble-dev' 'amd64,armel' '1.0' 'Depends: libfwibb
 insertpackage 'unstable' 'cool' 'amd64,armel' '1.0' 'Multi-Arch: allowed'
 insertpackage 'unstable' 'amdboot' 'amd64' '1.0'
 insertpackage 'unstable' 'foreigner' 'amd64,armel' '1.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'arm-stuff' 'armel' '1.0'
+insertpackage 'unstable' 'linux-stuff' 'amd64,armel' '1.0'
 
-insertsource 'unstable' 'apt' 'any' '0.8.15' 'Build-Depends: doxygen, libc6-dev, libc6-dev:native, cool:any, amdboot:amd64, foreigner, libfwibble-dev'
+insertsource 'unstable' 'apt' 'any' '0.8.15' 'Build-Depends: doxygen, libc6-dev, libc6-dev:native, cool:any, amdboot:amd64, foreigner, libfwibble-dev, arm-stuff [any-arm] | linux-stuff [ linux-any]'
 
 setupaptarchive
 
@@ -27,7 +29,8 @@ testequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
   amdboot cool doxygen foreigner libc6 libc6-dev libfwibble-dev libfwibble1
-0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
+  linux-stuff
+0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
 Inst amdboot (1.0 unstable [amd64])
 Inst cool (1.0 unstable [amd64])
 Inst doxygen (1.0 unstable [amd64])
@@ -36,6 +39,7 @@ Inst libc6 (1.0 unstable [amd64])
 Inst libc6-dev (1.0 unstable [amd64])
 Inst libfwibble1 (1.0 unstable [amd64])
 Inst libfwibble-dev (1.0 unstable [amd64])
+Inst linux-stuff (1.0 unstable [amd64])
 Conf amdboot (1.0 unstable [amd64])
 Conf cool (1.0 unstable [amd64])
 Conf doxygen (1.0 unstable [amd64])
@@ -43,15 +47,17 @@ Conf foreigner (1.0 unstable [amd64])
 Conf libc6 (1.0 unstable [amd64])
 Conf libc6-dev (1.0 unstable [amd64])
 Conf libfwibble1 (1.0 unstable [amd64])
-Conf libfwibble-dev (1.0 unstable [amd64])' aptget build-dep apt -s
+Conf libfwibble-dev (1.0 unstable [amd64])
+Conf linux-stuff (1.0 unstable [amd64])' aptget build-dep apt -s
 
 testequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
-  amdboot cool doxygen foreigner libc6 libc6:armel libc6-dev libc6-dev:armel
-  libfwibble-dev:armel libfwibble1:armel
-0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
+  amdboot arm-stuff:armel cool doxygen foreigner libc6 libc6:armel libc6-dev
+  libc6-dev:armel libfwibble-dev:armel libfwibble1:armel
+0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
 Inst amdboot (1.0 unstable [amd64])
+Inst arm-stuff:armel (1.0 unstable [armel])
 Inst cool (1.0 unstable [amd64])
 Inst doxygen (1.0 unstable [amd64])
 Inst foreigner (1.0 unstable [amd64])
@@ -62,6 +68,7 @@ Inst libc6-dev:armel (1.0 unstable [armel])
 Inst libfwibble1:armel (1.0 unstable [armel])
 Inst libfwibble-dev:armel (1.0 unstable [armel])
 Conf amdboot (1.0 unstable [amd64])
+Conf arm-stuff:armel (1.0 unstable [armel])
 Conf cool (1.0 unstable [amd64])
 Conf doxygen (1.0 unstable [amd64])
 Conf foreigner (1.0 unstable [amd64])
@@ -77,10 +84,11 @@ configarchitecture 'armel' 'amd64'
 testequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
-  amdboot:amd64 cool doxygen foreigner libc6 libc6-dev libfwibble-dev
-  libfwibble1
-0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
+  amdboot:amd64 arm-stuff cool doxygen foreigner libc6 libc6-dev
+  libfwibble-dev libfwibble1
+0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
 Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst arm-stuff (1.0 unstable [armel])
 Inst cool (1.0 unstable [armel])
 Inst doxygen (1.0 unstable [armel])
 Inst foreigner (1.0 unstable [armel])
@@ -89,6 +97,7 @@ Inst libc6-dev (1.0 unstable [armel])
 Inst libfwibble1 (1.0 unstable [armel])
 Inst libfwibble-dev (1.0 unstable [armel])
 Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf arm-stuff (1.0 unstable [armel])
 Conf cool (1.0 unstable [armel])
 Conf doxygen (1.0 unstable [armel])
 Conf foreigner (1.0 unstable [armel])
@@ -101,8 +110,8 @@ testequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
   amdboot:amd64 cool doxygen foreigner libc6:amd64 libc6 libc6-dev:amd64
-  libc6-dev libfwibble-dev:amd64 libfwibble1:amd64
-0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
+  libc6-dev libfwibble-dev:amd64 libfwibble1:amd64 linux-stuff:amd64
+0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
 Inst amdboot:amd64 (1.0 unstable [amd64])
 Inst cool (1.0 unstable [armel])
 Inst doxygen (1.0 unstable [armel])
@@ -113,6 +122,7 @@ Inst libc6-dev:amd64 (1.0 unstable [amd64])
 Inst libc6-dev (1.0 unstable [armel])
 Inst libfwibble1:amd64 (1.0 unstable [amd64])
 Inst libfwibble-dev:amd64 (1.0 unstable [amd64])
+Inst linux-stuff:amd64 (1.0 unstable [amd64])
 Conf amdboot:amd64 (1.0 unstable [amd64])
 Conf cool (1.0 unstable [armel])
 Conf doxygen (1.0 unstable [armel])
@@ -122,7 +132,8 @@ Conf libc6 (1.0 unstable [armel])
 Conf libc6-dev:amd64 (1.0 unstable [amd64])
 Conf libc6-dev (1.0 unstable [armel])
 Conf libfwibble1:amd64 (1.0 unstable [amd64])
-Conf libfwibble-dev:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64
+Conf libfwibble-dev:amd64 (1.0 unstable [amd64])
+Conf linux-stuff:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64
 
 configarchitecture 'amd64' 'armel'
 
@@ -132,28 +143,31 @@ insertinstalledpackage 'foreigner' 'armel' '0.5'
 testequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
-  amdboot doxygen libc6 libc6-dev libfwibble-dev libfwibble1
-0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded.
+  amdboot doxygen libc6 libc6-dev libfwibble-dev libfwibble1 linux-stuff
+0 upgraded, 7 newly installed, 0 to remove and 2 not upgraded.
 Inst amdboot (1.0 unstable [amd64])
 Inst doxygen (1.0 unstable [amd64])
 Inst libc6 (1.0 unstable [amd64])
 Inst libc6-dev (1.0 unstable [amd64])
 Inst libfwibble1 (1.0 unstable [amd64])
 Inst libfwibble-dev (1.0 unstable [amd64])
+Inst linux-stuff (1.0 unstable [amd64])
 Conf amdboot (1.0 unstable [amd64])
 Conf doxygen (1.0 unstable [amd64])
 Conf libc6 (1.0 unstable [amd64])
 Conf libc6-dev (1.0 unstable [amd64])
 Conf libfwibble1 (1.0 unstable [amd64])
-Conf libfwibble-dev (1.0 unstable [amd64])' aptget build-dep apt -s
+Conf libfwibble-dev (1.0 unstable [amd64])
+Conf linux-stuff (1.0 unstable [amd64])' aptget build-dep apt -s
 
 testequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
-  amdboot doxygen libc6 libc6:armel libc6-dev libc6-dev:armel
+  amdboot arm-stuff:armel doxygen libc6 libc6:armel libc6-dev libc6-dev:armel
   libfwibble-dev:armel libfwibble1:armel
-0 upgraded, 8 newly installed, 0 to remove and 2 not upgraded.
+0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded.
 Inst amdboot (1.0 unstable [amd64])
+Inst arm-stuff:armel (1.0 unstable [armel])
 Inst doxygen (1.0 unstable [amd64])
 Inst libc6 (1.0 unstable [amd64])
 Inst libc6:armel (1.0 unstable [armel])
@@ -162,6 +176,7 @@ Inst libc6-dev:armel (1.0 unstable [armel])
 Inst libfwibble1:armel (1.0 unstable [armel])
 Inst libfwibble-dev:armel (1.0 unstable [armel])
 Conf amdboot (1.0 unstable [amd64])
+Conf arm-stuff:armel (1.0 unstable [armel])
 Conf doxygen (1.0 unstable [amd64])
 Conf libc6 (1.0 unstable [amd64])
 Conf libc6:armel (1.0 unstable [armel])
@@ -178,10 +193,12 @@ Building dependency tree...
 The following packages will be REMOVED:
   cool:amd64
 The following NEW packages will be installed:
-  amdboot:amd64 cool doxygen libc6 libc6-dev libfwibble-dev libfwibble1
-0 upgraded, 7 newly installed, 1 to remove and 1 not upgraded.
+  amdboot:amd64 arm-stuff cool doxygen libc6 libc6-dev libfwibble-dev
+  libfwibble1
+0 upgraded, 8 newly installed, 1 to remove and 1 not upgraded.
 Remv cool:amd64 [0.5]
 Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst arm-stuff (1.0 unstable [armel])
 Inst cool (1.0 unstable [armel])
 Inst doxygen (1.0 unstable [armel])
 Inst libc6 (1.0 unstable [armel])
@@ -189,6 +206,7 @@ Inst libc6-dev (1.0 unstable [armel])
 Inst libfwibble1 (1.0 unstable [armel])
 Inst libfwibble-dev (1.0 unstable [armel])
 Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf arm-stuff (1.0 unstable [armel])
 Conf cool (1.0 unstable [armel])
 Conf doxygen (1.0 unstable [armel])
 Conf libc6 (1.0 unstable [armel])
@@ -200,8 +218,8 @@ testequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
   amdboot:amd64 doxygen libc6:amd64 libc6 libc6-dev:amd64 libc6-dev
-  libfwibble-dev:amd64 libfwibble1:amd64
-0 upgraded, 8 newly installed, 0 to remove and 2 not upgraded.
+  libfwibble-dev:amd64 libfwibble1:amd64 linux-stuff:amd64
+0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded.
 Inst amdboot:amd64 (1.0 unstable [amd64])
 Inst doxygen (1.0 unstable [armel])
 Inst libc6:amd64 (1.0 unstable [amd64])
@@ -210,6 +228,7 @@ Inst libc6-dev:amd64 (1.0 unstable [amd64])
 Inst libc6-dev (1.0 unstable [armel])
 Inst libfwibble1:amd64 (1.0 unstable [amd64])
 Inst libfwibble-dev:amd64 (1.0 unstable [amd64])
+Inst linux-stuff:amd64 (1.0 unstable [amd64])
 Conf amdboot:amd64 (1.0 unstable [amd64])
 Conf doxygen (1.0 unstable [armel])
 Conf libc6:amd64 (1.0 unstable [amd64])
@@ -217,6 +236,5 @@ Conf libc6 (1.0 unstable [armel])
 Conf libc6-dev:amd64 (1.0 unstable [amd64])
 Conf libc6-dev (1.0 unstable [armel])
 Conf libfwibble1:amd64 (1.0 unstable [amd64])
-Conf libfwibble-dev:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64
-
-
+Conf libfwibble-dev:amd64 (1.0 unstable [amd64])
+Conf linux-stuff:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64

+ 21 - 0
test/libapt/assert.h

@@ -1,6 +1,7 @@
 #include <iostream>
 
 #define equals(x,y) assertEquals(y, x, __LINE__)
+#define equalsNot(x,y) assertEqualsNot(y, x, __LINE__)
 
 template < typename X, typename Y >
 void OutputAssertEqual(X expect, char const* compare, Y get, unsigned long const &line) {
@@ -14,6 +15,13 @@ void assertEquals(X expect, Y get, unsigned long const &line) {
 	OutputAssertEqual(expect, "==", get, line);
 }
 
+template < typename X, typename Y >
+void assertEqualsNot(X expect, Y get, unsigned long const &line) {
+	if (expect != get)
+		return;
+	OutputAssertEqual(expect, "!=", get, line);
+}
+
 void assertEquals(unsigned int const &expect, int const &get, unsigned long const &line) {
 	if (get < 0)
 		OutputAssertEqual(expect, "==", get, line);
@@ -80,6 +88,19 @@ void assertEqualsOr3(X expect1, X expect2, X expect3, Y get, unsigned long const
 	OutputAssertEqualOr3(expect1, expect2, expect3, "==", get, line);
 }
 
+#define equalsOr4(v,w,x,y,z) assertEqualsOr4(w, x, y, z, v, __LINE__)
+
+template < typename X, typename Y >
+void OutputAssertEqualOr4(X expect1, X expect2, X expect3, X expect4, char const* compare, Y get, unsigned long const &line) {
+	std::cerr << "Test FAILED: »" << expect1 << "« or »" << expect2 << "« or »" << expect3 << "« or »" << expect4 << "« " << compare << " »" << get << "« at line " << line << std::endl;
+}
+
+template < typename X, typename Y >
+void assertEqualsOr4(X expect1, X expect2, X expect3, X expect4, Y get, unsigned long const &line) {
+	if (expect1 == get || expect2 == get || expect3 == get || expect4 == get)
+		return;
+	OutputAssertEqualOr4(expect1, expect2, expect3, expect4, "==", get, line);
+}
 
 // simple helper to quickly output a vectors
 template < typename X >

+ 11 - 4
test/libapt/getlanguages_test.cc

@@ -126,14 +126,21 @@ int main(int argc,char *argv[])
 
 	_config->Set("Dir::State::lists", argv[1]);
 	vec = APT::Configuration::getLanguages(true, false, env);
-	equals(vec.size(), 7);
+	equals(vec.size(), 8);
 	equals(vec[0], "de_DE");
 	equals(vec[1], "de");
 	equals(vec[2], "en");
 	equals(vec[3], "none");
-	equalsOr3(vec[4], "pt", "tr", "ast_DE");
-	equalsOr3(vec[5], "tr", "pt", "ast_DE");
-	equalsOr3(vec[6], "tr", "pt", "ast_DE");
+	equalsOr4(vec[4], "pt", "tr", "ast_DE", "tlh_DE");
+	equalsOr4(vec[5], "tr", "pt", "ast_DE", "tlh_DE");
+	equalsOr4(vec[6], "tr", "pt", "ast_DE", "tlh_DE");
+	equalsOr4(vec[7], "tr", "pt", "ast_DE", "tlh_DE");
+	equalsNot(vec[4], vec[5]);
+	equalsNot(vec[4], vec[6]);
+	equalsNot(vec[4], vec[7]);
+	equalsNot(vec[5], vec[6]);
+	equalsNot(vec[5], vec[7]);
+	equalsNot(vec[6], vec[7]);
 
 	_config->Set("Acquire::Languages", "none");
 	vec = APT::Configuration::getLanguages(true, false, env);

+ 2 - 1
test/libapt/run-tests

@@ -65,7 +65,8 @@ do
 			"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-pt" \
 			"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-se~" \
 			"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-st.bak" \
-			"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-ast_DE"
+			"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-ast_DE" \
+			"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-tlh%5fDE"
 	elif [ $name = "HashSums${EXT}" ]; then
 		TMP="$(readlink -f "./${0}")"
 		echo -n "Testing with ${NAME} "