]> git.saurik.com Git - apt.git/commitdiff
* merged with michael.vogt@ubuntu.com--2005/apt--mvo--0 to be in sync with debian
authorMichael Vogt <michael.vogt@ubuntu.com>
Tue, 6 Sep 2005 09:51:40 +0000 (09:51 +0000)
committerMichael Vogt <michael.vogt@ubuntu.com>
Tue, 6 Sep 2005 09:51:40 +0000 (09:51 +0000)
Patches applied:

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

 * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-1
   * merged with mainline and apt--fixes--0

 * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-2
   * patch from aj (slighly modified to use auto_ptr<>) applied

 * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-3
   * changelog updated

 * michael.vogt@ubuntu.com--2005/apt--bts225947--0--patch-4
   * work for arch=all packages too now

 * 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--fixes--0--patch-7
   * fixed incorrect man-page example

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-8
   * changelog udpate

 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-9
   * we only need to check once for xmlto

 * 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--sane-handle-timeout--0--base-0
   tag of apt@packages.debian.org/apt--main--0--patch-87

 * michael.vogt@ubuntu.com--2005/apt--sane-handle-timeout--0--patch-1
   * report timeouts (from Connect) and fail if they happen in pkgAcqMetaSig

 * michael.vogt@ubuntu.com--2005/apt--sane-handle-timeout--0--patch-2
   * merged with the fixes branch to make it build again

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

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

32 files changed:
README.arch [new file with mode: 0644]
README.progress-reporting
apt-pkg/acquire-item.cc
apt-pkg/acquire-item.h
apt-pkg/acquire-worker.cc
apt-pkg/algorithms.h
apt-pkg/cacheiterators.h
apt-pkg/cdrom.cc
apt-pkg/deb/debsystem.cc
apt-pkg/policy.h
cmdline/apt-get.cc
configure.in
debian/apt-utils.examples [new file with mode: 0644]
debian/apt.manpages
debian/changelog
debian/rules
doc/apt-key.8.xml
doc/apt-secure.8.xml [new file with mode: 0644]
doc/apt.conf.5.xml
doc/apt.ent
doc/apt_preferences.5.xml
doc/examples/apt-ftparchive.conf [new file with mode: 0644]
doc/makefile
ftparchive/apt-ftparchive.cc
ftparchive/override.cc
ftparchive/override.h
ftparchive/writer.cc
ftparchive/writer.h
methods/cdrom.cc
methods/connect.cc
methods/file.cc
po/apt-all.pot

diff --git a/README.arch b/README.arch
new file mode 100644 (file)
index 0000000..92870d6
--- /dev/null
@@ -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).
index 73fbd8c0877a9ba90a29992d65b18a7cc02900cd..b575e7879d4c8960fb4a57c6fac5cfe5bf782370 100644 (file)
@@ -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 ':', 
 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
 apt frontend fork a (vte) terminal for the actual installation.
@@ -47,6 +47,13 @@ pmconffile
 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
 --------
index 5265ef3a6e34ebde6fa3ea4ad53d8a9ffe4ddb16..c4c0b73a98e2d468d4e406eaa0bb736cad770289 100644 (file)
@@ -524,20 +524,21 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner,
 {
    Decompression = false;
    Erase = false;
-   
+
    DestFile = _config->FindDir("Dir::State::lists") + "partial/";
    DestFile += URItoFileName(URI);
 
    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 {
-      Desc.URI = URI + comprExt; 
+      CompressionExtension = comprExt;
    }
+   Desc.URI = URI + CompressionExtension; 
 
    Desc.Description = URIDesc;
    Desc.Owner = this;
@@ -782,6 +783,13 @@ void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
    string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI);
    unlink(Final.c_str());
 
+   // if we get a timeout if fail
+   if(LookupTag(Message,"FailReason") == "Timeout" || 
+      LookupTag(Message,"FailReason") == "TmpResolveFailure") {
+      Item::Failed(Message,Cnf);
+      return;
+   }
+
    // queue a pkgAcqMetaIndex with no sigfile
    new pkgAcqMetaIndex(Owner, MetaIndexURI, MetaIndexURIDesc, MetaIndexShortDesc,
                       "", IndexTargets, MetaIndexParser);
@@ -1280,7 +1288,8 @@ void pkgAcqArchive::Done(string Message,unsigned long Size,string Md5Hash,
       {
         Status = StatError;
         ErrorText = _("MD5Sum mismatch");
-        Rename(DestFile,DestFile + ".FAILED");
+        if(FileExists(DestFile))
+           Rename(DestFile,DestFile + ".FAILED");
         return;
       }
    }
index b55ac526b51b882508b118596adbafe251704d46..3a6e93b1afd5a4da570795d7b4a6ddba126774f6 100644 (file)
@@ -156,6 +156,7 @@ class pkgAcqIndex : public pkgAcquire::Item
    pkgAcquire::ItemDesc Desc;
    string RealURI;
    string ExpectedMD5;
+   string CompressionExtension;
 
    public:
    
@@ -164,7 +165,7 @@ class pkgAcqIndex : public pkgAcquire::Item
    virtual void Done(string Message,unsigned long Size,string Md5Hash,
                     pkgAcquire::MethodConfig *Cnf);
    virtual string Custom600Headers();
-   virtual string DescURI() {return RealURI + ".gz";};
+   virtual string DescURI() {return RealURI + CompressionExtension;};
 
    pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc,
               string ShortDesct, string ExpectedMD5, string compressExt="");
index 5cd7d6f1e640458aef11edffb85357605bbdec97..d06024178ef4fe17fe4adf97a7b14a7aa2423579 100644 (file)
@@ -25,6 +25,7 @@
 #include <apti18n.h>
 
 #include <iostream>
+#include <sstream>
 #include <fstream>
     
 #include <sys/stat.h>
@@ -367,6 +368,24 @@ bool pkgAcquire::Worker::Capabilities(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"),
                                    LookupTag(Message,"Drive")) == false)
    {
index 174a7f58d18aea15aa0c36bf2fde93c243a3de8a..b95218061903e4ea84d2b08445a41eee3878eaaf 100644 (file)
@@ -118,7 +118,8 @@ class pkgProblemResolver
    
    // Try to resolve problems only by using keep
    bool ResolveByKeep();
-   
+
+   // Install all protected packages   
    void InstallProtect();   
    
    pkgProblemResolver(pkgDepCache *Cache);
index 62d2695ddcf085723e663105d9c980b7480431eb..c3a0d0a5a45fa3132a30ea57118e26d0b9737069 100644 (file)
@@ -222,7 +222,7 @@ class pkgCache::PrvIterator
    void operator ++(int) {if (Prv != Owner->ProvideP) Prv = Owner->ProvideP +
        (Type == PrvVer?Prv->NextPkgProv:Prv->NextProvides);};
    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
    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 unsigned long Index() const {return Prv - Owner->ProvideP;};
 
+   inline PrvIterator() : Prv(0), Type(PrvVer), Owner(0)  {};
+
    inline PrvIterator(pkgCache &Owner,Provides *Trg,Version *) :
           Prv(Trg), Type(PrvVer), Owner(&Owner) 
    {
index ca74aa685c35d88716780603b35a19b88ea50626..c067cf1eec0434373ac412994601100ea9fe19c0 100644 (file)
@@ -422,6 +422,9 @@ bool pkgCdrom::WriteSourceList(string Name,vector<string> &List,bool Source)
    {      
       F.getline(Buffer,sizeof(Buffer));
       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));
       _strstrip(Buffer);
             
index 0b3a4f74293b8cb89e191ce819defd55fd95517a..2d805ea6f8b9a814292011909c650c34e8b174a2 100644 (file)
@@ -164,7 +164,12 @@ bool debSystem::Initialize(Configuration &Cnf)
    Cnf.CndSet("Dir::State::userstatus","status.user"); // Defunct
    Cnf.CndSet("Dir::State::status","/var/lib/dpkg/status");
    Cnf.CndSet("Dir::Bin::dpkg","/usr/bin/dpkg");
-   
+
+   if (StatusFile) {
+     delete StatusFile;
+     StatusFile = 0;
+   }
+
    return true;
 }
                                                                        /*}}}*/
index 15f2047985dcb4caa6d3e5ce04661db7e39de4cc..40ebd3f704f9ae4aa778ae44d438d488b78e9ad5 100644 (file)
@@ -45,6 +45,8 @@ using std::vector;
 
 class pkgPolicy : public pkgDepCache::Policy
 {
+   protected:
+
    struct Pin
    {
       pkgVersionMatch::MatchType Type;
@@ -58,8 +60,6 @@ class pkgPolicy : public pkgDepCache::Policy
       string Pkg;
    };
    
-   protected:
-   
    Pin *Pins;
    signed short *PFPriority;
    vector<Pin> Defaults;
index e673e0f5bdf6de5defe7f16511793f0aa22332df..7e079b91c7da866a38d3cfd00474de65432d56b5 100644 (file)
@@ -1659,7 +1659,7 @@ bool DoInstall(CommandLine &CmdL)
    // See if we need to prompt
    if (Cache->InstCount() == ExpectedInst && Cache->DelCount() == 0)
       return InstallPackages(Cache,false,false);
-   
+
    return InstallPackages(Cache,false);   
 }
                                                                        /*}}}*/
