summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-09-06 09:51:40 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-09-06 09:51:40 +0000
commit09af1a917c739e50e4e8590cc8402525b3f1f64d (patch)
treeaae9b5e6b75920dd1c43afab0da590e4de11976e
parentf8ad6f9b0dbcef95d3bbbe6481d3e10e9ed684d0 (diff)
parentb8b1131a7d349db52a34a8cd6dd1872aebd50885 (diff)
* merged with michael.vogt@ubuntu.com--2005/apt--mvo--0 to be in sync with debian
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 ...
-rw-r--r--README.arch12
-rw-r--r--README.progress-reporting9
-rw-r--r--apt-pkg/acquire-item.cc25
-rw-r--r--apt-pkg/acquire-item.h3
-rw-r--r--apt-pkg/acquire-worker.cc19
-rw-r--r--apt-pkg/algorithms.h3
-rw-r--r--apt-pkg/cacheiterators.h4
-rw-r--r--apt-pkg/cdrom.cc3
-rw-r--r--apt-pkg/deb/debsystem.cc7
-rw-r--r--apt-pkg/policy.h4
-rw-r--r--cmdline/apt-get.cc2
-rw-r--r--configure.in5
-rw-r--r--debian/apt-utils.examples1
-rw-r--r--debian/apt.manpages1
-rw-r--r--debian/changelog29
-rwxr-xr-xdebian/rules1
-rw-r--r--doc/apt-key.8.xml47
-rw-r--r--doc/apt-secure.8.xml209
-rw-r--r--doc/apt.conf.5.xml2
-rw-r--r--doc/apt.ent49
-rw-r--r--doc/apt_preferences.5.xml2
-rw-r--r--doc/examples/apt-ftparchive.conf46
-rw-r--r--doc/makefile3
-rw-r--r--ftparchive/apt-ftparchive.cc7
-rw-r--r--ftparchive/override.cc38
-rw-r--r--ftparchive/override.h9
-rw-r--r--ftparchive/writer.cc55
-rw-r--r--ftparchive/writer.h7
-rw-r--r--methods/cdrom.cc7
-rw-r--r--methods/connect.cc7
-rw-r--r--methods/file.cc8
-rw-r--r--po/apt-all.pot861
32 files changed, 1042 insertions, 443 deletions
diff --git a/README.arch b/README.arch
new file mode 100644
index 000000000..92870d614
--- /dev/null
+++ b/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).
diff --git a/README.progress-reporting b/README.progress-reporting
index 73fbd8c08..b575e7879 100644
--- a/README.progress-reporting
+++ b/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 ':',
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
--------
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 5265ef3a6..c4c0b73a9 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -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;
}
}
diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h
index b55ac526b..3a6e93b1a 100644
--- a/apt-pkg/acquire-item.h
+++ b/apt-pkg/acquire-item.h
@@ -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="");
diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc
index 5cd7d6f1e..d06024178 100644
--- a/apt-pkg/acquire-worker.cc
+++ b/apt-pkg/acquire-worker.cc
@@ -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)
{
diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h
index 174a7f58d..b95218061 100644
--- a/apt-pkg/algorithms.h
+++ b/apt-pkg/algorithms.h
@@ -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);
diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h
index 62d2695dd..c3a0d0a5a 100644
--- a/apt-pkg/cacheiterators.h
+++ b/apt-pkg/cacheiterators.h
@@ -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)
{
diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc
index ca74aa685..c067cf1ee 100644
--- a/apt-pkg/cdrom.cc
+++ b/apt-pkg/cdrom.cc
@@ -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);
diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc
index 0b3a4f742..2d805ea6f 100644
--- a/apt-pkg/deb/debsystem.cc
+++ b/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::status","/var/lib/dpkg/status");
Cnf.CndSet("Dir::Bin::dpkg","/usr/bin/dpkg");
-
+
+ if (StatusFile) {
+ delete StatusFile;
+ StatusFile = 0;
+ }
+
return true;
}
/*}}}*/
diff --git a/apt-pkg/policy.h b/apt-pkg/policy.h
index 15f204798..40ebd3f70 100644
--- a/apt-pkg/policy.h
+++ b/apt-pkg/policy.h
@@ -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;
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index e673e0f5b..7e079b91c 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -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);
}
/*}}}*/
diff --git a/configure.in b/configure.in
index 1ee7e168b..d9c3289ff 100644
--- a/configure.in
+++ b/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)
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
index 000000000..25aadf996
--- /dev/null
+++ b/debian/apt-utils.examples
@@ -0,0 +1 @@
+doc/examples/apt-ftparchive.conf \ No newline at end of file
diff --git a/debian/apt.manpages b/debian/apt.manpages
index e621e1c49..b52ea3d3d 100644
--- a/debian/apt.manpages
+++ b/debian/apt.manpages
@@ -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
diff --git a/debian/changelog b/debian/changelog
index 67a42a46c..cc3da8f84 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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
diff --git a/debian/rules b/debian/rules
index 25e4d4d1f..40f5add37 100755
--- a/debian/rules
+++ b/debian/rules
@@ -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$@
diff --git a/doc/apt-key.8.xml b/doc/apt-key.8.xml
index 62686618a..eac61307d 100644
--- a/doc/apt-key.8.xml
+++ b/doc/apt-key.8.xml
@@ -68,17 +68,56 @@
<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
index 000000000..e22446030
--- /dev/null
+++ b/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>
+
diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml
index 69e212243..43f33681f 100644
--- a/doc/apt.conf.5.xml
+++ b/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>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
diff --git a/doc/apt.ent b/doc/apt.ent
index 8054a25f6..cf22df6d2 100644
--- a/doc/apt.ent
+++ b/doc/apt.ent
@@ -44,6 +44,25 @@
</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>
@@ -91,6 +110,36 @@
<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 "
diff --git a/doc/apt_preferences.5.xml b/doc/apt_preferences.5.xml
index 3e50bef8c..12b03196a 100644
--- a/doc/apt_preferences.5.xml
+++ b/doc/apt_preferences.5.xml
@@ -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
index 000000000..657ec5440
--- /dev/null
+++ b/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";
+ };
+};
diff --git a/doc/makefile b/doc/makefile
index f34b3f6e5..31ee061fb 100644
--- a/doc/makefile
+++ b/doc/makefile
@@ -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)
diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc
index 31ff8d600..0e2be8a00 100644
--- a/ftparchive/apt-ftparchive.cc
+++ b/ftparchive/apt-ftparchive.cc
@@ -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);
diff --git a/ftparchive/override.cc b/ftparchive/override.cc
index 669ce25bf..b8b94843f 100644
--- a/ftparchive/override.cc
+++ b/ftparchive/override.cc
@@ -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
diff --git a/ftparchive/override.h b/ftparchive/override.h
index 2d6a4e27c..e64641776 100644
--- a/ftparchive/override.h
+++ b/ftparchive/override.h
@@ -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);
diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc
index 35a23a3d7..0b68d0bbf 100644
--- a/ftparchive/writer.cc
+++ b/ftparchive/writer.cc
@@ -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
diff --git a/ftparchive/writer.h b/ftparchive/writer.h
index ce4c947a9..16d014ef8 100644
--- a/ftparchive/writer.h
+++ b/ftparchive/writer.h
@@ -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;
};
diff --git a/methods/cdrom.cc b/methods/cdrom.cc
index 7cc036814..41eb8a0ee 100644
--- a/methods/cdrom.cc
+++ b/methods/cdrom.cc
@@ -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;
}
diff --git a/methods/connect.cc b/methods/connect.cc
index 981ac1371..4e48927ed 100644
--- a/methods/connect.cc
+++ b/methods/connect.cc
@@ -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);
}
diff --git a/methods/file.cc b/methods/file.cc
index 3500de9f5..9cdd5bc2d 100644
--- a/methods/file.cc
+++ b/methods/file.cc
@@ -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;
}
diff --git a/po/apt-all.pot b/po/apt-all.pot
index d06c14ce1..46672e159 100644
--- a/po/apt-all.pot
+++ b/po/apt-all.pot
@@ -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,331 +1407,6 @@ msgstr ""
msgid "Unparsable control file"
msgstr ""
-#: methods/cdrom.cc:113
-#, c-format
-msgid "Unable to read the cdrom database %s"
-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"
-msgstr ""
-
-#: methods/cdrom.cc:130 methods/cdrom.cc:168
-msgid "Wrong CD-ROM"
-msgstr ""
-
-#: methods/cdrom.cc:163
-#, c-format
-msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
-msgstr ""
-
-#: methods/cdrom.cc:177 methods/file.cc:77 methods/rsh.cc:264
-msgid "File not found"
-msgstr ""
-
-#: methods/copy.cc:42 methods/gzip.cc:133 methods/gzip.cc:142
-msgid "Failed to stat"
-msgstr ""
-
-#: methods/copy.cc:79 methods/gzip.cc:139
-msgid "Failed to set modification time"
-msgstr ""
-
-#: methods/file.cc:42
-msgid "Invalid URI, local URIS must not start with //"
-msgstr ""
-
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc:162
-msgid "Logging in"
-msgstr ""
-
-#: methods/ftp.cc:168
-msgid "Unable to determine the peer name"
-msgstr ""
-
-#: methods/ftp.cc:173
-msgid "Unable to determine the local name"
-msgstr ""
-
-#: methods/ftp.cc:204 methods/ftp.cc:232
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr ""
-
-#: methods/ftp.cc:210
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:217
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:237
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-
-#: methods/ftp.cc:265
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:291
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:329 methods/ftp.cc:440 methods/rsh.cc:183 methods/rsh.cc:226
-msgid "Connection timeout"
-msgstr ""
-
-#: methods/ftp.cc:335
-msgid "Server closed the connection"
-msgstr ""
-
-#: methods/ftp.cc:338 methods/rsh.cc:190 apt-pkg/contrib/fileutl.cc:453
-msgid "Read error"
-msgstr ""
-
-#: methods/ftp.cc:345 methods/rsh.cc:197
-msgid "A response overflowed the buffer."
-msgstr ""
-
-#: methods/ftp.cc:362 methods/ftp.cc:374
-msgid "Protocol corruption"
-msgstr ""
-
-#: methods/ftp.cc:446 methods/rsh.cc:232 apt-pkg/contrib/fileutl.cc:492
-msgid "Write error"
-msgstr ""
-
-#: methods/ftp.cc:687 methods/ftp.cc:693 methods/ftp.cc:729
-msgid "Could not create a socket"
-msgstr ""
-
-#: methods/ftp.cc:698
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-
-#: methods/ftp.cc:704
-msgid "Could not connect passive socket."
-msgstr ""
-
-#: methods/ftp.cc:722
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr ""
-
-#: methods/ftp.cc:736
-msgid "Could not bind a socket"
-msgstr ""
-
-#: methods/ftp.cc:740
-msgid "Could not listen on the socket"
-msgstr ""
-
-#: methods/ftp.cc:747
-msgid "Could not determine the socket's name"
-msgstr ""
-
-#: methods/ftp.cc:779
-msgid "Unable to send PORT command"
-msgstr ""
-
-#: methods/ftp.cc:789
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr ""
-
-#: methods/ftp.cc:798
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:818
-msgid "Data socket connect timed out"
-msgstr ""
-
-#: methods/ftp.cc:825
-msgid "Unable to accept connection"
-msgstr ""
-
-#: methods/ftp.cc:864 methods/http.cc:920 methods/rsh.cc:303
-msgid "Problem hashing file"
-msgstr ""
-
-#: methods/ftp.cc:877
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr ""
-
-#: methods/ftp.cc:892 methods/rsh.cc:322
-msgid "Data socket timed out"
-msgstr ""
-
-#: methods/ftp.cc:922
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr ""
-
-#. 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 "Connecting to %s (%s)"
-msgstr ""
-
-#: methods/connect.cc:71
-#, c-format
-msgid "[IP: %s %s]"
-msgstr ""
-
-#: methods/connect.cc:80
-#, c-format
-msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
-msgstr ""
-
-#: methods/connect.cc:86
-#, c-format
-msgid "Cannot initiate the connection to %s:%s (%s)."
-msgstr ""
-
-#: methods/connect.cc:92
-#, c-format
-msgid "Could not connect to %s:%s (%s), connection timed out"
-msgstr ""
-
-#: methods/connect.cc:104
-#, c-format
-msgid "Could not connect to %s:%s (%s)."
-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
-#, c-format
-msgid "Connecting to %s"
-msgstr ""
-
-#: methods/connect.cc:163
-#, c-format
-msgid "Could not resolve '%s'"
-msgstr ""
-
-#: methods/connect.cc:167
-#, c-format
-msgid "Temporary failure resolving '%s'"
-msgstr ""
-
-#: methods/connect.cc:169
-#, c-format
-msgid "Something wicked happened resolving '%s:%s' (%i)"
-msgstr ""
-
-#: methods/connect.cc:216
-#, c-format
-msgid "Unable to connect to %s %s:"
-msgstr ""
-
-#: methods/gzip.cc:57
-#, c-format
-msgid "Couldn't open pipe for %s"
-msgstr ""
-
-#: methods/gzip.cc:102
-#, c-format
-msgid "Read error from %s process"
-msgstr ""
-
-#: methods/http.cc:344
-msgid "Waiting for headers"
-msgstr ""
-
-#: methods/http.cc:490
-#, c-format
-msgid "Got a single header line over %u chars"
-msgstr ""
-
-#: methods/http.cc:498
-msgid "Bad header line"
-msgstr ""
-
-#: methods/http.cc:517 methods/http.cc:524
-msgid "The HTTP server sent an invalid reply header"
-msgstr ""
-
-#: methods/http.cc:553
-msgid "The HTTP server sent an invalid Content-Length header"
-msgstr ""
-
-#: methods/http.cc:568
-msgid "The HTTP server sent an invalid Content-Range header"
-msgstr ""
-
-#: methods/http.cc:570
-msgid "This HTTP server has broken range support"
-msgstr ""
-
-#: methods/http.cc:594
-msgid "Unknown date format"
-msgstr ""
-
-#: methods/http.cc:741
-msgid "Select failed"
-msgstr ""
-
-#: methods/http.cc:746
-msgid "Connection timed out"
-msgstr ""
-
-#: methods/http.cc:769
-msgid "Error writing to output file"
-msgstr ""
-
-#: methods/http.cc:797
-msgid "Error writing to file"
-msgstr ""
-
-#: methods/http.cc:822
-msgid "Error writing to the file"
-msgstr ""
-
-#: methods/http.cc:836
-msgid "Error reading from server. Remote end closed connection"
-msgstr ""
-
-#: methods/http.cc:838
-msgid "Error reading from server"
-msgstr ""
-
-#: methods/http.cc:1069
-msgid "Bad header data"
-msgstr ""
-
-#: methods/http.cc:1086
-msgid "Connection failed"
-msgstr ""
-
-#: methods/http.cc:1177
-msgid "Internal error"
-msgstr ""
-
-#: methods/rsh.cc:330
-msgid "Connection closed prematurely"
-msgstr ""
-
#: apt-pkg/contrib/mmap.cc:82
msgid "Can't mmap an empty file"
msgstr ""
@@ -1746,57 +1421,57 @@ msgstr ""
msgid "Selection %s not found"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:395
+#: apt-pkg/contrib/configuration.cc:436
#, c-format
msgid "Unrecognized type abbreviation: '%c'"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:453
+#: apt-pkg/contrib/configuration.cc:494
#, c-format
msgid "Opening configuration file %s"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:471
+#: apt-pkg/contrib/configuration.cc:512
#, c-format
msgid "Line %d too long (max %d)"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:567
+#: apt-pkg/contrib/configuration.cc:608
#, c-format
msgid "Syntax error %s:%u: Block starts with no name."
msgstr ""
-#: apt-pkg/contrib/configuration.cc:586
+#: apt-pkg/contrib/configuration.cc:627
#, c-format
msgid "Syntax error %s:%u: Malformed tag"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:603
+#: apt-pkg/contrib/configuration.cc:644
#, c-format
msgid "Syntax error %s:%u: Extra junk after value"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:643
+#: apt-pkg/contrib/configuration.cc:684
#, c-format
msgid "Syntax error %s:%u: Directives can only be done at the top level"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:650
+#: apt-pkg/contrib/configuration.cc:691
#, c-format
msgid "Syntax error %s:%u: Too many nested includes"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:654 apt-pkg/contrib/configuration.cc:659
+#: apt-pkg/contrib/configuration.cc:695 apt-pkg/contrib/configuration.cc:700
#, c-format
msgid "Syntax error %s:%u: Included from here"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:663
+#: apt-pkg/contrib/configuration.cc:704
#, c-format
msgid "Syntax error %s:%u: Unsupported directive '%s'"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:697
+#: apt-pkg/contrib/configuration.cc:738
#, c-format
msgid "Syntax error %s:%u: Extra junk at end of file"
msgstr ""
@@ -1862,7 +1537,7 @@ msgstr ""
msgid "Unable to stat the mount point %s"
msgstr ""
-#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:422 apt-pkg/clean.cc:44
+#: 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 ""
@@ -1871,70 +1546,78 @@ msgstr ""
msgid "Failed to stat the cdrom"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:80
+#: apt-pkg/contrib/fileutl.cc:82
#, c-format
msgid "Not using locking for read only lock file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:85
+#: apt-pkg/contrib/fileutl.cc:87
#, c-format
msgid "Could not open lock file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:103
+#: apt-pkg/contrib/fileutl.cc:105
#, c-format
msgid "Not using locking for nfs mounted lock file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:107
+#: apt-pkg/contrib/fileutl.cc:109
#, c-format
msgid "Could not get lock %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:359
+#: apt-pkg/contrib/fileutl.cc:377
#, c-format
msgid "Waited for %s but it wasn't there"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:369
+#: apt-pkg/contrib/fileutl.cc:387
#, c-format
msgid "Sub-process %s received a segmentation fault."
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:372
+#: apt-pkg/contrib/fileutl.cc:390
#, c-format
msgid "Sub-process %s returned an error code (%u)"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:374
+#: apt-pkg/contrib/fileutl.cc:392
#, c-format
msgid "Sub-process %s exited unexpectedly"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:418
+#: apt-pkg/contrib/fileutl.cc:436
#, c-format
msgid "Could not open file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:474
+#: 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 "read, still have %lu to read but none left"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:504
+#: apt-pkg/contrib/fileutl.cc:510 methods/ftp.cc:446 methods/rsh.cc:232
+msgid "Write error"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:522
#, c-format
msgid "write, still have %lu to write but couldn't"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:579
+#: apt-pkg/contrib/fileutl.cc:597
msgid "Problem closing the file"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:585
+#: apt-pkg/contrib/fileutl.cc:603
msgid "Problem unlinking the file"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:596
+#: apt-pkg/contrib/fileutl.cc:614
msgid "Problem syncing the file"
msgstr ""
@@ -2059,7 +1742,7 @@ msgstr ""
msgid "Opening %s"
msgstr ""
-#: apt-pkg/sourcelist.cc:170
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:426
#, c-format
msgid "Line %u too long in source list %s."
msgstr ""
@@ -2108,26 +1791,36 @@ msgstr ""
msgid "Unable to correct problems, you have held broken packages."
msgstr ""
-#: apt-pkg/acquire.cc:61
+#: apt-pkg/acquire.cc:62
#, c-format
msgid "Lists directory %spartial is missing."
msgstr ""
-#: apt-pkg/acquire.cc:65
+#: apt-pkg/acquire.cc:66
#, c-format
msgid "Archive directory %spartial is missing."
msgstr ""
-#: apt-pkg/acquire-worker.cc:112
+#: apt-pkg/acquire.cc:821
+#, c-format
+msgid "Downloading file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire-worker.cc:113 apt-pkg/acquire-worker.cc:112
#, c-format
msgid "The method driver %s could not be found."
msgstr ""
-#: apt-pkg/acquire-worker.cc:161
+#: apt-pkg/acquire-worker.cc:162 apt-pkg/acquire-worker.cc:161
#, c-format
msgid "Method %s did not start correctly"
msgstr ""
+#: 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:119
#, c-format
msgid "Packaging system '%s' is not supported"
@@ -2246,36 +1939,37 @@ msgstr ""
msgid "IO Error saving source cache"
msgstr ""
-#: apt-pkg/acquire-item.cc:126
+#: apt-pkg/acquire-item.cc:129
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr ""
-#: apt-pkg/acquire-item.cc:235 apt-pkg/acquire-item.cc:900
+#: 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/acquire-item.cc:714
+#: apt-pkg/acquire-item.cc:1104 apt-pkg/acquire-item.cc:1032
#, c-format
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"to manually fix this package. (due to missing arch)"
msgstr ""
-#: apt-pkg/acquire-item.cc:767
+#: apt-pkg/acquire-item.cc:1157 apt-pkg/acquire-item.cc:1085
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"manually fix this package."
msgstr ""
-#: apt-pkg/acquire-item.cc:803
+#: 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/acquire-item.cc:890
+#: apt-pkg/acquire-item.cc:1280 apt-pkg/acquire-item.cc:1208
msgid "Size mismatch"
msgstr ""
@@ -2284,73 +1978,74 @@ msgstr ""
msgid "Vendor block %s contains no fingerprint"
msgstr ""
-#: apt-pkg/cdrom.cc:504
+#: apt-pkg/cdrom.cc:507 apt-pkg/cdrom.cc:504
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"Mounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:513 apt-pkg/cdrom.cc:595
+#: 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/cdrom.cc:538
+#: apt-pkg/cdrom.cc:541 apt-pkg/cdrom.cc:538
#, c-format
msgid "Stored label: %s \n"
msgstr ""
-#: apt-pkg/cdrom.cc:558
+#: apt-pkg/cdrom.cc:561 apt-pkg/cdrom.cc:558
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr ""
-#: apt-pkg/cdrom.cc:576
+#: apt-pkg/cdrom.cc:579 apt-pkg/cdrom.cc:576
msgid "Unmounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:580
+#: apt-pkg/cdrom.cc:583 apt-pkg/cdrom.cc:580
msgid "Waiting for disc...\n"
msgstr ""
#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:588
+#: apt-pkg/cdrom.cc:591 apt-pkg/cdrom.cc:588
msgid "Mounting CD-ROM...\n"
msgstr ""
-#: apt-pkg/cdrom.cc:606
+#: apt-pkg/cdrom.cc:609 apt-pkg/cdrom.cc:606
msgid "Scanning disc for index files..\n"
msgstr ""
-#: apt-pkg/cdrom.cc:644
+#: apt-pkg/cdrom.cc:647 apt-pkg/cdrom.cc:644
#, c-format
msgid "Found %i package indexes, %i source indexes and %i signatures\n"
msgstr ""
-#: apt-pkg/cdrom.cc:701
+#: apt-pkg/cdrom.cc:704 apt-pkg/cdrom.cc:701
msgid "That is not a valid name, try again.\n"
msgstr ""
-#: apt-pkg/cdrom.cc:717
+#: apt-pkg/cdrom.cc:720 apt-pkg/cdrom.cc:717
#, c-format
msgid ""
"This disc is called: \n"
"'%s'\n"
msgstr ""
-#: apt-pkg/cdrom.cc:721
+#: apt-pkg/cdrom.cc:724 apt-pkg/cdrom.cc:721
msgid "Copying package lists..."
msgstr ""
-#: apt-pkg/cdrom.cc:745
+#: apt-pkg/cdrom.cc:748 apt-pkg/cdrom.cc:745
msgid "Writing new source list\n"
msgstr ""
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:757 apt-pkg/cdrom.cc:754
msgid "Source list entries for this disc are:\n"
msgstr ""
-#: apt-pkg/cdrom.cc:788
+#: apt-pkg/cdrom.cc:791 apt-pkg/cdrom.cc:788
msgid "Unmounting CD-ROM..."
msgstr ""
@@ -2373,3 +2068,407 @@ msgstr ""
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:358
+#, c-format
+msgid "Preparing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:359
+#, c-format
+msgid "Unpacking %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:364
+#, c-format
+msgid "Preparing to configure %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:365
+#, c-format
+msgid "Configuring %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:366
+#, c-format
+msgid "Installed %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:371
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:372
+#, c-format
+msgid "Removing %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:373
+#, c-format
+msgid "Removed %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:378
+#, c-format
+msgid "Preparing for remove with config %s"
+msgstr ""
+
+#: apt-pkg/deb/dpkgpm.cc:379
+#, c-format
+msgid "Removed with config %s"
+msgstr ""
+
+#: methods/cdrom.cc:113
+#, c-format
+msgid "Unable to read the cdrom database %s"
+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"
+msgstr ""
+
+#: methods/cdrom.cc:130 methods/cdrom.cc:168
+msgid "Wrong CD-ROM"
+msgstr ""
+
+#: methods/cdrom.cc:163
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+
+#: methods/cdrom.cc:177 methods/file.cc:77 methods/rsh.cc:264
+msgid "File not found"
+msgstr ""
+
+#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
+#: methods/gzip.cc:142
+msgid "Failed to stat"
+msgstr ""
+
+#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+msgid "Failed to set modification time"
+msgstr ""
+
+#: methods/file.cc:42
+msgid "Invalid URI, local URIS must not start with //"
+msgstr ""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc:162
+msgid "Logging in"
+msgstr ""
+
+#: methods/ftp.cc:168
+msgid "Unable to determine the peer name"
+msgstr ""
+
+#: methods/ftp.cc:173
+msgid "Unable to determine the local name"
+msgstr ""
+
+#: methods/ftp.cc:204 methods/ftp.cc:232
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr ""
+
+#: methods/ftp.cc:210
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:217
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:237
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+
+#: methods/ftp.cc:265
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:291
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:329 methods/ftp.cc:440 methods/rsh.cc:183 methods/rsh.cc:226
+msgid "Connection timeout"
+msgstr ""
+
+#: methods/ftp.cc:335
+msgid "Server closed the connection"
+msgstr ""
+
+#: methods/ftp.cc:345 methods/rsh.cc:197
+msgid "A response overflowed the buffer."
+msgstr ""
+
+#: methods/ftp.cc:362 methods/ftp.cc:374
+msgid "Protocol corruption"
+msgstr ""
+
+#: methods/ftp.cc:687 methods/ftp.cc:693 methods/ftp.cc:729
+msgid "Could not create a socket"
+msgstr ""
+
+#: methods/ftp.cc:698
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+
+#: methods/ftp.cc:704
+msgid "Could not connect passive socket."
+msgstr ""
+
+#: methods/ftp.cc:722
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+
+#: methods/ftp.cc:736
+msgid "Could not bind a socket"
+msgstr ""
+
+#: methods/ftp.cc:740
+msgid "Could not listen on the socket"
+msgstr ""
+
+#: methods/ftp.cc:747
+msgid "Could not determine the socket's name"
+msgstr ""
+
+#: methods/ftp.cc:779
+msgid "Unable to send PORT command"
+msgstr ""
+
+#: methods/ftp.cc:789
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr ""
+
+#: methods/ftp.cc:798
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:818
+msgid "Data socket connect timed out"
+msgstr ""
+
+#: methods/ftp.cc:825
+msgid "Unable to accept connection"
+msgstr ""
+
+#: methods/ftp.cc:864 methods/http.cc:957 methods/rsh.cc:303
+msgid "Problem hashing file"
+msgstr ""
+
+#: methods/ftp.cc:877
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr ""
+
+#: methods/ftp.cc:892 methods/rsh.cc:322
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc:922
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr ""
+
+#. 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 "Connecting to %s (%s)"
+msgstr ""
+
+#: methods/connect.cc:71
+#, c-format
+msgid "[IP: %s %s]"
+msgstr ""
+
+#: methods/connect.cc:80
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr ""
+
+#: methods/connect.cc:86
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr ""
+
+#: methods/connect.cc:92
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+
+#: methods/connect.cc:104
+#, c-format
+msgid "Could not connect to %s:%s (%s)."
+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
+#, c-format
+msgid "Connecting to %s"
+msgstr ""
+
+#: methods/connect.cc:163
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr ""
+
+#: methods/connect.cc:167
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr ""
+
+#: methods/connect.cc:169
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i)"
+msgstr ""
+
+#: methods/connect.cc:216
+#, c-format
+msgid "Unable to connect to %s %s:"
+msgstr ""
+
+#: methods/gpgv.cc:92
+msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+msgstr ""
+
+#: methods/gpgv.cc:191
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc:196
+msgid "At least one invalid signature was encountered."
+msgstr ""
+
+#. FIXME String concatenation considered harmful.
+#: methods/gpgv.cc:201
+msgid "Could not execute "
+msgstr ""
+
+#: methods/gpgv.cc:202
+msgid " to verify signature (is gnupg installed?)"
+msgstr ""
+
+#: methods/gpgv.cc:206
+msgid "Unknown error executing gpgv"
+msgstr ""
+
+#: methods/gpgv.cc:237
+msgid "The following signatures were invalid:\n"
+msgstr ""
+
+#: methods/gpgv.cc:244
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/gzip.cc:57
+#, c-format
+msgid "Couldn't open pipe for %s"
+msgstr ""
+
+#: methods/gzip.cc:102
+#, c-format
+msgid "Read error from %s process"
+msgstr ""
+
+#: methods/http.cc:381
+msgid "Waiting for headers"
+msgstr ""
+
+#: methods/http.cc:527
+#, c-format
+msgid "Got a single header line over %u chars"
+msgstr ""
+
+#: methods/http.cc:535
+msgid "Bad header line"
+msgstr ""
+
+#: methods/http.cc:554 methods/http.cc:561
+msgid "The HTTP server sent an invalid reply header"
+msgstr ""
+
+#: methods/http.cc:590
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+
+#: methods/http.cc:605
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+
+#: methods/http.cc:607
+msgid "This HTTP server has broken range support"
+msgstr ""
+
+#: methods/http.cc:631
+msgid "Unknown date format"
+msgstr ""
+
+#: methods/http.cc:778
+msgid "Select failed"
+msgstr ""
+
+#: methods/http.cc:783
+msgid "Connection timed out"
+msgstr ""
+
+#: methods/http.cc:806
+msgid "Error writing to output file"
+msgstr ""
+
+#: methods/http.cc:834
+msgid "Error writing to file"
+msgstr ""
+
+#: methods/http.cc:859
+msgid "Error writing to the file"
+msgstr ""
+
+#: methods/http.cc:873
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+
+#: methods/http.cc:875
+msgid "Error reading from server"
+msgstr ""
+
+#: methods/http.cc:1106
+msgid "Bad header data"
+msgstr ""
+
+#: methods/http.cc:1123
+msgid "Connection failed"
+msgstr ""
+
+#: methods/http.cc:1214
+msgid "Internal error"
+msgstr ""
+
+#: methods/rsh.cc:330
+msgid "Connection closed prematurely"
+msgstr ""