Sfoglia il codice sorgente

* merged with apt--mvo--0

Patches applied:

 * apt@packages.debian.org/apt--sources-list-d--0--base-0
   tag of apt@packages.debian.org/apt--main--0--patch-30

 * apt@packages.debian.org/apt--sources-list-d--0--patch-1
   Patch from apt-rpm via Michael Vogt to implement /etc/apt/sources.list.d

 * bubulle@debian.org--2005/apt--main--0--patch-96
   Sync with Matt

 * bubulle@debian.org--2005/apt--main--0--patch-97
   Merge with Matt

 * bubulle@debian.org--2005/apt--main--0--patch-98
   Update PO files with the POT

 * bubulle@debian.org--2005/apt--main--0--patch-99
   Added Galician translation

 * bubulle@debian.org--2005/apt--main--0--patch-100
   Completed Danish translation

 * bubulle@debian.org--2005/apt--main--0--patch-101
   Merge with Matt

 * bubulle@debian.org--2005/apt--main--0--patch-102
   Merge with Michael Vogt's archive

 * bubulle@debian.org--2005/apt--main--0--patch-103
   Update the POT files and all PO files to resync with recent code

 * bubulle@debian.org--2005/apt--main--0--patch-104
   French translation completed

 * bubulle@debian.org--2005/apt--main--0--patch-105
   Proofread by Fred Bothamy

 * bubulle@debian.org--2005/apt--main--0--patch-106
   Merge with mvo

 * bubulle@debian.org--2005/apt--main--0--patch-107
   Italian translation corrected

 * bubulle@debian.org--2005/apt--main--0--patch-108
   Italian translation update

 * bubulle@debian.org--2005/apt--main--0--patch-109
   Italian translation completed

 * bubulle@debian.org--2005/apt--main--0--patch-110
   Swedish translation update

 * bubulle@debian.org--2005/apt--main--0--patch-111
   Merge with Michael

 * bubulle@debian.org--2005/apt--main--0--patch-112
   Swedish translation completed

 * bubulle@debian.org--2005/apt--main--0--patch-113
   Silly update to French translation (testing)

 * bubulle@debian.org--2005/apt--main--0--patch-114
   Basque translation update

 * bubulle@debian.org--2005/apt--main--0--patch-115
   Basque translation completed

 * bubulle@debian.org--2005/apt--main--0--patch-116
   Merge with Michael

 * bubulle@debian.org--2005/apt--main--0--patch-117
   Merge with Michael

 * bubulle@debian.org--2005/apt--main--0--patch-118
   Russian translation update by Yuri Kozlov

 * bubulle@debian.org--2005/apt--main--0--patch-119
   Merge with Michael and add update-po as a pre-req for binary

 * bubulle@debian.org--2005/apt--main--0--patch-120
   Re-generate all PO Files

 * bubulle@debian.org--2005/apt--main--0--patch-121
   Complete French translation

 * bubulle@debian.org--2005/apt--main--0--patch-122
   Correct typography in French translation

 * bubulle@debian.org--2005/apt--main--0--patch-123
   Spelling fix for consistency in French translation

 * bubulle@debian.org--2005/apt--main--0--patch-124
   Merge with Michael

 * bubulle@debian.org--2005/apt--main--0--patch-125
   Fixed localization of y/n questions in German translation

 * bubulle@debian.org--2005/apt--main--0--patch-126
   Swedish translation update

 * bubulle@debian.org--2005/apt--main--0--patch-127
   Complete Tagalog translation / Add Changelog

 * bubulle@debian.org--2005/apt--main--0--patch-128
   Danish translation update

 * bubulle@debian.org--2005/apt--main--0--patch-129
   Basque translation update

 * bubulle@debian.org--2005/apt--main--0--patch-130
   Galician translation completed

 * bubulle@debian.org--2005/apt--main--0--patch-131
   Simplified Chinese translation update

 * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-5
   * merged with apt--main--0

 * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-6
   * fixed a incorrect po/he.po merge

 * michael.vogt@ubuntu.com--2005/apt--cdrom-fallback--0--base-0
   tag of apt@packages.debian.org/apt--main--0--patch-110

 * michael.vogt@ubuntu.com--2005/apt--cdrom-fallback--0--patch-1
   * initial patch to make falling back from cdrom possible

 * michael.vogt@ubuntu.com--2005/apt--cdrom-fallback--0--patch-2
   * fix in methods/cdrom.cc: don't call Fail() but return false so that apt can fallback to a differencent source

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-10
   * fix a bug in a man-page, fix a problem with overly long lines in apt-cdrom

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-11
   * merged with apt--main--0

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-12
   * fix a incorrect error message (it always added .gz regardless what was downloaded)

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-13
   * merged with main

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-14
   * added Hashsum support for file and cdrom 

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-15
   * added README.arch

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-16
   * merged with main

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-17
   * move the changelog to the right place

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-18
   * Change pkgPolicy::Pin from private to protected 

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-19
   * added a default constructor for PrvIterator 

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-20
   * applied otavios patch to reread the statusFile on debSystem::Initialize

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-33
   * merged with matt's tree

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-34
   * merged with matts tree

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-35
   * build debian and ubuntu package from the same source

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-36
   * added debian/patches dir

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-37
   * fix the breakage from my last commit (note to self: always, _always_ run baz diff before a commit)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-38
   * removed the lsb_release build patch (nobody except me seems to like it)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-39
   * merged from main

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-40
   * merged the apt--sane-handle-timeout--0 branch

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-41
   * merged apt--bts225947--0

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-42
   * merged with apt--main

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-43
   * added patch that adds a apt-secure man-page (thanks to jfs@computer.org)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-44
   * added author credits

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-45
   * added apt-ftparchive.conf example

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-46
   * corrected the utf8 of javier fernandes pena

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-47
   * improve the timeout handling (again)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-48
   * merged with apt--fixes--0

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-49
   * README.arch updates, comment in apt-pkg/algorithm.h added, apt-pkg/cacheiterators.h order in initlist changed to remove warning

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-50
   * meda-change message is send over status-fd now

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-51
   * include a human readable string for the MediaChange status-fd message as well

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-52
   * finalizing changelog

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-53
   * check ctime as well in cron.daily when cleaning up packages in apt.cron.daily

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-54
   * fix a stupid typo in apt.cron.daily

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-55
   * fix apt-pkg/cdrom.cc to umount the cdrom again if anything fails

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-56
   * merged from apt--cdrom-fallback--0

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-57
   * changelog update

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-58
   * better error string for a failed dpkg-source

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-59
   * make sure that the pkgRecords D'tor does not segfault

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-60
   * merged updated french man-page

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-61
   * merged with bubulle

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-62
   * leak fix for debian #250583

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-63
   * changelog update

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-64
   * merged with bubulle 

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-65
   * inital support for "apt-get source -t dist" (but no downgrades yet

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-66
   * full support for apt-get source -t now (and honor pining too)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-67
   * added APT::Authentication::Trust-CDROM option

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-68
   * fix a crash in apt-ftparchive

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-69
   * sparc64 alignment fix

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-70
   * fix segfault when there is no Archive for a VerFile

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-71
   * don't get candidate release as version tag for FindSrc by default. because it break for bin-NMUs :/ (e.g. dpkg source is 1.13.11, but i386 version string is 1.13.11.0.1)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-72
   * corrections in the changelog

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-73
   * init the default ScreenWidth to 79 columns by default (Closes: #324921)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-74
   apt-cdrom.cc:fix some missing gettext() calls (closes: #334539); doc/apt-cache.8.xml: fix typo (closes: #334714)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-75
   * seting section to "admin" to match override file

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-76
   * finalized the changelog

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-77
   * renamed Trust-CDROM to TrustCDROM to make it consistent with ubuntu

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-78
   * fix a incorrect example

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-79
   * revert patch from patch-59, causes all sorts of trouble

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-80
   * fix changelog

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-81
   * be extra carefull in cmdline/apt-get.cc:FindSrc() and check VF.File() for NULL

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-82
   * merged with bubulle 

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-83
   * cmdline/apt-get.cc: fix bug in FindSrc() (debian #335213)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-84
   * added armeb to archtable

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-85
   * merged with bubulle, changelog updates

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-86
   * merged the NMU from Franz Pop, fixed armeb problem (#333599)

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-87
   * removed double armeb entry in buildlib/sizetable

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-88
   * finalized changelog

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-89
   * turn off "secure-acquire" when --allow-unauthenticated is given

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-90
   * merged the sources.list.d patch

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-91
   * merged with bubulle

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-92
   * changelog update

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-93
   * sources.list.d documented

 * michael.vogt@ubuntu.com--2005/apt--sane-handle-timeout--0--patch-3
   * merged with main

 * michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0--base-0
   tag of apt@packages.debian.org/apt--main--0--patch-79

 * michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0--patch-1
   * implemented "TrustCDROM" mode

 * michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0--patch-2
   * added APT::Authentication::TrustCDROM to the configure-index

 * otavio@debian.org--2005/apt--fixes--0--patch-28
   Reread status configuration, needed for clients using independent apt ...

 * philippe.batailler@free.fr--2005/VOGTapt--mvo--0--patch-1
   French L10N update

 * philippe.batailler@free.fr--2005/VOGTapt--mvo--0--patch-2
   Generate correctly french manpages
Michael Vogt 20 anni fa
parent
commit
7230ad48a5
84 ha cambiato i file con 17086 aggiunte e 8074 eliminazioni
  1. 12 0
      README.arch
  2. 8 1
      README.progress-reporting
  3. 18 9
      apt-pkg/acquire-item.cc
  4. 3 2
      apt-pkg/acquire-item.h
  5. 1 1
      apt-pkg/acquire-method.cc
  6. 19 0
      apt-pkg/acquire-worker.cc
  7. 2 1
      apt-pkg/algorithms.h
  8. 3 1
      apt-pkg/cacheiterators.h
  9. 17 2
      apt-pkg/cdrom.cc
  10. 1 1
      apt-pkg/contrib/md5.h
  11. 2 2
      apt-pkg/contrib/mmap.cc
  12. 4 0
      apt-pkg/deb/debmetaindex.cc
  13. 6 1
      apt-pkg/deb/debsystem.cc
  14. 3 2
      apt-pkg/init.cc
  15. 1 1
      apt-pkg/packagemanager.cc
  16. 2 2
      apt-pkg/policy.h
  17. 110 5
      apt-pkg/sourcelist.cc
  18. 5 0
      apt-pkg/sourcelist.h
  19. 1 0
      buildlib/archtable
  20. 1 0
      buildlib/sizetable
  21. 10 4
      cmdline/acqprogress.cc
  22. 3 3
      cmdline/apt-cdrom.cc
  23. 42 14
      cmdline/apt-get.cc
  24. 1 1
      configure.in
  25. 1 0
      debian/apt-utils.examples
  26. 10 4
      debian/apt.cron.daily
  27. 1 0
      debian/apt.manpages
  28. 110 3
      debian/changelog
  29. 1 1
      debian/control
  30. 2 1
      debian/rules
  31. 1 1
      doc/apt-cache.8.xml
  32. 43 4
      doc/apt-key.8.xml
  33. 209 0
      doc/apt-secure.8.xml
  34. 1 1
      doc/apt.conf.5.xml
  35. 49 0
      doc/apt.ent
  36. 46 0
      doc/examples/apt-ftparchive.conf
  37. 5 0
      doc/examples/configure-index
  38. 2 2
      doc/fr/apt-config.fr.8.xml
  39. 39 5
      doc/fr/apt-key.fr.8.xml
  40. 217 0
      doc/fr/apt-secure.fr.8.xml
  41. 48 0
      doc/fr/apt.ent.fr
  42. 2 2
      doc/fr/apt_preferences.fr.5.xml
  43. 10 2
      doc/fr/makefile
  44. 2 1
      doc/makefile
  45. 7 0
      doc/sources.list.5.xml
  46. 3 2
      ftparchive/writer.cc
  47. 8 2
      methods/cdrom.cc
  48. 3 0
      methods/connect.cc
  49. 7 1
      methods/file.cc
  50. 29 0
      po/ChangeLog
  51. 131 104
      po/apt-all.pot
  52. 424 254
      po/bs.po
  53. 432 301
      po/ca.po
  54. 436 255
      po/cs.po
  55. 430 280
      po/da.po
  56. 436 286
      po/de.po
  57. 436 255
      po/el.po
  58. 429 257
      po/en_GB.po
  59. 437 287
      po/es.po
  60. 434 266
      po/eu.po
  61. 436 255
      po/fi.po
  62. 478 289
      po/fr.po
  63. 2747 0
      po/gl.po
  64. 424 254
      po/he.po
  65. 436 255
      po/hu.po
  66. 435 281
      po/it.po
  67. 436 255
      po/ja.po
  68. 436 255
      po/ko.po
  69. 1 1
      po/makefile
  70. 436 255
      po/nb.po
  71. 436 255
      po/nl.po
  72. 436 255
      po/nn.po
  73. 436 255
      po/pl.po
  74. 435 269
      po/pt.po
  75. 435 269
      po/pt_BR.po
  76. 436 255
      po/ro.po
  77. 434 255
      po/ru.po
  78. 436 255
      po/sk.po
  79. 436 255
      po/sl.po
  80. 436 255
      po/sv.po
  81. 437 256
      po/tl.po
  82. 436 255
      po/zh_CN.po
  83. 436 255
      po/zh_TW.po
  84. BIN
      share/debian-archive.gpg

+ 12 - 0
README.arch

@@ -0,0 +1,12 @@
+
+You can build apt from arch, but this needs the following additional
+packages (in addtion to the usual build-depends):
+xmlto perlsgml sgml2x sgmlspl docbook
+
+then run:
+
+$ debian/rules arch-build
+
+that will build packages in the "debian/arch-build" directory. It will
+honor "DEB_BUILD_PROG_OPTS" as options that are passed to debuild (e.g. -S 
+may be usefull).

+ 8 - 1
README.progress-reporting

@@ -5,7 +5,7 @@ If the apt options: "APT::Status-Fd" is set, apt will send status
 reports to that fd. The status information is seperated with a ':', 
 reports to that fd. The status information is seperated with a ':', 
 there are the following status conditions:
 there are the following status conditions:
 
 
-status = {"pmstatus", "dlstatus", "conffile-prompt", "error" } 
+status = {"pmstatus", "dlstatus", "conffile-prompt", "error", "media-change" } 
 
 
 The reason for using a fd instead of a OpProgress class is that many
 The reason for using a fd instead of a OpProgress class is that many
 apt frontend fork a (vte) terminal for the actual installation.
 apt frontend fork a (vte) terminal for the actual installation.
@@ -47,6 +47,13 @@ pmconffile
 pmconffile:conffile:percent:'current-conffile' 'new-conffile' useredited distedited
 pmconffile:conffile:percent:'current-conffile' 'new-conffile' useredited distedited
 
 
 
 
+media-change
+------------
+media-change:medium:drive:human-readable string
+
+example:
+media-change: Ubuntu 5.10 _Breezy Badger_ - Alpha i386 (20050830):/cdrom/:Please insert the disc labeled: 'Ubuntu 5.10 _Breezy Badger_ - Alpha i386 (20050830)' in the drive '/cdrom/' and press enter.
+
 
 
 dlstatus
 dlstatus
 --------
 --------

+ 18 - 9
apt-pkg/acquire-item.cc

@@ -142,20 +142,21 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner,
 {
 {
    Decompression = false;
    Decompression = false;
    Erase = false;
    Erase = false;
-   
+
    DestFile = _config->FindDir("Dir::State::lists") + "partial/";
    DestFile = _config->FindDir("Dir::State::lists") + "partial/";
    DestFile += URItoFileName(URI);
    DestFile += URItoFileName(URI);
 
 
    if(comprExt.empty()) 
    if(comprExt.empty()) 
    {
    {
-      // autoselect 
-      if(FileExists("/usr/bin/bzip2"))
-	 Desc.URI = URI + ".bz2"; 
-      else
-	 Desc.URI = URI + ".gz"; 
+      // autoselect the compression method
+      if(FileExists("/usr/bin/bzip2")) 
+	 CompressionExtension = ".bz2";
+      else 
+	 CompressionExtension = ".gz";
    } else {
    } else {
-      Desc.URI = URI + comprExt; 
+      CompressionExtension = comprExt;
    }
    }
+   Desc.URI = URI + CompressionExtension; 
 
 
    Desc.Description = URIDesc;
    Desc.Description = URIDesc;
    Desc.Owner = this;
    Desc.Owner = this;
@@ -401,7 +402,8 @@ void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
    unlink(Final.c_str());
    unlink(Final.c_str());
 
 
    // if we get a timeout if fail
    // if we get a timeout if fail
-   if(LookupTag(Message,"FailReason") == "Timeout") {
+   if(LookupTag(Message,"FailReason") == "Timeout" || 
+      LookupTag(Message,"FailReason") == "TmpResolveFailure") {
       Item::Failed(Message,Cnf);
       Item::Failed(Message,Cnf);
       return;
       return;
    }
    }
@@ -768,6 +770,12 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
       }
       }
    }
    }
 
 
+   // "allow-unauthenticated" restores apts old fetching behaviour
+   // that means that e.g. unauthenticated file:// uris are higher
+   // priority than authenticated http:// uris
+   if (_config->FindB("APT::Get::AllowUnauthenticated",false) == true)
+      Trusted = false;
+
    // Select a source
    // Select a source
    if (QueueNext() == false && _error->PendingError() == false)
    if (QueueNext() == false && _error->PendingError() == false)
       _error->Error(_("I wasn't able to locate file for the %s package. "
       _error->Error(_("I wasn't able to locate file for the %s package. "
@@ -904,7 +912,8 @@ void pkgAcqArchive::Done(string Message,unsigned long Size,string Md5Hash,
       {
       {
 	 Status = StatError;
 	 Status = StatError;
 	 ErrorText = _("MD5Sum mismatch");
 	 ErrorText = _("MD5Sum mismatch");
-	 Rename(DestFile,DestFile + ".FAILED");
+	 if(FileExists(DestFile))
+	    Rename(DestFile,DestFile + ".FAILED");
 	 return;
 	 return;
       }
       }
    }
    }

+ 3 - 2
apt-pkg/acquire-item.h

@@ -92,7 +92,8 @@ class pkgAcqIndex : public pkgAcquire::Item
    pkgAcquire::ItemDesc Desc;
    pkgAcquire::ItemDesc Desc;
    string RealURI;
    string RealURI;
    string ExpectedMD5;
    string ExpectedMD5;
-   
+   string CompressionExtension;
+
    public:
    public:
    
    
    // Specialized action members
    // Specialized action members
@@ -100,7 +101,7 @@ class pkgAcqIndex : public pkgAcquire::Item
    virtual void Done(string Message,unsigned long Size,string Md5Hash,
    virtual void Done(string Message,unsigned long Size,string Md5Hash,
 		     pkgAcquire::MethodConfig *Cnf);
 		     pkgAcquire::MethodConfig *Cnf);
    virtual string Custom600Headers();
    virtual string Custom600Headers();
-   virtual string DescURI() {return RealURI + ".gz";};
+   virtual string DescURI() {return RealURI + CompressionExtension;};
 
 
    pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc,
    pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc,
 	       string ShortDesct, string ExpectedMD5, string compressExt="");
 	       string ShortDesct, string ExpectedMD5, string compressExt="");

+ 1 - 1
apt-pkg/acquire-method.cc

@@ -277,7 +277,7 @@ bool pkgAcqMethod::MediaFail(string Required,string Drive)
 	    MyMessages.erase(MyMessages.begin());
 	    MyMessages.erase(MyMessages.begin());
 	 }
 	 }
 
 
-	 return !StringToBool(LookupTag(Message,"Fail"),false);
+	 return !StringToBool(LookupTag(Message,"Failed"),false);
       }
       }
       
       
       Messages.push_back(Message);
       Messages.push_back(Message);

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