index 1ee7e168b3d12dce19e60cfe91537ab11dbe7cf9..d9c3289ff26ce9b7f19827af3e88b352b8b80eed 100644 (file)
@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 
 dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.40.2")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.41")
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
@@ -181,9 +181,6 @@ AC_PATH_PROG(DOCBOOK2MAN,docbook2man)
 dnl Check for the XML tools needed to build man pages
 AC_PATH_PROG(XMLTO,xmlto)
 
-dnl Check for the XML tools needed to build man pages
-AC_PATH_PROG(XMLTO,xmlto)
-
 dnl Check for YODL
 dnl AC_CHECK_PROG(YODL_MAN,yodl2man,"yes","")
 
diff --git a/debian/apt-utils.examples b/debian/apt-utils.examples
new file mode 100644 (file)
index 0000000..25aadf9
--- /dev/null
@@ -0,0 +1 @@
+doc/examples/apt-ftparchive.conf
\ No newline at end of file
index e621e1c49845f9ccc7ca416f85970f6e7d127a05..b52ea3d3ddfad0150f224eb8e10a582850154377 100644 (file)
@@ -3,6 +3,7 @@ doc/apt-cdrom.8
 doc/apt-config.8
 doc/apt-get.8
 doc/apt-key.8
+doc/apt-secure.8
 doc/apt.8
 doc/apt.conf.5
 doc/apt_preferences.5
index 67a42a46cf21331cc00f72160997b36db31024fe..cc3da8f84d17448759c5eaffd3afe0c67712b86e 100644 (file)
@@ -1,10 +1,33 @@
-apt (0.6.40.2) unstable; urgency=low
+apt (0.6.41) unstable; urgency=low
 
   * improved the support for "error" and "conffile" reporting from
     dpkg, added the format to README.progress-reporting
   * added README.progress-reporting to the apt-doc package
-
- -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 22 Aug 2005 12:22:04 +0200
+  * 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 <mvo@debian.org>  Mon,  5 Sep 2005 22:59:03 +0200
 
 apt (0.6.40.1) unstable; urgency=low
 
index 25e4d4d1f4867a7df6270a5a83c26ec5dcdff020..40f5add37fc76fece1c17a555a9e39afbecb0fc6 100755 (executable)
@@ -269,6 +269,7 @@ apt-utils: build debian/shlibs.local
 
        cp $(addprefix $(BLD)/bin/apt-,$(APT_UTILS)) debian/$@/usr/bin/
        dh_installdocs -p$@
+       dh_installexamples -p$@
 
        # Install the man pages..
        dh_installman -p$@
index 62686618a348a9f7308a7e7451c965fbbec0b30c..eac61307da2e9e80590933b52be82fd08efe99b7 100644 (file)
      <para>
 
        List trusted keys.
+
      </para>
 
      </listitem>
      </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>
+
 </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;
  &manauthor;
diff --git a/doc/apt-secure.8.xml b/doc/apt-secure.8.xml
new file mode 100644 (file)
index 0000000..e224460
--- /dev/null
@@ -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>
+
index 69e212243d7bf1b6aa75ba021710221d9a2b3b9e..43f33681f3190eea466f3b395d7d914e94ac4423 100644 (file)
@@ -284,7 +284,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    <literal>sourcelist</literal> gives the location of the sourcelist and 
    <literal>main</literal> is the default configuration file (setting has no effect,
    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 
    lexical order from the directory specified. After this is done then the
index 8054a25f6fe8d9faa6facd6e74d10bc5d97b0c61..cf22df6d2dd968f94ff2417e15a94751f4ae346e 100644 (file)
   </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>
     <refentrytitle><filename>sources.list</filename></refentrytitle>
     <manvolnum>5</manvolnum>
     <manvolnum>8</manvolnum>
   </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 -->
 <!ENTITY apt-docinfo "
index 3e50bef8c1696c1a07aad1344b196d95b33fbc96..12b03196a80c0247c9e7fe0689dec00d519310df 100644 (file)
@@ -183,7 +183,7 @@ belonging to any distribution whose Archive name is "<literal>unstable</literal>
 <programlisting>
 Package: *
 Pin: release a=unstable
-Pin-Priority: 50
+Pin-Priority: 500
 </programlisting>
 
 <simpara>The following record assigns a high priority to all package versions
diff --git a/doc/examples/apt-ftparchive.conf b/doc/examples/apt-ftparchive.conf
new file mode 100644 (file)
index 0000000..657ec54
--- /dev/null
@@ -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";
+       };
+};
index f34b3f6e5906699cec3458a92b5e6d90a37eda4d..31ee061fb3d2cfb6a94bccbec061659230637c08 100644 (file)
@@ -14,7 +14,8 @@ include $(DEBIANDOC_H)
 # XML man pages
 SOURCE = apt-cache.8 apt-get.8 apt-cdrom.8 apt.conf.5 sources.list.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      
 include $(XML_MANPAGE_H)
 
index 31ff8d600b7cc8e3e9fafe6fa89a553fa62b21d6..0e2be8a00ad2843410754ff1b114e73633b4eed5 100644 (file)
@@ -56,6 +56,9 @@ struct PackageMap
    string BinCacheDB;
    string BinOverride;
    string ExtraOverride;
+
+   // We generate for this given arch
+   string Arch;
    
    // Stuff for the Source File
    string SrcFile;
@@ -158,7 +161,8 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats)
    // Create a package writer object.
    PackagesWriter Packages(flCombine(CacheDir,BinCacheDB),
                           flCombine(OverrideDir,BinOverride),
-                          flCombine(OverrideDir,ExtraOverride));
+                          flCombine(OverrideDir,ExtraOverride),
+                          Arch);
    if (PkgExt.empty() == false && Packages.SetExts(PkgExt) == false)
       return _error->Error(_("Package extension list is too long"));
    if (_error->PendingError() == true)
@@ -489,6 +493,7 @@ void LoadTree(vector<PackageMap> &PkgList,Configuration &Setup)
               Itm.BaseDir = SubstVar(Block.Find("Directory",DDir.c_str()),Vars);
               Itm.PkgFile = SubstVar(Block.Find("Packages",DPkg.c_str()),Vars);
               Itm.Tag = SubstVar("$(DIST)/$(SECTION)/$(ARCH)",Vars);
+              Itm.Arch = Arch;
               Itm.Contents = SubstVar(Block.Find("Contents",DContents.c_str()),Vars);
               Itm.ContentsHead = SubstVar(Block.Find("Contents::Header",DContentsH.c_str()),Vars);
               Itm.FLFile = SubstVar(Block.Find("FileList",DFLFile.c_str()),Vars);
index 669ce25bf29ea06bf661ba033cf33129c60fe562..b8b94843f38d0b27cd1e98163e014fa7e7dd83b1 100644 (file)
@@ -207,6 +207,44 @@ bool Override::ReadExtraOverride(string File,bool Source)
    return true;
 }
                                                                        /*}}}*/
+
+// Override::GetItem - Get a architecture specific item        /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns a override item for the given package and the given architecture.
+ * Treats "all" special
+ */
+Override::Item* Override::GetItem(string Package, string Architecture)
+{
+   map<string,Item>::iterator I = Mapping.find(Package);
+   map<string,Item>::iterator J = Mapping.find(Package + "/" + Architecture);
+
+   if (I == Mapping.end() && J == Mapping.end())
+   {
+      return 0;
+   }
+
+   Item *result = new Item;
+   if (I == Mapping.end()) *result = J->second;
+   else
+   {
+      *result = I->second;
+      if (J != Mapping.end())
+      {
+        Item *R = &J->second;
+        if (R->Priority != "") result->Priority = R->Priority;
+        if (R->OldMaint != "") result->OldMaint = R->OldMaint;
+        if (R->NewMaint != "") result->NewMaint = R->NewMaint;
+        for (map<string,string>::iterator foI = R->FieldOverride.begin();
+             foI != R->FieldOverride.end(); foI++)
+         {
+           result->FieldOverride[foI->first] = foI->second;
+        }
+      } 
+   } 
+   return result;
+};
+
+
 // Override::Item::SwapMaint - Swap the maintainer field if necessary  /*{{{*/
 // ---------------------------------------------------------------------
 /* Returns the new maintainer string after evaluating the rewriting rule. If
index 2d6a4e27ce3b0afb09a7b6ee47b7e56a233d0001..e646417760a9714f1749e4000d2c9c8297a3f41d 100644 (file)
@@ -34,17 +34,16 @@ class Override
 
       map<string,string> FieldOverride;
       string SwapMaint(string Orig,bool &Failed);
+      ~Item() {};
    };
    
    map<string,Item> Mapping;
    
    inline Item *GetItem(string Package) 
    {
-      map<string,Item>::iterator I = Mapping.find(Package);
-      if (I == Mapping.end())
-        return 0;
-      return &I->second;
-   };
+      return GetItem(Package, "");
+   }
+   Item *GetItem(string Package, string Architecture);
    
    bool ReadOverride(string File,bool Source = false);
    bool ReadExtraOverride(string File,bool Source = false);
index 35a23a3d7b30744888990c502399a98b65d9a9dd..0b68d0bbf74569ea0ae780e53ea9fe5f88d6064a 100644 (file)
@@ -36,7 +36,6 @@
 #include "apt-ftparchive.h"
 #include "multicompress.h"
                                                                        /*}}}*/
