From 29ba053e05b1a496500036dbd667002d1b8b5ec2 Mon Sep 17 00:00:00 2001 From: Matt Zimmerman Date: Sun, 26 Jun 2005 21:30:27 +0000 Subject: Merge with mvo 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--fixes--0--patch-5 * merged with apt--main--0 * 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--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--ubuntu--0--patch-1 tag of apt@packages.debian.org/apt--main--0--patch-88 * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-2 * merged apt--mvo (to make pining on components work again) * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-3 * merged with apt--fixes--0 (to make the building of the french manpages work and to fix a incorrect man-page example * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-4 * merged with the bts225947 code * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-5 * merged the imporoved timoeut handling patch * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-6 * merged with matt * michael.vogt@ubuntu.com--2005/apt--ubuntu--0--patch-7 * removed another conflict with apt--main --- apt-pkg/acquire-item.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'apt-pkg/acquire-item.cc') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index b2f896627..14acad85a 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -400,6 +400,12 @@ 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") { + Item::Failed(Message,Cnf); + return; + } + // queue a pkgAcqMetaIndex with no sigfile new pkgAcqMetaIndex(Owner, MetaIndexURI, MetaIndexURIDesc, MetaIndexShortDesc, "", IndexTargets, MetaIndexParser); -- cgit v1.2.3-70-g09d2 From 7a6058744badb38d2ccac0158d6ed1359cfb0239 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 8 Dec 2005 17:29:42 +0000 Subject: * merged with the current debian version Patches applied: * bubulle@debian.org--2005/apt--main--0--patch-132 Completed Simplified Chinese translation * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-94 * pkgDirStream has (slightly) better extract support now * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-95 * merge fix for #339533 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-96 * merged with bubulle * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-97 * some more debug output * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-98 * ABI change: merged more flexible pkgAcquireFile code * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-99 * merged http download limit for apt (#146877) * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-100 * applied parts of the string speedup patch from debian #319377 (ABI change) * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-101 * fix for #340448 --- apt-pkg/acquire-item.cc | 15 +++++++------ apt-pkg/acquire-item.h | 5 +++-- apt-pkg/algorithms.h | 3 ++- apt-pkg/cacheiterators.h | 4 +++- apt-pkg/cdrom.cc | 3 +++ apt-pkg/deb/debsystem.cc | 7 +++++- cmdline/apt-get.cc | 1 + debian/apt.manpages | 1 + debian/rules | 1 + doc/apt-key.8.xml | 47 +++++++++++++++++++++++++++++++++++++---- doc/apt.conf.5.xml | 2 +- doc/fr/apt-config.fr.8.xml | 4 ++-- doc/fr/apt-key.fr.8.xml | 44 +++++++++++++++++++++++++++++++++----- doc/fr/apt_preferences.fr.5.xml | 4 ++-- doc/fr/makefile | 12 +++++++++-- doc/makefile | 3 ++- 16 files changed, 127 insertions(+), 29 deletions(-) (limited to 'apt-pkg/acquire-item.cc') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 09f25c0dd..88c25de43 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -142,20 +142,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; diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 9e7198d8d..c34b5ef69 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -92,7 +92,8 @@ class pkgAcqIndex : public pkgAcquire::Item pkgAcquire::ItemDesc Desc; string RealURI; string ExpectedMD5; - + string CompressionExtension; + public: // Specialized action members @@ -100,7 +101,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/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 7c6f43351..2b326bd65 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 d7ef844a2..ce1beb39b 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -422,6 +422,9 @@ bool pkgCdrom::WriteSourceList(string Name,vector &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/cmdline/apt-get.cc b/cmdline/apt-get.cc index 356d36b48..48b21a31f 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -2040,6 +2040,7 @@ bool DoSource(CommandLine &CmdL) if (system(S) != 0) { fprintf(stderr,_("Unpack command '%s' failed.\n"),S); + fprintf(stderr,_("Check if the 'dpkg-dev' package is installed.\n")); _exit(1); } } 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/rules b/debian/rules index 1e339aade..6c0a24fd9 100755 --- a/debian/rules +++ b/debian/rules @@ -274,6 +274,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 @@ List trusted keys. + + + update + + + + Update the local keyring with the keyring of Debian archive + keys and removes from the keyring the archive keys which are no + longer valid. + + + + + + + + + Files + + /etc/apt/trusted.gpg + Keyring of local trusted keys, new keys will be added here. + + + /etc/apt/trustdb.gpg + Local trust database of archive keys. + + + /usr/share/keyrings/debian-archive-keyring.gpg + Keyring of Debian archive trusted keys. + + + /usr/share/keyrings/debian-archive-removed-keys.gpg + Keyring of Debian archive removed trusted keys. + + + + + - - - - +See Also + +&apt-get;, &apt-secure; + + &manbugs; &manauthor; 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";}; sourcelist gives the location of the sourcelist and main is the default configuration file (setting has no effect, unless it is done from the config file specified by - APT_CONFIG. + APT_CONFIG). The Dir::Parts setting reads in all the config fragments in lexical order from the directory specified. After this is done then the diff --git a/doc/fr/apt-config.fr.8.xml b/doc/fr/apt-config.fr.8.xml index ac9143066..043c58686 100644 --- a/doc/fr/apt-config.fr.8.xml +++ b/doc/fr/apt-config.fr.8.xml @@ -57,7 +57,7 @@ des commandes suivantes doit Le terme shell est utilisé pour accéder aux informations de configuration depuis un script shell. Deux arguments doivent lui être donnés ; le -premier est une variable de shell et le second une valeur de configuration à +premier est une variable du shell et le second une valeur de configuration à demander. La sortie standard consiste en une liste de commandes d'assignation de shell pour chaque valeur présente. Dans un script shell, cette commande devrait @@ -69,7 +69,7 @@ RES=`apt-config shell OPTS MyApp::Options` eval $RES -La variable d'environnement de shell $OPTS sera définie par la valeur de +La variable d'environnement du shell $OPTS sera définie par la valeur de MyApp::Options ou, par défaut, la valeur -f. diff --git a/doc/fr/apt-key.fr.8.xml b/doc/fr/apt-key.fr.8.xml index a31fb7855..29ba237e2 100644 --- a/doc/fr/apt-key.fr.8.xml +++ b/doc/fr/apt-key.fr.8.xml @@ -34,7 +34,7 @@ apt-key gère les clés dont se sert apt pour authentifier les paquets. Les paquets authentifiés par ces clés seront -réputés +réputés fiables. @@ -73,13 +73,47 @@ Afficher la liste des cl + + update + + +Mettre à jour le trousseau de clés local avec le trousseau de clés de l'archive +Debian et supprimer les clés qui sont périmées. + + + + - - - - + Fichiers + + /etc/apt/trusted.gpg +Trousseau de clés locales fiables, les nouvelles clés sont ajoutées ici. + + + + /etc/apt/trustdb.gpg + Base de données locale fiable des clés de l'archive. + + + /usr/share/keyrings/debian-archive-keyring.gpg + Trousseau des clés fiables de l'archive Debian. + + + /usr/share/keyrings/debian-archive-removed-keys.gpg + + >Trousseau des clés fiables supprimées de l'archive Debian. + + + + + +Voir aussi + +&apt-get;, &apt-secure; + + &manbugs; &manauthor; diff --git a/doc/fr/apt_preferences.fr.5.xml b/doc/fr/apt_preferences.fr.5.xml index c6b2c8794..6e1d2043e 100644 --- a/doc/fr/apt_preferences.fr.5.xml +++ b/doc/fr/apt_preferences.fr.5.xml @@ -7,7 +7,7 @@ ]> - + &apt-author.team; @@ -208,7 +208,7 @@ d' Package: * Pin: release a=unstable -Pin-Priority: 50 +Pin-Priority: 500 L'entrée suivante affecte une priorité haute à toutes les versions diff --git a/doc/fr/makefile b/doc/fr/makefile index c0e7fa7ed..596de7b09 100644 --- a/doc/fr/makefile +++ b/doc/fr/makefile @@ -5,11 +5,16 @@ SUBDIR=doc/fr # Bring in the default rules include ../../buildlib/defaults.mak +# Do not use XMLTO, build the manpages directly with XSLTPROC +XSLTPROC=/usr/bin/xsltproc +STYLESHEET=/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl + + # Man pages SOURCE = apt-cache.fr.8 apt-get.fr.8 apt-cdrom.fr.8 apt.conf.fr.5 \ sources.list.fr.5 apt-config.fr.8 apt-sortpkgs.fr.1 \ apt-ftparchive.fr.1 apt_preferences.fr.5 apt-extracttemplates.fr.1 \ - apt-key.fr.8 + apt-key.fr.8 apt-secure.fr.8 INCLUDES = apt.ent.fr @@ -17,7 +22,7 @@ doc: $(SOURCE) $(SOURCE) :: % : %.xml $(INCLUDES) echo Creating man page $@ - $(XMLTO) man $< + $(XSLTPROC) -o $@ $(STYLESHEET) $< apt-cache.fr.8:: apt-cache.8 cp $< $@ @@ -52,4 +57,7 @@ apt-extracttemplates.fr.1:: apt-extracttemplates.1 apt-key.fr.8:: apt-key.8 cp $< $@ +apt-secure.fr.8:: apt-secure.8 + cp $< $@ + 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) -- cgit v1.2.3-70-g09d2 From 47eb38f452c7477aab782dce56e85a0a85e22764 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 21 Feb 2006 12:23:22 +0000 Subject: * handle network failures more gracefully (default apt sources spec) apt-pkg/acquire-item.cc: - on network failures (Timeout,ResolveFailure,ConnectionRefused) move the old (known good) sigfile back and don't touch the indexfiles cmdline/apt-get.cc: - don't fail on apt-get update problems but issue a warning instead --- apt-pkg/acquire-item.cc | 10 +++++++--- cmdline/apt-get.cc | 2 +- configure.in | 2 +- debian/changelog | 23 +++++++++++++++++++++-- 4 files changed, 30 insertions(+), 7 deletions(-) (limited to 'apt-pkg/acquire-item.cc') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 1fa929aad..dee00c63e 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -321,8 +321,9 @@ pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire *Owner, DestFile = _config->FindDir("Dir::State::lists") + "partial/"; DestFile += URItoFileName(URI); - // remove any partial downloaded sig-file. it may confuse proxies - // and is too small to warrant a partial download anyway + // remove any partial downloaded sig-file in partial/. + // it may confuse proxies and is too small to warrant a + // partial download anyway unlink(DestFile.c_str()); // Create the item @@ -389,17 +390,20 @@ void pkgAcqMetaSig::Done(string Message,unsigned long Size,string MD5, /*}}}*/ void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { + string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI); // if we get a network error we fail gracefully if(LookupTag(Message,"FailReason") == "Timeout" || LookupTag(Message,"FailReason") == "TmpResolveFailure" || LookupTag(Message,"FailReason") == "ConnectionRefused") { Item::Failed(Message,Cnf); + // move the sigfile back on network failures (and re-authenticated?) + if(FileExists(DestFile)) + Rename(DestFile,Final); return; } // Delete any existing sigfile when the acquire failed - string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI); unlink(Final.c_str()); // queue a pkgAcqMetaIndex with no sigfile diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 92051f8ff..99a51c9b8 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1381,7 +1381,7 @@ bool DoUpdate(CommandLine &CmdL) return false; if (Failed == true) - return _error->Warning(_("Some index files failed to download, they have been ignored, or old ones used instead.")); + _error->Warning(_("Some index files failed to download, they have been ignored, or old ones used instead.")); return true; } diff --git a/configure.in b/configure.in index 2e92bd0a9..6cd00f9de 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.43.3ubuntu1") +AC_DEFINE_UNQUOTED(VERSION,"0.6.43.2ubuntu1") PACKAGE="apt" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_SUBST(PACKAGE) diff --git a/debian/changelog b/debian/changelog index 3490fba7c..8c53d7a5c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -apt (0.6.43.3) unstable; urgency=low +apt (0.6.43.2ubuntu1) dapper; urgency=low * Merge bubulle@debian.org--2005/apt--main--0 up to patch-182: * ca.po: Completed to 512t. Closes: #351592 @@ -26,8 +26,9 @@ apt (0.6.43.3) unstable; urgency=low * cmdline/apt-get.cc: only run the list-cleaner if a update was successfull * apt-get update errors are only warnings nowdays + * be more careful with the signature file on network failures - -- + -- Michael Vogt Mon, 20 Feb 2006 22:27:48 +0100 apt (0.6.43.2) unstable; urgency=low @@ -54,6 +55,24 @@ apt (0.6.43.2) unstable; urgency=low -- Michael Vogt Thu, 19 Jan 2006 00:06:33 +0100 +apt (0.6.43.1ubuntu1) dapper; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-159: + - en_GB.po, de.po: fix spaces errors in "Ign " translations + Closes: #347258 + - makefile: make update-po a pre-requisite of clean target so + that POT and PO files are always up-to-date + - sv.po: Completed to 511t. Closes: #346450 + - sk.po: Completed to 511t. Closes: #346369 + - fr.po: Completed to 511t + - *.po: Updated from sources (511 strings) + * add patch to fix http download corruption problem (thanks to + Petr Vandrovec, closes: #280844, #290694) + * added APT::Periodic::Unattended-Upgrade (requires the package + "unattended-upgrade") + + -- Michael Vogt Tue, 10 Jan 2006 17:09:31 +0100 + apt (0.6.43.1) unstable; urgency=low * Merge bubulle@debian.org--2005/apt--main--0 up to patch-148: -- cgit v1.2.3-70-g09d2 From 7e5f33eb8a0f224b938f17236f684ba5cadb9c7f Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 21 Feb 2006 16:39:25 +0000 Subject: * more work for the DefaultAptSources spec apt-pkg/acquire-item.h: - add new pkgAcquire::Item::StatTransientNetworkError status apt-pkg/acquire-item.cc: - if we get a StatTransientNetworkError use old sigfile and indexfiles apt-pkg/acquire-worker.cc: - set StatTransientNetworkError on "Timeout", "TmpResolveFailure", "ConnectionRefused" cmdline/apt-get.cc: - handle a StatTransientNetworkError different than a normal error (warning instead of error) --- apt-pkg/acquire-item.cc | 10 ++-- apt-pkg/acquire-item.h | 3 +- apt-pkg/acquire-worker.cc | 7 +++ cmdline/apt-get.cc | 19 ++++-- po/apt-all.pot | 144 +++++++++++++++++++++++----------------------- 5 files changed, 102 insertions(+), 81 deletions(-) (limited to 'apt-pkg/acquire-item.cc') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index dee00c63e..da9becc44 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -75,7 +75,7 @@ void pkgAcquire::Item::Failed(string Message,pkgAcquire::MethodConfig *Cnf) Dequeue(); return; } - + Status = StatError; Dequeue(); } @@ -393,13 +393,15 @@ void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf) string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI); // if we get a network error we fail gracefully - if(LookupTag(Message,"FailReason") == "Timeout" || - LookupTag(Message,"FailReason") == "TmpResolveFailure" || - LookupTag(Message,"FailReason") == "ConnectionRefused") { + if(Status == StatTransientNetworkError) + { Item::Failed(Message,Cnf); // move the sigfile back on network failures (and re-authenticated?) if(FileExists(DestFile)) Rename(DestFile,Final); + + // set the status back to , Item::Failed likes to reset it + Status = pkgAcquire::Item::StatTransientNetworkError; return; } diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index da1bea801..1c83f8d2e 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -48,7 +48,8 @@ class pkgAcquire::Item public: // State of the item - enum {StatIdle, StatFetching, StatDone, StatError, StatAuthError} Status; + enum {StatIdle, StatFetching, StatDone, StatError, + StatAuthError, StatTransientNetworkError} Status; string ErrorText; unsigned long FileSize; unsigned long PartialSize; diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index d06024178..8ab67778b 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -307,6 +307,13 @@ bool pkgAcquire::Worker::RunMessages() pkgAcquire::Item *Owner = Itm->Owner; pkgAcquire::ItemDesc Desc = *Itm; OwnerQ->ItemDone(Itm); + + // set some status + if(LookupTag(Message,"FailReason") == "Timeout" || + LookupTag(Message,"FailReason") == "TmpResolveFailure" || + LookupTag(Message,"FailReason") == "ConnectionRefused") + Owner->Status = pkgAcquire::Item::StatTransientNetworkError; + Owner->Failed(Message,Config); ItemDone(); diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 99a51c9b8..e98d4fec5 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1355,20 +1355,29 @@ bool DoUpdate(CommandLine &CmdL) return false; bool Failed = false; + bool TransientNetworkFailure = false; for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I != Fetcher.ItemsEnd(); I++) { if ((*I)->Status == pkgAcquire::Item::StatDone) continue; (*I)->Finished(); - + fprintf(stderr,_("Failed to fetch %s %s\n"),(*I)->DescURI().c_str(), (*I)->ErrorText.c_str()); + + if ((*I)->Status == pkgAcquire::Item::StatTransientNetworkError) + { + TransientNetworkFailure = true; + continue; + } + Failed = true; } // Clean out any old list files - if (!Failed && _config->FindB("APT::Get::List-Cleanup",true) == true) + if (!TransientNetworkFailure && + _config->FindB("APT::Get::List-Cleanup",true) == true) { if (Fetcher.Clean(_config->FindDir("Dir::State::lists")) == false || Fetcher.Clean(_config->FindDir("Dir::State::lists") + "partial/") == false) @@ -1380,9 +1389,11 @@ bool DoUpdate(CommandLine &CmdL) if (Cache.BuildCaches() == false) return false; - if (Failed == true) + if (TransientNetworkFailure == true) _error->Warning(_("Some index files failed to download, they have been ignored, or old ones used instead.")); - + else if (Failed == true) + return _error->Error(_("Some index files failed to download, they have been ignored, or old ones used instead.")); + return true; } /*}}}*/ diff --git a/po/apt-all.pot b/po/apt-all.pot index 23de34b5c..c1edb1c79 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: 2006-01-20 14:06+0100\n" +"POT-Creation-Date: 2006-02-21 15:07+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -146,14 +146,14 @@ msgstr "" msgid " %4i %s\n" msgstr "" -#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70 +#: cmdline/apt-cache.cc:1652 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550 -#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144 +#: cmdline/apt-get.cc:2380 cmdline/apt-sortpkgs.cc:144 #, c-format msgid "%s %s for %s %s compiled on %s %s\n" msgstr "" -#: cmdline/apt-cache.cc:1658 +#: cmdline/apt-cache.cc:1659 msgid "" "Usage: apt-cache [options] command\n" " apt-cache [options] add file1 [file2 ...]\n" @@ -243,7 +243,7 @@ msgid "" " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" msgstr "" -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710 +#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:712 #, c-format msgid "Unable to write to %s" msgstr "" @@ -535,7 +535,7 @@ msgstr "" msgid "Y" msgstr "" -#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515 +#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1517 #, c-format msgid "Regex compilation error - %s" msgstr "" @@ -694,11 +694,11 @@ msgstr "" msgid "Internal error, Ordering didn't finish" msgstr "" -#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842 +#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1811 cmdline/apt-get.cc:1844 msgid "Unable to lock the download directory" msgstr "" -#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126 +#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1892 cmdline/apt-get.cc:2128 #: apt-pkg/cachefile.cc:67 msgid "The list of sources could not be read." msgstr "" @@ -727,7 +727,7 @@ msgstr "" msgid "After unpacking %sB disk space will be freed.\n" msgstr "" -#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980 +#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1982 #, c-format msgid "Couldn't determine free space in %s" msgstr "" @@ -761,7 +761,7 @@ msgstr "" msgid "Do you want to continue [Y/n]? " msgstr "" -#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023 +#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1366 cmdline/apt-get.cc:2025 #, c-format msgid "Failed to fetch %s %s\n" msgstr "" @@ -770,7 +770,7 @@ msgstr "" msgid "Some files failed to download" msgstr "" -#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032 +#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2034 msgid "Download complete and in download only mode" msgstr "" @@ -866,41 +866,41 @@ msgstr "" msgid "The update command takes no arguments" msgstr "" -#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420 +#: cmdline/apt-get.cc:1326 msgid "Unable to lock the list directory" msgstr "" -#: cmdline/apt-get.cc:1384 +#: cmdline/apt-get.cc:1393 cmdline/apt-get.cc:1395 msgid "" "Some index files failed to download, they have been ignored, or old ones " "used instead." msgstr "" -#: cmdline/apt-get.cc:1403 +#: cmdline/apt-get.cc:1414 msgid "Internal error, AllUpgrade broke stuff" msgstr "" -#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538 +#: cmdline/apt-get.cc:1504 cmdline/apt-get.cc:1540 #, c-format msgid "Couldn't find package %s" msgstr "" -#: cmdline/apt-get.cc:1525 +#: cmdline/apt-get.cc:1527 #, c-format msgid "Note, selecting %s for regex '%s'\n" msgstr "" -#: cmdline/apt-get.cc:1555 +#: cmdline/apt-get.cc:1557 msgid "You might want to run `apt-get -f install' to correct these:" msgstr "" -#: cmdline/apt-get.cc:1558 +#: cmdline/apt-get.cc:1560 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." msgstr "" -#: cmdline/apt-get.cc:1570 +#: cmdline/apt-get.cc:1572 msgid "" "Some packages could not be installed. This may mean that you have\n" "requested an impossible situation or if you are using the unstable\n" @@ -908,163 +908,163 @@ msgid "" "or been moved out of Incoming." msgstr "" -#: cmdline/apt-get.cc:1578 +#: cmdline/apt-get.cc:1580 msgid "" "Since you only requested a single operation it is extremely likely that\n" "the package is simply not installable and a bug report against\n" "that package should be filed." msgstr "" -#: cmdline/apt-get.cc:1583 +#: cmdline/apt-get.cc:1585 msgid "The following information may help to resolve the situation:" msgstr "" -#: cmdline/apt-get.cc:1586 +#: cmdline/apt-get.cc:1588 msgid "Broken packages" msgstr "" -#: cmdline/apt-get.cc:1612 +#: cmdline/apt-get.cc:1614 msgid "The following extra packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:1683 +#: cmdline/apt-get.cc:1685 msgid "Suggested packages:" msgstr "" -#: cmdline/apt-get.cc:1684 +#: cmdline/apt-get.cc:1686 msgid "Recommended packages:" msgstr "" -#: cmdline/apt-get.cc:1704 +#: cmdline/apt-get.cc:1706 msgid "Calculating upgrade... " msgstr "" -#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101 +#: cmdline/apt-get.cc:1709 methods/ftp.cc:702 methods/connect.cc:101 msgid "Failed" msgstr "" -#: cmdline/apt-get.cc:1712 +#: cmdline/apt-get.cc:1714 msgid "Done" msgstr "" -#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785 +#: cmdline/apt-get.cc:1779 cmdline/apt-get.cc:1787 msgid "Internal error, problem resolver broke stuff" msgstr "" -#: cmdline/apt-get.cc:1885 +#: cmdline/apt-get.cc:1887 msgid "Must specify at least one package to fetch source for" msgstr "" -#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144 +#: cmdline/apt-get.cc:1917 cmdline/apt-get.cc:2146 #, c-format msgid "Unable to find a source package for %s" msgstr "" -#: cmdline/apt-get.cc:1959 +#: cmdline/apt-get.cc:1961 #, c-format msgid "Skipping already downloaded file '%s'\n" msgstr "" -#: cmdline/apt-get.cc:1983 +#: cmdline/apt-get.cc:1985 #, c-format msgid "You don't have enough free space in %s" msgstr "" -#: cmdline/apt-get.cc:1988 +#: cmdline/apt-get.cc:1990 #, c-format msgid "Need to get %sB/%sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:1991 +#: cmdline/apt-get.cc:1993 #, c-format msgid "Need to get %sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:1997 +#: cmdline/apt-get.cc:1999 #, c-format msgid "Fetch source %s\n" msgstr "" -#: cmdline/apt-get.cc:2028 +#: cmdline/apt-get.cc:2030 msgid "Failed to fetch some archives." msgstr "" -#: cmdline/apt-get.cc:2056 +#: cmdline/apt-get.cc:2058 #, c-format msgid "Skipping unpack of already unpacked source in %s\n" msgstr "" -#: cmdline/apt-get.cc:2068 +#: cmdline/apt-get.cc:2070 #, c-format msgid "Unpack command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2069 +#: cmdline/apt-get.cc:2071 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" msgstr "" -#: cmdline/apt-get.cc:2086 +#: cmdline/apt-get.cc:2088 #, c-format msgid "Build command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2105 +#: cmdline/apt-get.cc:2107 msgid "Child process failed" msgstr "" -#: cmdline/apt-get.cc:2121 +#: cmdline/apt-get.cc:2123 msgid "Must specify at least one package to check builddeps for" msgstr "" -#: cmdline/apt-get.cc:2149 +#: cmdline/apt-get.cc:2151 #, c-format msgid "Unable to get build-dependency information for %s" msgstr "" -#: cmdline/apt-get.cc:2169 +#: cmdline/apt-get.cc:2171 #, c-format msgid "%s has no build depends.\n" msgstr "" -#: cmdline/apt-get.cc:2221 +#: cmdline/apt-get.cc:2223 #, c-format msgid "" "%s dependency for %s cannot be satisfied because the package %s cannot be " "found" msgstr "" -#: cmdline/apt-get.cc:2273 +#: cmdline/apt-get.cc:2275 #, c-format msgid "" "%s dependency for %s cannot be satisfied because no available versions of " "package %s can satisfy version requirements" msgstr "" -#: cmdline/apt-get.cc:2308 +#: cmdline/apt-get.cc:2310 #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" msgstr "" -#: cmdline/apt-get.cc:2333 +#: cmdline/apt-get.cc:2335 #, c-format msgid "Failed to satisfy %s dependency for %s: %s" msgstr "" -#: cmdline/apt-get.cc:2347 +#: cmdline/apt-get.cc:2349 #, c-format msgid "Build-dependencies for %s could not be satisfied." msgstr "" -#: cmdline/apt-get.cc:2351 +#: cmdline/apt-get.cc:2353 msgid "Failed to process build dependencies" msgstr "" -#: cmdline/apt-get.cc:2383 +#: cmdline/apt-get.cc:2385 msgid "Supported modules:" msgstr "" -#: cmdline/apt-get.cc:2424 +#: cmdline/apt-get.cc:2426 msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@ -1349,9 +1349,9 @@ msgid "The info and temp directories need to be on the same filesystem" msgstr "" #. Build the status cache -#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643 -#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717 -#: apt-pkg/pkgcachegen.cc:840 +#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:645 +#: apt-pkg/pkgcachegen.cc:714 apt-pkg/pkgcachegen.cc:719 +#: apt-pkg/pkgcachegen.cc:842 msgid "Reading package lists" msgstr "" @@ -1666,34 +1666,34 @@ msgstr "" msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" -#: methods/connect.cc:106 +#: methods/connect.cc:108 #, 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:134 methods/rsh.cc:425 +#: methods/connect.cc:136 methods/rsh.cc:425 #, c-format msgid "Connecting to %s" msgstr "" -#: methods/connect.cc:165 +#: methods/connect.cc:167 #, c-format msgid "Could not resolve '%s'" msgstr "" -#: methods/connect.cc:171 +#: methods/connect.cc:173 #, c-format msgid "Temporary failure resolving '%s'" msgstr "" -#: methods/connect.cc:174 +#: methods/connect.cc:176 #, c-format msgid "Something wicked happened resolving '%s:%s' (%i)" msgstr "" -#: methods/connect.cc:221 +#: methods/connect.cc:223 #, c-format msgid "Unable to connect to %s %s:" msgstr "" @@ -2218,7 +2218,7 @@ msgstr "" msgid "Method %s did not start correctly" msgstr "" -#: apt-pkg/acquire-worker.cc:377 +#: apt-pkg/acquire-worker.cc:384 #, c-format msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." msgstr "" @@ -2328,16 +2328,16 @@ msgstr "" msgid "Package %s %s was not found while processing file dependencies" msgstr "" -#: apt-pkg/pkgcachegen.cc:574 +#: apt-pkg/pkgcachegen.cc:575 #, c-format msgid "Couldn't stat source package list %s" msgstr "" -#: apt-pkg/pkgcachegen.cc:658 +#: apt-pkg/pkgcachegen.cc:660 msgid "Collecting File Provides" msgstr "" -#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792 +#: apt-pkg/pkgcachegen.cc:787 apt-pkg/pkgcachegen.cc:794 msgid "IO Error saving source cache" msgstr "" @@ -2346,35 +2346,35 @@ msgstr "" msgid "rename failed, %s (%s -> %s)." msgstr "" -#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:950 +#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:951 msgid "MD5Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:645 +#: apt-pkg/acquire-item.cc:646 msgid "There are no public key available for the following key IDs:\n" msgstr "" -#: apt-pkg/acquire-item.cc:758 +#: apt-pkg/acquire-item.cc:759 #, 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:817 +#: apt-pkg/acquire-item.cc:818 #, 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:853 +#: apt-pkg/acquire-item.cc:854 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." msgstr "" -#: apt-pkg/acquire-item.cc:940 +#: apt-pkg/acquire-item.cc:941 msgid "Size mismatch" msgstr "" -- cgit v1.2.3-70-g09d2 From 7106240056767caad5a55fe9c542842065cb5829 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 7 Dec 2006 11:10:32 +0100 Subject: * apt-pkg/acquire-item.cc: - merged the NMU pdiff fix and make the code a bit more readable --- apt-pkg/acquire-item.cc | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'apt-pkg/acquire-item.cc') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index a51b6f12d..6831abd54 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -270,15 +270,8 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) } } - // no information how to get the patches, bail out - if(!found) - { - if(Debug) - std::clog << "Can't find a patch in the index file" << std::endl; - // Failed will queue a big package file - Failed("", NULL); - } - else + // we have something, queue the next diff + if(found) { // queue the diffs new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc, @@ -290,6 +283,11 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) } } + // Nothing found, report and return false + // Failing here is ok, if we return false later, the full + // IndexFile is queued + if(Debug) + std::clog << "Can't find a patch in the index file" << std::endl; return false; } -- cgit v1.2.3-70-g09d2 From 14443594b5fdd5a99cb94434bddfbae098e83ecd Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 7 Dec 2006 14:42:57 +0100 Subject: * apt-pkg/acquire-item.cc - more usefull description of the downloaded patches --- apt-pkg/acquire-item.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'apt-pkg/acquire-item.cc') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 46c9d6c2c..0419f5ffd 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -274,6 +274,9 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) if(found) { // queue the diffs + int last_space = Description.rfind(" "); + if(last_space != string::npos) + Description.erase(last_space, Description.size()-last_space); new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc, ExpectedMD5, available_patches); Complete = false; @@ -354,7 +357,7 @@ pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner, Debug = _config->FindB("Debug::pkgAcquire::Diffs",false); - Desc.Description = URIDesc; + Description = URIDesc; Desc.Owner = this; Desc.ShortDesc = ShortDesc; @@ -463,7 +466,7 @@ bool pkgAcqIndexDiffs::QueueNextDiff() // queue the right diff Desc.URI = string(RealURI) + ".diff/" + available_patches[0].file + ".gz"; - Desc.Description = available_patches[0].file + string(".pdiff"); + Desc.Description = Description + " " + available_patches[0].file + string(".pdiff"); DestFile = _config->FindDir("Dir::State::lists") + "partial/"; DestFile += URItoFileName(RealURI + ".diff/" + available_patches[0].file); -- cgit v1.2.3-70-g09d2