@@ -25,6 +25,7 @@
 #include <apti18n.h>
 #include <apti18n.h>
 
 
 #include <iostream>
 #include <iostream>
+#include <sstream>
 #include <fstream>
 #include <fstream>
     
     
 #include <sys/stat.h>
 #include <sys/stat.h>
@@ -367,6 +368,24 @@ bool pkgAcquire::Worker::Capabilities(string Message)
 /* */
 /* */
 bool pkgAcquire::Worker::MediaChange(string Message)
 bool pkgAcquire::Worker::MediaChange(string Message)
 {
 {
+   int status_fd = _config->FindI("APT::Status-Fd",-1);
+   if(status_fd > 0) 
+   {
+      string Media = LookupTag(Message,"Media");
+      string Drive = LookupTag(Message,"Drive"); 
+      ostringstream msg,status;
+      ioprintf(msg,_("Please insert the disc labeled: "
+		     "'%s' "
+		     "in the drive '%s' and press enter."),
+	       Media.c_str(),Drive.c_str());
+      status << "media-change: "  // message
+	     << Media  << ":"     // media
+	     << Drive  << ":"     // drive
+	     << msg.str()         // l10n message
+	     << endl;
+      write(status_fd, status.str().c_str(), status.str().size());
+   }
+
    if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"),
    if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"),
 				    LookupTag(Message,"Drive")) == false)
 				    LookupTag(Message,"Drive")) == false)
    {
    {

+ 2 - 1
apt-pkg/algorithms.h

@@ -118,7 +118,8 @@ class pkgProblemResolver
    
    
    // Try to resolve problems only by using keep
    // Try to resolve problems only by using keep
    bool ResolveByKeep();
    bool ResolveByKeep();
-   
+
+   // Install all protected packages   
    void InstallProtect();   
    void InstallProtect();   
    
    
    pkgProblemResolver(pkgDepCache *Cache);
    pkgProblemResolver(pkgDepCache *Cache);

+ 3 - 1
apt-pkg/cacheiterators.h

@@ -222,7 +222,7 @@ class pkgCache::PrvIterator
    void operator ++(int) {if (Prv != Owner->ProvideP) Prv = Owner->ProvideP +
    void operator ++(int) {if (Prv != Owner->ProvideP) Prv = Owner->ProvideP +
 	(Type == PrvVer?Prv->NextPkgProv:Prv->NextProvides);};
 	(Type == PrvVer?Prv->NextPkgProv:Prv->NextProvides);};
    inline void operator ++() {operator ++(0);};
    inline void operator ++() {operator ++(0);};
-   inline bool end() const {return Prv == Owner->ProvideP?true:false;};
+   inline bool end() const {return Owner == 0 || Prv == Owner->ProvideP?true:false;};
    
    
    // Comparison
    // Comparison
    inline bool operator ==(const PrvIterator &B) const {return Prv == B.Prv;};
    inline bool operator ==(const PrvIterator &B) const {return Prv == B.Prv;};
@@ -244,6 +244,8 @@ class pkgCache::PrvIterator
    inline PkgIterator OwnerPkg() {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[Prv->Version].ParentPkg);};
    inline PkgIterator OwnerPkg() {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[Prv->Version].ParentPkg);};
    inline unsigned long Index() const {return Prv - Owner->ProvideP;};
    inline unsigned long Index() const {return Prv - Owner->ProvideP;};
 
 