-
 using namespace std;
 FTWScanner *FTWScanner::Owner;
 
@@ -285,8 +284,9 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath,
 // PackagesWriter::PackagesWriter - Constructor                                /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-PackagesWriter::PackagesWriter(string DB,string Overrides,string ExtOverrides) :
-                   Db(DB),Stats(Db.Stats)
+PackagesWriter::PackagesWriter(string DB,string Overrides,string ExtOverrides,
+                              string aArch) :
+   Db(DB),Stats(Db.Stats), Arch(aArch)
 {
    Output = stdout;
    SetExts(".deb .udeb .foo .bar .baz");
@@ -371,14 +371,22 @@ bool PackagesWriter::DoPackage(string FileName)
    // Lookup the overide information
    pkgTagSection &Tags = Db.Control.Section;
    string Package = Tags.FindS("Package");
-   Override::Item Tmp;
-   Override::Item *OverItem = Over.GetItem(Package);
+   string Architecture;
+   // if we generate a Packages file for a given arch, we use it to
+   // look for overrides. if we run in "simple" mode without the 
+   // "Architecures" variable in the config we use the architecure value
+   // from the deb file
+   if(Arch != "")
+      Architecture = Arch;
+   else
+      Architecture = Tags.FindS("Architecture");
+   auto_ptr<Override::Item> OverItem(Over.GetItem(Package,Architecture));
    
    if (Package.empty() == true)
       return _error->Error(_("Archive had no package field"));
-   
+
    // If we need to do any rewriting of the header do it now..
-   if (OverItem == 0)
+   if (OverItem.get() == 0)
    {
       if (NoOverride == false)
       {
@@ -386,9 +394,9 @@ bool PackagesWriter::DoPackage(string FileName)
         ioprintf(c1out, _("  %s has no override entry\n"), Package.c_str());
       }
       
-      OverItem = &Tmp;
-      Tmp.FieldOverride["Section"] = Tags.FindS("Section");
-      Tmp.Priority = Tags.FindS("Priority");
+      OverItem = auto_ptr<Override::Item>(new Override::Item);
+      OverItem->FieldOverride["Section"] = Tags.FindS("Section");
+      OverItem->Priority = Tags.FindS("Priority");
    }
 
    char Size[40];
@@ -557,7 +565,7 @@ bool SourcesWriter::DoPackage(string FileName)
    string BestPrio;
    string Bins = Tags.FindS("Binary");
    char Buffer[Bins.length() + 1];
-   Override::Item *OverItem = 0;
+   auto_ptr<Override::Item> OverItem(0);
    if (Bins.empty() == false)
    {
       strcpy(Buffer,Bins.c_str());
@@ -570,10 +578,10 @@ bool SourcesWriter::DoPackage(string FileName)
       unsigned char BestPrioV = pkgCache::State::Extra;
       for (unsigned I = 0; BinList[I] != 0; I++)
       {
-        Override::Item *Itm = BOver.GetItem(BinList[I]);
-        if (Itm == 0)
+        auto_ptr<Override::Item> Itm(BOver.GetItem(BinList[I]));
+        if (Itm.get() == 0)
            continue;
-        if (OverItem == 0)
+        if (OverItem.get() == 0)
            OverItem = Itm;
 
         unsigned char NewPrioV = debListParser::GetPrio(Itm->Priority);
@@ -586,8 +594,7 @@ bool SourcesWriter::DoPackage(string FileName)
    }
    
    // If we need to do any rewriting of the header do it now..
-   Override::Item Tmp;   
-   if (OverItem == 0)
+   if (OverItem.get() == 0)
    {
       if (NoOverride == false)
       {
@@ -595,15 +602,19 @@ bool SourcesWriter::DoPackage(string FileName)
         ioprintf(c1out, _("  %s has no override entry\n"), Tags.FindS("Source").c_str());
       }
       
-      OverItem = &Tmp;
+      OverItem = auto_ptr<Override::Item>(new Override::Item);
    }
    
-   Override::Item *SOverItem = SOver.GetItem(Tags.FindS("Source"));
-   if (SOverItem == 0)
+   auto_ptr<Override::Item> SOverItem(SOver.GetItem(Tags.FindS("Source")));
+   const auto_ptr<Override::Item> autoSOverItem(SOverItem);
+   if (SOverItem.get() == 0)
    {
-      SOverItem = BOver.GetItem(Tags.FindS("Source"));
-      if (SOverItem == 0)
-        SOverItem = OverItem;
+      SOverItem = auto_ptr<Override::Item>(BOver.GetItem(Tags.FindS("Source")));
+      if (SOverItem.get() == 0)
+      {
+        SOverItem = auto_ptr<Override::Item>(new Override::Item);
+        *SOverItem = *OverItem;
+      }
    }
    
    // Add the dsc to the files hash list
index ce4c947a916b7f50cb1bc44020eeb198cbe64de8..16d014ef895647417409c3a63ba7f62e3b3f5dda 100644 (file)
@@ -92,13 +92,15 @@ class PackagesWriter : public FTWScanner
    string DirStrip;
    FILE *Output;
    struct CacheDB::Stats &Stats;
-   
+   string Arch;
+
    inline bool ReadOverride(string File) {return Over.ReadOverride(File);};
    inline bool ReadExtraOverride(string File) 
       {return Over.ReadExtraOverride(File);};
    virtual bool DoPackage(string FileName);
 
-   PackagesWriter(string DB,string Overrides,string ExtOverrides=string());
+   PackagesWriter(string DB,string Overrides,string ExtOverrides=string(),
+                 string Arch=string());
    virtual ~PackagesWriter() {};
 };
 
@@ -170,6 +172,7 @@ protected:
       string SHA1;
       // Limited by FileFd::Size()
       unsigned long size;
+      ~CheckSum() {};
    };
    map<string,struct CheckSum> CheckSums;
 };
index 7cc0368141fb99f38bc06675edbb488d337f72e1..41eb8a0ee7be3a02263dd9dfff4c8d42f1637477 100644 (file)
@@ -13,6 +13,7 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
 
 #include <sys/stat.h>
 #include <unistd.h>
@@ -180,6 +181,12 @@ bool CDROMMethod::Fetch(FetchItem *Itm)
       CurrentID = NewID;
    Res.LastModified = Buf.st_mtime;
    Res.Size = Buf.st_size;
+
+   Hashes Hash;
+   FileFd Fd(Res.Filename, FileFd::ReadOnly);
+   Hash.AddFD(Fd.Fd(), Fd.Size());
+   Res.TakeHashes(Hash);
+
    URIDone(Res);
    return true;
 }
index 981ac1371cc1d902eabf011fb398f5126db94466..4e48927edf65fe3ac7d371875b0de6c031ed994d 100644 (file)
@@ -88,9 +88,11 @@ static bool DoConnect(struct addrinfo *Addr,string Host,
    
    /* This implements a timeout for connect by opening the connection
       nonblocking */
-   if (WaitFd(Fd,true,TimeOut) == false)
+   if (WaitFd(Fd,true,TimeOut) == false) {
+      Owner->SetFailExtraMsg("\nFailReason: Timeout");
       return _error->Error(_("Could not connect to %s:%s (%s), "
                           "connection timed out"),Host.c_str(),Service,Name);
+   }
 
    // Check the socket for an error condition
    unsigned int Err;
@@ -164,8 +166,11 @@ bool Connect(string Host,int Port,const char *Service,int DefPort,int &Fd,
            }
            
            if (Res == EAI_AGAIN)
+           {
+              Owner->SetFailExtraMsg("\nFailReason: TmpResolveFailure");
               return _error->Error(_("Temporary failure resolving '%s'"),
                                    Host.c_str());
+           }
            return _error->Error(_("Something wicked happened resolving '%s:%s' (%i)"),
                                 Host.c_str(),ServStr,Res);
         }
index 3500de9f5f100cab17ac53e8e97af267e7773845..9cdd5bc2d3b3a3ea9ff14f2732ef832780e146cd 100644 (file)
@@ -15,6 +15,8 @@
 // Include Files                                                       /*{{{*/
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/error.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/fileutl.h>
 
 #include <sys/stat.h>
 #include <unistd.h>
@@ -75,7 +77,11 @@ bool FileMethod::Fetch(FetchItem *Itm)
    
    if (Res.Filename.empty() == true)
       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);
    return true;
 }
index d06c14ce13af7192e1c774cc4453cbb3a0e4265c..46672e159ca2a0fe3609f1e41c6b30562317f693 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-06-06 14:00+0200\n"
+"POT-Creation-Date: 2005-08-19 11:53+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -405,7 +405,7 @@ msgid " DeLink limit of %sB hit.\n"
 msgstr ""
 
 #: ftparchive/writer.cc:358 apt-inst/extract.cc:181 apt-inst/extract.cc:193
-#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121
+#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:256
 #, c-format
 msgid "Failed to stat %s"
 msgstr ""
@@ -1270,8 +1270,8 @@ msgstr ""
 msgid "File %s/%s overwrites the one in the package %s"
 msgstr ""
 
-#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:709
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:416 apt-pkg/clean.cc:38
+#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
 #, c-format
 msgid "Unable to read %s"
 msgstr ""
@@ -1407,969 +1407,1068 @@ msgstr ""
 msgid "Unparsable control file"
 msgstr ""
 
-#: methods/cdrom.cc:113
+#: apt-pkg/contrib/mmap.cc:82
+msgid "Can't mmap an empty file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc:87
 #, c-format
-msgid "Unable to read the cdrom database %s"
+msgid "Couldn't make mmap of %lu bytes"
 msgstr ""
 
-#: methods/cdrom.cc:122
-msgid ""
-"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
-"cannot be used to add new CD-ROMs"
+#: apt-pkg/contrib/strutl.cc:941
+#, c-format
+msgid "Selection %s not found"
 msgstr ""
 
-#: methods/cdrom.cc:130 methods/cdrom.cc:168
-msgid "Wrong CD-ROM"
+#: apt-pkg/contrib/configuration.cc:436
+#, c-format
+msgid "Unrecognized type abbreviation: '%c'"
 msgstr ""
 
-#: methods/cdrom.cc:163
+#: apt-pkg/contrib/configuration.cc:494
 #, c-format
-msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgid "Opening configuration file %s"
 msgstr ""
 
-#: methods/cdrom.cc:177 methods/file.cc:77 methods/rsh.cc:264
-msgid "File not found"
+#: apt-pkg/contrib/configuration.cc:512
+#, c-format
+msgid "Line %d too long (max %d)"
 msgstr ""
 
-#: methods/copy.cc:42 methods/gzip.cc:133 methods/gzip.cc:142
-msgid "Failed to stat"
+#: apt-pkg/contrib/configuration.cc:608
+#, c-format
+msgid "Syntax error %s:%u: Block starts with no name."
 msgstr ""
 
-#: methods/copy.cc:79 methods/gzip.cc:139
-msgid "Failed to set modification time"
+#: apt-pkg/contrib/configuration.cc:627
+#, c-format
+msgid "Syntax error %s:%u: Malformed tag"
 msgstr ""
 
-#: methods/file.cc:42
-msgid "Invalid URI, local URIS must not start with //"
+#: apt-pkg/contrib/configuration.cc:644
+#, c-format
+msgid "Syntax error %s:%u: Extra junk after value"
 msgstr ""
 
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc:162
-msgid "Logging in"
+#: apt-pkg/contrib/configuration.cc:684
+#, c-format
+msgid "Syntax error %s:%u: Directives can only be done at the top level"
 msgstr ""
 
-#: methods/ftp.cc:168
-msgid "Unable to determine the peer name"
+#: apt-pkg/contrib/configuration.cc:691
+#, c-format
+msgid "Syntax error %s:%u: Too many nested includes"
 msgstr ""
 
-#: methods/ftp.cc:173
-msgid "Unable to determine the local name"
+#: apt-pkg/contrib/configuration.cc:695 apt-pkg/contrib/configuration.cc:700
+#, c-format
+msgid "Syntax error %s:%u: Included from here"
 msgstr ""
 
-#: methods/ftp.cc:204 methods/ftp.cc:232
+#: apt-pkg/contrib/configuration.cc:704
 #, c-format
-msgid "The server refused the connection and said: %s"
+msgid "Syntax error %s:%u: Unsupported directive '%s'"
 msgstr ""
 
-#: methods/ftp.cc:210
+#: apt-pkg/contrib/configuration.cc:738
 #, c-format
-msgid "USER failed, server said: %s"
+msgid "Syntax error %s:%u: Extra junk at end of file"
 msgstr ""
 
-#: methods/ftp.cc:217
+#: apt-pkg/contrib/progress.cc:154
 #, c-format
-msgid "PASS failed, server said: %s"
+msgid "%c%s... Error!"
 msgstr ""
 
-#: methods/ftp.cc:237
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
+#: apt-pkg/contrib/progress.cc:156
+#, c-format
+msgid "%c%s... Done"
 msgstr ""
 
-#: methods/ftp.cc:265
+#: apt-pkg/contrib/cmndline.cc:80
 #, c-format
-msgid "Login script command '%s' failed, server said: %s"
+msgid "Command line option '%c' [from %s] is not known."
 msgstr ""
 
-#: methods/ftp.cc:291
+#: apt-pkg/contrib/cmndline.cc:106 apt-pkg/contrib/cmndline.cc:114
+#: apt-pkg/contrib/cmndline.cc:122
 #, c-format
-msgid "TYPE failed, server said: %s"
+msgid "Command line option %s is not understood"
 msgstr ""
 
-#: methods/ftp.cc:329 methods/ftp.cc:440 methods/rsh.cc:183 methods/rsh.cc:226
-msgid "Connection timeout"
+#: apt-pkg/contrib/cmndline.cc:127
+#, c-format
+msgid "Command line option %s is not boolean"
 msgstr ""
 
-#: methods/ftp.cc:335
-msgid "Server closed the connection"
+#: apt-pkg/contrib/cmndline.cc:166 apt-pkg/contrib/cmndline.cc:187
+#, c-format
+msgid "Option %s requires an argument."
 msgstr ""
 
-#: methods/ftp.cc:338 methods/rsh.cc:190 apt-pkg/contrib/fileutl.cc:453
-msgid "Read error"
+#: apt-pkg/contrib/cmndline.cc:201 apt-pkg/contrib/cmndline.cc:207
+#, c-format
+msgid "Option %s: Configuration item specification must have an =<val>."
 msgstr ""
 
-#: methods/ftp.cc:345 methods/rsh.cc:197
-msgid "A response overflowed the buffer."
+#: apt-pkg/contrib/cmndline.cc:237
+#, c-format
+msgid "Option %s requires an integer argument, not '%s'"
 msgstr ""
 
-#: methods/ftp.cc:362 methods/ftp.cc:374
-msgid "Protocol corruption"
+#: apt-pkg/contrib/cmndline.cc:268
+#, c-format
+msgid "Option '%s' is too long"
 msgstr ""
 
-#: methods/ftp.cc:446 methods/rsh.cc:232 apt-pkg/contrib/fileutl.cc:492
-msgid "Write error"
+#: apt-pkg/contrib/cmndline.cc:301
+#, c-format
+msgid "Sense %s is not understood, try true or false."
 msgstr ""
 
-#: methods/ftp.cc:687 methods/ftp.cc:693 methods/ftp.cc:729
-msgid "Could not create a socket"
+#: apt-pkg/contrib/cmndline.cc:351
+#, c-format
+msgid "Invalid operation %s"
 msgstr ""
 
-#: methods/ftp.cc:698
-msgid "Could not connect data socket, connection timed out"
+#: apt-pkg/contrib/cdromutl.cc:55
+#, c-format
+msgid "Unable to stat the mount point %s"
 msgstr ""
 
-#: methods/ftp.cc:704
-msgid "Could not connect passive socket."
+#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
+#, c-format
+msgid "Unable to change to %s"
 msgstr ""
 
-#: methods/ftp.cc:722
-msgid "getaddrinfo was unable to get a listening socket"
+#: apt-pkg/contrib/cdromutl.cc:190
+msgid "Failed to stat the cdrom"
 msgstr ""
 
-#: methods/ftp.cc:736
-msgid "Could not bind a socket"
+#: apt-pkg/contrib/fileutl.cc:82
+#, c-format
+msgid "Not using locking for read only lock file %s"
 msgstr ""
 
-#: methods/ftp.cc:740
-msgid "Could not listen on the socket"
+#: apt-pkg/contrib/fileutl.cc:87
+#, c-format
+msgid "Could not open lock file %s"
 msgstr ""
 
-#: methods/ftp.cc:747
-msgid "Could not determine the socket's name"
+#: apt-pkg/contrib/fileutl.cc:105
+#, c-format
+msgid "Not using locking for nfs mounted lock file %s"
 msgstr ""
 
-#: methods/ftp.cc:779
-msgid "Unable to send PORT command"
+#: apt-pkg/contrib/fileutl.cc:109
+#, c-format
+msgid "Could not get lock %s"
 msgstr ""
 
-#: methods/ftp.cc:789
+#: apt-pkg/contrib/fileutl.cc:377
 #, c-format
-msgid "Unknown address family %u (AF_*)"
+msgid "Waited for %s but it wasn't there"
 msgstr ""
 
-#: methods/ftp.cc:798
+#: apt-pkg/contrib/fileutl.cc:387
 #, c-format
-msgid "EPRT failed, server said: %s"
+msgid "Sub-process %s received a segmentation fault."
 msgstr ""
 