+   inline PrvIterator() : Prv(0), Type(PrvVer), Owner(0)  {};
+
    inline PrvIterator(pkgCache &Owner,Provides *Trg,Version *) :
    inline PrvIterator(pkgCache &Owner,Provides *Trg,Version *) :
           Prv(Trg), Type(PrvVer), Owner(&Owner) 
           Prv(Trg), Type(PrvVer), Owner(&Owner) 
    {
    {

+ 17 - 2
apt-pkg/cdrom.cc

@@ -422,6 +422,9 @@ bool pkgCdrom::WriteSourceList(string Name,vector<string> &List,bool Source)
    {      
    {      
       F.getline(Buffer,sizeof(Buffer));
       F.getline(Buffer,sizeof(Buffer));
       CurLine++;
       CurLine++;
+      if (F.fail() && !F.eof())
+	 return _error->Error(_("Line %u too long in source list %s."),
+			      CurLine,File.c_str());
       _strtabexpand(Buffer,sizeof(Buffer));
       _strtabexpand(Buffer,sizeof(Buffer));
       _strstrip(Buffer);
       _strstrip(Buffer);
             
             
@@ -564,7 +567,7 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
    string DFile = _config->FindFile("Dir::State::cdroms");
    string DFile = _config->FindFile("Dir::State::cdroms");
    if (FileExists(DFile) == true)
    if (FileExists(DFile) == true)
    {
    {
-      if (ReadConfigFile(Database,DFile) == false)
+      if (ReadConfigFile(Database,DFile) == false) 
 	 return _error->Error("Unable to read the cdrom database %s",
 	 return _error->Error("Unable to read the cdrom database %s",
 			      DFile.c_str());
 			      DFile.c_str());
    }
    }
@@ -647,8 +650,11 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
       log->Update(msg.str(), STEP_SCAN);
       log->Update(msg.str(), STEP_SCAN);
    }
    }
 
 
-   if (List.size() == 0 && SourceList.size() == 0)
+   if (List.size() == 0 && SourceList.size() == 0) 
+   {
+      UnmountCdrom(CDROM);
       return _error->Error("Unable to locate any package files, perhaps this is not a Debian Disc");
       return _error->Error("Unable to locate any package files, perhaps this is not a Debian Disc");
+   }
 
 
    // Check if the CD is in the database
    // Check if the CD is in the database
    string Name;
    string Name;
@@ -684,7 +690,10 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
 	  Name.empty() == true)
 	  Name.empty() == true)
       {
       {
 	 if(!log) 
 	 if(!log) 
+         {
+	    UnmountCdrom(CDROM);
 	    return _error->Error("No disc name found and no way to ask for it");
 	    return _error->Error("No disc name found and no way to ask for it");
+	 }
 
 
 	 while(true) {
 	 while(true) {
 	    if(!log->AskCdromName(Name)) {
 	    if(!log->AskCdromName(Name)) {
@@ -757,7 +766,10 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
    {
    {
       string::size_type Space = (*I).find(' ');
       string::size_type Space = (*I).find(' ');
       if (Space == string::npos)
       if (Space == string::npos)
+      {
+	 UnmountCdrom(CDROM);
 	 return _error->Error("Internal error");
 	 return _error->Error("Internal error");
+      }
 
 
       if(log) {
       if(log) {
 	 msg.str("");
 	 msg.str("");
@@ -771,7 +783,10 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
    {
    {
       string::size_type Space = (*I).find(' ');
       string::size_type Space = (*I).find(' ');
       if (Space == string::npos)
       if (Space == string::npos)
+      {
+	 UnmountCdrom(CDROM);
 	 return _error->Error("Internal error");
 	 return _error->Error("Internal error");
+      }
 
 
       if(log) {
       if(log) {
 	 msg.str("");
 	 msg.str("");

+ 1 - 1
apt-pkg/contrib/md5.h

@@ -58,7 +58,7 @@ class MD5SumValue
 
 
 class MD5Summation
 class MD5Summation
 {
 {
-   unsigned char Buf[4*4];
+   uint32_t Buf[4];
    unsigned char Bytes[2*4];
    unsigned char Bytes[2*4];
    unsigned char In[16*4];
    unsigned char In[16*4];
    bool Done;
    bool Done;

+ 2 - 2
apt-pkg/contrib/mmap.cc

@@ -155,9 +155,9 @@ DynamicMMap::DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace)
    unsigned long EndOfFile = Fd->Size();
    unsigned long EndOfFile = Fd->Size();
    if (EndOfFile > WorkSpace)
    if (EndOfFile > WorkSpace)
       WorkSpace = EndOfFile;
       WorkSpace = EndOfFile;
-   else
+   else if(WorkSpace > 0)
    {
    {
-      Fd->Seek(WorkSpace);
+      Fd->Seek(WorkSpace - 1);
       char C = 0;
       char C = 0;
       Fd->Write(&C,sizeof(C));
       Fd->Write(&C,sizeof(C));
    }
    }

+ 4 - 0
apt-pkg/deb/debmetaindex.cc

@@ -165,6 +165,10 @@ bool debReleaseIndex::IsTrusted() const
    string VerifiedSigFile = _config->FindDir("Dir::State::lists") +
    string VerifiedSigFile = _config->FindDir("Dir::State::lists") +
       URItoFileName(MetaIndexURI("Release")) + ".gpg";
       URItoFileName(MetaIndexURI("Release")) + ".gpg";
    
    
+   if(_config->FindB("APT::Authentication::TrustCDROM", false))
+      if(URI.substr(0,strlen("cdrom:")) == "cdrom:")
+	 return true;
+   
    if (FileExists(VerifiedSigFile))
    if (FileExists(VerifiedSigFile))
       return true;
       return true;
    return false;
    return false;

+ 6 - 1
apt-pkg/deb/debsystem.cc

@@ -164,7 +164,12 @@ bool debSystem::Initialize(Configuration &Cnf)
    Cnf.CndSet("Dir::State::userstatus","status.user"); // Defunct
    Cnf.CndSet("Dir::State::userstatus","status.user"); // Defunct
    Cnf.CndSet("Dir::State::status","/var/lib/dpkg/status");
    Cnf.CndSet("Dir::State::status","/var/lib/dpkg/status");
    Cnf.CndSet("Dir::Bin::dpkg","/usr/bin/dpkg");
    Cnf.CndSet("Dir::Bin::dpkg","/usr/bin/dpkg");
-   
+
+   if (StatusFile) {
+     delete StatusFile;
+     StatusFile = 0;
+   }
+
    return true;
    return true;
 }
 }
 									/*}}}*/
 									/*}}}*/

+ 3 - 2
apt-pkg/init.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: init.cc,v 1.21 2004/02/27 00:46:44 mdz Exp $
+// $Id: init.cc,v 1.20 2003/02/09 20:31:05 doogie Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    Init - Initialize the package library
    Init - Initialize the package library
@@ -64,13 +64,14 @@ bool pkgInitConfig(Configuration &Cnf)
    // Configuration
    // Configuration
    Cnf.Set("Dir::Etc","etc/apt/");
    Cnf.Set("Dir::Etc","etc/apt/");
    Cnf.Set("Dir::Etc::sourcelist","sources.list");
    Cnf.Set("Dir::Etc::sourcelist","sources.list");
+   Cnf.Set("Dir::Etc::sourceparts","sources.list.d");
    Cnf.Set("Dir::Etc::vendorlist","vendors.list");
    Cnf.Set("Dir::Etc::vendorlist","vendors.list");
    Cnf.Set("Dir::Etc::vendorparts","vendors.list.d");
    Cnf.Set("Dir::Etc::vendorparts","vendors.list.d");
    Cnf.Set("Dir::Etc::main","apt.conf");
    Cnf.Set("Dir::Etc::main","apt.conf");
    Cnf.Set("Dir::Etc::parts","apt.conf.d");
    Cnf.Set("Dir::Etc::parts","apt.conf.d");
    Cnf.Set("Dir::Etc::preferences","preferences");
    Cnf.Set("Dir::Etc::preferences","preferences");
    Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods");
    Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods");
-	      
+   
    bool Res = true;
    bool Res = true;
    
    
    // Read an alternate config file
    // Read an alternate config file

+ 1 - 1
apt-pkg/packagemanager.cc

@@ -636,6 +636,6 @@ pkgPackageManager::OrderResult pkgPackageManager::DoInstall(int statusFd)
    if(DoInstallPreFork() == Failed)
    if(DoInstallPreFork() == Failed)
       return Failed;
       return Failed;
    
    
-   return DoInstallPostFork();
+   return DoInstallPostFork(statusFd);
 }
 }
 									/*}}}*/
 									/*}}}*/

+ 2 - 2
apt-pkg/policy.h

@@ -45,6 +45,8 @@ using std::vector;
 
 
 class pkgPolicy : public pkgDepCache::Policy
 class pkgPolicy : public pkgDepCache::Policy
 {
 {
+   protected:
+
    struct Pin
    struct Pin
    {
    {
       pkgVersionMatch::MatchType Type;
       pkgVersionMatch::MatchType Type;
@@ -58,8 +60,6 @@ class pkgPolicy : public pkgDepCache::Policy
       string Pkg;
       string Pkg;
    };
    };
    
    
-   protected:
-   
    Pin *Pins;
    Pin *Pins;
    signed short *PFPriority;
    signed short *PFPriority;
    vector<Pin> Defaults;
    vector<Pin> Defaults;

+ 110 - 5
apt-pkg/sourcelist.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: sourcelist.cc,v 1.25 2004/06/07 23:08:00 mdz Exp $
+// $Id: sourcelist.cc,v 1.3 2002/08/15 20:51:37 niemeyer Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    List of Sources
    List of Sources
@@ -21,6 +21,13 @@
 #include <apti18n.h>
 #include <apti18n.h>
 
 
 #include <fstream>
 #include <fstream>
+
+// CNC:2003-03-03 - This is needed for ReadDir stuff.
+#include <algorithm>
+#include <stdio.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <unistd.h>
 									/*}}}*/
 									/*}}}*/
 
 
 using namespace std;
 using namespace std;
@@ -142,23 +149,66 @@ pkgSourceList::~pkgSourceList()
 /* */
 /* */
 bool pkgSourceList::ReadMainList()
 bool pkgSourceList::ReadMainList()
 {
 {
-   return Read(_config->FindFile("Dir::Etc::sourcelist"));
+   // CNC:2003-03-03 - Multiple sources list support.
+   bool Res = true;
+#if 0
+   Res = ReadVendors();
+   if (Res == false)
+      return false;
+#endif
+
+   Reset();
+   // CNC:2003-11-28 - Entries in sources.list have priority over
+   //                  entries in sources.list.d.
+   string Main = _config->FindFile("Dir::Etc::sourcelist");
+   if (FileExists(Main) == true)
+      Res &= ReadAppend(Main);   
+
+   string Parts = _config->FindDir("Dir::Etc::sourceparts");
+   if (FileExists(Parts) == true)
+      Res &= ReadSourceDir(Parts);
+   
+   return Res;
 }
 }
 									/*}}}*/
 									/*}}}*/
+// CNC:2003-03-03 - Needed to preserve backwards compatibility.
+// SourceList::Reset - Clear the sourcelist contents			/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgSourceList::Reset()
+{
+   for (const_iterator I = SrcList.begin(); I != SrcList.end(); I++)
+      delete *I;
+   SrcList.erase(SrcList.begin(),SrcList.end());
+}
+									/*}}}*/
+// CNC:2003-03-03 - Function moved to ReadAppend() and Reset().
 // SourceList::Read - Parse the sourcelist file				/*{{{*/
 // SourceList::Read - Parse the sourcelist file				/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* */
 /* */
 bool pkgSourceList::Read(string File)
 bool pkgSourceList::Read(string File)
+{
+   Reset();
+   return ReadAppend(File);
+}
+									/*}}}*/
+// SourceList::ReadAppend - Parse a sourcelist file			/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::ReadAppend(string File)
 {
 {
    // Open the stream for reading
    // Open the stream for reading
    ifstream F(File.c_str(),ios::in /*| ios::nocreate*/);
    ifstream F(File.c_str(),ios::in /*| ios::nocreate*/);
    if (!F != 0)
    if (!F != 0)
       return _error->Errno("ifstream::ifstream",_("Opening %s"),File.c_str());
       return _error->Errno("ifstream::ifstream",_("Opening %s"),File.c_str());
    
    
+#if 0 // Now Reset() does this.
    for (const_iterator I = SrcList.begin(); I != SrcList.end(); I++)
    for (const_iterator I = SrcList.begin(); I != SrcList.end(); I++)
       delete *I;
       delete *I;
    SrcList.erase(SrcList.begin(),SrcList.end());
    SrcList.erase(SrcList.begin(),SrcList.end());
-   char Buffer[300];
+#endif
+   // CNC:2003-12-10 - 300 is too short.
+   char Buffer[1024];
 
 
    int CurLine = 0;
    int CurLine = 0;
    while (F.eof() == false)
    while (F.eof() == false)
@@ -172,7 +222,10 @@ bool pkgSourceList::Read(string File)
 
 
       
       
       char *I;
       char *I;
-      for (I = Buffer; *I != 0 && *I != '#'; I++);
+      // CNC:2003-02-20 - Do not break if '#' is inside [].
+      for (I = Buffer; *I != 0 && *I != '#'; I++)
+         if (*I == '[')
+	    for (I++; *I != 0 && *I != ']'; I++);
       *I = 0;
       *I = 0;
       
       
       const char *C = _strstrip(Buffer);
       const char *C = _strstrip(Buffer);
@@ -188,7 +241,7 @@ bool pkgSourceList::Read(string File)
 
 
       Type *Parse = Type::GetType(LineType.c_str());
       Type *Parse = Type::GetType(LineType.c_str());
       if (Parse == 0)
       if (Parse == 0)
-	 return _error->Error(_("Type '%s' is not known on line %u in source list %s"),LineType.c_str(),CurLine,File.c_str());
+	 return _error->Error(_("Type '%s' is not known in on line %u in source list %s"),LineType.c_str(),CurLine,File.c_str());
       
       
       // Vendor name specified
       // Vendor name specified
       if (C[0] == '[')
       if (C[0] == '[')
@@ -259,3 +312,55 @@ bool pkgSourceList::GetIndexes(pkgAcquire *Owner, bool GetAll) const
    return true;
    return true;
 }
 }
 									/*}}}*/
 									/*}}}*/
+// CNC:2003-03-03 - By Anton V. Denisov <avd@altlinux.org>.
+// SourceList::ReadSourceDir - Read a directory with sources files
+// Based on ReadConfigDir()						/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::ReadSourceDir(string Dir)
+{
+   DIR *D = opendir(Dir.c_str());
+   if (D == 0)
+      return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+
+   vector<string> List;
+   
+   for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D))
+   {
+      if (Ent->d_name[0] == '.')
+	 continue;
+
+      // CNC:2003-12-02 Only accept .list files as valid sourceparts
+      if (flExtension(Ent->d_name) != "list")
+	 continue;
+      
+      // Skip bad file names ala run-parts
+      const char *C = Ent->d_name;
+      for (; *C != 0; C++)
+	 if (isalpha(*C) == 0 && isdigit(*C) == 0
+             && *C != '_' && *C != '-' && *C != '.')
+	    break;
+      if (*C != 0)
+	 continue;
+      
+      // Make sure it is a file and not something else
+      string File = flCombine(Dir,Ent->d_name);
+      struct stat St;
+      if (stat(File.c_str(),&St) != 0 || S_ISREG(St.st_mode) == 0)
+	 continue;
+      
+      List.push_back(File);      
+   }   
+   closedir(D);
+   
+   sort(List.begin(),List.end());
+
+   // Read the files
+   for (vector<string>::const_iterator I = List.begin(); I != List.end(); I++)
+      if (ReadAppend(*I) == false)
+	 return false;
+   return true;
+
+}
+									/*}}}*/
+

+ 5 - 0
apt-pkg/sourcelist.h

@@ -77,6 +77,11 @@ class pkgSourceList
 
 
    bool ReadMainList();
    bool ReadMainList();
    bool Read(string File);
    bool Read(string File);
+
+   // CNC:2003-03-03
+   void Reset();
+   bool ReadAppend(string File);
+   bool ReadSourceDir(string Dir);
    
    
    // List accessors
    // List accessors
    inline const_iterator begin() const {return SrcList.begin();};
    inline const_iterator begin() const {return SrcList.begin();};

+ 1 - 0
buildlib/archtable

@@ -11,6 +11,7 @@ sparc	sparc
 sparc64	sparc
 sparc64	sparc
 alpha.*	alpha
 alpha.*	alpha
 m68k	m68k
 m68k	m68k
+arm.*b	armeb
 arm.*	arm
 arm.*	arm
 powerpc	powerpc
 powerpc	powerpc
 ppc	powerpc
 ppc	powerpc

+ 1 - 0
buildlib/sizetable

@@ -11,6 +11,7 @@
 # The format is:-
 # The format is:-
 # CPU endian sizeof: char, int, short, long
 # CPU endian sizeof: char, int, short, long
 i386    little  1 4 2 4
 i386    little  1 4 2 4
+armeb   big     1 4 2 4
 arm     little  1 4 2 4
 arm     little  1 4 2 4
 alpha   little  1 4 2 8
 alpha   little  1 4 2 8
 mipsel  little  1 4 2 4
 mipsel  little  1 4 2 4

+ 10 - 4
cmdline/acqprogress.cc

@@ -274,10 +274,16 @@ bool AcqTextStatus::MediaChange(string Media,string Drive)
 	    Media.c_str(),Drive.c_str());
 	    Media.c_str(),Drive.c_str());
 
 
    char C = 0;
    char C = 0;
+   bool bStatus = true;
    while (C != '\n' && C != '\r')
    while (C != '\n' && C != '\r')
-      read(STDIN_FILENO,&C,1);
-   
-   Update = true;
-   return true;
+   {
+      int len = read(STDIN_FILENO,&C,1);
+      if(C == 'c' || len <= 0)
+	 bStatus = false;
+   }
+
+   if(bStatus)
+      Update = true;
+   return bStatus;
 }
 }
 									/*}}}*/
 									/*}}}*/

+ 3 - 3
cmdline/apt-cdrom.cc

@@ -75,7 +75,7 @@ string pkgCdromTextStatus::PromptLine(const char *Text)
 
 
 bool pkgCdromTextStatus::AskCdromName(string &name) 
 bool pkgCdromTextStatus::AskCdromName(string &name) 
 {
 {
-   cout << "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'" << flush;
+   cout << _("Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'") << flush;
    name = PromptLine("");
    name = PromptLine("");
 	 
 	 
    return true;
    return true;
@@ -90,7 +90,7 @@ void pkgCdromTextStatus::Update(string text, int current)
 
 
 bool pkgCdromTextStatus::ChangeCdrom() 
 bool pkgCdromTextStatus::ChangeCdrom() 
 {
 {
-   Prompt("Please insert a Disc in the drive and press enter");
+   Prompt(_("Please insert a Disc in the drive and press enter"));
    return true;
    return true;
 }
 }
 
 
@@ -114,7 +114,7 @@ bool DoAdd(CommandLine &)
    pkgCdrom cdrom;
    pkgCdrom cdrom;
    res = cdrom.Add(&log);
    res = cdrom.Add(&log);
    if(res)
    if(res)
-      cout << "Repeat this process for the rest of the CDs in your set." << endl;
+      cout << _("Repeat this process for the rest of the CDs in your set.") << endl;
    return res;
    return res;
 }
 }
 									/*}}}*/
 									/*}}}*/

+ 42 - 14
cmdline/apt-get.cc

@@ -67,7 +67,7 @@ ostream c0out(0);
 ostream c1out(0);
 ostream c1out(0);
 ostream c2out(0);
 ostream c2out(0);
 ofstream devnull("/dev/null");
 ofstream devnull("/dev/null");
-unsigned int ScreenWidth = 80;
+unsigned int ScreenWidth = 80 - 1; /* - 1 for the cursor */
 
 
 // class CacheFile - Cover class for some dependency cache functions	/*{{{*/
 // class CacheFile - Cover class for some dependency cache functions	/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
@@ -1191,24 +1191,54 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
    string VerTag;
    string VerTag;
    string TmpSrc = Name;
    string TmpSrc = Name;
    string::size_type Slash = TmpSrc.rfind('=');
    string::size_type Slash = TmpSrc.rfind('=');
+
+   // honor default release
+   string DefRel = _config->Find("APT::Default-Release");
+   pkgCache::PkgIterator Pkg = Cache.FindPkg(TmpSrc);
+
    if (Slash != string::npos)
    if (Slash != string::npos)
    {
    {
       VerTag = string(TmpSrc.begin() + Slash + 1,TmpSrc.end());
       VerTag = string(TmpSrc.begin() + Slash + 1,TmpSrc.end());
       TmpSrc = string(TmpSrc.begin(),TmpSrc.begin() + Slash);
       TmpSrc = string(TmpSrc.begin(),TmpSrc.begin() + Slash);
+   } 
+   else  if(!Pkg.end() && DefRel.empty() == false)
+   {
+      // we have a default release, try to locate the pkg. we do it like
+      // this because GetCandidateVer() will not "downgrade", that means
+      // "apt-get source -t stable apt" won't work on a unstable system
+      for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; 
+	   Ver++)
+      {
+	 for (pkgCache::VerFileIterator VF = Ver.FileList(); VF.end() == false;
+	      VF++)
+	 {
+	    /* If this is the status file, and the current version is not the
+	       version in the status file (ie it is not installed, or somesuch)
+	       then it is not a candidate for installation, ever. This weeds
+	       out bogus entries that may be due to config-file states, or
+	       other. */
+	    if ((VF.File()->Flags & pkgCache::Flag::NotSource) == 
+		pkgCache::Flag::NotSource && Pkg.CurrentVer() != Ver)
+	    continue;
+	    
+	    //std::cout << VF.File().Archive() << std::endl;
+	    if(VF.File().Archive() && (VF.File().Archive() == DefRel)) 
+	    {
+	       VerTag = Ver.VerStr();
+	       break;
+	    }
+	 }
+      }
    }
    }
-   
+
    /* Lookup the version of the package we would install if we were to
    /* Lookup the version of the package we would install if we were to
       install a version and determine the source package name, then look
       install a version and determine the source package name, then look
-      in the archive for a source package of the same name. In theory
-      we could stash the version string as well and match that too but
-      today there aren't multi source versions in the archive. */
-   if (_config->FindB("APT::Get::Only-Source") == false && 
-       VerTag.empty() == true)
+      in the archive for a source package of the same name. */
+   if (_config->FindB("APT::Get::Only-Source") == false)
    {
    {
-      pkgCache::PkgIterator Pkg = Cache.FindPkg(TmpSrc);
       if (Pkg.end() == false)
       if (Pkg.end() == false)
       {
       {
-	 pkgCache::VerIterator Ver = Cache.GetCandidateVer(Pkg);      
+	 pkgCache::VerIterator Ver = Cache.GetCandidateVer(Pkg);
 	 if (Ver.end() == false)
 	 if (Ver.end() == false)
 	 {
 	 {
 	    pkgRecords::Parser &Parse = Recs.Lookup(Ver.FileList());
 	    pkgRecords::Parser &Parse = Recs.Lookup(Ver.FileList());
@@ -1266,10 +1296,7 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
       }      
       }      
    }
    }
    
    
-   if (Last == 0)
-      return 0;
-   
-   if (Last->Jump(Offset) == false)
+   if (Last == 0 || Last->Jump(Offset) == false)
       return 0;
       return 0;
    
    
    return Last;
    return Last;
@@ -1716,7 +1743,7 @@ bool DoInstall(CommandLine &CmdL)
    // See if we need to prompt
    // See if we need to prompt
    if (Cache->InstCount() == ExpectedInst && Cache->DelCount() == 0)
    if (Cache->InstCount() == ExpectedInst && Cache->DelCount() == 0)
       return InstallPackages(Cache,false,false);
       return InstallPackages(Cache,false,false);
-   
+
    return InstallPackages(Cache,false);   
    return InstallPackages(Cache,false);   
 }
 }
 									/*}}}*/
 									/*}}}*/
@@ -2070,6 +2097,7 @@ bool DoSource(CommandLine &CmdL)
 	    if (system(S) != 0)
 	    if (system(S) != 0)
 	    {
 	    {
 	       fprintf(stderr,_("Unpack command '%s' failed.\n"),S);
 	       fprintf(stderr,_("Unpack command '%s' failed.\n"),S);
+	       fprintf(stderr,_("Check if the 'dpkg-dev' package is installed.\n"));
 	       _exit(1);
 	       _exit(1);
 	    }	    
 	    }	    
 	 }
 	 }

+ 1 - 1
configure.in

@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 
 
 dnl -- SET THIS TO THE RELEASE VERSION --
 dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.40.2")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.42.4")
 PACKAGE="apt"
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
 AC_SUBST(PACKAGE)

+ 1 - 0
debian/apt-utils.examples

@@ -0,0 +1 @@
+doc/examples/apt-ftparchive.conf

+ 10 - 4
debian/apt.cron.daily

@@ -95,9 +95,9 @@ check_size_constraints()
 
 
     # check age
     # check age
     if [ ! $MaxAge -eq 0 ] && [ ! $MinAge -eq 0 ]; then
     if [ ! $MaxAge -eq 0 ] && [ ! $MinAge -eq 0 ]; then
-	find $Cache -name "*.deb"  -mtime +$MaxAge -and -not -mtime -$MinAge -print0 | xargs -r -0 rm -f
+	find $Cache -name "*.deb"  \( -mtime +$MaxAge -and -ctime +$MaxAge \) -and -not \( -mtime -$MinAge -or -ctime -$MinAge \) -print0 | xargs -r -0 rm -f
     elif [ ! $MaxAge -eq 0 ]; then
     elif [ ! $MaxAge -eq 0 ]; then
-	find $Cache -name "*.deb"  -mtime +$MaxAge -print0 | xargs -r -0 rm -f
+	find $Cache -name "*.deb"  -ctime +$MaxAge -and -mtime +$MaxAge -print0 | xargs -r -0 rm -f
     fi
     fi
     
     
     # check size
     # check size
@@ -120,8 +120,14 @@ check_size_constraints()
 
 
 	    # check for MinAge of the file
 	    # check for MinAge of the file
 	    if [ ! $MinAge -eq 0 ]; then 
 	    if [ ! $MinAge -eq 0 ]; then 
-		mtime=$(date --date=$(date -r $file --iso-8601) +%s)
-		delta=$(($now-$mtime))
+		# check both ctime and mtime 
+		mtime=$(stat -c %Y $file)
+		ctime=$(stat -c %Z $file)
+		if [ $mtime -gt $ctime ]; then
+		    delta=$(($now-$mtime))
+		else
+		    delta=$(($now-$ctime))
+		fi
 		#echo "$file ($delta), $MinAge"
 		#echo "$file ($delta), $MinAge"
 		if [ $delta -le $MinAge ]; then
 		if [ $delta -le $MinAge ]; then
 		    #echo "Skiping $file (delta=$delta)"
 		    #echo "Skiping $file (delta=$delta)"

+ 1 - 0
debian/apt.manpages

@@ -3,6 +3,7 @@ doc/apt-cdrom.8
 doc/apt-config.8
 doc/apt-config.8
 doc/apt-get.8
 doc/apt-get.8
 doc/apt-key.8
 doc/apt-key.8
+doc/apt-secure.8
 doc/apt.8
 doc/apt.8
 doc/apt.conf.5
 doc/apt.conf.5
 doc/apt_preferences.5
 doc/apt_preferences.5

+ 110 - 3
debian/changelog

@@ -1,11 +1,118 @@
-apt (0.6.40.2) unstable; urgency=low
+apt (0.6.42.4) unstable; urgency=low
+
+  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-131:  
+    * zh_CN.po: Completed to 507 strings(Closes: #338267)
+    * gl.po: Completed to 510 strings (Closes: #338356)
+  * added support for "/etc/apt/sources.list.d" directory 
+    (closes: #66325)
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 16 Nov 2005 17:13:05 +0100
+
+apt (0.6.42.3) unstable; urgency=low
+
+  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-129:
+    - patch-118: Russian translation update by Yuri Kozlov (closes: #335164)
+    - patch-119: add update-po as a pre-req for binary (closes: #329910)
+    - patch-121: Complete French translation
+    - patch-125: Fixed localization of y/n questions in German translation 
+                 (closes: #337078)
+    - patch-126: Swedish translation update (closes: #337163)
+    - patch-127: Complete Tagalog translation (closes: #337306)
+    - patch-128: Danish translation update (closes: #337949)
+    - patch-129: Basque translation update (closes: #338101)
+  * cmdline/apt-get.cc:
+    - bufix in FindSrc  (closes: #335213, #337910)
+  * added armeb to archtable (closes: #333599)
+  * with --allow-unauthenticated use the old fallback behaviour for
+    sources (closes: #335112)
+   
+ -- Michael Vogt <mvo@debian.org>  Wed,  9 Nov 2005 07:22:31 +0100
+
+apt (0.6.42.2) unstable; urgency=high
+
+  * NMU (approved by maintainer)
+  * Add AMD64 archive signing key to debian-archive.gpg (closes: #336500).
+  * Add big-endian arm (armeb) support (closes: #333599).
+  * Priority high to get the AMD key into testing ASAP.
+
+ -- Frans Pop <fjp@debian.org>  Sun, 30 Oct 2005 21:29:11 +0100
+ 
+apt (0.6.42.1) unstable; urgency=low
+
+  * fix a incorrect example in the apt_prefrences man page
+    (thanks to Filipus Klutiero, closes: #282918)
+  * apt-pkg/pkgrecords.cc:
+    - revert patch from last version, it causes trouble on alpha 
+      and ia64 (closes: #335102, #335103)
+  * cmdline/apt-get.cc:
+    - be extra carefull in FindSrc (closes: #335213)
+
+ -- Michael Vogt <mvo@debian.org>  Sat, 22 Oct 2005 23:44:35 +0200
+
+apt (0.6.42) unstable; urgency=low
+
+  * apt-pkg/cdrom.cc:
+    - unmount the cdrom when apt failed to locate any package files
+  * allow cdrom failures and fallback to other sources in that case
+    (closes: #44135)
+  * better error text when dpkg-source fails 
+  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-115:
+    - patch-99: Added Galician translation
+    - patch-100: Completed Danish translation (Closes: #325686)
+    - patch-104: French translation completed
+    - patch-109: Italian translation completed
+    - patch-112: Swedish translation update 
+    - patch-115: Basque translation completed (Closes: #333299)
+  * applied french man-page update (thanks to Philippe Batailler)
+    (closes: #316638, #327456)
+  * fix leak in the mmap code, thanks to Daniel Burrows for the
+    patch (closes: #250583)
+  * support for apt-get [build-dep|source] -t (closes: #152129)
+  * added "APT::Authentication::TrustCDROM" option to make the life
+    for the installer people easier (closes: #334656)
+  * fix crash in apt-ftparchive (thanks to Bastian Blank for the patch)
+    (closes: #334671)
+  * apt-pkg/contrib/md5.cc:
+    - fix a alignment problem on sparc64 that gives random bus errors
+      (thanks to Fabbione for providing a test-case)
+  * init the default ScreenWidth to 79 columns by default 
+    (Closes: #324921)
+  * cmdline/apt-cdrom.cc: 
+    - fix some missing gettext() calls (closes: #334539)
+  * doc/apt-cache.8.xml: fix typo (closes: #334714)
+  
+ -- Michael Vogt <mvo@debian.org>  Wed, 19 Oct 2005 22:02:09 +0200
+
+apt (0.6.41) unstable; urgency=low
 
 
   * improved the support for "error" and "conffile" reporting from
   * improved the support for "error" and "conffile" reporting from
     dpkg, added the format to README.progress-reporting
     dpkg, added the format to README.progress-reporting
   * added README.progress-reporting to the apt-doc package
   * added README.progress-reporting to the apt-doc package
-  * automatic removal of unused dependencies
+  * improved the network timeout handling, if a index file from a 
+    sources.list times out or EAI_AGAIN is returned from getaddrinfo, 
+    don't try to get the other files from that entry
+  * Support architecture-specific extra overrides
+    (closes: #225947). Thanks to  Anthony Towns for idea and
+    the patch, thanks to Colin Watson for testing it.
+  * Javier Fernandez-Sanguino Pen~a:
+    - Added a first version of an apt-secure.8 manpage, and modified
+      apt-key and apt.end accordingly. Also added the 'update'
+      argument to apt-key which was previously not documented 
+      (Closes: #322120)
+  * Andreas Pakulat:
+    - added example apt-ftparchive.conf file to doc/examples 
+      (closes: #322483)
+  * Fix a incorrect example in the man-page (closes: #282918)
+  * Fix a bug for very long lines in the apt-cdrom code (closes: #280356)
+  * Fix a manual page bug (closes: #316314)
+  * Do md5sum checking for file and cdrom method (closes: #319142)
+  * Change pkgPolicy::Pin from private to protected to let subclasses
+    access it too (closes: #321799)
+  * add default constructor for PrvIterator (closes: #322267)
+  * Reread status configuration on debSystem::Initialize() 
+    (needed for apt-proxy, thanks to Otavio for this patch)
   
   
- -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 18 Aug 2005 11:09:25 +0200
+ -- Michael Vogt <mvo@debian.org>  Mon,  5 Sep 2005 22:59:03 +0200
 
 
 apt (0.6.40.1) unstable; urgency=low
 apt (0.6.40.1) unstable; urgency=low
 
 

+ 1 - 1
debian/control

@@ -14,7 +14,7 @@ Priority: important
 Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)
 Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)
 Provides: ${libapt-pkg:provides}
 Provides: ${libapt-pkg:provides}
 Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2, gnupg
 Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2, gnupg
-Section: base
+Section: admin
 Description: Advanced front-end for dpkg
 Description: Advanced front-end for dpkg
  This is Debian's next generation front-end for the dpkg package manager.
  This is Debian's next generation front-end for the dpkg package manager.
  It provides the apt-get utility and APT dselect method that provides a 
  It provides the apt-get utility and APT dselect method that provides a 

+ 2 - 1
debian/rules

@@ -209,7 +209,7 @@ apt: build debian/shlibs.local
 
 
 	cp debian/bugscript debian/$@/usr/share/bug/apt/script
 	cp debian/bugscript debian/$@/usr/share/bug/apt/script
 
 
-	cp share/ubuntu-archive.gpg debian/$@/usr/share/$@
+	cp share/debian-archive.gpg debian/$@/usr/share/$@
 
 
 #	head -n 500 ChangeLog > debian/ChangeLog
 #	head -n 500 ChangeLog > debian/ChangeLog
 
 
@@ -269,6 +269,7 @@ apt-utils: build debian/shlibs.local
 
 
 	cp $(addprefix $(BLD)/bin/apt-,$(APT_UTILS)) debian/$@/usr/bin/
 	cp $(addprefix $(BLD)/bin/apt-,$(APT_UTILS)) debian/$@/usr/bin/
 	dh_installdocs -p$@
 	dh_installdocs -p$@
+	dh_installexamples -p$@
 
 
 	# Install the man pages..
 	# Install the man pages..
 	dh_installman -p$@
 	dh_installman -p$@

+ 1 - 1
doc/apt-cache.8.xml

@@ -214,7 +214,7 @@ Reverse Provides:
      </varlistentry>
      </varlistentry>
 
 
      <varlistentry><term>rdepends <replaceable>pkg(s)</replaceable></term>
      <varlistentry><term>rdepends <replaceable>pkg(s)</replaceable></term>
-     <listitem><para><literal>rdepends</literal>shows a listing of each reverse dependency a
+     <listitem><para><literal>rdepends</literal> shows a listing of each reverse dependency a
       package has.</para></listitem>
       package has.</para></listitem>
      </varlistentry>
      </varlistentry>
 
 

+ 43 - 4
doc/apt-key.8.xml

@@ -68,17 +68,56 @@
      <para>
      <para>
 
 
        List trusted keys.
        List trusted keys.
+
      </para>
      </para>
 
 
      </listitem>
      </listitem>
      </varlistentry>
      </varlistentry>
+
+     <varlistentry><term>update</term>
+     <listitem>
+     <para>
+
+       Update the local keyring with the keyring of Debian archive
+       keys and removes from the keyring the archive keys which are no
+       longer valid.
+
+     </para>
+
+     </listitem>
+     </varlistentry>
+   </variablelist>
+</refsect1>
+
+ <refsect1><title>Files</title>
+   <variablelist>
+     <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>
+     <listitem><para>Keyring of local trusted keys, new keys will be added here.</para></listitem>
+     </varlistentry>
+
+     <varlistentry><term><filename>/etc/apt/trustdb.gpg</filename></term>
+     <listitem><para>Local trust database of archive keys.</para></listitem>
+     </varlistentry>
+
+     <varlistentry><term><filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename></term>
+     <listitem><para>Keyring of Debian archive trusted keys.</para></listitem>
+     </varlistentry>
+
+     <varlistentry><term><filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename></term>
+     <listitem><para>Keyring of Debian archive removed trusted keys.</para></listitem>
+     </varlistentry>
+
+
+
    </variablelist>
    </variablelist>
+
 </refsect1>
 </refsect1>
 
 
-<!--  <refsect1><title>See Also</title> -->
-<!--    <para> -->
-<!--    &apt-conf;, &apt-get;, &sources-list; -->
-<!--  </refsect1> -->
+<refsect1><title>See Also</title>
+<para>
+&apt-get;, &apt-secure;
+</para>
+</refsect1>
 
 
  &manbugs;
  &manbugs;
  &manauthor;
  &manauthor;

+ 209 - 0
doc/apt-secure.8.xml

@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!ENTITY % aptent SYSTEM "apt.ent">
+%aptent;
+
+]>
+
+<refentry>
+ &apt-docinfo;
+ 
+ <refmeta>
+   <refentrytitle>apt-secure</refentrytitle>
+   <manvolnum>8</manvolnum>
+ </refmeta>
+
+<!-- NOTE: This manpage has been written based on the
+     Securing Debian Manual ("Debian Security
+     Infrastructure" chapter) and on documentation
+     available at the following sites:
+     http://wiki.debian.net/?apt06
+     http://www.syntaxpolice.org/apt-secure/
+     http://www.enyo.de/fw/software/apt-secure/
+-->
+<!-- TODO: write a more verbose example of how it works with 
+     a sample similar to 
+     http://www.debian-administration.org/articles/174
+     ?
+--> 
+
+ 
+ <!-- Man page title -->
+ <refnamediv>
+    <refname>apt-secure</refname>
+    <refpurpose>Archive authentication support for APT</refpurpose>
+ </refnamediv>
+
+ <refsect1><title>Description</title>
+   <para>
+   Starting with version 0.6, <command>apt</command> contains code
+   that does signature checking of the Release file for all
+   archives. This ensures that packages in the archive can't be
+   modified by people who have no access to the Release file signing
+   key.
+   </para>
+
+   <para>
+   If a package comes from a archive without a signature or with a
+   signature that apt does not have a key for that package is
+   considered untrusted and installing it will result in a big
+   warning. <command>apt-get</command> will currently only warn
+   for unsigned archives, future releases might force all sources
+   to be verified before downloading packages from them.
+   </para>
+
+   <para>
+   The package frontends &apt-get;, &aptitude; and &synaptic; support this new
+   authentication feature.
+   </para>
+</refsect1>
+
+ <refsect1><title>Trusted archives</title> 
+
+   <para> 
+   The chain of trust from an apt archive to the end user is made up of
+   different steps. <command>apt-secure</command> is the last step in
+   this chain, trusting an archive does not mean that the packages
+   that you trust it do not contain malicious code but means that you
+   trust the archive maintainer. Its the archive maintainer
+   responsibility to ensure that the archive integrity is correct.
+   </para>
+
+   <para>apt-secure does not review signatures at a
+   package level. If you require tools to do this you should look at
+   <command>debsig-verify</command> and
+   <command>debsign</command> (provided in the debsig-verify and
+   devscripts packages respectively).</para>
+
+   <para>
+   The chain of trust in Debian starts when a maintainer uploads a new
+   package or a new version of a package to the Debian archive. This
+   upload in order to become effective needs to be signed by a key of
+   a maintainer within the Debian maintainer's keyring (available in
+   the debian-keyring package). Maintainer's keys are signed by
+   other maintainers following pre-established procedures to
+   ensure the identity of the key holder.
+   </para>
+
+   <para>
+   Once the uploaded package is verified and included in the archive,
+   the maintainer signature is stripped off, an MD5 sum of the package
+   is computed and put in the Packages file. The MD5 sum of all of the
+   packages files are then computed and put into the Release file. The
+   Release file is then signed by the archive key (which is created
+   once a year and distributed through the FTP server. This key is
+   also on the Debian keyring.
+   </para>
+
+   <para>
+   Any end user can check the signature of the Release file, extract the MD5
+   sum of a package from it and compare it with the MD5 sum of the
+   package he downloaded. Prior to version 0.6 only the MD5 sum of the
+   downloaded Debian package was checked. Now both the MD5 sum and the
+   signature of the Release file are checked.
+   </para>
+
+   <para>Notice that this is distinct from checking signatures on a
+   per package basis. It is designed to prevent two possible attacks:
+   </para>
+
+    <itemizedlist>
+       <listitem><para><literal>Network "man in the middle"
+       attacks</literal>. Without signature checking, a malicious
+       agent can introduce himself in the package download process and
+       provide malicious software either by controlling a network
+       element (router, switch, etc.) or by redirecting traffic to a
+       rogue server (through arp or DNS spoofing
+       attacks).</para></listitem>
+ 
+       <listitem><para><literal>Mirror network compromise</literal>.
+        Without signature checking, a malicious agent can compromise a
+        mirror host and modify the files in it to propage malicious
+        software to all users downloading packages from that
+        host.</para></listitem>
+    </itemizedlist>
+
+   <para>However, it does not defend against a compromise of the
+   Debian master server itself (which signs the packages) or against a
+   compromise of the key used to sign the Release files. In any case,
+   this mechanism can complement a per-package signature.</para>
+</refsect1>
+
+ <refsect1><title>User configuration</title>
+   <para>
+   <command>apt-key</command> is the program that manages the list
+   of keys used by apt. It can be used to add or remove keys although
+   an installation of this release will automatically provide the
+   default Debian archive signing keys used in the Debian package
+   repositories.
+   </para>
+   <para>
+   In order to add a new key you need to first download it
+   (you should make sure you are using a trusted communication channel
+   when retrieving it), add it with <command>apt-key</command> and
+   then run <command>apt-get update</command> so that apt can download
+   and verify the <filename>Release.gpg</filename> files from the archives you
+   have configured.
+   </para>
+</refsect1>
+
+<refsect1><title>Archive configuration</title>
+   <para>
+   If you want to provide archive signatures in an archive under your
+   maintenance you have to:
+   </para>
+
+     <itemizedlist>
+       <listitem><para><literal>Create a toplevel Release
+       file</literal>.  if it does not exist already. You can do this
+       by running <command>apt-ftparchive release</command> 
+       (provided inftp apt-utils).</para></listitem>
+   
+      <listitem><para><literal>Sign it</literal>. You can do this by running
+      <command>gpg -abs -o Release.gpg Release</command>.</para></listitem>
+
+      <listitem><para><literal>Publish the key fingerprint</literal>,
+      that way your users will know what key they need to import in
+      order to authenticate the files in the
+      archive.</para></listitem>
+
+    </itemizedlist>
+
+    <para>Whenever the contents of the archive changes (new packages
+    are added or removed) the archive maintainer has to follow the
+    first two steps previously outlined.</para>
+
+</refsect1>
+
+<refsect1><title>See Also</title> 
+<para> 
+&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-archive;,
+&debsign; &debsig-verify;, &gpg;
+</para>
+
+<para>For more backgound information you might want to review the
+<ulink
+url="http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html">Debian
+Security Infrastructure</ulink> chapter of the Securing Debian Manual
+(available also in the harden-doc package) and the
+<ulink url="http://www.cryptnet.net/fdp/crypto/strong_distro.html"
+>Strong Distribution HOWTO</ulink> by V. Alex Brennen.  </para>
+
+</refsect1>
+
+ &manbugs;
+ &manauthor;
+
+<refsect1><title>Manpage Authors</title> 
+
+<para>This man-page is based on the work of Javier Fernández-Sanguino
+Peña, Isaac Jones, Colin Walters, Florian Weimer and Michael Vogt.
+</para>
+
+</refsect1>
+ 
+
+</refentry>
+

+ 1 - 1
doc/apt.conf.5.xml

@@ -284,7 +284,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    <literal>sourcelist</literal> gives the location of the sourcelist and 
    <literal>sourcelist</literal> gives the location of the sourcelist and 
    <literal>main</literal> is the default configuration file (setting has no effect,
    <literal>main</literal> is the default configuration file (setting has no effect,
    unless it is done from the config file specified by 
    unless it is done from the config file specified by 
-   <envar>APT_CONFIG</envar>.</para>
+   <envar>APT_CONFIG</envar>).</para>
 
 
    <para>The <literal>Dir::Parts</literal> setting reads in all the config fragments in 
    <para>The <literal>Dir::Parts</literal> setting reads in all the config fragments in 
    lexical order from the directory specified. After this is done then the
    lexical order from the directory specified. After this is done then the

+ 49 - 0
doc/apt.ent

@@ -44,6 +44,25 @@
   </citerefentry>"
   </citerefentry>"
 >
 >
 
 
+<!ENTITY apt-key "<citerefentry>
+    <refentrytitle><command>apt-key</command></refentrytitle>
+    <manvolnum>8</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY apt-secure "<citerefentry>
+    <refentrytitle>apt-secure</refentrytitle>
+    <manvolnum>8</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY apt-archive "<citerefentry>
+    <refentrytitle><filename>apt-archive</filename></refentrytitle>
+    <manvolnum>1</manvolnum>
+  </citerefentry>"
+>
+
+
 <!ENTITY sources-list "<citerefentry>
 <!ENTITY sources-list "<citerefentry>
     <refentrytitle><filename>sources.list</filename></refentrytitle>
     <refentrytitle><filename>sources.list</filename></refentrytitle>
     <manvolnum>5</manvolnum>
     <manvolnum>5</manvolnum>
@@ -91,6 +110,36 @@
     <manvolnum>8</manvolnum>
     <manvolnum>8</manvolnum>
   </citerefentry>"
   </citerefentry>"
 >
 >
+
+<!ENTITY aptitude "<citerefentry>
+    <refentrytitle><command>aptitude</command></refentrytitle>
+    <manvolnum>8</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY synaptic "<citerefentry>
+    <refentrytitle><command>synaptic</command></refentrytitle>
+    <manvolnum>8</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY debsign "<citerefentry>
+    <refentrytitle><command>debsign</command></refentrytitle>
+    <manvolnum>1</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY debsig-verify "<citerefentry>
+    <refentrytitle><command>debsig-verify</command></refentrytitle>
+    <manvolnum>1</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY gpg "<citerefentry>
+    <refentrytitle><command>gpg</command></refentrytitle>
+    <manvolnum>1</manvolnum>
+  </citerefentry>"
+>
     
     
 <!-- Boiler plate docinfo section -->
 <!-- Boiler plate docinfo section -->
 <!ENTITY apt-docinfo "
 <!ENTITY apt-docinfo "

+ 46 - 0
doc/examples/apt-ftparchive.conf

@@ -0,0 +1,46 @@
+// This config is for use with the pool-structure for the packages, thus we
+// don't use a Tree Section in here
+
+// The debian archive should be in the current working dir
+Dir {
+	ArchiveDir ".";
+	CacheDir ".";
+};
+
+// Create Packages, Packages.gz and Packages.bz2, remove what you don't need
+Default {
+	Packages::Compress ". gzip bzip2";
+	Sources::Compress ". gzip bzip2";
+	Contents::Compress ". gzip bzip2";
+};
+
+// Includes the main section. You can structure the directory tree under
+// ./pool/main any way you like, apt-ftparchive will take any deb (and
+// source package) it can find. This creates a Packages a Sources and a
+// Contents file for these in the main section of the sid release
+BinDirectory "pool/main" {
+	Packages "dists/sid/main/binary-i386/Packages";
+	SrcPackages "dists/sid/main/source/Sources";
+	Contents "dists/sid/Contents-i386";
+}
+
+// This is the same for the contrib section
+BinDirectory "pool/contrib" {
+	Packages "dists/sid/contrib/binary-i386/Packages";
+	SrcPackages "dists/sid/contrib/source/Sources";
+	Contents "dists/sid/Contents-i386";
+}
+
+// This is the same for the non-free section
+BinDirectory "pool/non-free" {
+	Packages "dists/sid/non-free/binary-i386/Packages";
+	SrcPackages "dists/sid/non-free/source/Sources";
+	Contents "dists/sid/Contents-i386";
+};
+
+// By default all Packages should have the extension ".deb"
+Default {
+	Packages {
+		Extensions ".deb";
+	};
+};

+ 5 - 0
doc/examples/configure-index

@@ -76,6 +76,11 @@ APT
      NoAct "false";
      NoAct "false";
   };
   };
 
 
+  Authentication
+  {
+     TrustCDROM "false";            // consider the CDROM always trusted
+  };
+
   GPGV
   GPGV
   {
   {
      TrustedKeyring "/etc/apt/trusted.gpg";
      TrustedKeyring "/etc/apt/trusted.gpg";

+ 2 - 2
doc/fr/apt-config.fr.8.xml

@@ -57,7 +57,7 @@ des commandes suivantes doit 
 <listitem><para>
 <listitem><para>
 Le terme shell est utilisé pour accéder aux informations de configuration
 Le terme shell est utilisé pour accéder aux informations de configuration
 depuis un script shell. Deux arguments doivent lui être donnés&nbsp;; le 
 depuis un script shell. Deux arguments doivent lui être donnés&nbsp;; le 
-premier est une variable de shell et le second une valeur de configuration à 
+premier est une variable du shell et le second une valeur de configuration à 
 demander.
 demander.
 La sortie standard consiste en une liste de commandes d'assignation de shell 
 La sortie standard consiste en une liste de commandes d'assignation de shell 
 pour chaque valeur présente. Dans un script shell, cette commande devrait
 pour chaque valeur présente. Dans un script shell, cette commande devrait
@@ -69,7 +69,7 @@ RES=`apt-config shell OPTS MyApp::Options`
 eval $RES
 eval $RES
 </programlisting></informalexample>
 </programlisting></informalexample>
 
 
-<para>La variable d'environnement de shell $OPTS sera définie par la valeur de
+<para>La variable d'environnement du shell $OPTS sera définie par la valeur de
 MyApp::Options ou, par défaut, la valeur -f.
 MyApp::Options ou, par défaut, la valeur -f.
      </para>
      </para>
 <para>
 <para>

+ 39 - 5
doc/fr/apt-key.fr.8.xml

@@ -34,7 +34,7 @@
    <para>
    <para>
    <command>apt-key</command> gère les clés dont se sert apt pour
    <command>apt-key</command> gère les clés dont se sert apt pour
 authentifier les paquets. Les paquets authentifiés par ces clés seront
 authentifier les paquets. Les paquets authentifiés par ces clés seront
-réputés 
+réputés fiables. 
    </para>
    </para>
 </refsect1>
 </refsect1>
 
 
@@ -73,13 +73,47 @@ Afficher la liste des cl
 
 
      </listitem>
      </listitem>
      </varlistentry>
      </varlistentry>
+
+     <varlistentry><term>update</term>
+     <listitem>
+     <para>
+Mettre à jour le trousseau de clés local avec le trousseau de clés de l'archive
+Debian et supprimer les clés qui sont périmées.
+</para>
+	</listitem>
+      </varlistentry>
+
    </variablelist>
    </variablelist>
 </refsect1>
 </refsect1>
 
 
-<!--  <refsect1><title>See Also</title> -->
-<!--    <para> -->
-<!--    &apt-conf;, &apt-get;, &sources-list; -->
-<!--  </refsect1> -->
+ <refsect1><title>Fichiers</title>
+   <variablelist>
+     <varlistentry><term><filename>/etc/apt/trusted.gpg</filename></term>
+<listitem><para>Trousseau de clés locales fiables, les nouvelles clés sont ajoutées ici.</para>
+</listitem>
+     </varlistentry>
+
+     <varlistentry><term><filename>/etc/apt/trustdb.gpg</filename></term>
+     <listitem><para>Base de données locale fiable des clés de l'archive.</para></listitem>
+     </varlistentry>
+
+   <varlistentry><term><filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename></term>
+     <listitem><para>Trousseau des clés fiables de l'archive Debian.</para></listitem>
+     </varlistentry>
+
+     <varlistentry><term><filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>
+</term>
+    <listitem><para>>Trousseau des clés fiables supprimées de l'archive Debian.</para></listitem>
+     </varlistentry>
+
+   </variablelist>
+  </refsect1>
+
+<refsect1><title>Voir aussi</title>
+<para>
+&apt-get;, &apt-secure;
+</para>
+</refsect1>
 
 
  &manbugs;
  &manbugs;
  &manauthor;
  &manauthor;

+ 217 - 0
doc/fr/apt-secure.fr.8.xml

@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="iso-8859-15" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!ENTITY % aptent SYSTEM "apt.ent.fr">
+%aptent;
+
+]>
+
+<refentry lang="fr">
+ &apt-docinfo;
+ 
+ <refmeta>
+   <refentrytitle>apt-secure</refentrytitle>
+   <manvolnum>8</manvolnum>
+ </refmeta>
+
+<!-- NOTE: This manpage has been written based on the
+     Securing Debian Manual ("Debian Security
+     Infrastructure" chapter) and on documentation
+     available at the following sites:
+     http://wiki.debian.net/?apt06
+     http://www.syntaxpolice.org/apt-secure/
+     http://www.enyo.de/fw/software/apt-secure/
+-->
+<!-- TODO: write a more verbose example of how it works with 
+     a sample similar to 
+     http://www.debian-administration.org/articles/174
+     ?
+--> 
+
+ 
+ <!-- Man page title -->
+ <refnamediv>
+    <refname>apt-secure</refname>
+    <refpurpose>Certification d'archive avec APT</refpurpose>
+ </refnamediv>
+
+ <refsect1><title>Description</title>
+   <para>
+   Depuis sa version 0.6, <command>apt</command> sait vérifier 
+la signature du fichier Release de chaque archive. On s'assure ainsi que les
+paquets de cette archive ne peuvent pas être modifiés par quelqu'un qui ne 
+possède pas la clé de la signature du fichier Release.
+   </para>
+
+   <para>
+   Quand un paquet provient d'une archive sans signature ou d'une archive avec 
+une signature dont apt ne possède pas la clé, ce paquet n'est pas considéré 
+comme fiable et son installation provoquera un avertissement. Pour 
+l'instant, <command>apt-get</command> ne signale que les archives sans 
+signature&nbsp;; les prochaines versions pourraient rendre obligatoire la 
+vérification des sources avant tout téléchargement de paquet.
+   </para>
+
+   <para>
+   Les paquets &apt-get;, &aptitude; et &synaptic; possèdent cette nouvelle 
+fonction de certification. 
+
+   </para>
+</refsect1>
+
+ <refsect1><title>Archives fiables</title> 
+
+   <para> 
+   D'une archive apt jusqu'à l'utilisateur, la confiance se construit en 
+plusieurs étapes. <command>Apt-secure</command> est la dernière étape. Faire 
+confiance à une archive ne signifie pas que les paquets qu'elle contient 
+sont exempts de code malveillant, mais signifie que vous faites confiance au 
+responsable de l'archive. C'est ensuite au responsable de l'archive de faire 
+en sorte que l'archive soit fiable. 
+
+   </para>
+
+   <para><command>Apt-secure</command> n'examine pas la signature d'un 
+paquet. Certains programmes peuvent le faire comme 
+<command>debsig-verify</command> ou <command>debsign</command>, qu'on peut 
+trouver dans les paquets debsig-verify et devscripts.
+</para>
+
+   <para>
+   La fiabilisation dans Debian commence quand un responsable de paquet envoie 
+un nouveau paquet ou une nouvelle version d'un paquet dans l'archive. Cet 
+envoi, pour être effectif, doit être signé avec la clé d'un responsable qui 
+se trouve dans le trousseau des responsables Debian (disponible dans le 
+paquet debian-keyring). Les clés des responsables de paquet sont signées par 
+d'autres responsables, suivant des procédures préétablies pour s'assurer de 
+l'identité des propriétaires de la clé.
+
+   </para>
+
+   <para>
+   Une fois le paquet vérifié et archivé, la signature du responsable est 
+enlevée, une somme MD5 du paquet est calculée et mise dans le fichier 
+Packages. Une somme MD5 de tous les paquets est ensuite calculée et mise 
+dans le fichier Release. Ce fichier est signé par la clé de l'archive. Cette 
+clé qui est créée chaque année et distribuée par le serveur FTP se trouve 
+aussi dans le trousseau Debian.
+
+   </para>
+
+   <para>
+   Un utilisateur peut consulter la signature du fichier Release, extraire la 
+somme MD5 d'un paquet et la comparer avec la somme du paquet qu'il a 
+téléchargé. Avant la version 0.6, seule la somme du paquet téléchargé était 
+vérifiée. Maintenant on peut vérifier aussi la signature du fichier Release.
+
+   </para>
+
+   <para>Cette façon de faire est différente d'une vérification de la signature d'un 
+paquet. Elle vise à empêcher deux types d'attaque possibles&nbsp;: 
+
+   </para>
+
+    <itemizedlist>
+       <listitem><para>
+L'attaque de type <quote>homme au milieu</quote>. Sans vérification de 
+signature, quelqu'un de malveillant peut s'introduire au milieu du 
+processus de téléchargement et insérer du code soit en contrôlant un élément 
+du réseau, routeur, commutateur, etc. soit en détournant le trafic vers un 
+serveur fourbe (par usurpation d'adresses).
+</para></listitem>
+ 
+       <listitem><para>
+L'attaque par compromission d'un miroir sur le réseau.  Sans vérification de 
+signature, quelqu'un de malveillant peut compromettre un miroir et modifier 
+les fichiers. Ainsi tous ceux qui téléchargent les paquets de ce miroir 
+propagent du code malveillant.
+</para></listitem>
+    </itemizedlist>
+
+   <para>
+Cependant cette méthode ne garantit pas contre une compromission du serveur 
+Debian lui-même (qui signe les paquets) ni contre la compromission de la clé 
+qui sert à signer les fichiers Release. Mais elle peut compléter la 
+signature des paquets.
+</para>
+</refsect1>
+
+ <refsect1><title>Configuration</title>
+   <para>
+   Le programme qui gère la liste des clés utilisées par apt s'appelle 
+<command>apt-key</command>. Il peut ajouter ou supprimer des clés. Cette 
+version installe automatiquement les clés qui servent à signer l'archive 
+Debian et les différents répertoires de paquets. 
+
+   </para>
+   <para>
+   Pour ajouter une clé, vous devez d'abord la télécharger. Il vaut mieux 
+utiliser un canal fiable pour ce téléchargement. Ensuite vous l'ajoutez avec 
+la commande <command>apt-key</command> et vous lancez la commande 
+<command>apt-get update</command> pour télécharger et vérifier le fichier 
+<filename>Release.gpg</filename> de l'archive que vous avez configurée.
+
+   </para>
+</refsect1>
+
+<refsect1><title>Configuration d'une archive</title>
+   <para>
+   Si vous voulez signer les archives dont vous avez la responsabilité, vous 
+devez&nbsp;:
+
+   </para>
+
+     <itemizedlist>
+       <listitem><para>créer un fichier Release à la racine de l'archive, s'il n'existe pas 
+déjà. Vous pouvez le créer avec la commande <command>apt-ftparchive release</command> 
+(fournie dans le paquet apt-utils)&nbsp;;
+</para></listitem>
+   
+      <listitem><para>
+le signer, avec la commande <command>gpg -abs -o Release.gpg Release</command>&nbsp;;
+</para></listitem>
+
+      <listitem><para>
+publier l'empreinte de la clé. Ainsi les utilisateurs de votre archive 
+connaîtront la clé qu'ils doivent importer pour authentifier les fichiers de 
+l'archive.
+</para></listitem>
+
+    </itemizedlist>
+
+    <para>Chaque fois que le contenu de l'archive change, le responsable doit refaire 
+les deux premières étapes.
+</para>
+
+</refsect1>
+
+<refsect1><title>Voir aussi</title> 
+<para> 
+&apt-conf;, &apt-get;,&sources-list;, &apt-key;, &apt-archive;, &debsign;, 
+&debsig-verify;, &gpg;
+
+</para>
+
+<para>Pour des informations plus substantielles, vous pouvez consulter 
+<ulink url="http://www.debian.org/doc/manuals/securing-debian-howto/ch7.en.html">
+l'infrastructure debian pour la sécurité</ulink> un chapitre du manuel Debian sur la sécurité 
+(disponible dans le paquet harden-doc) et le 
+<ulink url="http://www.cryptnet.net/fdp/crypto/strong_distro.html">Strong Distribution HOWTO</ulink> par V. Alex Brennen.
+  </para>
+
+</refsect1>
+
+ &manbugs;
+ &manauthor;
+
+<refsect1><title>Auteurs</title> 
+
+<para>
+Cette page a été écrite à partir des travaux de Javier Fernández-Sanguino Peña, Isaac 
+Jones, Colin Walters, Florian Weimer et Michael Vogt.
+</para>
+  </refsect1>
+&traducteur;
+ 
+</refentry>

+ 48 - 0
doc/fr/apt.ent.fr

@@ -42,6 +42,24 @@
     <manvolnum>5</manvolnum>
     <manvolnum>5</manvolnum>
   </citerefentry>">
   </citerefentry>">
 
 
+<!ENTITY apt-key "<citerefentry>
+    <refentrytitle><command>apt-key</command></refentrytitle>
+    <manvolnum>8</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY apt-secure "<citerefentry>
+    <refentrytitle>apt-secure</refentrytitle>
+    <manvolnum>8</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY apt-archive "<citerefentry>
+    <refentrytitle><filename>apt-archive</filename></refentrytitle>
+    <manvolnum>1</manvolnum>
+  </citerefentry>"
+>
+
 <!ENTITY sources-list "<citerefentry>
 <!ENTITY sources-list "<citerefentry>
     <refentrytitle><filename>sources.list</filename></refentrytitle>
     <refentrytitle><filename>sources.list</filename></refentrytitle>
     <manvolnum>5</manvolnum>
     <manvolnum>5</manvolnum>
@@ -89,6 +107,36 @@
     <manvolnum>8</manvolnum>
     <manvolnum>8</manvolnum>
   </citerefentry>">
   </citerefentry>">
     
     
+<!ENTITY aptitude "<citerefentry>
+    <refentrytitle><command>aptitude</command></refentrytitle>
+    <manvolnum>8</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY synaptic "<citerefentry>
+    <refentrytitle><command>synaptic</command></refentrytitle>
+    <manvolnum>8</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY debsign "<citerefentry>
+    <refentrytitle><command>debsign</command></refentrytitle>
+    <manvolnum>1</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY debsig-verify "<citerefentry>
+    <refentrytitle><command>debsig-verify</command></refentrytitle>
+    <manvolnum>1</manvolnum>
+  </citerefentry>"
+>
+
+<!ENTITY gpg "<citerefentry>
+    <refentrytitle><command>gpg</command></refentrytitle>
+    <manvolnum>1</manvolnum>
+  </citerefentry>"
+>
+
 <!-- Boiler plate docinfo section -->
 <!-- Boiler plate docinfo section -->
 <!ENTITY apt-docinfo "
 <!ENTITY apt-docinfo "
  <refentryinfo>
  <refentryinfo>

+ 2 - 2
doc/fr/apt_preferences.fr.5.xml

@@ -7,7 +7,7 @@
 
 
 ]>
 ]>
 
 
-<refentry>
+<refentry lang="fr">
 
 
  <refentryinfo>
  <refentryinfo>
    &apt-author.team;
    &apt-author.team;
@@ -208,7 +208,7 @@ d'
 <programlisting>
 <programlisting>
 Package: *
 Package: *
 Pin: release a=unstable
 Pin: release a=unstable
-Pin-Priority: 50
+Pin-Priority: 500
 </programlisting>
 </programlisting>
 
 
 <simpara>L'entrée suivante affecte une priorité haute à toutes les versions
 <simpara>L'entrée suivante affecte une priorité haute à toutes les versions

+ 10 - 2
doc/fr/makefile

@@ -5,11 +5,16 @@ SUBDIR=doc/fr
 # Bring in the default rules
 # Bring in the default rules
 include ../../buildlib/defaults.mak
 include ../../buildlib/defaults.mak
 
 
+# Do not use XMLTO, build the manpages directly with XSLTPROC
+XSLTPROC=/usr/bin/xsltproc
+STYLESHEET=/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl
+
+
 # Man pages
 # Man pages
 SOURCE = apt-cache.fr.8 apt-get.fr.8 apt-cdrom.fr.8 apt.conf.fr.5 \
 SOURCE = apt-cache.fr.8 apt-get.fr.8 apt-cdrom.fr.8 apt.conf.fr.5 \
          sources.list.fr.5 apt-config.fr.8 apt-sortpkgs.fr.1 \
          sources.list.fr.5 apt-config.fr.8 apt-sortpkgs.fr.1 \
 	 apt-ftparchive.fr.1 apt_preferences.fr.5 apt-extracttemplates.fr.1 \
 	 apt-ftparchive.fr.1 apt_preferences.fr.5 apt-extracttemplates.fr.1 \
-	 apt-key.fr.8
+	 apt-key.fr.8 apt-secure.fr.8
 
 
 INCLUDES = apt.ent.fr
 INCLUDES = apt.ent.fr
 
 
@@ -17,7 +22,7 @@ doc: $(SOURCE)
 
 
 $(SOURCE) ::  % : %.xml $(INCLUDES)
 $(SOURCE) ::  % : %.xml $(INCLUDES)
 	echo Creating man page $@
 	echo Creating man page $@
-	$(XMLTO) man $<
+	$(XSLTPROC) -o $@ $(STYLESHEET) $<
 
 
 apt-cache.fr.8:: apt-cache.8 
 apt-cache.fr.8:: apt-cache.8 
 	cp $< $@
 	cp $< $@
@@ -52,4 +57,7 @@ apt-extracttemplates.fr.1:: apt-extracttemplates.1
 apt-key.fr.8:: apt-key.8 
 apt-key.fr.8:: apt-key.8 
 	cp $< $@
 	cp $< $@
 
 
+apt-secure.fr.8:: apt-secure.8 
+	cp $< $@
+
 
 

+ 2 - 1
doc/makefile

@@ -14,7 +14,8 @@ include $(DEBIANDOC_H)
 # XML man pages
 # XML man pages
 SOURCE = apt-cache.8 apt-get.8 apt-cdrom.8 apt.conf.5 sources.list.5 \
 SOURCE = apt-cache.8 apt-get.8 apt-cdrom.8 apt.conf.5 sources.list.5 \
          apt-config.8 apt_preferences.5  \
          apt-config.8 apt_preferences.5  \
-         apt-sortpkgs.1 apt-ftparchive.1 apt-extracttemplates.1 apt-key.8
+         apt-sortpkgs.1 apt-ftparchive.1 apt-extracttemplates.1 \
+	 apt-key.8 apt-secure.8
 INCLUDES = apt.ent	 
 INCLUDES = apt.ent	 
 include $(XML_MANPAGE_H)
 include $(XML_MANPAGE_H)
 
 

+ 7 - 0
doc/sources.list.5.xml

@@ -46,6 +46,13 @@
    by using a #.</para>
    by using a #.</para>
  </refsect1>
  </refsect1>
  
  
+ <refsect1><title>sources.list.d</title>
+   <para>The <filename>/etc/apt/sources.list.d</filename> directory provides
+   a way to add sources.list entries in seperate files that end with 
+   <literal>.list</literal>. The format is the same as for the regular
+   <filename>sources.list</filename> file. </para>
+ </refsect1>
+
  <refsect1><title>The deb and deb-src types</title>
  <refsect1><title>The deb and deb-src types</title>
    <para>The <literal>deb</literal> type describes a typical two-level Debian
    <para>The <literal>deb</literal> type describes a typical two-level Debian
    archive, <filename>distribution/component</filename>. Typically,
    archive, <filename>distribution/component</filename>. Typically,

+ 3 - 2
ftparchive/writer.cc

@@ -581,8 +581,6 @@ bool SourcesWriter::DoPackage(string FileName)
 	 auto_ptr<Override::Item> Itm(BOver.GetItem(BinList[I]));
 	 auto_ptr<Override::Item> Itm(BOver.GetItem(BinList[I]));
 	 if (Itm.get() == 0)
 	 if (Itm.get() == 0)
 	    continue;
 	    continue;
-	 if (OverItem.get() == 0)
-	    OverItem = Itm;
 
 
 	 unsigned char NewPrioV = debListParser::GetPrio(Itm->Priority);
 	 unsigned char NewPrioV = debListParser::GetPrio(Itm->Priority);
 	 if (NewPrioV < BestPrioV || BestPrio.empty() == true)
 	 if (NewPrioV < BestPrioV || BestPrio.empty() == true)
@@ -590,6 +588,9 @@ bool SourcesWriter::DoPackage(string FileName)
 	    BestPrioV = NewPrioV;
 	    BestPrioV = NewPrioV;
 	    BestPrio = Itm->Priority;
 	    BestPrio = Itm->Priority;
 	 }	 
 	 }	 
+
+	 if (OverItem.get() == 0)
+	    OverItem = Itm;
       }
       }
    }
    }
    
    

+ 8 - 2
methods/cdrom.cc

@@ -13,6 +13,7 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
 
 
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <unistd.h>
@@ -165,8 +166,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm)
       if (MediaFail(Get.Host,CDROM) == false)
       if (MediaFail(Get.Host,CDROM) == false)
       {
       {
 	 CurrentID = "FAIL";
 	 CurrentID = "FAIL";
-	 Fail(_("Wrong CD-ROM"),true);
-	 return true;
+	 return _error->Error(_("Disk not found."));
       }
       }
    }
    }
    
    
@@ -180,6 +180,12 @@ bool CDROMMethod::Fetch(FetchItem *Itm)
       CurrentID = NewID;
       CurrentID = NewID;
    Res.LastModified = Buf.st_mtime;
    Res.LastModified = Buf.st_mtime;
    Res.Size = Buf.st_size;
    Res.Size = Buf.st_size;
+
+   Hashes Hash;
+   FileFd Fd(Res.Filename, FileFd::ReadOnly);
+   Hash.AddFD(Fd.Fd(), Fd.Size());
+   Res.TakeHashes(Hash);
+
    URIDone(Res);
    URIDone(Res);
    return true;
    return true;
 }
 }

+ 3 - 0
methods/connect.cc

@@ -166,8 +166,11 @@ bool Connect(string Host,int Port,const char *Service,int DefPort,int &Fd,
 	    }
 	    }
 	    
 	    
 	    if (Res == EAI_AGAIN)
 	    if (Res == EAI_AGAIN)
+	    {
+	       Owner->SetFailExtraMsg("\nFailReason: TmpResolveFailure");
 	       return _error->Error(_("Temporary failure resolving '%s'"),
 	       return _error->Error(_("Temporary failure resolving '%s'"),
 				    Host.c_str());
 				    Host.c_str());
+	    }
 	    return _error->Error(_("Something wicked happened resolving '%s:%s' (%i)"),
 	    return _error->Error(_("Something wicked happened resolving '%s:%s' (%i)"),
 				 Host.c_str(),ServStr,Res);
 				 Host.c_str(),ServStr,Res);
 	 }
 	 }

+ 7 - 1
methods/file.cc

@@ -15,6 +15,8 @@
 // Include Files							/*{{{*/
 // Include Files							/*{{{*/
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/error.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/fileutl.h>
 
 
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <unistd.h>
@@ -75,7 +77,11 @@ bool FileMethod::Fetch(FetchItem *Itm)
    
    
    if (Res.Filename.empty() == true)
    if (Res.Filename.empty() == true)
       return _error->Error(_("File not found"));
       return _error->Error(_("File not found"));
-   
+
+   Hashes Hash;
+   FileFd Fd(Res.Filename, FileFd::ReadOnly);
+   Hash.AddFD(Fd.Fd(), Fd.Size());
+   Res.TakeHashes(Hash);
    URIDone(Res);
    URIDone(Res);
    return true;
    return true;
 }
 }

+ 29 - 0
po/ChangeLog

@@ -0,0 +1,29 @@
+2005-11-13   Kov Tchai  <tchaikov@sjtu.edu.cn>
+
+	* zh_CN.po: Completed to 507 strings
+	         Closes: #338267
+
+2005-11-09  Jacobo Tarrio  <jacobo@tarrio.org>
+
+	* gl.po: Completed to 510 strings
+	         Closes: #338356
+
+2005-11-08  Piarres Beobide  <pi@beobide.net>
+
+	* eu.po: Completed to 510 strings
+	         Closes: #338101
+
+2005-11-07  Claus Hindsgaul  <claus_h@image.dk>
+
+	* da.po: Completed to 510 strings
+	         Closes: #337949
+
+2005-11-04  Eric Pareja  <xenos@upm.edu.ph>
+
+	* tl.po: Completed to 510 strings
+	         Closes: #337306
+
+2005-11-04  Christian Perrier  <bubulle@debian.org>
+
+	* Changelog: added to better track down fixed issues
+

+ 131 - 104
po/apt-all.pot

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-11-02 18:56-0500\n"
+"POT-Creation-Date: 2005-11-16 17:15+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -148,7 +148,7 @@ msgstr ""
 
 
 #: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
 #: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2375 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2409 cmdline/apt-sortpkgs.cc:144
 #, c-format
 #, c-format
 msgid "%s %s for %s %s compiled on %s %s\n"
 msgid "%s %s for %s %s compiled on %s %s\n"
 msgstr ""
 msgstr ""
@@ -192,6 +192,18 @@ msgid ""
 "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
 "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
 msgstr ""
 msgstr ""
 
 
+#: cmdline/apt-cdrom.cc:78
+msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc:93
+msgid "Please insert a Disc in the drive and press enter"
+msgstr ""
+
+#: cmdline/apt-cdrom.cc:117
+msgid "Repeat this process for the rest of the CDs in your set."
+msgstr ""
+
 #: cmdline/apt-config.cc:41
 #: cmdline/apt-config.cc:41
 msgid "Arguments not in pairs"
 msgid "Arguments not in pairs"
 msgstr ""
 msgstr ""
@@ -414,12 +426,12 @@ msgstr ""
 msgid "Archive had no package field"
 msgid "Archive had no package field"
 msgstr ""
 msgstr ""
 
 
-#: ftparchive/writer.cc:394 ftparchive/writer.cc:602
+#: ftparchive/writer.cc:394 ftparchive/writer.cc:603
 #, c-format
 #, c-format
 msgid "  %s has no override entry\n"
 msgid "  %s has no override entry\n"
 msgstr ""
 msgstr ""
 
 
-#: ftparchive/writer.cc:437 ftparchive/writer.cc:688
+#: ftparchive/writer.cc:437 ftparchive/writer.cc:689
 #, c-format
 #, c-format
 msgid "  %s maintainer is %s not %s\n"
 msgid "  %s maintainer is %s not %s\n"
 msgstr ""
 msgstr ""
@@ -523,7 +535,7 @@ msgstr ""
 msgid "Y"
 msgid "Y"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:141 cmdline/apt-get.cc:1532
+#: cmdline/apt-get.cc:141 cmdline/apt-get.cc:1565
 #, c-format
 #, c-format
 msgid "Regex compilation error - %s"
 msgid "Regex compilation error - %s"
 msgstr ""
 msgstr ""
@@ -682,11 +694,11 @@ msgstr ""
 msgid "Internal error, Ordering didn't finish"
 msgid "Internal error, Ordering didn't finish"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:790 cmdline/apt-get.cc:1831 cmdline/apt-get.cc:1864
+#: cmdline/apt-get.cc:790 cmdline/apt-get.cc:1864 cmdline/apt-get.cc:1897
 msgid "Unable to lock the download directory"
 msgid "Unable to lock the download directory"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:800 cmdline/apt-get.cc:1912 cmdline/apt-get.cc:2123
+#: cmdline/apt-get.cc:800 cmdline/apt-get.cc:1945 cmdline/apt-get.cc:2157
 #: apt-pkg/cachefile.cc:67
 #: apt-pkg/cachefile.cc:67
 msgid "The list of sources could not be read."
 msgid "The list of sources could not be read."
 msgstr ""
 msgstr ""
@@ -715,7 +727,7 @@ msgstr ""
 msgid "After unpacking %sB disk space will be freed.\n"
 msgid "After unpacking %sB disk space will be freed.\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:845 cmdline/apt-get.cc:1978
+#: cmdline/apt-get.cc:845 cmdline/apt-get.cc:2011
 #, c-format
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgid "Couldn't determine free space in %s"
 msgstr ""
 msgstr ""
@@ -749,7 +761,7 @@ msgstr ""
 msgid "Do you want to continue [Y/n]? "
 msgid "Do you want to continue [Y/n]? "
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:960 cmdline/apt-get.cc:1337 cmdline/apt-get.cc:2021
+#: cmdline/apt-get.cc:960 cmdline/apt-get.cc:1364 cmdline/apt-get.cc:2054
 #, c-format
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgid "Failed to fetch %s  %s\n"
 msgstr ""
 msgstr ""
@@ -758,7 +770,7 @@ msgstr ""
 msgid "Some files failed to download"
 msgid "Some files failed to download"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:979 cmdline/apt-get.cc:2030
+#: cmdline/apt-get.cc:979 cmdline/apt-get.cc:2063
 msgid "Download complete and in download only mode"
 msgid "Download complete and in download only mode"
 msgstr ""
 msgstr ""
 
 
@@ -850,63 +862,63 @@ msgstr ""
 msgid "Selected version %s (%s) for %s\n"
 msgid "Selected version %s (%s) for %s\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1285
+#: cmdline/apt-get.cc:1312
 msgid "The update command takes no arguments"
 msgid "The update command takes no arguments"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1298 cmdline/apt-get.cc:1437
+#: cmdline/apt-get.cc:1325 cmdline/apt-get.cc:1465
 msgid "Unable to lock the list directory"
 msgid "Unable to lock the list directory"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1356
+#: cmdline/apt-get.cc:1383
 msgid ""
 msgid ""
 "Some index files failed to download, they have been ignored, or old ones "
 "Some index files failed to download, they have been ignored, or old ones "
 "used instead."
 "used instead."
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1370
+#: cmdline/apt-get.cc:1397
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1395
+#: cmdline/apt-get.cc:1422
 msgid ""
 msgid ""
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "shouldn't happen. Please file a bug report against apt."
 "shouldn't happen. Please file a bug report against apt."
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1398 cmdline/apt-get.cc:1600
+#: cmdline/apt-get.cc:1425 cmdline/apt-get.cc:1633
 msgid "The following information may help to resolve the situation:"
 msgid "The following information may help to resolve the situation:"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1402
+#: cmdline/apt-get.cc:1429
 msgid "Internal Error, AutoRemover broke stuff"
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1448
 msgid "Internal error, AllUpgrade broke stuff"
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1519 cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1552 cmdline/apt-get.cc:1588
 #, c-format
 #, c-format
 msgid "Couldn't find package %s"
 msgid "Couldn't find package %s"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1542
+#: cmdline/apt-get.cc:1575
 #, c-format
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1572
+#: cmdline/apt-get.cc:1605
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1575
+#: cmdline/apt-get.cc:1608
 msgid ""
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
 "solution)."
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1587
+#: cmdline/apt-get.cc:1620
 msgid ""
 msgid ""
 "Some packages could not be installed. This may mean that you have\n"
 "Some packages could not be installed. This may mean that you have\n"
 "requested an impossible situation or if you are using the unstable\n"
 "requested an impossible situation or if you are using the unstable\n"
@@ -914,149 +926,154 @@ msgid ""
 "or been moved out of Incoming."
 "or been moved out of Incoming."
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1595
+#: cmdline/apt-get.cc:1628
 msgid ""
 msgid ""
 "Since you only requested a single operation it is extremely likely that\n"
 "Since you only requested a single operation it is extremely likely that\n"
 "the package is simply not installable and a bug report against\n"
 "the package is simply not installable and a bug report against\n"
 "that package should be filed."
 "that package should be filed."
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1603
+#: cmdline/apt-get.cc:1636
 msgid "Broken packages"
 msgid "Broken packages"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1634
+#: cmdline/apt-get.cc:1667
 msgid "The following extra packages will be installed:"
 msgid "The following extra packages will be installed:"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1705
+#: cmdline/apt-get.cc:1738
 msgid "Suggested packages:"
 msgid "Suggested packages:"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1706
+#: cmdline/apt-get.cc:1739
 msgid "Recommended packages:"
 msgid "Recommended packages:"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1726
+#: cmdline/apt-get.cc:1759
 msgid "Calculating upgrade... "
 msgid "Calculating upgrade... "
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1729 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1762 methods/ftp.cc:702 methods/connect.cc:101
 msgid "Failed"
 msgid "Failed"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1734
+#: cmdline/apt-get.cc:1767
 msgid "Done"
 msgid "Done"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1799 cmdline/apt-get.cc:1807
+#: cmdline/apt-get.cc:1832 cmdline/apt-get.cc:1840
 msgid "Internal error, problem resolver broke stuff"
 msgid "Internal error, problem resolver broke stuff"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1907
+#: cmdline/apt-get.cc:1940
 msgid "Must specify at least one package to fetch source for"
 msgid "Must specify at least one package to fetch source for"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1934 cmdline/apt-get.cc:2141
+#: cmdline/apt-get.cc:1967 cmdline/apt-get.cc:2175
 #, c-format
 #, c-format
 msgid "Unable to find a source package for %s"
 msgid "Unable to find a source package for %s"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1981
+#: cmdline/apt-get.cc:2014
 #, c-format
 #, c-format
 msgid "You don't have enough free space in %s"
 msgid "You don't have enough free space in %s"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1986
+#: cmdline/apt-get.cc:2019
 #, c-format
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1989
+#: cmdline/apt-get.cc:2022
 #, c-format
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgid "Need to get %sB of source archives.\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:1995
+#: cmdline/apt-get.cc:2028
 #, c-format
 #, c-format
 msgid "Fetch source %s\n"
 msgid "Fetch source %s\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2026
+#: cmdline/apt-get.cc:2059
 msgid "Failed to fetch some archives."
 msgid "Failed to fetch some archives."
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2054
+#: cmdline/apt-get.cc:2087
 #, c-format
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2066
+#: cmdline/apt-get.cc:2099
 #, c-format
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgid "Unpack command '%s' failed.\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2083
+#: cmdline/apt-get.cc:2100
+#, c-format
+msgid "Check if the 'dpkg-dev' package is installed.\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:2117
 #, c-format
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgid "Build command '%s' failed.\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2102
+#: cmdline/apt-get.cc:2136
 msgid "Child process failed"
 msgid "Child process failed"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2118
+#: cmdline/apt-get.cc:2152
 msgid "Must specify at least one package to check builddeps for"
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2146
+#: cmdline/apt-get.cc:2180
 #, c-format
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgid "Unable to get build-dependency information for %s"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2166
+#: cmdline/apt-get.cc:2200
 #, c-format
 #, c-format
 msgid "%s has no build depends.\n"
 msgid "%s has no build depends.\n"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2218
+#: cmdline/apt-get.cc:2252
 #, c-format
 #, c-format
 msgid ""
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "found"
 "found"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2270
+#: cmdline/apt-get.cc:2304
 #, c-format
 #, c-format
 msgid ""
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
 "%s dependency for %s cannot be satisfied because no available versions of "
 "package %s can satisfy version requirements"
 "package %s can satisfy version requirements"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2305
+#: cmdline/apt-get.cc:2339
 #, c-format
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2330
+#: cmdline/apt-get.cc:2364
 #, c-format
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2344
+#: cmdline/apt-get.cc:2378
 #, c-format
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2348
+#: cmdline/apt-get.cc:2382
 msgid "Failed to process build dependencies"
 msgid "Failed to process build dependencies"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2380
+#: cmdline/apt-get.cc:2414
 msgid "Supported modules:"
 msgid "Supported modules:"
 msgstr ""
 msgstr ""
 
 
-#: cmdline/apt-get.cc:2421
+#: cmdline/apt-get.cc:2455
 msgid ""
 msgid ""
 "Usage: apt-get [options] command\n"
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1310,7 +1327,8 @@ msgid "File %s/%s overwrites the one in the package %s"
 msgstr ""
 msgstr ""
 
 
 #: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
 #: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
+#: apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38
 #, c-format
 #, c-format
 msgid "Unable to read %s"
 msgid "Unable to read %s"
 msgstr ""
 msgstr ""
@@ -1446,27 +1464,31 @@ msgstr ""
 msgid "Unparsable control file"
 msgid "Unparsable control file"
 msgstr ""
 msgstr ""
 
 
-#: methods/cdrom.cc:113
+#: methods/cdrom.cc:114
 #, c-format
 #, c-format
 msgid "Unable to read the cdrom database %s"
 msgid "Unable to read the cdrom database %s"
 msgstr ""
 msgstr ""
 
 
-#: methods/cdrom.cc:122
+#: methods/cdrom.cc:123
 msgid ""
 msgid ""
 "Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
 "Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
 "cannot be used to add new CD-ROMs"
 "cannot be used to add new CD-ROMs"
 msgstr ""
 msgstr ""
 
 
-#: methods/cdrom.cc:130 methods/cdrom.cc:168
+#: methods/cdrom.cc:131
 msgid "Wrong CD-ROM"
 msgid "Wrong CD-ROM"
 msgstr ""
 msgstr ""
 
 
-#: methods/cdrom.cc:163
+#: methods/cdrom.cc:164
 #, c-format
 #, c-format
 msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
 msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
 msgstr ""
 msgstr ""
 
 
-#: methods/cdrom.cc:177 methods/file.cc:77 methods/rsh.cc:264
+#: methods/cdrom.cc:169
+msgid "Disk not found."
+msgstr ""
+
+#: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
 msgid "File not found"
 msgid "File not found"
 msgstr ""
 msgstr ""
 
 
@@ -1479,7 +1501,7 @@ msgstr ""
 msgid "Failed to set modification time"
 msgid "Failed to set modification time"
 msgstr ""
 msgstr ""
 
 
-#: methods/file.cc:42
+#: methods/file.cc:44
 msgid "Invalid URI, local URIS must not start with //"
 msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 msgstr ""
 
 
@@ -1670,17 +1692,17 @@ msgstr ""
 msgid "Could not resolve '%s'"
 msgid "Could not resolve '%s'"
 msgstr ""
 msgstr ""
 
 
-#: methods/connect.cc:169
+#: methods/connect.cc:171
 #, c-format
 #, c-format
 msgid "Temporary failure resolving '%s'"
 msgid "Temporary failure resolving '%s'"
 msgstr ""
 msgstr ""
 
 
-#: methods/connect.cc:171
+#: methods/connect.cc:174
 #, c-format
 #, c-format
 msgid "Something wicked happened resolving '%s:%s' (%i)"
 msgid "Something wicked happened resolving '%s:%s' (%i)"
 msgstr ""
 msgstr ""
 
 
-#: methods/connect.cc:218
+#: methods/connect.cc:221
 #, c-format
 #, c-format
 msgid "Unable to connect to %s %s:"
 msgid "Unable to connect to %s %s:"
 msgstr ""
 msgstr ""
@@ -2079,23 +2101,23 @@ msgstr ""
 msgid "extra"
 msgid "extra"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/depcache.cc:89 apt-pkg/depcache.cc:118
+#: apt-pkg/depcache.cc:99 apt-pkg/depcache.cc:128
 msgid "Building dependency tree"
 msgid "Building dependency tree"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:100
 msgid "Candidate versions"
 msgid "Candidate versions"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/depcache.cc:119
+#: apt-pkg/depcache.cc:129
 msgid "Dependency generation"
 msgid "Dependency generation"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/depcache.cc:140 apt-pkg/depcache.cc:159 apt-pkg/depcache.cc:163
+#: apt-pkg/depcache.cc:150 apt-pkg/depcache.cc:169 apt-pkg/depcache.cc:173
 msgid "Reading state information"
 msgid "Reading state information"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/depcache.cc:179
+#: apt-pkg/depcache.cc:189
 #, c-format
 #, c-format
 msgid "Failed to write StateFile %s"
 msgid "Failed to write StateFile %s"
 msgstr ""
 msgstr ""
@@ -2110,52 +2132,52 @@ msgstr ""
 msgid "Unable to parse package file %s (2)"
 msgid "Unable to parse package file %s (2)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:87
+#: apt-pkg/sourcelist.cc:94
 #, c-format
 #, c-format
 msgid "Malformed line %lu in source list %s (URI)"
 msgid "Malformed line %lu in source list %s (URI)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:89
+#: apt-pkg/sourcelist.cc:96
 #, c-format
 #, c-format
 msgid "Malformed line %lu in source list %s (dist)"
 msgid "Malformed line %lu in source list %s (dist)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:92
+#: apt-pkg/sourcelist.cc:99
 #, c-format
 #, c-format
 msgid "Malformed line %lu in source list %s (URI parse)"
 msgid "Malformed line %lu in source list %s (URI parse)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:98
+#: apt-pkg/sourcelist.cc:105
 #, c-format
 #, c-format
 msgid "Malformed line %lu in source list %s (absolute dist)"
 msgid "Malformed line %lu in source list %s (absolute dist)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:105
+#: apt-pkg/sourcelist.cc:112
 #, c-format
 #, c-format
 msgid "Malformed line %lu in source list %s (dist parse)"
 msgid "Malformed line %lu in source list %s (dist parse)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:156
+#: apt-pkg/sourcelist.cc:203
 #, c-format
 #, c-format
 msgid "Opening %s"
 msgid "Opening %s"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:170
+#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
 #, c-format
 #, c-format
 msgid "Line %u too long in source list %s."
 msgid "Line %u too long in source list %s."
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:187
+#: apt-pkg/sourcelist.cc:240
 #, c-format
 #, c-format
 msgid "Malformed line %u in source list %s (type)"
 msgid "Malformed line %u in source list %s (type)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:191
+#: apt-pkg/sourcelist.cc:244
 #, c-format
 #, c-format
-msgid "Type '%s' is not known on line %u in source list %s"
+msgid "Type '%s' is not known in on line %u in source list %s"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
+#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
 #, c-format
 #, c-format
 msgid "Malformed line %u in source list %s (vendor id)"
 msgid "Malformed line %u in source list %s (vendor id)"
 msgstr ""
 msgstr ""
@@ -2204,22 +2226,27 @@ msgstr ""
 msgid "Downloading file %li of %li (%s remaining)"
 msgid "Downloading file %li of %li (%s remaining)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/acquire-worker.cc:112
+#: apt-pkg/acquire-worker.cc:113
 #, c-format
 #, c-format
 msgid "The method driver %s could not be found."
 msgid "The method driver %s could not be found."
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/acquire-worker.cc:161
+#: apt-pkg/acquire-worker.cc:162
 #, c-format
 #, c-format
 msgid "Method %s did not start correctly"
 msgid "Method %s did not start correctly"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/init.cc:119
+#: apt-pkg/acquire-worker.cc:377
+#, c-format
+msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
+msgstr ""
+
+#: apt-pkg/init.cc:120
 #, c-format
 #, c-format
 msgid "Packaging system '%s' is not supported"
 msgid "Packaging system '%s' is not supported"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/init.cc:135
+#: apt-pkg/init.cc:136
 msgid "Unable to determine a suitable packaging system type"
 msgid "Unable to determine a suitable packaging system type"
 msgstr ""
 msgstr ""
 
 
@@ -2337,31 +2364,31 @@ msgstr ""
 msgid "rename failed, %s (%s -> %s)."
 msgid "rename failed, %s (%s -> %s)."
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/acquire-item.cc:235 apt-pkg/acquire-item.cc:906
+#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:914
 msgid "MD5Sum mismatch"
 msgid "MD5Sum mismatch"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/acquire-item.cc:720
+#: apt-pkg/acquire-item.cc:722
 #, c-format
 #, c-format
 msgid ""
 msgid ""
 "I wasn't able to locate a file for the %s package. This might mean you need "
 "I wasn't able to locate a file for the %s package. This might mean you need "
 "to manually fix this package. (due to missing arch)"
 "to manually fix this package. (due to missing arch)"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/acquire-item.cc:773
+#: apt-pkg/acquire-item.cc:781
 #, c-format
 #, c-format
 msgid ""
 msgid ""
 "I wasn't able to locate file for the %s package. This might mean you need to "
 "I wasn't able to locate file for the %s package. This might mean you need to "
 "manually fix this package."
 "manually fix this package."
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/acquire-item.cc:809
+#: apt-pkg/acquire-item.cc:817
 #, c-format
 #, c-format
 msgid ""
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
 "The package index files are corrupted. No Filename: field for package %s."
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/acquire-item.cc:896
+#: apt-pkg/acquire-item.cc:904
 msgid "Size mismatch"
 msgid "Size mismatch"
 msgstr ""
 msgstr ""
 
 
@@ -2370,73 +2397,73 @@ msgstr ""
 msgid "Vendor block %s contains no fingerprint"
 msgid "Vendor block %s contains no fingerprint"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:504
+#: apt-pkg/cdrom.cc:507
 #, c-format
 #, c-format
 msgid ""
 msgid ""
 "Using CD-ROM mount point %s\n"
 "Using CD-ROM mount point %s\n"
 "Mounting CD-ROM\n"
 "Mounting CD-ROM\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:513 apt-pkg/cdrom.cc:595
+#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
 msgid "Identifying.. "
 msgid "Identifying.. "
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:538
+#: apt-pkg/cdrom.cc:541
 #, c-format
 #, c-format
 msgid "Stored label: %s \n"
 msgid "Stored label: %s \n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:558
+#: apt-pkg/cdrom.cc:561
 #, c-format
 #, c-format
 msgid "Using CD-ROM mount point %s\n"
 msgid "Using CD-ROM mount point %s\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:576
+#: apt-pkg/cdrom.cc:579
 msgid "Unmounting CD-ROM\n"
 msgid "Unmounting CD-ROM\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:580
+#: apt-pkg/cdrom.cc:583
 msgid "Waiting for disc...\n"
 msgid "Waiting for disc...\n"
 msgstr ""
 msgstr ""
 
 
 #. Mount the new CDROM
 #. Mount the new CDROM
-#: apt-pkg/cdrom.cc:588
+#: apt-pkg/cdrom.cc:591
 msgid "Mounting CD-ROM...\n"
 msgid "Mounting CD-ROM...\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:606
+#: apt-pkg/cdrom.cc:609
 msgid "Scanning disc for index files..\n"
 msgid "Scanning disc for index files..\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:644
+#: apt-pkg/cdrom.cc:647
 #, c-format
 #, c-format
 msgid "Found %i package indexes, %i source indexes and %i signatures\n"
 msgid "Found %i package indexes, %i source indexes and %i signatures\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:701
+#: apt-pkg/cdrom.cc:710
 msgid "That is not a valid name, try again.\n"
 msgid "That is not a valid name, try again.\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:717
+#: apt-pkg/cdrom.cc:726
 #, c-format
 #, c-format
 msgid ""
 msgid ""
 "This disc is called: \n"
 "This disc is called: \n"
 "'%s'\n"
 "'%s'\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:721
+#: apt-pkg/cdrom.cc:730
 msgid "Copying package lists..."
 msgid "Copying package lists..."
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:745
+#: apt-pkg/cdrom.cc:754
 msgid "Writing new source list\n"
 msgid "Writing new source list\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:763
 msgid "Source list entries for this disc are:\n"
 msgid "Source list entries for this disc are:\n"
 msgstr ""
 msgstr ""
 
 
-#: apt-pkg/cdrom.cc:788
+#: apt-pkg/cdrom.cc:803
 msgid "Unmounting CD-ROM..."
 msgid "Unmounting CD-ROM..."
 msgstr ""
 msgstr ""
 
 

File diff suppressed because it is too large
+ 424 - 254
po/bs.po


File diff suppressed because it is too large
+ 432 - 301
po/ca.po


File diff suppressed because it is too large
+ 436 - 255
po/cs.po


File diff suppressed because it is too large
+ 430 - 280
po/da.po


File diff suppressed because it is too large
+ 436 - 286
po/de.po


File diff suppressed because it is too large
+ 436 - 255
po/el.po


File diff suppressed because it is too large
+ 429 - 257
po/en_GB.po


File diff suppressed because it is too large
+ 437 - 287
po/es.po


File diff suppressed because it is too large
+ 434 - 266
po/eu.po


File diff suppressed because it is too large
+ 436 - 255
po/fi.po


File diff suppressed because it is too large
+ 478 - 289
po/fr.po


File diff suppressed because it is too large
+ 2747 - 0
po/gl.po


File diff suppressed because it is too large
+ 424 - 254
po/he.po


File diff suppressed because it is too large
+ 436 - 255
po/hu.po


File diff suppressed because it is too large
+ 435 - 281
po/it.po


File diff suppressed because it is too large
+ 436 - 255
po/ja.po


File diff suppressed because it is too large
+ 436 - 255
po/ko.po


+ 1 - 1
po/makefile

@@ -62,7 +62,7 @@ $(MOFILES) : $(PO_DOMAINS)/%.mo : $(PO_DOMAINS)/%.po
 stats:
 stats:
 	for i in *.pot *.po; do echo -n "$$i: "; msgfmt --statistics $$i; done
 	for i in *.pot *.po; do echo -n "$$i: "; msgfmt --statistics $$i; done
 
 
-binary: $(POTFILES) $(PACKAGE)-all.pot $(MOFILES)
+binary: $(POTFILES) $(PACKAGE)-all.pot $(MOFILES) update-po
 
 
 .PHONY: update-po
 .PHONY: update-po
 update-po: $(PACKAGE)-all.pot
 update-po: $(PACKAGE)-all.pot

File diff suppressed because it is too large
+ 436 - 255
po/nb.po


File diff suppressed because it is too large
+ 436 - 255
po/nl.po


File diff suppressed because it is too large
+ 436 - 255
po/nn.po


File diff suppressed because it is too large
+ 436 - 255
po/pl.po


File diff suppressed because it is too large
+ 435 - 269
po/pt.po


File diff suppressed because it is too large
+ 435 - 269
po/pt_BR.po


File diff suppressed because it is too large
+ 436 - 255
po/ro.po


File diff suppressed because it is too large
+ 434 - 255
po/ru.po


File diff suppressed because it is too large
+ 436 - 255
po/sk.po


File diff suppressed because it is too large
+ 436 - 255
po/sl.po


File diff suppressed because it is too large
+ 436 - 255
po/sv.po


File diff suppressed because it is too large
+ 437 - 256
po/tl.po


File diff suppressed because it is too large
+ 436 - 255
po/zh_CN.po


File diff suppressed because it is too large
+ 436 - 255
po/zh_TW.po


BIN
share/debian-archive.gpg