-#: methods/ftp.cc:818
-msgid "Data socket connect timed out"
+#: apt-pkg/contrib/fileutl.cc:390
+#, c-format
+msgid "Sub-process %s returned an error code (%u)"
 msgstr ""
 
-#: methods/ftp.cc:825
-msgid "Unable to accept connection"
+#: apt-pkg/contrib/fileutl.cc:392
+#, c-format
+msgid "Sub-process %s exited unexpectedly"
 msgstr ""
 
-#: methods/ftp.cc:864 methods/http.cc:920 methods/rsh.cc:303
-msgid "Problem hashing file"
+#: apt-pkg/contrib/fileutl.cc:436
+#, c-format
+msgid "Could not open file %s"
 msgstr ""
 
-#: methods/ftp.cc:877
+#: apt-pkg/contrib/fileutl.cc:471 methods/ftp.cc:338 methods/rsh.cc:190
+msgid "Read error"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:492
 #, c-format
-msgid "Unable to fetch file, server said '%s'"
+msgid "read, still have %lu to read but none left"
 msgstr ""
 
-#: methods/ftp.cc:892 methods/rsh.cc:322
-msgid "Data socket timed out"
+#: apt-pkg/contrib/fileutl.cc:510 methods/ftp.cc:446 methods/rsh.cc:232
+msgid "Write error"
 msgstr ""
 
-#: methods/ftp.cc:922
+#: apt-pkg/contrib/fileutl.cc:522
 #, c-format
-msgid "Data transfer failed, server said '%s'"
+msgid "write, still have %lu to write but couldn't"
 msgstr ""
 
-#. Get the files information
-#: methods/ftp.cc:997
-msgid "Query"
+#: apt-pkg/contrib/fileutl.cc:597
+msgid "Problem closing the file"
 msgstr ""
 
-#: methods/ftp.cc:1106
-msgid "Unable to invoke "
+#: apt-pkg/contrib/fileutl.cc:603
+msgid "Problem unlinking the file"
 msgstr ""
 
-#: methods/connect.cc:64
-#, c-format
-msgid "Connecting to %s (%s)"
+#: apt-pkg/contrib/fileutl.cc:614
+msgid "Problem syncing the file"
 msgstr ""
 
-#: methods/connect.cc:71
-#, c-format
-msgid "[IP: %s %s]"
+#: apt-pkg/pkgcache.cc:126
+msgid "Empty package cache"
 msgstr ""
 
-#: methods/connect.cc:80
-#, c-format
-msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+#: apt-pkg/pkgcache.cc:132
+msgid "The package cache file is corrupted"
 msgstr ""
 
-#: methods/connect.cc:86
-#, c-format
-msgid "Cannot initiate the connection to %s:%s (%s)."
+#: apt-pkg/pkgcache.cc:137
+msgid "The package cache file is an incompatible version"
 msgstr ""
 
-#: methods/connect.cc:92
+#: apt-pkg/pkgcache.cc:142
 #, c-format
-msgid "Could not connect to %s:%s (%s), connection timed out"
+msgid "This APT does not support the versioning system '%s'"
 msgstr ""
 
-#: methods/connect.cc:104
-#, c-format
-msgid "Could not connect to %s:%s (%s)."
+#: apt-pkg/pkgcache.cc:147
+msgid "The package cache was built for a different architecture"
 msgstr ""
 
-#. We say this mainly because the pause here is for the
-#. ssh connection that is still going
-#: methods/connect.cc:132 methods/rsh.cc:425
+#: apt-pkg/pkgcache.cc:218
+msgid "Depends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:218
+msgid "PreDepends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:218
+msgid "Suggests"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:219
+msgid "Recommends"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:219
+msgid "Conflicts"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:219
+msgid "Replaces"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:220
+msgid "Obsoletes"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:231
+msgid "important"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:231
+msgid "required"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:231
+msgid "standard"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:232
+msgid "optional"
+msgstr ""
+
+#: apt-pkg/pkgcache.cc:232
+msgid "extra"
+msgstr ""
+
+#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+msgid "Building dependency tree"
+msgstr ""
+
+#: apt-pkg/depcache.cc:61
+msgid "Candidate versions"
+msgstr ""
+
+#: apt-pkg/depcache.cc:90
+msgid "Dependency generation"
+msgstr ""
+
+#: apt-pkg/tagfile.cc:73
 #, c-format
-msgid "Connecting to %s"
+msgid "Unable to parse package file %s (1)"
 msgstr ""
 
-#: methods/connect.cc:163
+#: apt-pkg/tagfile.cc:160
 #, c-format
-msgid "Could not resolve '%s'"
+msgid "Unable to parse package file %s (2)"
 msgstr ""
 
-#: methods/connect.cc:167
+#: apt-pkg/sourcelist.cc:87
 #, c-format
-msgid "Temporary failure resolving '%s'"
+msgid "Malformed line %lu in source list %s (URI)"
 msgstr ""
 
-#: methods/connect.cc:169
+#: apt-pkg/sourcelist.cc:89
 #, c-format
-msgid "Something wicked happened resolving '%s:%s' (%i)"
+msgid "Malformed line %lu in source list %s (dist)"
 msgstr ""
 
-#: methods/connect.cc:216
+#: apt-pkg/sourcelist.cc:92
 #, c-format
-msgid "Unable to connect to %s %s:"
+msgid "Malformed line %lu in source list %s (URI parse)"
 msgstr ""
 
-#: methods/gzip.cc:57
+#: apt-pkg/sourcelist.cc:98
 #, c-format
-msgid "Couldn't open pipe for %s"
+msgid "Malformed line %lu in source list %s (absolute dist)"
 msgstr ""
 
-#: methods/gzip.cc:102
+#: apt-pkg/sourcelist.cc:105
 #, c-format
-msgid "Read error from %s process"
+msgid "Malformed line %lu in source list %s (dist parse)"
 msgstr ""
 
-#: methods/http.cc:344
-msgid "Waiting for headers"
+#: apt-pkg/sourcelist.cc:156
+#, c-format
+msgid "Opening %s"
 msgstr ""
 
-#: methods/http.cc:490
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:426
 #, c-format
-msgid "Got a single header line over %u chars"
+msgid "Line %u too long in source list %s."
 msgstr ""
 
-#: methods/http.cc:498
-msgid "Bad header line"
+#: apt-pkg/sourcelist.cc:187
+#, c-format
+msgid "Malformed line %u in source list %s (type)"
 msgstr ""
 
-#: methods/http.cc:517 methods/http.cc:524
-msgid "The HTTP server sent an invalid reply header"
+#: apt-pkg/sourcelist.cc:191
+#, c-format
+msgid "Type '%s' is not known on line %u in source list %s"
 msgstr ""
 
-#: methods/http.cc:553
-msgid "The HTTP server sent an invalid Content-Length header"
+#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
+#, c-format
+msgid "Malformed line %u in source list %s (vendor id)"
 msgstr ""
 
-#: methods/http.cc:568
-msgid "The HTTP server sent an invalid Content-Range header"
+#: apt-pkg/packagemanager.cc:402
+#, c-format
+msgid ""
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 
-#: methods/http.cc:570
-msgid "This HTTP server has broken range support"
+#: apt-pkg/pkgrecords.cc:37
+#, c-format
+msgid "Index file type '%s' is not supported"
 msgstr ""
 
-#: methods/http.cc:594
-msgid "Unknown date format"
+#: apt-pkg/algorithms.cc:241
+#, c-format
+msgid ""
+"The package %s needs to be reinstalled, but I can't find an archive for it."
 msgstr ""
 
-#: methods/http.cc:741
-msgid "Select failed"
+#: apt-pkg/algorithms.cc:1059
+msgid ""
+"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
+"held packages."
 msgstr ""
 
-#: methods/http.cc:746
-msgid "Connection timed out"
+#: apt-pkg/algorithms.cc:1061
+msgid "Unable to correct problems, you have held broken packages."
 msgstr ""
 
-#: methods/http.cc:769
-msgid "Error writing to output file"
+#: apt-pkg/acquire.cc:62
+#, c-format
+msgid "Lists directory %spartial is missing."
 msgstr ""
 
-#: methods/http.cc:797
-msgid "Error writing to file"
+#: apt-pkg/acquire.cc:66
+#, c-format
+msgid "Archive directory %spartial is missing."
 msgstr ""
 
-#: methods/http.cc:822
-msgid "Error writing to the file"
+#: apt-pkg/acquire.cc:821
+#, c-format
+msgid "Downloading file %li of %li (%s remaining)"
 msgstr ""
 
-#: methods/http.cc:836
-msgid "Error reading from server. Remote end closed connection"
+#: apt-pkg/acquire-worker.cc:113 apt-pkg/acquire-worker.cc:112
+#, c-format
+msgid "The method driver %s could not be found."
 msgstr ""
 
-#: methods/http.cc:838
-msgid "Error reading from server"
+#: apt-pkg/acquire-worker.cc:162 apt-pkg/acquire-worker.cc:161
+#, c-format
+msgid "Method %s did not start correctly"
 msgstr ""
 
-#: methods/http.cc:1069
-msgid "Bad header data"
+#: apt-pkg/acquire-worker.cc:377
+#, c-format
+msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
 msgstr ""
 
-#: methods/http.cc:1086
-msgid "Connection failed"
+#: apt-pkg/init.cc:119
+#, c-format
+msgid "Packaging system '%s' is not supported"
 msgstr ""
 
-#: methods/http.cc:1177
-msgid "Internal error"
+#: apt-pkg/init.cc:135
+msgid "Unable to determine a suitable packaging system type"
 msgstr ""
 
-#: methods/rsh.cc:330
-msgid "Connection closed prematurely"
+#: apt-pkg/clean.cc:61
+#, c-format
+msgid "Unable to stat %s."
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:82
-msgid "Can't mmap an empty file"
+#: apt-pkg/srcrecords.cc:48
+msgid "You must put some 'source' URIs in your sources.list"
 msgstr ""
 
-#: apt-pkg/contrib/mmap.cc:87
-#, c-format
-msgid "Couldn't make mmap of %lu bytes"
+#: apt-pkg/cachefile.cc:73
+msgid "The package lists or status file could not be parsed or opened."
 msgstr ""
 
-#: apt-pkg/contrib/strutl.cc:941
-#, c-format
-msgid "Selection %s not found"
+#: apt-pkg/cachefile.cc:77
+msgid "You may want to run apt-get update to correct these problems"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:395
-#, c-format
-msgid "Unrecognized type abbreviation: '%c'"
+#: apt-pkg/policy.cc:269
+msgid "Invalid record in the preferences file, no Package header"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:453
+#: apt-pkg/policy.cc:291
 #, c-format
-msgid "Opening configuration file %s"
+msgid "Did not understand pin type %s"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:471
-#, c-format
-msgid "Line %d too long (max %d)"
+#: apt-pkg/policy.cc:299
+msgid "No priority (or zero) specified for pin"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:567
-#, c-format
-msgid "Syntax error %s:%u: Block starts with no name."
+#: apt-pkg/pkgcachegen.cc:74
+msgid "Cache has an incompatible versioning system"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:586
+#: apt-pkg/pkgcachegen.cc:117
 #, c-format
-msgid "Syntax error %s:%u: Malformed tag"
+msgid "Error occurred while processing %s (NewPackage)"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:603
+#: apt-pkg/pkgcachegen.cc:129
 #, c-format
-msgid "Syntax error %s:%u: Extra junk after value"
+msgid "Error occurred while processing %s (UsePackage1)"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:643
+#: apt-pkg/pkgcachegen.cc:150
 #, c-format
-msgid "Syntax error %s:%u: Directives can only be done at the top level"
+msgid "Error occurred while processing %s (UsePackage2)"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:650
+#: apt-pkg/pkgcachegen.cc:154
 #, c-format
-msgid "Syntax error %s:%u: Too many nested includes"
+msgid "Error occurred while processing %s (NewFileVer1)"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:654 apt-pkg/contrib/configuration.cc:659
+#: apt-pkg/pkgcachegen.cc:184
 #, c-format
-msgid "Syntax error %s:%u: Included from here"
+msgid "Error occurred while processing %s (NewVersion1)"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:663
+#: apt-pkg/pkgcachegen.cc:188
 #, c-format
-msgid "Syntax error %s:%u: Unsupported directive '%s'"
+msgid "Error occurred while processing %s (UsePackage3)"
 msgstr ""
 
-#: apt-pkg/contrib/configuration.cc:697
+#: apt-pkg/pkgcachegen.cc:192
 #, c-format
-msgid "Syntax error %s:%u: Extra junk at end of file"
+msgid "Error occurred while processing %s (NewVersion2)"
 msgstr ""
 
-#: apt-pkg/contrib/progress.cc:154
-#, c-format
-msgid "%c%s... Error!"
+#: apt-pkg/pkgcachegen.cc:207
+msgid "Wow, you exceeded the number of package names this APT is capable of."
 msgstr ""
 
-#: apt-pkg/contrib/progress.cc:156
-#, c-format
-msgid "%c%s... Done"
+#: apt-pkg/pkgcachegen.cc:210
+msgid "Wow, you exceeded the number of versions this APT is capable of."
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:80
-#, c-format
-msgid "Command line option '%c' [from %s] is not known."
+#: apt-pkg/pkgcachegen.cc:213
+msgid "Wow, you exceeded the number of dependencies this APT is capable of."
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:106 apt-pkg/contrib/cmndline.cc:114
-#: apt-pkg/contrib/cmndline.cc:122
+#: apt-pkg/pkgcachegen.cc:241
 #, c-format
-msgid "Command line option %s is not understood"
+msgid "Error occurred while processing %s (FindPkg)"
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:127
+#: apt-pkg/pkgcachegen.cc:254
 #, c-format
-msgid "Command line option %s is not boolean"
+msgid "Error occurred while processing %s (CollectFileProvides)"
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:166 apt-pkg/contrib/cmndline.cc:187
+#: apt-pkg/pkgcachegen.cc:260
 #, c-format
-msgid "Option %s requires an argument."
+msgid "Package %s %s was not found while processing file dependencies"
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:201 apt-pkg/contrib/cmndline.cc:207
+#: apt-pkg/pkgcachegen.cc:574
 #, c-format
-msgid "Option %s: Configuration item specification must have an =<val>."
+msgid "Couldn't stat source package list %s"
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:237
-#, c-format
-msgid "Option %s requires an integer argument, not '%s'"
+#: apt-pkg/pkgcachegen.cc:658
+msgid "Collecting File Provides"
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:268
-#, c-format
-msgid "Option '%s' is too long"
+#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+msgid "IO Error saving source cache"
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:301
+#: apt-pkg/acquire-item.cc:129
 #, c-format
-msgid "Sense %s is not understood, try true or false."
+msgid "rename failed, %s (%s -> %s)."
 msgstr ""
 
-#: apt-pkg/contrib/cmndline.cc:351
-#, c-format
-msgid "Invalid operation %s"
+#: apt-pkg/acquire-item.cc:618 apt-pkg/acquire-item.cc:1290
+#: apt-pkg/acquire-item.cc:553 apt-pkg/acquire-item.cc:1218
+msgid "MD5Sum mismatch"
 msgstr ""
 
-#: apt-pkg/contrib/cdromutl.cc:55
+#: apt-pkg/acquire-item.cc:1104 apt-pkg/acquire-item.cc:1032
 #, c-format
-msgid "Unable to stat the mount point %s"
+msgid ""
+"I wasn't able to locate a file for the %s package. This might mean you need "
+"to manually fix this package. (due to missing arch)"
 msgstr ""
 
-#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:422 apt-pkg/clean.cc:44
+#: apt-pkg/acquire-item.cc:1157 apt-pkg/acquire-item.cc:1085
 #, c-format
-msgid "Unable to change to %s"
+msgid ""
+"I wasn't able to locate file for the %s package. This might mean you need to "
+"manually fix this package."
 msgstr ""
 
-#: apt-pkg/contrib/cdromutl.cc:190
-msgid "Failed to stat the cdrom"
+#: apt-pkg/acquire-item.cc:1193 apt-pkg/acquire-item.cc:1121
+#, c-format
+msgid ""
+"The package index files are corrupted. No Filename: field for package %s."
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:80
-#, c-format
-msgid "Not using locking for read only lock file %s"
+#: apt-pkg/acquire-item.cc:1280 apt-pkg/acquire-item.cc:1208
+msgid "Size mismatch"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:85
+#: apt-pkg/vendorlist.cc:66
 #, c-format
-msgid "Could not open lock file %s"
+msgid "Vendor block %s contains no fingerprint"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:103
+#: apt-pkg/cdrom.cc:507 apt-pkg/cdrom.cc:504
 #, c-format
-msgid "Not using locking for nfs mounted lock file %s"
+msgid ""
+"Using CD-ROM mount point %s\n"
+"Mounting CD-ROM\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:107
-#, c-format
-msgid "Could not get lock %s"
+#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598 apt-pkg/cdrom.cc:513
+#: apt-pkg/cdrom.cc:595
+msgid "Identifying.. "
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:359
+#: apt-pkg/cdrom.cc:541 apt-pkg/cdrom.cc:538
 #, c-format
-msgid "Waited for %s but it wasn't there"
+msgid "Stored label: %s \n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:369
+#: apt-pkg/cdrom.cc:561 apt-pkg/cdrom.cc:558
 #, c-format
-msgid "Sub-process %s received a segmentation fault."
+msgid "Using CD-ROM mount point %s\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:372
-#, c-format
-msgid "Sub-process %s returned an error code (%u)"
+#: apt-pkg/cdrom.cc:579 apt-pkg/cdrom.cc:576
+msgid "Unmounting CD-ROM\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:374
-#, c-format
-msgid "Sub-process %s exited unexpectedly"
+#: apt-pkg/cdrom.cc:583 apt-pkg/cdrom.cc:580
+msgid "Waiting for disc...\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:418
-#, c-format
-msgid "Could not open file %s"
+#. Mount the new CDROM
+#: apt-pkg/cdrom.cc:591 apt-pkg/cdrom.cc:588
+msgid "Mounting CD-ROM...\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:474
-#, c-format
-msgid "read, still have %lu to read but none left"
+#: apt-pkg/cdrom.cc:609 apt-pkg/cdrom.cc:606
+msgid "Scanning disc for index files..\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:504
+#: apt-pkg/cdrom.cc:647 apt-pkg/cdrom.cc:644
 #, c-format
-msgid "write, still have %lu to write but couldn't"
+msgid "Found %i package indexes, %i source indexes and %i signatures\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:579
-msgid "Problem closing the file"
+#: apt-pkg/cdrom.cc:704 apt-pkg/cdrom.cc:701
+msgid "That is not a valid name, try again.\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:585
-msgid "Problem unlinking the file"
+#: apt-pkg/cdrom.cc:720 apt-pkg/cdrom.cc:717
+#, c-format
+msgid ""
+"This disc is called: \n"
+"'%s'\n"
 msgstr ""
 
-#: apt-pkg/contrib/fileutl.cc:596
-msgid "Problem syncing the file"
+#: apt-pkg/cdrom.cc:724 apt-pkg/cdrom.cc:721
+msgid "Copying package lists..."
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:126
-msgid "Empty package cache"
+#: apt-pkg/cdrom.cc:748 apt-pkg/cdrom.cc:745
+msgid "Writing new source list\n"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:132
-msgid "The package cache file is corrupted"
+#: apt-pkg/cdrom.cc:757 apt-pkg/cdrom.cc:754
+msgid "Source list entries for this disc are:\n"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:137
-msgid "The package cache file is an incompatible version"
+#: apt-pkg/cdrom.cc:791 apt-pkg/cdrom.cc:788
+msgid "Unmounting CD-ROM..."
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:142
+#: apt-pkg/indexcopy.cc:261
 #, c-format
-msgid "This APT does not support the versioning system '%s'"
-msgstr ""
-
-#: apt-pkg/pkgcache.cc:147
-msgid "The package cache was built for a different architecture"
+msgid "Wrote %i records.\n"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:218
-msgid "Depends"
+#: apt-pkg/indexcopy.cc:263
+#, c-format
+msgid "Wrote %i records with %i missing files.\n"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:218
-msgid "PreDepends"
+#: apt-pkg/indexcopy.cc:266
+#, c-format
+msgid "Wrote %i records with %i mismatched files\n"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:218
-msgid "Suggests"
+#: apt-pkg/indexcopy.cc:269
+#, c-format
+msgid "Wrote %i records with %i missing files and %i mismatched files\n"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:219
-msgid "Recommends"
+#: apt-pkg/deb/dpkgpm.cc:358
+#, c-format
+msgid "Preparing %s"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:219
-msgid "Conflicts"
+#: apt-pkg/deb/dpkgpm.cc:359
+#, c-format
+msgid "Unpacking %s"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:219
-msgid "Replaces"
+#: apt-pkg/deb/dpkgpm.cc:364
+#, c-format
+msgid "Preparing to configure %s"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:220
-msgid "Obsoletes"
+#: apt-pkg/deb/dpkgpm.cc:365
+#, c-format
+msgid "Configuring %s"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:231
-msgid "important"
+#: apt-pkg/deb/dpkgpm.cc:366
+#, c-format
+msgid "Installed %s"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:231
-msgid "required"
+#: apt-pkg/deb/dpkgpm.cc:371
+#, c-format
+msgid "Preparing for removal of %s"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:231
-msgid "standard"
+#: apt-pkg/deb/dpkgpm.cc:372
+#, c-format
+msgid "Removing %s"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:232
-msgid "optional"
+#: apt-pkg/deb/dpkgpm.cc:373
+#, c-format
+msgid "Removed %s"
 msgstr ""
 
-#: apt-pkg/pkgcache.cc:232
-msgid "extra"
+#: apt-pkg/deb/dpkgpm.cc:378
+#, c-format
+msgid "Preparing for remove with config %s"
 msgstr ""
 
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
-msgid "Building dependency tree"
+#: apt-pkg/deb/dpkgpm.cc:379
+#, c-format
+msgid "Removed with config %s"
 msgstr ""
 
-#: apt-pkg/depcache.cc:61
-msgid "Candidate versions"
+#: methods/cdrom.cc:113
+#, c-format
+msgid "Unable to read the cdrom database %s"
 msgstr ""
 
-#: apt-pkg/depcache.cc:90
-msgid "Dependency generation"
+#: methods/cdrom.cc:122
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
 msgstr ""
 
-#: apt-pkg/tagfile.cc:73
-#, c-format
-msgid "Unable to parse package file %s (1)"
+#: methods/cdrom.cc:130 methods/cdrom.cc:168
+msgid "Wrong CD-ROM"
 msgstr ""
 
-#: apt-pkg/tagfile.cc:160
+#: methods/cdrom.cc:163
 #, c-format
-msgid "Unable to parse package file %s (2)"
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:87
-#, c-format
-msgid "Malformed line %lu in source list %s (URI)"
+#: methods/cdrom.cc:177 methods/file.cc:77 methods/rsh.cc:264
+msgid "File not found"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:89
-#, c-format
-msgid "Malformed line %lu in source list %s (dist)"
+#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
+#: methods/gzip.cc:142
+msgid "Failed to stat"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:92
-#, c-format
-msgid "Malformed line %lu in source list %s (URI parse)"
+#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+msgid "Failed to set modification time"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:98
-#, c-format
-msgid "Malformed line %lu in source list %s (absolute dist)"
+#: methods/file.cc:42
+msgid "Invalid URI, local URIS must not start with //"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:105
-#, c-format
-msgid "Malformed line %lu in source list %s (dist parse)"
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc:162
+msgid "Logging in"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:156
-#, c-format
-msgid "Opening %s"
+#: methods/ftp.cc:168
+msgid "Unable to determine the peer name"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:170
-#, c-format
-msgid "Line %u too long in source list %s."
+#: methods/ftp.cc:173
+msgid "Unable to determine the local name"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:187
+#: methods/ftp.cc:204 methods/ftp.cc:232
 #, c-format
-msgid "Malformed line %u in source list %s (type)"
+msgid "The server refused the connection and said: %s"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:191
+#: methods/ftp.cc:210
 #, c-format
-msgid "Type '%s' is not known on line %u in source list %s"
+msgid "USER failed, server said: %s"
 msgstr ""
 
-#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
+#: methods/ftp.cc:217
 #, c-format
-msgid "Malformed line %u in source list %s (vendor id)"
+msgid "PASS failed, server said: %s"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:402
-#, c-format
+#: methods/ftp.cc:237
 msgid ""
-"This installation run will require temporarily removing the essential "
-"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
-"you really want to do it, activate the APT::Force-LoopBreak option."
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
 msgstr ""
 
-#: apt-pkg/pkgrecords.cc:37
+#: methods/ftp.cc:265
 #, c-format
-msgid "Index file type '%s' is not supported"
+msgid "Login script command '%s' failed, server said: %s"
 msgstr ""
 
-#: apt-pkg/algorithms.cc:241
+#: methods/ftp.cc:291
 #, c-format
-msgid ""
-"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgid "TYPE failed, server said: %s"
 msgstr ""
 
-#: apt-pkg/algorithms.cc:1059
-msgid ""
-"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
-"held packages."
+#: methods/ftp.cc:329 methods/ftp.cc:440 methods/rsh.cc:183 methods/rsh.cc:226
+msgid "Connection timeout"
 msgstr ""
 
-#: apt-pkg/algorithms.cc:1061
-msgid "Unable to correct problems, you have held broken packages."
+#: methods/ftp.cc:335
+msgid "Server closed the connection"
 msgstr ""
 
-#: apt-pkg/acquire.cc:61
-#, c-format
-msgid "Lists directory %spartial is missing."
+#: methods/ftp.cc:345 methods/rsh.cc:197
+msgid "A response overflowed the buffer."
 msgstr ""
 
-#: apt-pkg/acquire.cc:65
-#, c-format
-msgid "Archive directory %spartial is missing."
+#: methods/ftp.cc:362 methods/ftp.cc:374
+msgid "Protocol corruption"
 msgstr ""
 
-#: apt-pkg/acquire-worker.cc:112
-#, c-format
-msgid "The method driver %s could not be found."
+#: methods/ftp.cc:687 methods/ftp.cc:693 methods/ftp.cc:729
+msgid "Could not create a socket"
 msgstr ""
 
-#: apt-pkg/acquire-worker.cc:161
-#, c-format
-msgid "Method %s did not start correctly"
+#: methods/ftp.cc:698
+msgid "Could not connect data socket, connection timed out"
 msgstr ""
 
-#: apt-pkg/init.cc:119
-#, c-format
-msgid "Packaging system '%s' is not supported"
+#: methods/ftp.cc:704
+msgid "Could not connect passive socket."
 msgstr ""
 
-#: apt-pkg/init.cc:135
-msgid "Unable to determine a suitable packaging system type"
+#: methods/ftp.cc:722
+msgid "getaddrinfo was unable to get a listening socket"
 msgstr ""
 
-#: apt-pkg/clean.cc:61
-#, c-format
-msgid "Unable to stat %s."
+#: methods/ftp.cc:736
+msgid "Could not bind a socket"
 msgstr ""
 
-#: apt-pkg/srcrecords.cc:48
-msgid "You must put some 'source' URIs in your sources.list"
+#: methods/ftp.cc:740
+msgid "Could not listen on the socket"
 msgstr ""
 
-#: apt-pkg/cachefile.cc:73
-msgid "The package lists or status file could not be parsed or opened."
+#: methods/ftp.cc:747
+msgid "Could not determine the socket's name"
 msgstr ""
 
-#: apt-pkg/cachefile.cc:77
-msgid "You may want to run apt-get update to correct these problems"
+#: methods/ftp.cc:779
+msgid "Unable to send PORT command"
 msgstr ""
 
-#: apt-pkg/policy.cc:269
-msgid "Invalid record in the preferences file, no Package header"
+#: methods/ftp.cc:789
+#, c-format
+msgid "Unknown address family %u (AF_*)"
 msgstr ""
 
-#: apt-pkg/policy.cc:291
+#: methods/ftp.cc:798
 #, c-format
-msgid "Did not understand pin type %s"
+msgid "EPRT failed, server said: %s"
 msgstr ""
 
-#: apt-pkg/policy.cc:299
-msgid "No priority (or zero) specified for pin"
+#: methods/ftp.cc:818
+msgid "Data socket connect timed out"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:74
-msgid "Cache has an incompatible versioning system"
+#: methods/ftp.cc:825
+msgid "Unable to accept connection"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:117
-#, c-format
-msgid "Error occurred while processing %s (NewPackage)"
+#: methods/ftp.cc:864 methods/http.cc:957 methods/rsh.cc:303
+msgid "Problem hashing file"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:129
+#: methods/ftp.cc:877
 #, c-format
-msgid "Error occurred while processing %s (UsePackage1)"
+msgid "Unable to fetch file, server said '%s'"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:150
+#: methods/ftp.cc:892 methods/rsh.cc:322
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc:922
 #, c-format
-msgid "Error occurred while processing %s (UsePackage2)"
+msgid "Data transfer failed, server said '%s'"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:154
+#. Get the files information
+#: methods/ftp.cc:997
+msgid "Query"
+msgstr ""
+
+#: methods/ftp.cc:1106
+msgid "Unable to invoke "
+msgstr ""
+
+#: methods/connect.cc:64
 #, c-format
-msgid "Error occurred while processing %s (NewFileVer1)"
+msgid "Connecting to %s (%s)"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:184
+#: methods/connect.cc:71
 #, c-format
-msgid "Error occurred while processing %s (NewVersion1)"
+msgid "[IP: %s %s]"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:188
+#: methods/connect.cc:80
 #, c-format
-msgid "Error occurred while processing %s (UsePackage3)"
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:192
+#: methods/connect.cc:86
 #, c-format
-msgid "Error occurred while processing %s (NewVersion2)"
+msgid "Cannot initiate the connection to %s:%s (%s)."
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:207
-msgid "Wow, you exceeded the number of package names this APT is capable of."
+#: methods/connect.cc:92
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:210
-msgid "Wow, you exceeded the number of versions this APT is capable of."
+#: methods/connect.cc:104
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:213
-msgid "Wow, you exceeded the number of dependencies this APT is capable of."
+#. We say this mainly because the pause here is for the
+#. ssh connection that is still going
+#: methods/connect.cc:132 methods/rsh.cc:425
+#, c-format
+msgid "Connecting to %s"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:241
+#: methods/connect.cc:163
 #, c-format
-msgid "Error occurred while processing %s (FindPkg)"
+msgid "Could not resolve '%s'"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:254
+#: methods/connect.cc:167
 #, c-format
-msgid "Error occurred while processing %s (CollectFileProvides)"
+msgid "Temporary failure resolving '%s'"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:260
+#: methods/connect.cc:169
 #, c-format
-msgid "Package %s %s was not found while processing file dependencies"
+msgid "Something wicked happened resolving '%s:%s' (%i)"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:574
+#: methods/connect.cc:216
 #, c-format
-msgid "Couldn't stat source package list %s"
+msgid "Unable to connect to %s %s:"
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:658
-msgid "Collecting File Provides"
+#: methods/gpgv.cc:92
+msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
 msgstr ""
 
-#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
-msgid "IO Error saving source cache"
+#: methods/gpgv.cc:191
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:126
-#, c-format
-msgid "rename failed, %s (%s -> %s)."
+#: methods/gpgv.cc:196
+msgid "At least one invalid signature was encountered."
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:235 apt-pkg/acquire-item.cc:900
-msgid "MD5Sum mismatch"
+#. FIXME String concatenation considered harmful.
+#: methods/gpgv.cc:201
+msgid "Could not execute "
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:714
-#, c-format
-msgid ""
-"I wasn't able to locate a file for the %s package. This might mean you need "
-"to manually fix this package. (due to missing arch)"
+#: methods/gpgv.cc:202
+msgid " to verify signature (is gnupg installed?)"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:767
-#, c-format
-msgid ""
-"I wasn't able to locate file for the %s package. This might mean you need to "
-"manually fix this package."
+#: methods/gpgv.cc:206
+msgid "Unknown error executing gpgv"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:803
-#, c-format
-msgid ""
-"The package index files are corrupted. No Filename: field for package %s."
+#: methods/gpgv.cc:237
+msgid "The following signatures were invalid:\n"
 msgstr ""
 
-#: apt-pkg/acquire-item.cc:890
-msgid "Size mismatch"
+#: methods/gpgv.cc:244
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
 msgstr ""
 
-#: apt-pkg/vendorlist.cc:66
+#: methods/gzip.cc:57
 #, c-format
-msgid "Vendor block %s contains no fingerprint"
+msgid "Couldn't open pipe for %s"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:504
+#: methods/gzip.cc:102
 #, c-format
-msgid ""
-"Using CD-ROM mount point %s\n"
-"Mounting CD-ROM\n"
+msgid "Read error from %s process"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:513 apt-pkg/cdrom.cc:595
-msgid "Identifying.. "
+#: methods/http.cc:381
+msgid "Waiting for headers"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:538
+#: methods/http.cc:527
 #, c-format
-msgid "Stored label: %s \n"
+msgid "Got a single header line over %u chars"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:558
-#, c-format
-msgid "Using CD-ROM mount point %s\n"
+#: methods/http.cc:535
+msgid "Bad header line"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:576
-msgid "Unmounting CD-ROM\n"
+#: methods/http.cc:554 methods/http.cc:561
+msgid "The HTTP server sent an invalid reply header"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:580
-msgid "Waiting for disc...\n"
+#: methods/http.cc:590
+msgid "The HTTP server sent an invalid Content-Length header"
 msgstr ""
 
-#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:588
-msgid "Mounting CD-ROM...\n"
+#: methods/http.cc:605
+msgid "The HTTP server sent an invalid Content-Range header"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:606
-msgid "Scanning disc for index files..\n"
+#: methods/http.cc:607
+msgid "This HTTP server has broken range support"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:644
-#, c-format
-msgid "Found %i package indexes, %i source indexes and %i signatures\n"
+#: methods/http.cc:631
+msgid "Unknown date format"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:701
-msgid "That is not a valid name, try again.\n"
+#: methods/http.cc:778
+msgid "Select failed"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:717
-#, c-format
-msgid ""
-"This disc is called: \n"
-"'%s'\n"
+#: methods/http.cc:783
+msgid "Connection timed out"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:721
-msgid "Copying package lists..."
+#: methods/http.cc:806
+msgid "Error writing to output file"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:745
-msgid "Writing new source list\n"
+#: methods/http.cc:834
+msgid "Error writing to file"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:754
-msgid "Source list entries for this disc are:\n"
+#: methods/http.cc:859
+msgid "Error writing to the file"
 msgstr ""
 
-#: apt-pkg/cdrom.cc:788
-msgid "Unmounting CD-ROM..."
+#: methods/http.cc:873
+msgid "Error reading from server. Remote end closed connection"
 msgstr ""
 
-#: apt-pkg/indexcopy.cc:261
-#, c-format
-msgid "Wrote %i records.\n"
+#: methods/http.cc:875
+msgid "Error reading from server"
 msgstr ""
 
-#: apt-pkg/indexcopy.cc:263
-#, c-format
-msgid "Wrote %i records with %i missing files.\n"
+#: methods/http.cc:1106
+msgid "Bad header data"
 msgstr ""
 
-#: apt-pkg/indexcopy.cc:266
-#, c-format
-msgid "Wrote %i records with %i mismatched files\n"
+#: methods/http.cc:1123
+msgid "Connection failed"
 msgstr ""
 
-#: apt-pkg/indexcopy.cc:269
-#, c-format
-msgid "Wrote %i records with %i missing files and %i mismatched files\n"
+#: methods/http.cc:1214
+msgid "Internal error"
+msgstr ""
+
+#: methods/rsh.cc:330
+msgid "Connection closed prematurely"
 msgstr ""