From: Michael Vogt Date: Thu, 14 Jun 2007 09:59:13 +0000 (+0200) Subject: * apt-pkg/deb/dpkgpm.cc: X-Git-Tag: 0.7.24ubuntu1~183 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/702c84fb16a65ce0850bb99676edfbeefd656193?hp=-c * apt-pkg/deb/dpkgpm.cc: - apport integration added, this means that a apport report is written on dpkg failures * merged from debian/unstable, remaining changes: - maintainer field changed * merged the debian/experimental changes back into the debian/sid branch * merged from Christian Perrier: * mr.po: New Marathi translation Closes: #416806 * zh_CN.po: Updated by Eric Pareja Closes: #416822 * tl.po: Updated by Eric Pareja Closes: #416638 * gl.po: Updated by Jacobo Tarrio * da.po: Updated by Claus Hindsgaul * fr.po: Remove a non-breakable space for usability * ru.po: Updated Russian translation. Closes: #405476 * *.po: Unfuzzy after upstream typo corrections * buildlib/archtable: - added support for sh3/sh4 (closes: #424870) - added support for m32r (closes: #394096) * buildlib/systemtable: - added support for lpia * configure.in: - check systemtable for architecture mapping too * fix error in AutocleanInterval, closes: #319339 (thanks to Israel G. Lugo for the patch) * add "purge" commandline argument, closes: #133421) (thanks to Julien Danjou for the patch) * add "purge" commandline argument, closes: #133421) (thanks to Julien Danjou for the patch) * fix FTBFS with gcc 4.3, closes: #417090 (thanks to Martin Michlmayr for the patch) * add --dsc-only option, thanks to K. Richard Pixley * Removed the more leftover #pragma interface/implementation closes: #306937 (thanks to Andreas Henriksson for the patch) * ABI library name change because its build against new glibc * implement SourceVer() in pkgRecords (thanks to Daniel Burrows for the patch!) * apt-pkg/algorithm.cc: - use clog for all debugging - only increase the score of installed applications if they are not obsolete - fix resolver bug on removal triggered by weak-dependencies with or-groups * methods/http.cc: - send apt version in User-Agent * apt-pkg/deb/debrecords.cc: - fix SHA1Hash() return value * apt-pkg/cdrom.cc: - only unmount if APT::CDROM::NoMount is false * methods/cdrom.cc: - only umount if it was mounted by the method before - if decompression of a index fails, delete the index * vi.po: Updated to 515t. Closes: #426976 * eu.po: Updated to 515t. Closes: #423766 * pt.po: 515t. Closes: #423111 * fr.po: Updated by Christian Perrier * Update all PO and the POT. Gives 513t2f for formerly complete translations * Package that contains tall the new features * Removed all #pragma interface/implementation * Branch that contains tall the new features: * translated package descriptions * task install support * automatic dependency removal (thanks to Daniel Burrows) * merged support for the new dpkg "Breaks" field (thanks to Ian Jackson) * handle network failures more gracefully on "update" * support for unattended-upgrades (via unattended-upgrades package) * added apt-transport-https method - ca.po: Updated to 514t - be.po: Updated to 514t - it.po: Updated to 514t - hu.po: Updated to 514t - zh_TW.po: Updated to 514t - ar.po: Updated to 293t221u. - ru.po: Updated to 514t. Closes: #392466 - nb.po: Updated to 514t. Closes: #392466 - pt.po: Updated to 514t. Closes: #393199 - fr.po: One spelling error corrected: s/accèder/accéder - km.po: Updated to 514t. - ko.po: Updated to 514t. - bg.po: Updated to 514t. - de.po: Updated to 514t. - en_GB.po: Updated to 514t. * debian/control: - depend on debian-archive-keyring to offer clean upgrade path (closes: #386800) * merged "install-recommends" branch (ABI break): - new "--install-recommends" - install new recommends on "upgrade" if --install-recommends is given - new "--fix-policy" option to install all packages with unmet important dependencies (usefull with --install-recommends to see what not-installed recommends are on the system) - fix of recommended packages display (only show CandidateVersion fix or-group handling) * merged "install-task" branch (use with "apt-get install taskname^") * Applied patch from Daniel Schepler to make apt bin-NMU able. * apt-pkg/acquire-item.cc: - fix reversed logic of the "Acquire::PDiffs" option * apt-pkg/contrib/sha256.cc: - applied patch to fix unaligned access problem. Closes: #367417 (thanks to David Mosberger) * apt-pkg/contrib/sha256.{cc,h},hashes.{cc,h}: support for sha256 (thanks to Anthony Towns) * ftparchive/cachedb.{cc,h},writer.{cc,h}: optimizations (thanks to Anthony Towns) * apt pdiff support from experimental merged * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman) - fix error in dpkg interaction (closes: #364513, thanks to Martin Dickopp) --- 702c84fb16a65ce0850bb99676edfbeefd656193 diff --combined apt-pkg/acquire-item.cc index c42c8af24,1b9120586..b7b16b9a2 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@@ -21,6 -21,8 +21,8 @@@ #include #include #include + #include + #include #include @@@ -28,6 -30,7 +30,7 @@@ #include #include #include + #include #include /*}}}*/ @@@ -60,7 -63,6 +63,7 @@@ void pkgAcquire::Item::Failed(string Me { Status = StatIdle; ErrorText = LookupTag(Message,"Message"); + UsedMirror = LookupTag(Message,"UsedMirror"); if (QueueCounter <= 1) { /* This indicates that the file is not available right now but might @@@ -73,17 -75,10 +76,17 @@@ Dequeue(); return; } - + Status = StatError; Dequeue(); } + + // report mirror failure back to LP if we actually use a mirror + string FailReason = LookupTag(Message, "FailReason"); + if(FailReason.size() != 0) + ReportMirrorFailure(FailReason); + else + ReportMirrorFailure(ErrorText); } /*}}}*/ // Acquire::Item::Start - Item has begun to download /*{{{*/ @@@ -105,8 -100,8 +108,8 @@@ void pkgAcquire::Item::Done(string Mess { // We just downloaded something.. string FileName = LookupTag(Message,"Filename"); - // we only inform the Log class if it was actually not a local thing + UsedMirror = LookupTag(Message,"UsedMirror"); - if (Complete == false && FileName == DestFile) + if (Complete == false && !Local && FileName == DestFile) { if (Owner->Log != 0) Owner->Log->Fetched(Size,atoi(LookupTag(Message,"Resume-Point","0").c_str())); @@@ -114,6 -109,7 +117,6 @@@ if (FileSize == 0) FileSize= Size; - Status = StatDone; ErrorText = string(); Owner->Dequeue(this); @@@ -136,57 -132,432 +139,475 @@@ void pkgAcquire::Item::Rename(string Fr } /*}}}*/ +void pkgAcquire::Item::ReportMirrorFailure(string FailCode) +{ + // we only act if a mirror was used at all + if(UsedMirror.empty()) + return; +#if 0 + std::cerr << "\nReportMirrorFailure: " + << UsedMirror + << " Uri: " << DescURI() + << " FailCode: " + << FailCode << std::endl; +#endif + const char *Args[40]; + unsigned int i = 0; + string report = _config->Find("Methods::Mirror::ProblemReporting", + "/usr/lib/apt/apt-report-mirror-failure"); + if(!FileExists(report)) + return; + Args[i++] = report.c_str(); + Args[i++] = UsedMirror.c_str(); + Args[i++] = DescURI().c_str(); + Args[i++] = FailCode.c_str(); + Args[i++] = NULL; + pid_t pid = ExecFork(); + if(pid < 0) + { + _error->Error("ReportMirrorFailure Fork failed"); + return; + } + else if(pid == 0) + { + execvp(Args[0], (char**)Args); + std::cerr << "Could not exec " << Args[0] << std::endl; + _exit(100); + } + if(!ExecWait(pid, "report-mirror-failure")) + { + _error->Warning("Couldn't report problem to '%s'", + _config->Find("Methods::Mirror::ProblemReporting").c_str()); + } +} + + + + // AcqDiffIndex::AcqDiffIndex - Constructor + // --------------------------------------------------------------------- + /* Get the DiffIndex file first and see if there are patches availabe + * If so, create a pkgAcqIndexDiffs fetcher that will get and apply the + * patches. If anything goes wrong in that process, it will fall back to + * the original packages file + */ + pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner, + string URI,string URIDesc,string ShortDesc, + string ExpectedMD5) + : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5), Description(URIDesc) + { + + Debug = _config->FindB("Debug::pkgAcquire::Diffs",false); + + Desc.Description = URIDesc + "/DiffIndex"; + Desc.Owner = this; + Desc.ShortDesc = ShortDesc; + Desc.URI = URI + ".diff/Index"; + + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; + DestFile += URItoFileName(URI) + string(".DiffIndex"); + + if(Debug) + std::clog << "pkgAcqDiffIndex: " << Desc.URI << std::endl; + + // look for the current package file + CurrentPackagesFile = _config->FindDir("Dir::State::lists"); + CurrentPackagesFile += URItoFileName(RealURI); + + // FIXME: this file:/ check is a hack to prevent fetching + // from local sources. this is really silly, and + // should be fixed cleanly as soon as possible + if(!FileExists(CurrentPackagesFile) || + Desc.URI.substr(0,strlen("file:/")) == "file:/") + { + // we don't have a pkg file or we don't want to queue + if(Debug) + std::clog << "No index file, local or canceld by user" << std::endl; + Failed("", NULL); + return; + } + + if(Debug) + std::clog << "pkgAcqIndexDiffs::pkgAcqIndexDiffs(): " + << CurrentPackagesFile << std::endl; + + QueueURI(Desc); + + } + + // AcqIndex::Custom600Headers - Insert custom request headers /*{{{*/ + // --------------------------------------------------------------------- + /* The only header we use is the last-modified header. */ + string pkgAcqDiffIndex::Custom600Headers() + { + string Final = _config->FindDir("Dir::State::lists"); + Final += URItoFileName(RealURI) + string(".IndexDiff"); + + if(Debug) + std::clog << "Custom600Header-IMS: " << Final << std::endl; + + struct stat Buf; + if (stat(Final.c_str(),&Buf) != 0) + return "\nIndex-File: true"; + + return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); + } + + + bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) + { + if(Debug) + std::clog << "pkgAcqIndexDiffs::ParseIndexDiff() " << IndexDiffFile + << std::endl; + + pkgTagSection Tags; + string ServerSha1; + vector available_patches; + + FileFd Fd(IndexDiffFile,FileFd::ReadOnly); + pkgTagFile TF(&Fd); + if (_error->PendingError() == true) + return false; + + if(TF.Step(Tags) == true) + { + string local_sha1; + bool found = false; + DiffInfo d; + string size; + + string tmp = Tags.FindS("SHA1-Current"); + std::stringstream ss(tmp); + ss >> ServerSha1; + + FileFd fd(CurrentPackagesFile, FileFd::ReadOnly); + SHA1Summation SHA1; + SHA1.AddFD(fd.Fd(), fd.Size()); + local_sha1 = string(SHA1.Result()); + + if(local_sha1 == ServerSha1) + { + // we have the same sha1 as the server + if(Debug) + std::clog << "Package file is up-to-date" << std::endl; + // set found to true, this will queue a pkgAcqIndexDiffs with + // a empty availabe_patches + found = true; + } + else + { + if(Debug) + std::clog << "SHA1-Current: " << ServerSha1 << std::endl; + + // check the historie and see what patches we need + string history = Tags.FindS("SHA1-History"); + std::stringstream hist(history); + while(hist >> d.sha1 >> size >> d.file) + { + d.size = atoi(size.c_str()); + // read until the first match is found + if(d.sha1 == local_sha1) + found=true; + // from that point on, we probably need all diffs + if(found) + { + if(Debug) + std::clog << "Need to get diff: " << d.file << std::endl; + available_patches.push_back(d); + } + } + } + + // we have something, queue the next diff + 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; + Status = StatDone; + Dequeue(); + return true; + } + } + + // 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; + } + + void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) + { + if(Debug) + std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << std::endl + << "Falling back to normal index file aquire" << std::endl; + + new pkgAcqIndex(Owner, RealURI, Description, Desc.ShortDesc, + ExpectedMD5); + + Complete = false; + Status = StatDone; + Dequeue(); + } + + void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash, + pkgAcquire::MethodConfig *Cnf) + { + if(Debug) + std::clog << "pkgAcqDiffIndex::Done(): " << Desc.URI << std::endl; + + Item::Done(Message,Size,Md5Hash,Cnf); + + string FinalFile; + FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI); + + // sucess in downloading the index + // rename the index + FinalFile += string(".IndexDiff"); + if(Debug) + std::clog << "Renaming: " << DestFile << " -> " << FinalFile + << std::endl; + Rename(DestFile,FinalFile); + chmod(FinalFile.c_str(),0644); + DestFile = FinalFile; + + if(!ParseDiffIndex(DestFile)) + return Failed("", NULL); + + Complete = true; + Status = StatDone; + Dequeue(); + return; + } + + + + // AcqIndexDiffs::AcqIndexDiffs - Constructor + // --------------------------------------------------------------------- + /* The package diff is added to the queue. one object is constructed + * for each diff and the index + */ + pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner, + string URI,string URIDesc,string ShortDesc, + string ExpectedMD5, vector diffs) + : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5), + available_patches(diffs) + { + + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; + DestFile += URItoFileName(URI); + + Debug = _config->FindB("Debug::pkgAcquire::Diffs",false); + + Description = URIDesc; + Desc.Owner = this; + Desc.ShortDesc = ShortDesc; + + if(available_patches.size() == 0) + { + // we are done (yeah!) + Finish(true); + } + else + { + // get the next diff + State = StateFetchDiff; + QueueNextDiff(); + } + } + + + void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf) + { + if(Debug) + std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl + << "Falling back to normal index file aquire" << std::endl; + new pkgAcqIndex(Owner, RealURI, Description,Desc.ShortDesc, + ExpectedMD5); + Finish(); + } + + + // helper that cleans the item out of the fetcher queue + void pkgAcqIndexDiffs::Finish(bool allDone) + { + // we restore the original name, this is required, otherwise + // the file will be cleaned + if(allDone) + { + DestFile = _config->FindDir("Dir::State::lists"); + DestFile += URItoFileName(RealURI); + + // do the final md5sum checking + MD5Summation sum; + FileFd Fd(DestFile, FileFd::ReadOnly); + sum.AddFD(Fd.Fd(), Fd.Size()); + Fd.Close(); + string MD5 = (string)sum.Result(); + + if (!ExpectedMD5.empty() && MD5 != ExpectedMD5) + { + Status = StatAuthError; + ErrorText = _("MD5Sum mismatch"); + Rename(DestFile,DestFile + ".FAILED"); + Dequeue(); + return; + } + + // this is for the "real" finish + Complete = true; + Status = StatDone; + Dequeue(); + if(Debug) + std::clog << "\n\nallDone: " << DestFile << "\n" << std::endl; + return; + } + + if(Debug) + std::clog << "Finishing: " << Desc.URI << std::endl; + Complete = false; + Status = StatDone; + Dequeue(); + return; + } + + + + bool pkgAcqIndexDiffs::QueueNextDiff() + { + + // calc sha1 of the just patched file + string FinalFile = _config->FindDir("Dir::State::lists"); + FinalFile += URItoFileName(RealURI); + + FileFd fd(FinalFile, FileFd::ReadOnly); + SHA1Summation SHA1; + SHA1.AddFD(fd.Fd(), fd.Size()); + string local_sha1 = string(SHA1.Result()); + if(Debug) + std::clog << "QueueNextDiff: " + << FinalFile << " (" << local_sha1 << ")"<::iterator I=available_patches.begin(); + available_patches.size() > 0 && + I != available_patches.end() && + (*I).sha1 != local_sha1; + I++) + { + available_patches.erase(I); + } + + // error checking and falling back if no patch was found + if(available_patches.size() == 0) + { + Failed("", NULL); + return false; + } + + // queue the right diff + Desc.URI = string(RealURI) + ".diff/" + available_patches[0].file + ".gz"; + Desc.Description = Description + " " + available_patches[0].file + string(".pdiff"); + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; + DestFile += URItoFileName(RealURI + ".diff/" + available_patches[0].file); + + if(Debug) + std::clog << "pkgAcqIndexDiffs::QueueNextDiff(): " << Desc.URI << std::endl; + + QueueURI(Desc); + + return true; + } + + + + void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash, + pkgAcquire::MethodConfig *Cnf) + { + if(Debug) + std::clog << "pkgAcqIndexDiffs::Done(): " << Desc.URI << std::endl; + + Item::Done(Message,Size,Md5Hash,Cnf); + + string FinalFile; + FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI); + + // sucess in downloading a diff, enter ApplyDiff state + if(State == StateFetchDiff) + { + + if(Debug) + std::clog << "Sending to gzip method: " << FinalFile << std::endl; + + string FileName = LookupTag(Message,"Filename"); + State = StateUnzipDiff; + Local = true; + Desc.URI = "gzip:" + FileName; + DestFile += ".decomp"; + QueueURI(Desc); + Mode = "gzip"; + return; + } + + // sucess in downloading a diff, enter ApplyDiff state + if(State == StateUnzipDiff) + { + + // rred excepts the patch as $FinalFile.ed + Rename(DestFile,FinalFile+".ed"); + + if(Debug) + std::clog << "Sending to rred method: " << FinalFile << std::endl; + + State = StateApplyDiff; + Local = true; + Desc.URI = "rred:" + FinalFile; + QueueURI(Desc); + Mode = "rred"; + return; + } + + + // success in download/apply a diff, queue next (if needed) + if(State == StateApplyDiff) + { + // remove the just applied patch + available_patches.erase(available_patches.begin()); + + // move into place + if(Debug) + { + std::clog << "Moving patched file in place: " << std::endl + << DestFile << " -> " << FinalFile << std::endl; + } + Rename(DestFile,FinalFile); + chmod(FinalFile.c_str(),0644); + + // see if there is more to download + if(available_patches.size() > 0) { + new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc, + ExpectedMD5, available_patches); + return Finish(); + } else + return Finish(true); + } + } + + // AcqIndex::AcqIndex - Constructor /*{{{*/ // --------------------------------------------------------------------- /* The package file is added to the queue and a second class is instantiated to fetch the revision file */ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, string URI,string URIDesc,string ShortDesc, - string ExpectedMD5, string comprExt) : - Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5) + string ExpectedMD5, string comprExt) + : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5) { Decompression = false; Erase = false; @@@ -224,13 -595,13 +645,12 @@@ string pkgAcqIndex::Custom600Headers( struct stat Buf; if (stat(Final.c_str(),&Buf) != 0) return "\nIndex-File: true"; - return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } /*}}}*/ void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { - // no .bz2 found, retry with .gz if(Desc.URI.substr(Desc.URI.size()-3) == "bz2") { Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz"; @@@ -289,7 -660,6 +709,7 @@@ void pkgAcqIndex::Done(string Message,u Status = StatAuthError; ErrorText = _("MD5Sum mismatch"); Rename(DestFile,DestFile + ".FAILED"); + ReportMirrorFailure("HashChecksumFailure"); return; } // Done, move it into position @@@ -480,7 -850,7 +900,7 @@@ void pkgAcqMetaSig::Failed(string Messa if(Status == StatTransientNetworkError) { Item::Failed(Message,Cnf); - // move the sigfile back on network failures (and re-authenticated?) + // move the sigfile back on transient network failures if(FileExists(DestFile)) Rename(DestFile,Final); @@@ -622,6 -992,7 +1042,7 @@@ void pkgAcqMetaIndex::RetrievalDone(str // Move it into position Rename(DestFile,FinalFile); } + chmod(FinalFile.c_str(),0644); DestFile = FinalFile; } @@@ -691,9 -1062,14 +1112,14 @@@ void pkgAcqMetaIndex::QueueIndexes(boo } } - // Queue Packages file - new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description, - (*Target)->ShortDesc, ExpectedIndexMD5); + // Queue Packages file (either diff or full packages files, depending + // on the users option) - if(_config->FindB("Acquire::PDiffs",true) == true) ++ if(_config->FindB("Acquire::PDiffs",false) == true) + new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description, + (*Target)->ShortDesc, ExpectedIndexMD5); + else + new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description, + (*Target)->ShortDesc, ExpectedIndexMD5); } } @@@ -812,7 -1188,6 +1238,7 @@@ void pkgAcqMetaIndex::Failed(string Mes } // gpgv method failed + ReportMirrorFailure("GPGFailure"); _error->Warning("GPG error: %s: %s", Desc.Description.c_str(), LookupTag(Message,"Message").c_str()); diff --combined apt-pkg/acquire-item.h index 1885f7beb,f5272ed86..233cbdda9 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@@ -28,72 -28,491 +28,503 @@@ #include - // Item to acquire + /** \addtogroup acquire + * @{ + * + * \file acquire-item.h + */ + + /** \brief Represents the process by which a pkgAcquire object should + * retrieve a file or a collection of files. + * + * By convention, Item subclasses should insert themselves into the + * acquire queue when they are created by calling QueueURI(), and + * remove themselves by calling Dequeue() when either Done() or + * Failed() is invoked. Item objects are also responsible for + * notifying the download progress indicator (accessible via + * #Owner->Log) of their status. + * + * \see pkgAcquire + */ class pkgAcquire::Item { protected: - // Some private helper methods for registering URIs + /** \brief The acquire object with which this item is associated. */ pkgAcquire *Owner; + + /** \brief Insert this item into its owner's queue. + * + * \param ItemDesc Metadata about this item (its URI and + * description). + */ inline void QueueURI(ItemDesc &Item) {Owner->Enqueue(Item);}; + + /** \brief Remove this item from its owner's queue. */ inline void Dequeue() {Owner->Dequeue(this);}; - // Safe rename function with timestamp preservation + /** \brief Rename a file without modifying its timestamp. + * + * Many item methods call this as their final action. + * + * \param From The file to be renamed. + * + * \param To The new name of #From. If #To exists it will be + * overwritten. + */ void Rename(string From,string To); public: - // State of the item - enum {StatIdle, StatFetching, StatDone, StatError, - StatAuthError, StatTransientNetworkError} Status; + /** \brief The current status of this item. */ + enum ItemState + { + /** \brief The item is waiting to be downloaded. */ + StatIdle, + + /** \brief The item is currently being downloaded. */ + StatFetching, + + /** \brief The item has been successfully downloaded. */ + StatDone, + + /** \brief An error was encountered while downloading this + * item. + */ + StatError, + + /** \brief The item was downloaded but its authenticity could + * not be verified. + */ + StatAuthError, + + /** \brief The item was could not be downloaded because of + * a transient network error (e.g. network down) + */ + StatTransientNetworkError + } Status; + + /** \brief Contains a textual description of the error encountered + * if #Status is #StatError or #StatAuthError. + */ string ErrorText; + + /** \brief The size of the object to fetch. */ unsigned long FileSize; - unsigned long PartialSize; + + /** \brief How much of the object was already fetched. */ + unsigned long PartialSize; + + /** \brief If not \b NULL, contains the name of a subprocess that + * is operating on this object (for instance, "gzip" or "gpgv"). + */ const char *Mode; + + /** \brief A client-supplied unique identifier. + * + * This field is initalized to 0; it is meant to be filled in by + * clients that wish to use it to uniquely identify items. + * + * \todo it's unused in apt itself + */ unsigned long ID; + + /** \brief If \b true, the entire object has been successfully fetched. + * + * Subclasses should set this to \b true when appropriate. + */ bool Complete; + + /** \brief If \b true, the URI of this object is "local". + * + * The only effect of this field is to exclude the object from the + * download progress indicator's overall statistics. + */ bool Local; + string UsedMirror; - // Number of queues we are inserted into + /** \brief The number of fetch queues into which this item has been + * inserted. + * + * There is one queue for each source from which an item could be + * downloaded. + * + * \sa pkgAcquire + */ unsigned int QueueCounter; - // File to write the fetch into + /** \brief The name of the file into which the retrieved object + * will be written. + */ string DestFile; - // Action members invoked by the worker + /** \brief Invoked by the acquire worker when the object couldn't + * be fetched. + * + * This is a branch of the continuation of the fetch process. + * + * \param Message An RFC822-formatted message from the acquire + * method describing what went wrong. Use LookupTag() to parse + * it. + * + * \param Cnf The method via which the worker tried to fetch this object. + * + * \sa pkgAcqMethod + */ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + + /** \brief Invoked by the acquire worker when the object was + * fetched successfully. + * + * Note that the object might \e not have been written to + * DestFile; check for the presence of an Alt-Filename entry in + * Message to find the file to which it was really written. + * + * Done is often used to switch from one stage of the processing + * to the next (e.g. fetching, unpacking, copying). It is one + * branch of the continuation of the fetch process. + * + * \param Message Data from the acquire method. Use LookupTag() + * to parse it. + * \param Size The size of the object that was fetched. + * \param Md5Hash The MD5Sum of the object that was fetched. + * \param Cnf The method via which the object was fetched. + * + * \sa pkgAcqMethod + */ virtual void Done(string Message,unsigned long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); + + /** \brief Invoked when the worker starts to fetch this object. + * + * \param Message RFC822-formatted data from the worker process. + * Use LookupTag() to parse it. + * + * \param Size The size of the object being fetched. + * + * \sa pkgAcqMethod + */ virtual void Start(string Message,unsigned long Size); + + /** \brief Custom headers to be sent to the fetch process. + * + * \return a string containing RFC822-style headers that are to be + * inserted into the 600 URI Acquire message sent to the fetch + * subprocess. The headers are inserted after a newline-less + * line, so they should (if nonempty) have a leading newline and + * no trailing newline. + */ virtual string Custom600Headers() {return string();}; + + /** \brief A "descriptive" URI-like string. + * + * \return a URI that should be used to describe what is being fetched. + */ virtual string DescURI() = 0; + /** \brief Short item description. + * + * \return a brief description of the object being fetched. + */ virtual string ShortDesc() {return DescURI();} + + /** \brief Invoked by the worker when the download is completely done. */ virtual void Finished() {}; - // Inquire functions + /** \brief MD5Sum. + * + * \return the MD5Sum of this object, if applicable; otherwise, an + * empty string. + */ virtual string MD5Sum() {return string();}; + + /** \return the acquire process with which this item is associated. */ pkgAcquire *GetOwner() {return Owner;}; + + /** \return \b true if this object is being fetched from a trusted source. */ virtual bool IsTrusted() {return false;}; + + // report mirror problems ++ /** \brief Report mirror problem ++ * ++ * This allows reporting mirror failures back to a centralized ++ * server. The apt-report-mirror-failure script is called for this ++ * ++ * \param FailCode A short failure string that is send ++ */ + void ReportMirrorFailure(string FailCode); + + + /** \brief Initialize an item. + * + * Adds the item to the list of items known to the acquire + * process, but does not place it into any fetch queues (you must + * manually invoke QueueURI() to do so). + * + * Initializes all fields of the item other than Owner to 0, + * false, or the empty string. + * + * \param Owner The new owner of this item. + */ Item(pkgAcquire *Owner); + + /** \brief Remove this item from its owner's queue by invoking + * pkgAcquire::Remove. + */ virtual ~Item(); }; - // Item class for index files - class pkgAcqIndex : public pkgAcquire::Item + /** \brief Information about an index patch (aka diff). */ + struct DiffInfo { + /** The filename of the diff. */ + string file; + + /** The sha1 hash of the diff. */ + string sha1; + + /** The size of the diff. */ + unsigned long size; + }; + + /** \brief An item that is responsible for fetching an index file of + * package list diffs and starting the package list's download. + * + * This item downloads the Index file and parses it, then enqueues + * additional downloads of either the individual patches (using + * pkgAcqIndexDiffs) or the entire Packages file (using pkgAcqIndex). + * + * \sa pkgAcqIndexDiffs, pkgAcqIndex + */ + class pkgAcqDiffIndex : public pkgAcquire::Item + { + protected: + /** \brief If \b true, debugging information will be written to std::clog. */ + bool Debug; + + /** \brief The item that is currently being downloaded. */ + pkgAcquire::ItemDesc Desc; + + /** \brief The URI of the index file to recreate at our end (either + * by downloading it or by applying partial patches). + */ + string RealURI; + + /** \brief The MD5Sum that the real index file should have after + * all patches have been applied. + */ + string ExpectedMD5; + + /** \brief The index file which will be patched to generate the new + * file. + */ + string CurrentPackagesFile; + + /** \brief A description of the Packages file (stored in + * pkgAcquire::ItemDesc::Description). + */ + string Description; + + public: + // Specialized action members + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(string Message,unsigned long Size,string Md5Hash, + pkgAcquire::MethodConfig *Cnf); + virtual string DescURI() {return RealURI + "Index";}; + virtual string Custom600Headers(); + + /** \brief Parse the Index file for a set of Packages diffs. + * + * Parses the Index file and creates additional download items as + * necessary. + * + * \param IndexDiffFile The name of the Index file. + * + * \return \b true if the Index file was successfully parsed, \b + * false otherwise. + */ + bool ParseDiffIndex(string IndexDiffFile); + + + /** \brief Create a new pkgAcqDiffIndex. + * + * \param Owner The Acquire object that owns this item. + * + * \param URI The URI of the list file to download. + * + * \param URIDesc A long description of the list file to download. + * + * \param ShortDesc A short description of the list file to download. + * + * \param ExpectedMD5 The list file's MD5 signature. + */ + pkgAcqDiffIndex(pkgAcquire *Owner,string URI,string URIDesc, + string ShortDesc, string ExpectedMD5); + }; + + /** \brief An item that is responsible for fetching all the patches + * that need to be applied to a given package index file. + * + * After downloading and applying a single patch, this item will + * enqueue a new pkgAcqIndexDiffs to download and apply the remaining + * patches. If no patch can be found that applies to an intermediate + * file or if one of the patches cannot be downloaded, falls back to + * downloading the entire package index file using pkgAcqIndex. + * + * \sa pkgAcqDiffIndex, pkgAcqIndex + */ + class pkgAcqIndexDiffs : public pkgAcquire::Item { + private: + + /** \brief Queue up the next diff download. + * + * Search for the next available diff that applies to the file + * that currently exists on disk, and enqueue it by calling + * QueueURI(). + * + * \return \b true if an applicable diff was found, \b false + * otherwise. + */ + bool QueueNextDiff(); + + /** \brief Handle tasks that must be performed after the item + * finishes downloading. + * + * Dequeues the item and checks the resulting file's md5sum + * against ExpectedMD5 after the last patch was applied. + * There is no need to check the md5/sha1 after a "normal" + * patch because QueueNextDiff() will check the sha1 later. + * + * \param allDone If \b true, the file was entirely reconstructed, + * and its md5sum is verified. + */ + void Finish(bool allDone=false); + protected: + + /** \brief If \b true, debugging output will be written to + * std::clog. + */ + bool Debug; + + /** \brief A description of the item that is currently being + * downloaded. + */ + pkgAcquire::ItemDesc Desc; + + /** \brief The URI of the package index file that is being + * reconstructed. + */ + string RealURI; + + /** \brief The MD5Sum of the package index file that is being + * reconstructed. + */ + string ExpectedMD5; + + /** A description of the file being downloaded. */ + string Description; + + /** The patches that remain to be downloaded, including the patch + * being downloaded right now. This list should be ordered so + * that each diff appears before any diff that depends on it. + * + * \todo These are indexed by sha1sum; why not use some sort of + * dictionary instead of relying on ordering and stripping them + * off the front? + */ + vector available_patches; + /** The current status of this patch. */ + enum DiffState + { + /** \brief The diff is in an unknown state. */ + StateFetchUnkown, + + /** \brief The diff is currently being fetched. */ + StateFetchDiff, + + /** \brief The diff is currently being uncompressed. */ + StateUnzipDiff, + + /** \brief The diff is currently being applied. */ + StateApplyDiff + } State; + + public: + /** \brief Called when the patch file failed to be downloaded. + * + * This method will fall back to downloading the whole index file + * outright; its arguments are ignored. + */ + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + + virtual void Done(string Message,unsigned long Size,string Md5Hash, + pkgAcquire::MethodConfig *Cnf); + virtual string DescURI() {return RealURI + "Index";}; + + /** \brief Create an index diff item. + * + * After filling in its basic fields, this invokes Finish(true) if + * #diffs is empty, or QueueNextDiff() otherwise. + * + * \param Owner The pkgAcquire object that owns this item. + * + * \param URI The URI of the package index file being + * reconstructed. + * + * \param URIDesc A long description of this item. + * + * \param ShortDesc A brief description of this item. + * + * \param ExpectedMD5 The expected md5sum of the completely + * reconstructed package index file; the index file will be tested + * against this value when it is entirely reconstructed. + * + * \param diffs The remaining diffs from the index of diffs. They + * should be ordered so that each diff appears before any diff + * that depends on it. + */ + pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc, + string ShortDesc, string ExpectedMD5, + vector diffs=vector()); + }; + + /** \brief An acquire item that is responsible for fetching an index + * file (e.g., Packages or Sources). + * + * \sa pkgAcqDiffIndex, pkgAcqIndexDiffs, pkgAcqIndexTrans + * + * \todo Why does pkgAcqIndex have protected members? + */ + class pkgAcqIndex : public pkgAcquire::Item + { + protected: + + /** \brief If \b true, the index file has been decompressed. */ bool Decompression; + + /** \brief If \b true, the partially downloaded file will be + * removed when the download completes. + */ bool Erase; + + /** \brief The download request that is currently being + * processed. + */ pkgAcquire::ItemDesc Desc; + + /** \brief The object that is actually being fetched (minus any + * compression-related extensions). + */ string RealURI; + + /** \brief The expected md5sum of the decompressed index file. */ string ExpectedMD5; + + /** \brief The compression-related file extension that is being + * added to the downloaded file (e.g., ".gz" or ".bz2"). + */ string CompressionExtension; public: @@@ -105,36 -524,120 +536,120 @@@ virtual string Custom600Headers(); virtual string DescURI() {return RealURI + CompressionExtension;}; + /** \brief Create a pkgAcqIndex. + * + * \param Owner The pkgAcquire object with which this item is + * associated. + * + * \param URI The URI of the index file that is to be downloaded. + * + * \param URIDesc A "URI-style" description of this index file. + * + * \param ShortDesc A brief description of this index file. + * + * \param ExpectedMD5 The expected md5sum of this index file. + * + * \param compressExt The compression-related extension with which + * this index file should be downloaded, or "" to autodetect + * (".bz2" is used if bzip2 is installed, ".gz" otherwise). + */ pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesc, string ExpectedMD5, string compressExt=""); + string ShortDesct, string ExpectedMD5, string compressExt=""); }; - // Item class for translated package index files + /** \brief An acquire item that is responsible for fetching a + * translated index file. + * + * The only difference from pkgAcqIndex is that transient failures + * are suppressed: no error occurs if the translated index file is + * missing. + */ class pkgAcqIndexTrans : public pkgAcqIndex { public: virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + + /** \brief Create a pkgAcqIndexTrans. + * + * \param Owner The pkgAcquire object with which this item is + * associated. + * + * \param URI The URI of the index file that is to be downloaded. + * + * \param URIDesc A "URI-style" description of this index file. + * + * \param ShortDesc A brief description of this index file. + * + * \param ExpectedMD5 The expected md5sum of this index file. + * + * \param compressExt The compression-related extension with which + * this index file should be downloaded, or "" to autodetect + * (".bz2" is used if bzip2 is installed, ".gz" otherwise). + */ pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesct); + string ShortDesc); }; + /** \brief Information about an index file. */ struct IndexTarget { + /** \brief A URI from which the index file can be downloaded. */ string URI; + + /** \brief A description of the index file. */ string Description; + + /** \brief A shorter description of the index file. */ string ShortDesc; + + /** \brief The key by which this index file should be + * looked up within the meta signature file. + */ string MetaKey; }; - // Item class for index signatures + /** \brief An acquire item that downloads the detached signature + * of a meta-index (Release) file, then queues up the release + * file itself. + * + * \todo Why protected members? + * + * \sa pkgAcqMetaIndex + */ class pkgAcqMetaSig : public pkgAcquire::Item { protected: - + /** \brief The fetch request that is currently being processed. */ pkgAcquire::ItemDesc Desc; - string RealURI,MetaIndexURI,MetaIndexURIDesc,MetaIndexShortDesc; + + /** \brief The URI of the signature file. Unlike Desc.URI, this is + * never modified; it is used to determine the file that is being + * downloaded. + */ + string RealURI; + + /** \brief The URI of the meta-index file to be fetched after the signature. */ + string MetaIndexURI; + + /** \brief A "URI-style" description of the meta-index file to be + * fetched after the signature. + */ + string MetaIndexURIDesc; + + /** \brief A brief description of the meta-index file to be fetched + * after the signature. + */ + string MetaIndexShortDesc; + + /** \brief A package-system-specific parser for the meta-index file. */ indexRecords* MetaIndexParser; + + /** \brief The index files which should be looked up in the meta-index + * and then downloaded. + * + * \todo Why a list of pointers instead of a list of structs? + */ const vector* IndexTargets; public: @@@ -146,29 -649,90 +661,90 @@@ virtual string Custom600Headers(); virtual string DescURI() {return RealURI; }; + /** \brief Create a new pkgAcqMetaSig. */ pkgAcqMetaSig(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesc, string MetaIndexURI, string MetaIndexURIDesc, string MetaIndexShortDesc, const vector* IndexTargets, indexRecords* MetaIndexParser); }; - // Item class for index signatures + /** \brief An item that is responsible for downloading the meta-index + * file (i.e., Release) itself and verifying its signature. + * + * Once the download and verification are complete, the downloads of + * the individual index files are queued up using pkgAcqDiffIndex. + * If the meta-index file had a valid signature, the expected md5sums + * of the index files will be the md5sums listed in the meta-index; + * otherwise, the expected md5sums will be "" (causing the + * authentication of the index files to be bypassed). + */ class pkgAcqMetaIndex : public pkgAcquire::Item { protected: - + /** \brief The fetch command that is currently being processed. */ pkgAcquire::ItemDesc Desc; - string RealURI; // FIXME: is this redundant w/ Desc.URI? + + /** \brief The URI that is actually being downloaded; never + * modified by pkgAcqMetaIndex. + */ + string RealURI; + + /** \brief The file in which the signature for this index was stored. + * + * If empty, the signature and the md5sums of the individual + * indices will not be checked. + */ string SigFile; + + /** \brief The index files to download. */ const vector* IndexTargets; + + /** \brief The parser for the meta-index file. */ indexRecords* MetaIndexParser; + + /** \brief If \b true, the index's signature is currently being verified. + */ bool AuthPass; // required to deal gracefully with problems caused by incorrect ims hits bool IMSHit; + /** \brief Check that the release file is a release file for the + * correct distribution. + * + * \return \b true if no fatal errors were encountered. + */ bool VerifyVendor(string Message); + + /** \brief Called when a file is finished being retrieved. + * + * If the file was not downloaded to DestFile, a copy process is + * set up to copy it to DestFile; otherwise, Complete is set to \b + * true and the file is moved to its final location. + * + * \param Message The message block received from the fetch + * subprocess. + */ void RetrievalDone(string Message); + + /** \brief Called when authentication succeeded. + * + * Sanity-checks the authenticated file, queues up the individual + * index files for download, and saves the signature in the lists + * directory next to the authenticated list file. + * + * \param Message The message block received from the fetch + * subprocess. + */ void AuthDone(string Message); + + /** \brief Starts downloading the individual index files. + * + * \param verify If \b true, only indices whose expected md5sum + * can be determined from the meta-index will be downloaded, and + * the md5sums of indices will be checked (reporting + * #StatAuthError if there is a mismatch). If verify is \b false, + * no md5sum checking will be performed. + */ void QueueIndexes(bool verify); public: @@@ -180,6 -744,7 +756,7 @@@ virtual string Custom600Headers(); virtual string DescURI() {return RealURI; }; + /** \brief Create a new pkgAcqMetaIndex. */ pkgAcqMetaIndex(pkgAcquire *Owner, string URI,string URIDesc, string ShortDesc, string SigFile, @@@ -187,28 -752,58 +764,58 @@@ indexRecords* MetaIndexParser); }; - // Item class for archive files + /** \brief An item that is responsible for fetching a package file. + * + * If the package file already exists in the cache, nothing will be + * done. + */ class pkgAcqArchive : public pkgAcquire::Item { protected: - - // State information for the retry mechanism + /** \brief The package version being fetched. */ pkgCache::VerIterator Version; + + /** \brief The fetch command that is currently being processed. */ pkgAcquire::ItemDesc Desc; + + /** \brief The list of sources from which to pick archives to + * download this package from. + */ pkgSourceList *Sources; + + /** \brief A package records object, used to look up the file + * corresponding to each version of the package. + */ pkgRecords *Recs; + + /** \brief The md5sum of this package. */ string MD5; + + /** \brief A location in which the actual filename of the package + * should be stored. + */ string &StoreFilename; + + /** \brief The next file for this version to try to download. */ pkgCache::VerFileIterator Vf; + + /** \brief How many (more) times to try to find a new source from + * which to download this package version if it fails. + * + * Set from Acquire::Retries. + */ unsigned int Retries; + + /** \brief \b true if this version file is being downloaded from a + * trusted source. + */ bool Trusted; - // Queue the next available file for download. + /** \brief Queue up the next available file for this version. */ bool QueueNext(); public: - // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); virtual void Done(string Message,unsigned long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); @@@ -216,18 -811,49 +823,49 @@@ virtual string DescURI() {return Desc.URI;}; virtual string ShortDesc() {return Desc.ShortDesc;}; virtual void Finished(); + virtual bool IsTrusted(); + /** \brief Create a new pkgAcqArchive. + * + * \param Owner The pkgAcquire object with which this item is + * associated. + * + * \param Sources The sources from which to download version + * files. + * + * \param Recs A package records object, used to look up the file + * corresponding to each version of the package. + * + * \param Version The package version to download. + * + * \param StoreFilename A location in which the actual filename of + * the package should be stored. It will be set to a guessed + * basename in the constructor, and filled in with a fully + * qualified filename once the download finishes. + */ pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources, pkgRecords *Recs,pkgCache::VerIterator const &Version, string &StoreFilename); }; - // Fetch a generic file to the current directory + /** \brief Retrieve an arbitrary file to the current directory. + * + * The file is retrieved even if it is accessed via a URL type that + * normally is a NOP, such as "file". If the download fails, the + * partial file is renamed to get a ".FAILED" extension. + */ class pkgAcqFile : public pkgAcquire::Item { + /** \brief The currently active download process. */ pkgAcquire::ItemDesc Desc; + + /** \brief The md5sum of the file to download, if it is known. */ string Md5Hash; + + /** \brief How many times to retry the download, set from + * Acquire::Retries. + */ unsigned int Retries; public: @@@ -239,13 -865,40 +877,40 @@@ virtual string MD5Sum() {return Md5Hash;}; virtual string DescURI() {return Desc.URI;}; - // If DestFilename is empty, download to DestDir/ if - // DestDir is non-empty, $CWD/ otherwise. If - // DestFilename is NOT empty, DestDir is ignored and DestFilename - // is the absolute name to which the file should be downloaded. + /** \brief Create a new pkgAcqFile object. + * + * \param Owner The pkgAcquire object with which this object is + * associated. + * + * \param URI The URI to download. + * + * \param MD5 The md5sum of the file to download, if it is known; + * otherwise "". + * + * \param Size The size of the file to download, if it is known; + * otherwise 0. + * + * \param Desc A description of the file being downloaded. + * + * \param ShortDesc A brief description of the file being + * downloaded. + * + * \param DestDir The directory the file should be downloaded into. + * + * \param DestFilename The filename+path the file is downloaded to. + * + * + * If DestFilename is empty, download to DestDir/ if + * DestDir is non-empty, $CWD/ otherwise. If + * DestFilename is NOT empty, DestDir is ignored and DestFilename + * is the absolute name to which the file should be downloaded. + */ + pkgAcqFile(pkgAcquire *Owner, string URI, string MD5, unsigned long Size, string Desc, string ShortDesc, const string &DestDir="", const string &DestFilename=""); }; + /** @} */ + #endif diff --combined apt-pkg/acquire-method.h index 4e72d7094,0fd846f54..89eb2e77f --- a/apt-pkg/acquire-method.h +++ b/apt-pkg/acquire-method.h @@@ -10,6 -10,13 +10,13 @@@ ##################################################################### */ /*}}}*/ + + /** \addtogroup acquire + * @{ + * + * \file acquire-method.h + */ + #ifndef PKGLIB_ACQUIRE_METHOD_H #define PKGLIB_ACQUIRE_METHOD_H @@@ -51,9 -58,7 +58,9 @@@ class pkgAcqMetho vector Messages; FetchItem *Queue; FetchItem *QueueBack; - string FailExtra; + string FailReason; + string UsedMirror; + string IP; // Handlers for messages virtual bool Configuration(string Message); @@@ -62,14 -67,14 +69,14 @@@ // Outgoing messages void Fail(bool Transient = false); inline void Fail(const char *Why, bool Transient = false) {Fail(string(Why),Transient);}; - void Fail(string Why, bool Transient = false); - void URIStart(FetchResult &Res); - void URIDone(FetchResult &Res,FetchResult *Alt = 0); + virtual void Fail(string Why, bool Transient = false); + virtual void URIStart(FetchResult &Res); + virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0); + bool MediaFail(string Required,string Drive); virtual void Exit() {}; public: - enum CnfFlags {SingleInstance = (1<<0), Pipeline = (1<<1), SendConfig = (1<<2), LocalOnly = (1<<3), NeedsCleanup = (1<<4), @@@ -79,11 -84,12 +86,13 @@@ void Status(const char *Format,...); int Run(bool Single = false); - inline void SetFailExtraMsg(string Msg) {FailExtra = Msg;}; + inline void SetFailReason(string Msg) {FailReason = Msg;}; + inline void SetIP(string aIP) {IP = aIP;}; pkgAcqMethod(const char *Ver,unsigned long Flags = 0); virtual ~pkgAcqMethod() {}; }; + /** @} */ + #endif diff --combined apt-pkg/depcache.cc index 9f0fa143d,fe981ea76..491ba6d4c --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@@ -240,9 -240,9 +240,9 @@@ bool pkgDepCache::writeStateFile(OpProg std::clog << "Skipping already written " << pkg.Name() << std::endl; continue; } - // skip not installed ones if requested - if(InstalledOnly && pkg->CurrentVer == 0) - continue; + // skip not installed ones if requested + if(InstalledOnly && pkg->CurrentVer == 0) + continue; if(_config->FindB("Debug::pkgAutoRemove",false)) std::clog << "Writing new AutoInstall: " << pkg.Name() << std::endl; @@@ -715,7 -715,6 +715,6 @@@ void pkgDepCache::MarkKeep(PkgIterator // We dont even try to keep virtual packages.. if (Pkg->VersionList == 0) return; - #if 0 // reseting the autoflag here means we lose the // auto-mark information if a user selects a package for removal // but changes his mind then and sets it for keep again @@@ -955,23 -954,22 +954,22 @@@ void pkgDepCache::MarkInstall(PkgIterat std::clog << "Installing " << InstPkg.Name() << " as dep of " << Pkg.Name() << std::endl; - - // now check if we should consider it a automatic dependency or not - string sec = _config->Find("APT::Never-MarkAuto-Section",""); - if(Pkg.Section() && (string(Pkg.Section()) == sec)) - { - if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true) - std::clog << "Setting NOT as auto-installed because its a direct dep of a package in section " << sec << std::endl; - MarkInstall(InstPkg,true,Depth + 1, true, ForceImportantDeps); - } - else - { - // mark automatic dependency - MarkInstall(InstPkg,true,Depth + 1, false, ForceImportantDeps); - // Set the autoflag, after MarkInstall because MarkInstall unsets it - if (P->CurrentVer == 0) - PkgState[InstPkg->ID].Flags |= Flag::Auto; - } + // now check if we should consider it a automatic dependency or not + string sec = _config->Find("APT::Never-MarkAuto-Section",""); + if(Pkg.Section() && (string(Pkg.Section()) == sec)) + { + if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true) + std::clog << "Setting NOT as auto-installed because its a direct dep of a package in section " << sec << std::endl; + MarkInstall(InstPkg,true,Depth + 1, true); + } + else + { + // mark automatic dependency + MarkInstall(InstPkg,true,Depth + 1, false, ForceImportantDeps); + // Set the autoflag, after MarkInstall because MarkInstall unsets it + if (P->CurrentVer == 0) + PkgState[InstPkg->ID].Flags |= Flag::Auto; + } } continue; } @@@ -1134,6 -1132,34 +1132,6 @@@ pkgCache::VerIterator pkgDepCache::Poli return Last; } /*}}}*/ -// Policy::IsImportantDep - True if the dependency is important /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep) -{ - if(Dep.IsCritical()) - return true; - else if(Dep->Type == pkgCache::Dep::Recommends) - { - if ( _config->FindB("APT::Install-Recommends", false)) - return true; - // we suport a special mode to only install-recommends for certain - // sections - // FIXME: this is a meant as a temporarly solution until the - // recommends are cleaned up - string s = _config->Find("APT::Install-Recommends-Section",""); - if(s.size() > 0) - { - const char *sec = Dep.TargetPkg().Section(); - if (sec && strcmp(sec, s.c_str()) == 0) - return true; - } - } - else if(Dep->Type == pkgCache::Dep::Suggests) - return _config->FindB("APT::Install-Suggests", false); - - return false; -} /*}}}*/ pkgDepCache::DefaultRootSetFunc::DefaultRootSetFunc() @@@ -1352,33 -1378,3 +1350,34 @@@ bool pkgDepCache::Sweep( return true; } + +// Policy::IsImportantDep - True if the dependency is important /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep) +{ + if(Dep.IsCritical()) + return true; + else if(Dep->Type == pkgCache::Dep::Recommends) + { + if ( _config->FindB("APT::Install-Recommends", false)) + return true; + // we suport a special mode to only install-recommends for certain + // sections + // FIXME: this is a meant as a temporarly solution until the + // recommends are cleaned up + string s = _config->Find("APT::Install-Recommends-Section",""); + if(s.size() > 0) + { + const char *sec = Dep.ParentVer().Section(); + if (sec && strcmp(sec, s.c_str()) == 0) + return true; + } + } + else if(Dep->Type == pkgCache::Dep::Suggests) + return _config->FindB("APT::Install-Suggests", false); + + return false; +} + /*}}}*/ ++ diff --combined apt-pkg/init.cc index f58855792,2f15486d9..a209d7477 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@@ -14,6 -14,7 +14,7 @@@ #include #include + #include #include /*}}}*/ @@@ -56,7 -57,6 +57,7 @@@ bool pkgInitConfig(Configuration &Cnf Cnf.Set("Dir::State::lists","lists/"); Cnf.Set("Dir::State::cdroms","cdroms.list"); + Cnf.Set("Dir::State::mirrors","mirrors/"); // Cache Cnf.Set("Dir::Cache","var/cache/apt/"); @@@ -105,7 -105,10 +106,9 @@@ bindtextdomain(textdomain(0),Cnf.FindDir("Dir::Locale").c_str()); } #endif -- + // Translation + Cnf.Set("APT::Acquire::Translation", "environment"); + return true; } /*}}}*/ diff --combined apt-pkg/pkgrecords.h index bae5284ab,ea1a23fc4..7b9f51a50 --- a/apt-pkg/pkgrecords.h +++ b/apt-pkg/pkgrecords.h @@@ -20,7 -20,6 +20,7 @@@ #include #include +#include class pkgRecords { @@@ -30,8 -29,8 +30,8 @@@ private: pkgCache &Cache; - Parser **Files; - + std::vectorFiles; + public: // Lookup function @@@ -58,6 -57,7 +58,7 @@@ class pkgRecords::Parse virtual string MD5Hash() {return string();}; virtual string SHA1Hash() {return string();}; virtual string SourcePkg() {return string();}; + virtual string SourceVer() {return string();}; // These are some general stats about the package virtual string Maintainer() {return string();}; diff --combined configure.in index a537bf24f,34d4dcc78..59e3d6fe1 --- a/configure.in +++ b/configure.in @@@ -18,7 -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.46.4ubuntu11") -AC_DEFINE_UNQUOTED(VERSION,"0.7.2") ++AC_DEFINE_UNQUOTED(VERSION,"0.7.2ubuntu1") PACKAGE="apt" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_SUBST(PACKAGE) @@@ -78,10 -78,15 +78,15 @@@ AC_SUBST(BDBLIB dnl Converts the ARCH to be something singular for this general CPU family dnl This is often the dpkg architecture string. + dnl First check against the full canonical canoncial-system-type in $target + dnl and if that fails, just look for the cpu AC_MSG_CHECKING(system architecture) - archset="`awk \" ! /^#|^\\\$/ { if(match(\\\"$target_cpu\\\",\\\"^\\\"\\\$1\\\"\\\$\\\")) {print \\\$2; exit}}\" $srcdir/buildlib/archtable`" + archset="`awk \" ! /^#|^\\\$/ { if(match(\\\"$target\\\",\\\"^\\\"\\\$1\\\"\\\$\\\")) {print \\\$2; exit}}\" $srcdir/buildlib/systemtable`" if test "x$archset" = "x"; then + archset="`awk \" ! /^#|^\\\$/ { if(match(\\\"$target_cpu\\\",\\\"^\\\"\\\$1\\\"\\\$\\\")) {print \\\$2; exit}}\" $srcdir/buildlib/archtable`" + if test "x$archset" = "x"; then AC_MSG_ERROR(failed: use --host= or check buildlib/archtable) + fi fi AC_MSG_RESULT($archset) AC_DEFINE_UNQUOTED(COMMON_CPU,"$archset") @@@ -175,12 -180,21 +180,21 @@@ dnl Check for debiando AC_PATH_PROG(DEBIANDOC_HTML,debiandoc2html) AC_PATH_PROG(DEBIANDOC_TEXT,debiandoc2text) + dnl Check for doxygen + AC_PATH_PROG(DOXYGEN, doxygen) + dnl Check for the SGML tools needed to build man pages AC_PATH_PROG(DOCBOOK2MAN,docbook2man) dnl Check for the XML tools needed to build man pages AC_PATH_PROG(XMLTO,xmlto) + dnl Check for graphviz + AC_CHECK_PROG([HAVE_DOT], [dot], [YES], [NO]) + AC_PATH_PROG([DOT], [dot], []) + DOTDIR=$(dirname $DOT) + AC_SUBST(DOTDIR) + dnl Check for YODL dnl AC_CHECK_PROG(YODL_MAN,yodl2man,"yes","") @@@ -200,4 -214,4 +214,4 @@@ f AC_SUBST(USE_NLS) AC_PATH_PROG(BASH, bash) - AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in,make -s dirs) + AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile,make -s dirs) diff --combined debian/apt.conf.autoremove index 000000000,98143ce9a..3a9945b54 mode 000000,100644..100644 --- a/debian/apt.conf.autoremove +++ b/debian/apt.conf.autoremove @@@ -1,0 -1,8 +1,11 @@@ + APT + { + NeverAutoRemove + { + "^linux-image.*"; + "^linux-restricted-modules.*"; + }; ++ ++ Install-Recommends-Section "metapackages"; ++ Never-MarkAuto-Section "metapackages"; + }; diff --combined debian/apt.cron.daily index b4cbf1c8a,778e3cefe..127ecf47d --- a/debian/apt.cron.daily +++ b/debian/apt.cron.daily @@@ -152,12 -152,12 +152,16 @@@ UpdateInterval= DownloadUpgradeableInterval=0 eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages) AutocleanInterval=$DownloadUpgradeableInterval - eval $(apt-config shell AutocleanInterval APT::Periodic::Autoclean) + eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval) + + UnattendedUpgradeInterval=0 + eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade) + +UnattendedUpgradeInterval=0 +eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade) + + # laptop check, on_ac_power returns: # 0 (true) System is on mains power # 1 (false) System is not on mains power diff --combined debian/changelog index 32f2ac68a,41609bd74..c86f8abbc --- a/debian/changelog +++ b/debian/changelog @@@ -1,16 -1,67 +1,82 @@@ - apt (0.6.46.4ubuntu11) UNRELEASED; urgency=low ++apt (0.7.2ubuntu1) gutsy; urgency=low + ++ * apt-pkg/deb/dpkgpm.cc: ++ - apport integration added, this means that a apport ++ report is written on dpkg failures ++ * merged from debian/unstable, remaining changes: ++ - maintainer field changed ++ ++ ++ -- Michael Vogt Thu, 14 Jun 2007 10:38:36 +0200 ++ + apt (0.7.2) unstable; urgency=low + + * merged the debian/experimental changes back + into the debian/sid branch + * merged from Christian Perrier: + * mr.po: New Marathi translation Closes: #416806 + * zh_CN.po: Updated by Eric Pareja Closes: #416822 + * tl.po: Updated by Eric Pareja Closes: #416638 + * gl.po: Updated by Jacobo Tarrio + Closes: #412828 + * da.po: Updated by Claus Hindsgaul + Closes: #409483 + * fr.po: Remove a non-breakable space for usability + issues. Closes: #408877 + * ru.po: Updated Russian translation. Closes: #405476 + * *.po: Unfuzzy after upstream typo corrections + * buildlib/archtable: + - added support for sh3/sh4 (closes: #424870) + - added support for m32r (closes: #394096) + * buildlib/systemtable: + - added support for lpia + * configure.in: + - check systemtable for architecture mapping too + * fix error in AutocleanInterval, closes: #319339 + (thanks to Israel G. Lugo for the patch) + * add "purge" commandline argument, closes: #133421) + (thanks to Julien Danjou for the patch) + * add "purge" commandline argument, closes: #133421) + (thanks to Julien Danjou for the patch) + * fix FTBFS with gcc 4.3, closes: #417090 + (thanks to Martin Michlmayr for the patch) + * add --dsc-only option, thanks to K. Richard Pixley + * Removed the more leftover #pragma interface/implementation + closes: #306937 (thanks to Andreas Henriksson for the patch) + + -- Michael Vogt Wed, 06 Jun 2007 23:19:50 +0200 + + apt (0.7.1) experimental; urgency=low + + * ABI library name change because its build against + new glibc + * implement SourceVer() in pkgRecords + (thanks to Daniel Burrows for the patch!) + * apt-pkg/algorithm.cc: + - use clog for all debugging + - only increase the score of installed applications if they + are not obsolete + - fix resolver bug on removal triggered by weak-dependencies + with or-groups + * methods/http.cc: + - send apt version in User-Agent + * apt-pkg/deb/debrecords.cc: + - fix SHA1Hash() return value + * apt-pkg/cdrom.cc: + - only unmount if APT::CDROM::NoMount is false + * methods/cdrom.cc: + - only umount if it was mounted by the method before * po/gl.po: - - fix error translation that causes trouble to lsb_release + - fix error in translation that causes trouble to lsb_release + (LP#79165) * apt-pkg/acquire-item.cc: - - if decompression of a index fails, delete the index (LP#68202) + - if decompression of a index fails, delete the index * apt-pkg/acquire.{cc,h}: - deal better with duplicated sources.list entries (avoid double queuing of URLs) - this fixes hangs in bzip/gzip + (LP#102511) + * Fix broken use of awk in apt-key that caused removal of the wrong keys + from the keyring. Closes: #412572 * merged from Christian Perrier: * mr.po: New Marathi translation Closes: #416806 * zh_CN.po: Updated by Eric Pareja Closes: #416822 @@@ -23,124 -74,34 +89,144 @@@ issues. Closes: #408877 * ru.po: Updated Russian translation. Closes: #405476 * *.po: Unfuzzy after upstream typo corrections + * vi.po: Updated to 515t. Closes: #426976 + * eu.po: Updated to 515t. Closes: #423766 + * pt.po: 515t. Closes: #423111 + * fr.po: Updated by Christian Perrier + * Update all PO and the POT. Gives 513t2f for formerly + complete translations * apt-pkg/policy.cc: - allow multiple packages (thanks to David Foerster) - * apt-pkg/deb/dpkgpm.cc: - - apport integration added, this means that a apport - report is written on dpkg failures - -- Michael Vogt Wed, 2 May 2007 13:43:44 +0200 + -- Michael Vogt Tue, 17 Apr 2007 15:53:37 +0200 + +apt (0.6.46.4ubuntu10) feisty; urgency=low + + * apt-pkg/depcache.cc: + - added "APT::Never-MarkAuto-Section" and consider dependencies + of packages in this section manual (LP#59893) + - ensure proper permissions in the extended_state file (LP#67037) + * debian/apt.conf.ubuntu: + - added APT::Never-MarkAuto-Section "metapackages" (LP#59893) + * cmdline/apt-get.cc: + - "apt-get install foo" on a already installed package foo will + clean the automatic installed flag (LP#72007) + - do not show packages already marked for removal as auto-installed + (LP#64493) + - applied patch to (optionally) hide the auto-remove information + (thanks to Frode M. Døving) (LP#69148) + + -- Michael Vogt Wed, 14 Mar 2007 13:32:32 +0100 + +apt (0.6.46.4ubuntu9) feisty; urgency=low + + * debian/control: + - set XS-Vcs-Bzr header + - Set Ubuntu maintainer address + * apt-pkg/cdrom.cc: + - only unmount if APT::CDROM::NoMount is false + - only umount if it was mounted by the method before + * cmdline/apt-get.cc: + - fix version output in autoremove list (LP#68941) + * apt-pkg/packagemanager.cc: + - do not spin 100% cpu in FixMissing() (LP#84476) + * apt-pkg/indexfile.cc: + - fix problem overwriting APT::Acquire::Translation + * doc/examples/configure-index: + - document APT::Acquire::Translation + + -- Michael Vogt Tue, 13 Mar 2007 15:24:39 +0100 + +apt (0.6.46.4ubuntu8) feisty; urgency=low + + * fix segfault in the pkgRecords destructor + * Bump ABI version + * debian/control: + - make the libcurl3-gnutls-dev versionized (LP#86614) + + -- Michael Vogt Mon, 26 Feb 2007 14:26:33 +0100 + +apt (0.6.46.4ubuntu7) feisty; urgency=low + + * Merged the apt--mirror branch. This means that a new 'mirror' + method is available that will allow dynamic mirror updates. + The sources.list entry looks something like this: + "deb mirror://mirrors.lp.net/get_mirror feisty main restricted" + + It also supports error reporting to a configurable url for mirror + problems/failures. + * Bump ABI version + + -- Michael Vogt Tue, 6 Feb 2007 11:38:06 +0100 + +apt (0.6.46.4ubuntu6) feisty; urgency=low + + * methods/http.cc: + - send apt version in User-Agent + * apt-pkg/deb/debrecords.cc: + - fix SHA1Hash() return value + * apt-pkg/algorithms.cc: + - fix resolver bug on removal triggered by weak-dependencies + with or-groups + - fix segfault (lp: #76530) + + -- Michael Vogt Wed, 20 Dec 2006 11:04:36 +0100 + +apt (0.6.46.4ubuntu5) feisty; urgency=low + + * added apt-transport-https package to provide a optional + https transport (apt-https spec) + + -- Michael Vogt Tue, 19 Dec 2006 16:23:43 +0100 + +apt (0.6.46.4ubuntu4) feisty; urgency=low + + * apt-pkg/algorithms.cc: + - only increase the score of installed applications if they + are not obsolete + + -- Michael Vogt Mon, 18 Dec 2006 19:39:05 +0100 + apt (0.7.0) experimental; urgency=low + + * Package that contains tall the new features + * Removed all #pragma interface/implementation + * Branch that contains tall the new features: + * translated package descriptions + * task install support + * automatic dependency removal (thanks to Daniel Burrows) + * merged support for the new dpkg "Breaks" field + (thanks to Ian Jackson) + * handle network failures more gracefully on "update" + * support for unattended-upgrades (via unattended-upgrades + package) + * added apt-transport-https method + + -- Michael Vogt Fri, 12 Jan 2007 20:48:07 +0100 + +apt (0.6.46.4ubuntu3) feisty; urgency=low + + * apt-pkg/algorithm.cc: + - use clog for all debugging + * apt-pkg/depcache.cc: + - never mark Required package for autoremoval (lp: #75882) + + -- Michael Vogt Mon, 18 Dec 2006 11:56:05 +0100 + +apt (0.6.46.4ubuntu2) feisty; urgency=low + + * apt-pkg/algorithms.cc: add missing call to MarkKeep + so that dist-upgrade isn't broken by unsatisfiable Breaks. + (thanks to Ian Jackson) + + -- Michael Vogt Thu, 7 Dec 2006 23:07:24 +0100 + +apt (0.6.46.4ubuntu1) feisty; urgency=low + + * merged with debian + + -- Michael Vogt Thu, 7 Dec 2006 12:13:14 +0100 + apt (0.6.46.4-0.1) unstable; urgency=emergency * NMU @@@ -187,26 -148,6 +273,26 @@@ apt (0.6.46.3-0.1) unstable; urgency=hi -- Andreas Barth Tue, 5 Dec 2006 10:34:56 +0000 +apt (0.6.46.3ubuntu2) feisty; urgency=low + + * apt-pkg/algorithms.cc: add missing call to MarkKeep + so that dist-upgrade isn't broken by unsatisfiable Breaks. + + -- Ian Jackson Thu, 7 Dec 2006 15:46:52 +0000 + +apt (0.6.46.3ubuntu1) feisty; urgency=low + + * doc/apt-get.8.xml: + - documented autoremove, thanks to Vladimír Lapá%Gč%@ek + (lp: #62919) + * fix broken i18n in the dpkg progress reporting, thanks to + Frans Pop and Steinar Gunderson. (closes: #389261) + * po/en_GB.po: + - typo (lp: #61270) + * add apt-secure.8 to "See also" section + + -- Michael Vogt Thu, 23 Nov 2006 07:24:12 +0100 + apt (0.6.46.3) unstable; urgency=low * apt-pkg/deb/dpkgpm.cc: @@@ -214,40 -155,53 +300,53 @@@ messages * Merged from Christian Perrier bzr branch: - - ca.po: Updated to 514t - - be.po: Updated to 514t - - it.po: Updated to 514t - - hu.po: Updated to 514t - - zh_TW.po: Updated to 514t - - ar.po: Updated to 293t221u. - - ru.po: Updated to 514t. Closes: #392466 - - nb.po: Updated to 514t. Closes: #392466 - - pt.po: Updated to 514t. Closes: #393199 - - fr.po: One spelling error corrected: s/accèder/accéder - - km.po: Updated to 514t. - - ko.po: Updated to 514t. - - bg.po: Updated to 514t. - - de.po: Updated to 514t. - - en_GB.po: Updated to 514t. - - -- Michael Vogt Thu, 2 Nov 2006 11:37:58 +0100 + - ca.po: Updated to 514t + - be.po: Updated to 514t + - it.po: Updated to 514t + - hu.po: Updated to 514t + - zh_TW.po: Updated to 514t + - ar.po: Updated to 293t221u. + - ru.po: Updated to 514t. Closes: #392466 + - nb.po: Updated to 514t. Closes: #392466 + - pt.po: Updated to 514t. Closes: #393199 + - fr.po: One spelling error corrected: s/accèder/accéder + - km.po: Updated to 514t. + - ko.po: Updated to 514t. + - bg.po: Updated to 514t. + - de.po: Updated to 514t. + - en_GB.po: Updated to 514t. + + -- Michael Vogt Thu, 2 Nov 2006 11:37:58 +0100 apt (0.6.46.2) unstable; urgency=low + * debian/control: + - depend on debian-archive-keyring to offer clean upgrade path + (closes: #386800) * Merged from Christian Perrier bzr branch: - es.po: Updated to 514t. Closes: #391661 - da.po: Updated to 514t. Closes: #391424 - cs.po: Updated. Closes: #391064 - es.po: Updated to 514t. Closes: #391661 - da.po: Updated to 514t. Closes: #391424 - + -- Michael Vogt Wed, 11 Oct 2006 09:03:15 +0200 apt (0.6.46.1) unstable; urgency=low + * merged "install-recommends" branch (ABI break): + - new "--install-recommends" + - install new recommends on "upgrade" if --install-recommends is + given + - new "--fix-policy" option to install all packages with unmet + important dependencies (usefull with --install-recommends to + see what not-installed recommends are on the system) + - fix of recommended packages display (only show CandidateVersion + fix or-group handling) + * merged "install-task" branch (use with "apt-get install taskname^") * methods/gzip.cc: - deal with empty files - * Applied patch from Daniel Schepler to make apt bin-NMU able. + * Applied patch from Daniel Schepler to make apt bin-NMU able. (closes: bug#359634) * rebuild against current g++ because of: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29289 @@@ -268,46 -222,10 +367,46 @@@ apt (0.6.46) unstable; urgency=lo * debian/control: - switched to libdb4.4 for building (closes: #381019) * cmdline/apt-get.cc: - - show only the recommends/suggests for the candidate-version, not for all - versions of the package (closes: #257054) - - properly handle recommends/suggests or-groups when printing the list of - suggested/recommends packages (closes: #311619) + - fix in the TryInstallTask() code to make sure that all package + there are marked manual install (lp: #61684) + + -- Michael Vogt Thu, 28 Sep 2006 00:34:20 +0200 + +apt (0.6.45ubuntu14) edgy; urgency=low + + * cmdline/apt-get.cc: + - fix in the TryInstallTask() code to make sure that all package + there are marked manual install (lp: #61684) + + -- Michael Vogt Thu, 28 Sep 2006 00:34:20 +0200 + +apt (0.6.45ubuntu13) edgy; urgency=low + + * no-changes upload to make apt rebuild against latest g++ and + fix synaptic FTBFS (see bug: #62461 for details) + + -- Michael Vogt Tue, 26 Sep 2006 22:33:10 +0200 + +apt (0.6.45ubuntu12) edgy; urgency=low + + * apt-pkg/depcache.cc: + - fix in the sweep() code, set garbage flag for packages scheduled + for removal too + - do not change the autoFlag in MarkKeep(), this can lead to suprising + side effects + + -- Michael Vogt Thu, 21 Sep 2006 00:58:24 +0200 + +apt (0.6.45ubuntu11) edgy; urgency=low + + * removed "installtask" and change it so that tasknames can be given + with "apt-get install taskname^" + * improve the writeStateFile() code + + -- Michael Vogt Wed, 20 Sep 2006 14:14:24 +0200 + +apt (0.6.45ubuntu10) edgy; urgency=low + * methods/http.cc: - check more careful for incorrect proxy settings (closes: #378868) * methods/gzip.cc: @@@ -332,113 -250,8 +431,113 @@@ caseinsensitive (closes: #384182) - reverted MMap use in the tagfile because it does not work across pipes (closes: #383487) + * added "installtask" command + * added new ubuntu specific rewrite rule for "Original-Maintainer" - -- Michael Vogt Thu, 21 Sep 2006 10:25:03 +0200 + -- Michael Vogt Tue, 19 Sep 2006 15:07:51 +0200 + +apt (0.6.45ubuntu9) edgy; urgency=low + + * cmdline/apt-get.cc: + - if --no-remove is given, do not run the AutoRemove code + + -- Michael Vogt Wed, 13 Sep 2006 11:54:20 +0200 + +apt (0.6.45ubuntu8) edgy; urgency=low + + * apt-pkg/algorithm.cc: + - fix pkgProblemResolver.InstallProtect() to preserve the auto-install + information (lp: #59457) + * cmdline/apt-get.cc: + - fix typo in autoremove information (lp: #59420) + * install apt-mark to modify the automatically install information for + packages + + -- Michael Vogt Fri, 8 Sep 2006 20:07:22 +0200 + +apt (0.6.45ubuntu7) edgy; urgency=low + + * apt-pkg/depcache.cc: + - fix a bug in the install-recommends-section code + + -- Michael Vogt Thu, 7 Sep 2006 18:22:38 +0200 + +apt (0.6.45ubuntu6) edgy; urgency=low + + [Michael Vogt] + * cmdline/apt-get.cc: + - always show auto-removable packages and give a hint how to remove + them + * debian/apt.conf.ubuntu: + - exlucde linux-image and linux-restricted-modules from ever being + auto-removed + - added "metapackages" as the section we want to install recommends + by default + * apt-pkg/depcache.cc: + - added support to turn install-recommends selectively on/off by + section + [Ian Jackson] + * Tests pass without code changes! Except that we need this: + * Bump cache file major version to force rebuild so that Breaks + dependencies are included. + * Don't depend on or suggest any particular dpkg or dpkg-dev versions; + --auto-deconfigure is very very old and dpkg-dev's Breaks support + is more or less orthogonal. + * Initial draft of `Breaks' implementation. Appears to compile, + but as yet *completely untested*. + + -- Michael Vogt Thu, 7 Sep 2006 11:50:52 +0200 + +apt (0.6.45ubuntu5) edgy; urgency=low + + * apt-pkg/pkgcachegen.cc: + - increase the APT::Cache-Limit to deal with the increased demand due + to the translated descriptions + * apt-pkg/deb/dpkgpm.cc: + - pass "--auto-deconfigure" to dpkg on install to support the + new "breaks" in dpkg + + -- Michael Vogt Tue, 15 Aug 2006 12:06:26 +0200 + +apt (0.6.45ubuntu4) edgy; urgency=low + + * cmdline/apt-get.cc: + - fix in the new --fix-polciy code + + -- Michael Vogt Mon, 14 Aug 2006 21:08:11 +0200 + +apt (0.6.45ubuntu3) edgy; urgency=low + + * ABI break + * merged latest apt--install-recommends (closes: #559000) + * added "--fix-policy" option to can be used as "--fix-broken" and + will install missing weak depends (recommends, and/or suggests + depending on the settings) + * merged the apt--ddtp branch + + -- Michael Vogt Fri, 11 Aug 2006 12:53:23 +0200 + +apt (0.6.45ubuntu2) edgy; urgency=low + + * debian/control: + - switched to libdb4.4 for building (closes: #381019) + * cmdline/apt-get.cc: + - show only the recommends/suggests for the candidate-version, not for all + versions of the package (closes: #257054) + - properly handle recommends/suggests or-groups when printing the list of + suggested/recommends packages (closes: #311619) + * merged "apt--install-recommends" branch: + - added "{no-}install-recommends" commandline option + - added APT::Install-{Recommends,Suggests} option + - currently Install-Recommends defaults to "False" + + -- Michael Vogt Wed, 9 Aug 2006 23:38:46 +0200 + +apt (0.6.45ubuntu1) edgy; urgency=low + + * merged with debian/unstable + + -- Michael Vogt Tue, 1 Aug 2006 15:43:22 +0200 apt (0.6.45) unstable; urgency=low @@@ -476,57 -289,42 +575,57 @@@ * dz.po: New Dzongkha translation: 512t * ro.po: Updated to 512t * eu.po: Updated - * eu.po: Updated - * fix apt-get dist-upgrade - * fix warning if no /var/lib/apt/extended_states is present - * don't download Translations for deb-src sources.list lines - * apt-pkg/tagfile.cc: - - support not-mmapable files again - -- Michael Vogt Tue, 25 Jul 2006 11:55:22 +0200 + -- Michael Vogt Thu, 27 Jul 2006 00:52:05 +0200 -apt (0.6.44.2exp1) experimental; urgency=low +apt (0.6.44.2ubuntu4) edgy; urgency=low - * added support for i18n of the package descriptions - * added support for aptitude like auto-install tracking (a HUGE - HUGE thanks to Daniel Burrows who made this possible) - * synced with the http://people.debian.org/~mvo/bzr/apt/debian-sid branch - * build from http://people.debian.org/~mvo/bzr/apt/debian-experimental + * Make apt-get dselect-upgrade happy again - -- Michael Vogt Mon, 3 Jul 2006 21:50:31 +0200 + -- Michael Vogt Fri, 21 Jul 2006 11:03:02 +0200 -apt (0.6.44.2) unstable; urgency=low +apt (0.6.44.2ubuntu3) edgy; urgency=low - * apt-pkg/depcache.cc: - - added Debug::pkgDepCache::AutoInstall (thanks to infinity) - * apt-pkg/acquire-item.cc: - - fix missing chmod() in the new aquire code - (thanks to Bastian Blank, Closes: #367425) - * merged from - http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main: - * sk.po: Completed to 512t - * eu.po: Completed to 512t - * fr.po: Completed to 512t - * sv.po: Completed to 512t - * Update all PO and the POT. Gives 506t6f for formerly - complete translations + * Close extended_states file after writing it. + + -- Colin Watson Tue, 18 Jul 2006 00:12:13 +0100 + +apt (0.6.44.2ubuntu2) edgy; urgency=low + + * create a empty extended_states file if none exists already - -- Michael Vogt Wed, 14 Jun 2006 12:00:57 +0200 + -- Michael Vogt Tue, 4 Jul 2006 09:23:03 +0200 + +apt (0.6.44.2ubuntu1) edgy; urgency=low + + * merged with debian/unstable + * merged the "auto-mark" branch to support aptitude like + marking of automatically installed dependencies and added + "apt-get remove --auto-remove" to remove unused auto-installed + packages again + * changed library version from 3.11 to 3.50 to make it clearly + different from the debian version (we are ABI incompatible because + of the auto-mark patch) + + -- Michael Vogt Mon, 3 Jul 2006 18:30:46 +0200 + +apt (0.6.44.2) unstable; urgency=low + + * apt-pkg/depcache.cc: + - added Debug::pkgDepCache::AutoInstall (thanks to infinity) + * apt-pkg/acquire-item.cc: + - fix missing chmod() in the new aquire code + (thanks to Bastian Blank, Closes: #367425) + * merged from + http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main: + * sk.po: Completed to 512t + * eu.po: Completed to 512t + * fr.po: Completed to 512t + * sv.po: Completed to 512t + * Update all PO and the POT. Gives 506t6f for formerly + complete translations + + -- Michael Vogt Wed, 14 Jun 2006 12:00:57 +0200 apt (0.6.44.1-0.1) unstable; urgency=low @@@ -538,22 -336,32 +637,32 @@@ apt (0.6.44.1) unstable; urgency=low + * apt-pkg/acquire-item.cc: + - fix reversed logic of the "Acquire::PDiffs" option * merged from http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main: - po/LINGUAS: added "bg" Closes: #360262 - po/gl.po: Galician translation update. Closes: #366849 - po/hu.po: Hungarian translation update. Closes: #365448 - po/cs.po: Czech translation updated. Closes: #367244 + * apt-pkg/contrib/sha256.cc: + - applied patch to fix unaligned access problem. Closes: #367417 + (thanks to David Mosberger) -- Michael Vogt Tue, 16 May 2006 21:51:16 +0200 apt (0.6.44) unstable; urgency=low * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large + * apt-pkg/contrib/sha256.{cc,h},hashes.{cc,h}: support for sha256 + (thanks to Anthony Towns) + * ftparchive/cachedb.{cc,h},writer.{cc,h}: optimizations + (thanks to Anthony Towns) + * apt pdiff support from experimental merged + * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman) * apt-pkg/deb/dpkgpm.cc: - wording fixes (thanks to Matt Zimmerman) - - fix error in dpkg interaction (closes: #364513, - thanks to Martin Dickopp) + - fix error in dpkg interaction (closes: #364513, thanks to Martin Dickopp) * apt-pkg/tagfile.{cc,h}: - use MMap to read the entries (thanks to Zephaniah E. Hull for the patch) Closes: #350025 @@@ -578,26 -386,6 +687,26 @@@ -- Michael Vogt Mon, 8 May 2006 22:28:53 +0200 +apt (0.6.43.3ubuntu3) dapper; urgency=low + + * methods/http.cc: + - fix the user-agent string + + -- Michael Vogt Fri, 26 May 2006 18:09:32 +0200 + +apt (0.6.43.3ubuntu2) dapper; urgency=low + + * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman) + + -- Michael Vogt Tue, 18 Apr 2006 13:24:40 +0200 + +apt (0.6.43.3ubuntu1) dapper; urgency=low + + * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large in + the status-fd (ubuntu #28954) + + -- Michael Vogt Tue, 28 Mar 2006 20:34:46 +0200 + apt (0.6.43.3) unstable; urgency=low * Merge bubulle@debian.org--2005/apt--main--0 up to patch-186: @@@ -607,46 -395,16 +716,46 @@@ * pl.po: Completed to 512t. Closes: #349514 * sk.po: Completed to 512t. Closes: #349474 * gl.po: Completed to 512 strings Closes: #349407 + * vi.po: Completed to 512 strings * sv.po: Completed to 512 strings Closes: #349210 * ru.po: Completed to 512 strings Closes: #349154 * da.po: Completed to 512 strings Closes: #349084 * fr.po: Completed to 512 strings + * LINGUAS: Add Welsh + * *.po: Updated from sources (512 strings) * vi.po: Completed to 511 strings Closes: #348968 - * zh_CN.po: Completed to 512t. Closes: #353936 - * it.po: Completed to 512t. Closes: #352803 - * pt_BR.po: Completed to 512t. Closes: #352419 + * apt-pkg/deb/deblistparser.cc: + - don't explode on a DepCompareOp in a Provides line, but warn about + it and ignore it otherwise (thanks to James Troup for reporting it) + * cmdline/apt-get.cc: + - don't lock the lists directory in DoInstall, breaks --print-uri + (thanks to James Troup for reporting it) + * debian/apt.dirs: create /etc/apt/sources.list.d + * make apt-cache madison work without deb-src entries (#352583) + * 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 Wed, 22 Feb 2006 10:13:04 +0100 + +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 + * eu.po: Completed to 512t. Closes: #350483 + * ja.po: Completed to 512t. Closes: #349806 + * pl.po: Completed to 512t. Closes: #349514 + * sk.po: Completed to 512t. Closes: #349474 + * gl.po: Completed to 512 strings Closes: #349407 + * vi.po: Completed to 512 strings + * sv.po: Completed to 512 strings Closes: #349210 + * ru.po: Completed to 512 strings Closes: #349154 + * da.po: Completed to 512 strings Closes: #349084 + * fr.po: Completed to 512 strings * LINGUAS: Add Welsh * *.po: Updated from sources (512 strings) + * vi.po: Completed to 511 strings Closes: #348968 * apt-pkg/deb/deblistparser.cc: - don't explode on a DepCompareOp in a Provides line, but warn about it and ignore it otherwise (thanks to James Troup for reporting it) @@@ -657,10 -415,8 +766,10 @@@ * make apt-cache madison work without deb-src entries (#352583) * 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 Wed, 22 Feb 2006 10:13:04 +0100 + -- Michael Vogt Mon, 20 Feb 2006 22:27:48 +0100 apt (0.6.43.2) unstable; urgency=low @@@ -685,26 -441,8 +794,26 @@@ -- Michael Vogt Thu, 19 Jan 2006 00:06:33 +0100 -apt (0.6.43.1) unstable; urgency=low +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: * fr.po: Completed to 510 strings * it.po: Completed to 510t @@@ -726,19 -464,6 +835,19 @@@ -- Michael Vogt Fri, 6 Jan 2006 01:17:08 +0100 +apt (0.6.43ubuntu2) dapper; urgency=low + + * merged some missing bits that wheren't merged by baz in the previous + upload (*grumble*) + + -- Michael Vogt Thu, 8 Dec 2005 18:35:58 +0100 + +apt (0.6.43ubuntu1) dapper; urgency=low + + * merged with debian + + -- Michael Vogt Fri, 25 Nov 2005 11:36:29 +0100 + apt (0.6.43) unstable; urgency=medium * Merge bubulle@debian.org--2005/apt--main--0 up to patch-132: @@@ -759,22 -484,6 +868,22 @@@ -- Michael Vogt Tue, 29 Nov 2005 00:17:07 +0100 +apt (0.6.42.3ubuntu2) dapper; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-131: + * zh_CN.po: Completed to 507 strings(Closes: #338267) + * gl.po: Completed to 510 strings (Closes: #338356) + * added support for "/etc/apt/sources.list.d" directory + (closes: #66325) + + -- Michael Vogt Mon, 14 Nov 2005 15:30:12 +0100 + +apt (0.6.42.3ubuntu1) dapper; urgency=low + + * synced with debian + + -- Michael Vogt Thu, 10 Nov 2005 05:05:56 +0100 + apt (0.6.42.3) unstable; urgency=low * Merge bubulle@debian.org--2005/apt--main--0 up to patch-129: @@@ -822,13 -531,13 +931,13 @@@ apt (0.6.42) unstable; urgency=lo - unmount the cdrom when apt failed to locate any package files * allow cdrom failures and fallback to other sources in that case (closes: #44135) - * better error text when dpkg-source fails + * better error text when dpkg-source fails * Merge bubulle@debian.org--2005/apt--main--0 up to patch-115: - patch-99: Added Galician translation - patch-100: Completed Danish translation (Closes: #325686) - patch-104: French translation completed - patch-109: Italian translation completed - - patch-112: Swedish translation update + - patch-112: Swedish translation update - patch-115: Basque translation completed (Closes: #333299) * applied french man-page update (thanks to Philippe Batailler) (closes: #316638, #327456) @@@ -842,9 -551,9 +951,9 @@@ * apt-pkg/contrib/md5.cc: - fix a alignment problem on sparc64 that gives random bus errors (thanks to Fabbione for providing a test-case) - * init the default ScreenWidth to 79 columns by default + * init the default ScreenWidth to 79 columns by default (Closes: #324921) - * cmdline/apt-cdrom.cc: + * cmdline/apt-cdrom.cc: - fix some missing gettext() calls (closes: #334539) * doc/apt-cache.8.xml: fix typo (closes: #334714) @@@ -855,8 -564,8 +964,8 @@@ apt (0.6.41) unstable; urgency=lo * 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 - * improved the network timeout handling, if a index file from a - sources.list times out or EAI_AGAIN is returned from getaddrinfo, + * 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 @@@ -864,10 -573,10 +973,10 @@@ * 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 + argument to apt-key which was previously not documented (Closes: #322120) * Andreas Pakulat: - - added example apt-ftparchive.conf file to doc/examples + - 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) @@@ -876,84 -585,10 +985,84 @@@ * 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() + * Reread status configuration on debSystem::Initialize() (needed for apt-proxy, thanks to Otavio for this patch) - + -- Michael Vogt Mon, 5 Sep 2005 22:59:03 +0200 + +apt (0.6.40.1ubuntu8) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-62: + - fix for a bad memory/file leak in the mmap code (ubuntu #15603) + * po/de.po, po/fr.po: + - updated the translations + * po/makefile: + - create a single pot file in each domain dir to make rosetta happy + + -- Michael Vogt Wed, 28 Sep 2005 10:16:06 +0200 + +apt (0.6.40.1ubuntu7) breezy; urgency=low + + * updated the pot/po files , no code changes + + -- Michael Vogt Tue, 27 Sep 2005 18:38:16 +0200 + +apt (0.6.40.1ubuntu6) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-56: + - make it possible for apt to handle a failed MediaChange event and + fall back to other sources (ubuntu #13713) + + -- Michael Vogt Tue, 13 Sep 2005 22:09:50 +0200 + +apt (0.6.40.1ubuntu5) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-{50,51}. + This adds media-change reporting to the apt status-fd (ubuntu #15213) + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-55: + apt-pkg/cdrom.cc: + - unmount the cdrom when apt failed to locate any package files + + -- Michael Vogt Mon, 12 Sep 2005 15:44:26 +0200 + +apt (0.6.40.1ubuntu4) breezy; urgency=low + + * debian/apt.cron.daily: + - fix a embarrassing typo + + -- Michael Vogt Wed, 7 Sep 2005 10:10:37 +0200 + +apt (0.6.40.1ubuntu3) breezy; urgency=low + + * debian/apt.cron.daily: + - use the ctime as well when figuring what packages need to + be removed. This fixes the problem that packages copied with + "cp -a" (e.g. from the installer) have old mtimes (ubuntu #14504) + + -- Michael Vogt Tue, 6 Sep 2005 18:30:46 +0200 + +apt (0.6.40.1ubuntu2) breezy; 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 + * 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) + * methods/connect.cc: + - send failure reason for EAI_AGAIN (TmpResolveFailure) to acuire-item + * apt-pkg/acquire-item.cc: + - fail early if a FailReason is TmpResolveFailure (avoids hangs during + the install when no network is available) + * merged michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0 + + -- Michael Vogt Tue, 23 Aug 2005 19:44:55 +0200 + +apt (0.6.40.1ubuntu1) breezy; urgency=low + + * Synchronize with Debian + + -- Michael Vogt Fri, 5 Aug 2005 14:20:56 +0200 apt (0.6.40.1) unstable; urgency=low @@@ -964,12 -599,6 +1073,12 @@@ -- Michael Vogt Fri, 5 Aug 2005 13:24:58 +0200 +apt (0.6.40ubuntu1) breezy; urgency=low + + * Synchronize with Debian + + -- Matt Zimmerman Thu, 4 Aug 2005 15:53:22 -0700 + apt (0.6.40) unstable; urgency=low * Patch from Jordi Mallach to mark some additional strings for translation @@@ -985,39 -614,6 +1094,39 @@@ -- Matt Zimmerman Thu, 28 Jul 2005 11:57:32 -0700 +apt (0.6.39ubuntu4) breezy; urgency=low + + * Fix keyring paths in apt-key, apt.postinst (I swear I remember doing this + before...) + + -- Matt Zimmerman Wed, 29 Jun 2005 08:39:17 -0700 + +apt (0.6.39ubuntu3) breezy; urgency=low + + * Fix keyring locations for Ubuntu in apt-key too. + + -- Colin Watson Wed, 29 Jun 2005 14:45:36 +0100 + +apt (0.6.39ubuntu2) breezy; urgency=low + + * Install ubuntu-archive.gpg rather than debian-archive.gpg as + /etc/apt/trusted.gpg. + + -- Colin Watson Wed, 29 Jun 2005 11:53:34 +0100 + +apt (0.6.39ubuntu1) breezy; urgency=low + + * Michael Vogt + - Change debian/bugscript to use #!/bin/bash (Closes: #313402) + - Fix a incorrect example in the man-page (closes: #282918) + - Support architecture-specific extra overrides + (closes: #225947). Thanks to Anthony Towns for idea and + the patch, thanks to Colin Watson for testing it. + - better report network timeouts from the methods to the acuire code, + only timeout once per sources.list line + + -- Matt Zimmerman Tue, 28 Jun 2005 11:52:24 -0700 + apt (0.6.39) unstable; urgency=low * Welsh translation update: daf@muse.19inch.net--2005/apt--main--0--patch-6 @@@ -1028,14 -624,7 +1137,14 @@@ * Update priority of apt-utils to important, to match the override file * Install only one keyring on each branch (Closes: #316119) - -- Matt Zimmerman Tue, 28 Jun 2005 11:51:09 -0700 + -- Matt Zimmerman Tue, 28 Jun 2005 11:35:21 -0700 + +apt (0.6.38ubuntu1) breezy; urgency=low + + * First release from Ubuntu branch + * Merge with --main--0, switch back to Ubuntu keyring + + -- Matt Zimmerman Sat, 25 Jun 2005 16:52:41 -0700 apt (0.6.38) unstable; urgency=low diff --combined debian/control index 502edd0c6,5686926d4..7dc0b377f --- a/debian/control +++ b/debian/control @@@ -1,22 -1,20 +1,22 @@@ Source: apt Section: admin Priority: important - Maintainer: Michael Vogt -Maintainer: APT Development Team ++Maintainer: Ubuntu Core Developers +XSBC-Original-Maintainer: APT Development Team Uploaders: Jason Gunthorpe , Adam Heath , Matt Zimmerman , Michael Vogt - Standards-Version: 3.6.2.2 + Standards-Version: 3.7.2.2 Build-Depends: debhelper (>= 5.0), libdb4.4-dev, gettext (>= 0.12), libcurl3-gnutls-dev (>= 7.15.5) Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1) -XS-Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/ +XS-Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-core-dev/apt/ubuntu Package: apt Architecture: any -Depends: ${shlibs:Depends}, debian-archive-keyring +Depends: ${shlibs:Depends} Priority: important Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7) Provides: ${libapt-pkg:provides} -Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2 +Recommends: ubuntu-keyring +Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2, gnupg Section: admin Description: Advanced front-end for dpkg This is Debian's next generation front-end for the dpkg package manager. diff --combined debian/rules index 3defd3c29,3ebecfba4..daf15fe1b --- a/debian/rules +++ b/debian/rules @@@ -210,8 -210,8 +210,8 @@@ apt: build debian/shlibs.loca cp debian/bugscript debian/$@/usr/share/bug/apt/script - cp share/debian-archive.gpg debian/$@/usr/share/$@ + cp share/ubuntu-archive.gpg debian/$@/usr/share/$@ - cp debian/apt.conf.ubuntu debian/$@/etc/apt/apt.conf.d/01ubuntu + cp debian/apt.conf.autoremove debian/$@/etc/apt/apt.conf.d/01autoremove # head -n 500 ChangeLog > debian/ChangeLog # make rosetta happy and remove pot files in po/ (but leave stuff @@@ -219,10 -219,6 +219,10 @@@ rm -f build/po/*.pot rm -f po/*.pot + # move the mirror failure script in place + mv debian/$@/usr/bin/apt-report-mirror-failure \ + debian/$@/usr/lib/apt/apt-report-mirror-failure \ + dh_installexamples -p$@ $(BLD)/docs/examples/* dh_installman -p$@ dh_installcron -p$@ diff --combined doc/examples/configure-index index baa8b9a5c,d0aad1e3d..e5c4551a1 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@@ -97,12 -97,9 +97,12 @@@ AP // consider Recommends, Suggests as important dependencies that should // be installed by default - APT::Install-Recommends "false"; - APT::Install-Suggests "false"; + Install-Recommends "false"; + Install-Suggests "false"; + // install recommends automatically for packages in this section + Install-Recommends-Section "metapackages"; + // consider dependencies of packages in this section manual Never-MarkAuto-Section "metapackages"; @@@ -119,6 -116,8 +119,8 @@@ Acquir Queue-Mode "host"; // host|access Retries "0"; Source-Symlinks "true"; + + PDiffs "true"; // try to get the IndexFile diffs // HTTP method configuration http @@@ -187,20 -186,6 +189,20 @@@ { Options {"--ignore-time-conflict";} // not very usefull on a normal system }; + + mirror + { + RefreshInterval "360"; // refresh interval in minutes + MaxAge "90"; // max age for a mirror file in days before + // it gets deleted + // mirror failure reporting script + ProblemReporting "/usr/lib/apt/apt-report-mirror-failure"; + // mirror failure reporting url + ReportFailures "http://example.com/mirror-failure"; + }; + + // translations can be set here to "none", "environment" or "$locale" + Translation "none"; }; // Directory layout @@@ -214,7 -199,6 +216,7 @@@ Dir "/ userstatus "status.user"; status "/var/lib/dpkg/status"; cdroms "cdroms.list"; + mirrors "mirrors/"; }; // Location of the cache dir @@@ -305,9 -289,9 +307,9 @@@ Debu Acquire::Http "false"; // Show http command traffic Acquire::Https "false"; // Show https debug Acquire::gpgv "false"; // Show the gpgv traffic + Acquire::Mirror "false"; // Show debugging of the mirror method aptcdrom "false"; // Show found package files IdentCdrom "false"; - } /* Whatever you do, do not use this configuration file!! Take out ONLY diff --combined methods/http.h index 5eac11401,a6191e501..a47cd961c --- a/methods/http.h +++ b/methods/http.h @@@ -13,7 -13,7 +13,7 @@@ #define MAXLEN 360 -#include + using std::cout; using std::endl; @@@ -134,6 -134,7 +134,6 @@@ class HttpMethod : public pkgAcqMetho bool ServerDie(ServerState *Srv); int DealWithHeaders(FetchResult &Res,ServerState *Srv); - virtual bool Fetch(FetchItem *); virtual bool Configuration(string Message); // In the event of a fatal signal this file will be closed and timestamped. @@@ -141,9 -142,6 +141,9 @@@ static int FailFd; static time_t FailTime; static void SigTerm(int); + + protected: + virtual bool Fetch(FetchItem *); public: friend class ServerState; @@@ -160,5 -158,4 +160,4 @@@ }; }; - #endif diff --combined methods/makefile index 610bd5b49,f178cbbea..83bd8c7c9 --- a/methods/makefile +++ b/methods/makefile @@@ -7,7 -7,7 +7,7 @@@ include ../buildlib/defaults.ma BIN := $(BIN)/methods # FIXME.. - LIB_APT_PKG_MAJOR = 3.53 + LIB_APT_PKG_MAJOR = 4.4 APT_DOMAIN := libapt-pkg$(LIB_APT_PKG_MAJOR) # The file method @@@ -49,16 -49,16 +49,23 @@@ include $(PROGRAM_H PROGRAM=http SLIBS = -lapt-pkg $(SOCKETLIBS) LIB_MAKES = apt-pkg/makefile -SOURCE = http.cc rfc2553emu.cc connect.cc +SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc +include $(PROGRAM_H) + +# The https method +PROGRAM=https +SLIBS = -lapt-pkg -lcurl +LIB_MAKES = apt-pkg/makefile +SOURCE = https.cc include $(PROGRAM_H) + # The https method + PROGRAM=https + SLIBS = -lapt-pkg -lcurl + LIB_MAKES = apt-pkg/makefile + SOURCE = https.cc + include $(PROGRAM_H) + # The ftp method PROGRAM=ftp SLIBS = -lapt-pkg $(SOCKETLIBS) @@@ -66,6 -66,13 +73,13 @@@ LIB_MAKES = apt-pkg/makefil SOURCE = ftp.cc rfc2553emu.cc connect.cc include $(PROGRAM_H) + # The rred method + PROGRAM=rred + SLIBS = -lapt-pkg $(SOCKETLIBS) + LIB_MAKES = apt-pkg/makefile + SOURCE = rred.cc + include $(PROGRAM_H) + # The rsh method PROGRAM=rsh SLIBS = -lapt-pkg @@@ -73,13 -80,6 +87,13 @@@ LIB_MAKES = apt-pkg/makefil SOURCE = rsh.cc include $(PROGRAM_H) +# The mirror method +PROGRAM=mirror +SLIBS = -lapt-pkg $(SOCKETLIBS) +LIB_MAKES = apt-pkg/makefile +SOURCE = mirror.cc http.cc rfc2553emu.cc connect.cc +include $(PROGRAM_H) + # SSH and vzip2 method symlink binary: $(BIN)/ssh $(BIN)/bzip2 veryclean: clean-$(BIN)/ssh clean-$(BIN)/bzip2 diff --combined po/apt-all.pot index addf713f8,a7185fcf3..e19032f10 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@@ -7,7 -7,7 +7,7 @@@ msgid " msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2006-10-02 15:46+0200\n" -"POT-Creation-Date: 2007-06-08 23:11+0200\n" ++"POT-Creation-Date: 2007-04-27 15:16+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@@ -15,145 -15,153 +15,145 @@@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: cmdline/apt-cache.cc:143 +#: cmdline/apt-cache.cc:135 #, c-format msgid "Package %s version %s has an unmet dep:\n" msgstr "" -#: cmdline/apt-cache.cc:183 cmdline/apt-cache.cc:552 cmdline/apt-cache.cc:640 -#: cmdline/apt-cache.cc:796 cmdline/apt-cache.cc:1018 -#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570 +#: cmdline/apt-cache.cc:175 cmdline/apt-cache.cc:527 cmdline/apt-cache.cc:615 +#: cmdline/apt-cache.cc:771 cmdline/apt-cache.cc:989 cmdline/apt-cache.cc:1357 +#: cmdline/apt-cache.cc:1508 #, c-format msgid "Unable to locate package %s" msgstr "" -#: cmdline/apt-cache.cc:247 +#: cmdline/apt-cache.cc:232 msgid "Total package names : " msgstr "" -#: cmdline/apt-cache.cc:287 +#: cmdline/apt-cache.cc:272 msgid " Normal packages: " msgstr "" -#: cmdline/apt-cache.cc:288 +#: cmdline/apt-cache.cc:273 msgid " Pure virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:289 +#: cmdline/apt-cache.cc:274 msgid " Single virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:290 +#: cmdline/apt-cache.cc:275 msgid " Mixed virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:291 +#: cmdline/apt-cache.cc:276 msgid " Missing: " msgstr "" -#: cmdline/apt-cache.cc:293 +#: cmdline/apt-cache.cc:278 msgid "Total distinct versions: " msgstr "" -#: cmdline/apt-cache.cc:295 -msgid "Total Distinct Descriptions: " -msgstr "" - -#: cmdline/apt-cache.cc:297 +#: cmdline/apt-cache.cc:280 msgid "Total dependencies: " msgstr "" -#: cmdline/apt-cache.cc:300 +#: cmdline/apt-cache.cc:283 msgid "Total ver/file relations: " msgstr "" -#: cmdline/apt-cache.cc:302 -msgid "Total Desc/File relations: " -msgstr "" - -#: cmdline/apt-cache.cc:304 +#: cmdline/apt-cache.cc:285 msgid "Total Provides mappings: " msgstr "" -#: cmdline/apt-cache.cc:316 +#: cmdline/apt-cache.cc:297 msgid "Total globbed strings: " msgstr "" -#: cmdline/apt-cache.cc:330 +#: cmdline/apt-cache.cc:311 msgid "Total dependency version space: " msgstr "" -#: cmdline/apt-cache.cc:335 +#: cmdline/apt-cache.cc:316 msgid "Total slack space: " msgstr "" -#: cmdline/apt-cache.cc:343 +#: cmdline/apt-cache.cc:324 msgid "Total space accounted for: " msgstr "" -#: cmdline/apt-cache.cc:471 cmdline/apt-cache.cc:1218 +#: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189 #, c-format msgid "Package file %s is out of sync." msgstr "" -#: cmdline/apt-cache.cc:1293 +#: cmdline/apt-cache.cc:1231 msgid "You must give exactly one pattern" msgstr "" -#: cmdline/apt-cache.cc:1447 +#: cmdline/apt-cache.cc:1385 msgid "No packages found" msgstr "" -#: cmdline/apt-cache.cc:1524 +#: cmdline/apt-cache.cc:1462 msgid "Package files:" msgstr "" -#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617 +#: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555 msgid "Cache is out of sync, can't x-ref a package file" msgstr "" -#: cmdline/apt-cache.cc:1532 +#: cmdline/apt-cache.cc:1470 #, c-format msgid "%4i %s\n" msgstr "" #. Show any packages have explicit pins -#: cmdline/apt-cache.cc:1544 +#: cmdline/apt-cache.cc:1482 msgid "Pinned packages:" msgstr "" -#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597 +#: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535 msgid "(not found)" msgstr "" #. Installed version -#: cmdline/apt-cache.cc:1577 +#: cmdline/apt-cache.cc:1515 msgid " Installed: " msgstr "" -#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587 +#: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525 msgid "(none)" msgstr "" #. Candidate Version -#: cmdline/apt-cache.cc:1584 +#: cmdline/apt-cache.cc:1522 msgid " Candidate: " msgstr "" -#: cmdline/apt-cache.cc:1594 +#: cmdline/apt-cache.cc:1532 msgid " Package pin: " msgstr "" #. Show the priority tables -#: cmdline/apt-cache.cc:1603 +#: cmdline/apt-cache.cc:1541 msgid " Version table:" msgstr "" -#: cmdline/apt-cache.cc:1618 +#: cmdline/apt-cache.cc:1556 #, c-format msgid " %4i %s\n" msgstr "" -#: cmdline/apt-cache.cc:1714 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70 -#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:551 -#: cmdline/apt-get.cc:2573 cmdline/apt-sortpkgs.cc:144 +#: 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:2387 cmdline/apt-sortpkgs.cc:144 #, c-format msgid "%s %s for %s %s compiled on %s %s\n" msgstr "" -#: cmdline/apt-cache.cc:1721 +#: cmdline/apt-cache.cc:1659 msgid "" "Usage: apt-cache [options] command\n" " apt-cache [options] add file1 [file2 ...]\n" @@@ -243,7 -251,7 +243,8 @@@ 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:819 ++#: apt-pkg/pkgcachegen.cc:815 #, c-format msgid "Unable to write to %s" msgstr "" @@@ -252,31 -260,31 +253,31 @@@ msgid "Cannot get debconf version. Is debconf installed?" msgstr "" -#: ftparchive/apt-ftparchive.cc:168 ftparchive/apt-ftparchive.cc:342 +#: ftparchive/apt-ftparchive.cc:167 ftparchive/apt-ftparchive.cc:341 msgid "Package extension list is too long" msgstr "" -#: ftparchive/apt-ftparchive.cc:170 ftparchive/apt-ftparchive.cc:184 -#: ftparchive/apt-ftparchive.cc:207 ftparchive/apt-ftparchive.cc:257 -#: ftparchive/apt-ftparchive.cc:271 ftparchive/apt-ftparchive.cc:293 +#: ftparchive/apt-ftparchive.cc:169 ftparchive/apt-ftparchive.cc:183 +#: ftparchive/apt-ftparchive.cc:206 ftparchive/apt-ftparchive.cc:256 +#: ftparchive/apt-ftparchive.cc:270 ftparchive/apt-ftparchive.cc:292 #, c-format msgid "Error processing directory %s" msgstr "" -#: ftparchive/apt-ftparchive.cc:255 +#: ftparchive/apt-ftparchive.cc:254 msgid "Source extension list is too long" msgstr "" -#: ftparchive/apt-ftparchive.cc:372 +#: ftparchive/apt-ftparchive.cc:371 msgid "Error writing header to contents file" msgstr "" -#: ftparchive/apt-ftparchive.cc:402 +#: ftparchive/apt-ftparchive.cc:401 #, c-format msgid "Error processing contents %s" msgstr "" -#: ftparchive/apt-ftparchive.cc:557 +#: ftparchive/apt-ftparchive.cc:556 msgid "" "Usage: apt-ftparchive [options] command\n" "Commands: packages binarypath [overridefile [pathprefix]]\n" @@@ -318,11 -326,11 +319,11 @@@ " -o=? Set an arbitrary configuration option" msgstr "" -#: ftparchive/apt-ftparchive.cc:763 +#: ftparchive/apt-ftparchive.cc:762 msgid "No selections matched" msgstr "" -#: ftparchive/apt-ftparchive.cc:836 +#: ftparchive/apt-ftparchive.cc:835 #, c-format msgid "Some files are missing in the package file group `%s'" msgstr "" @@@ -542,221 -550,221 +543,221 @@@ msgstr " msgid "Failed to rename %s to %s" msgstr "" -#: cmdline/apt-get.cc:121 +#: cmdline/apt-get.cc:120 msgid "Y" msgstr "" -#: cmdline/apt-get.cc:143 cmdline/apt-get.cc:1659 +#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1506 #, c-format msgid "Regex compilation error - %s" msgstr "" -#: cmdline/apt-get.cc:238 +#: cmdline/apt-get.cc:237 msgid "The following packages have unmet dependencies:" msgstr "" -#: cmdline/apt-get.cc:328 +#: cmdline/apt-get.cc:327 #, c-format msgid "but %s is installed" msgstr "" -#: cmdline/apt-get.cc:330 +#: cmdline/apt-get.cc:329 #, c-format msgid "but %s is to be installed" msgstr "" -#: cmdline/apt-get.cc:337 +#: cmdline/apt-get.cc:336 msgid "but it is not installable" msgstr "" -#: cmdline/apt-get.cc:339 +#: cmdline/apt-get.cc:338 msgid "but it is a virtual package" msgstr "" -#: cmdline/apt-get.cc:342 +#: cmdline/apt-get.cc:341 msgid "but it is not installed" msgstr "" -#: cmdline/apt-get.cc:342 +#: cmdline/apt-get.cc:341 msgid "but it is not going to be installed" msgstr "" -#: cmdline/apt-get.cc:347 +#: cmdline/apt-get.cc:346 msgid " or" msgstr "" -#: cmdline/apt-get.cc:376 +#: cmdline/apt-get.cc:375 msgid "The following NEW packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:402 +#: cmdline/apt-get.cc:401 msgid "The following packages will be REMOVED:" msgstr "" -#: cmdline/apt-get.cc:424 +#: cmdline/apt-get.cc:423 msgid "The following packages have been kept back:" msgstr "" -#: cmdline/apt-get.cc:445 +#: cmdline/apt-get.cc:444 msgid "The following packages will be upgraded:" msgstr "" -#: cmdline/apt-get.cc:466 +#: cmdline/apt-get.cc:465 msgid "The following packages will be DOWNGRADED:" msgstr "" -#: cmdline/apt-get.cc:486 +#: cmdline/apt-get.cc:485 msgid "The following held packages will be changed:" msgstr "" -#: cmdline/apt-get.cc:539 +#: cmdline/apt-get.cc:538 #, c-format msgid "%s (due to %s) " msgstr "" -#: cmdline/apt-get.cc:547 +#: cmdline/apt-get.cc:546 msgid "" "WARNING: The following essential packages will be removed.\n" "This should NOT be done unless you know exactly what you are doing!" msgstr "" -#: cmdline/apt-get.cc:578 +#: cmdline/apt-get.cc:577 #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "" -#: cmdline/apt-get.cc:582 +#: cmdline/apt-get.cc:581 #, c-format msgid "%lu reinstalled, " msgstr "" -#: cmdline/apt-get.cc:584 +#: cmdline/apt-get.cc:583 #, c-format msgid "%lu downgraded, " msgstr "" -#: cmdline/apt-get.cc:586 +#: cmdline/apt-get.cc:585 #, c-format msgid "%lu to remove and %lu not upgraded.\n" msgstr "" -#: cmdline/apt-get.cc:590 +#: cmdline/apt-get.cc:589 #, c-format msgid "%lu not fully installed or removed.\n" msgstr "" -#: cmdline/apt-get.cc:664 +#: cmdline/apt-get.cc:649 msgid "Correcting dependencies..." msgstr "" -#: cmdline/apt-get.cc:667 +#: cmdline/apt-get.cc:652 msgid " failed." msgstr "" -#: cmdline/apt-get.cc:670 +#: cmdline/apt-get.cc:655 msgid "Unable to correct dependencies" msgstr "" -#: cmdline/apt-get.cc:673 +#: cmdline/apt-get.cc:658 msgid "Unable to minimize the upgrade set" msgstr "" -#: cmdline/apt-get.cc:675 +#: cmdline/apt-get.cc:660 msgid " Done" msgstr "" -#: cmdline/apt-get.cc:679 +#: cmdline/apt-get.cc:664 msgid "You might want to run `apt-get -f install' to correct these." msgstr "" -#: cmdline/apt-get.cc:682 +#: cmdline/apt-get.cc:667 msgid "Unmet dependencies. Try using -f." msgstr "" -#: cmdline/apt-get.cc:704 +#: cmdline/apt-get.cc:689 msgid "WARNING: The following packages cannot be authenticated!" msgstr "" -#: cmdline/apt-get.cc:708 +#: cmdline/apt-get.cc:693 msgid "Authentication warning overridden.\n" msgstr "" -#: cmdline/apt-get.cc:715 +#: cmdline/apt-get.cc:700 msgid "Install these packages without verification [y/N]? " msgstr "" -#: cmdline/apt-get.cc:717 +#: cmdline/apt-get.cc:702 msgid "Some packages could not be authenticated" msgstr "" -#: cmdline/apt-get.cc:726 cmdline/apt-get.cc:873 +#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858 msgid "There are problems and -y was used without --force-yes" msgstr "" -#: cmdline/apt-get.cc:770 +#: cmdline/apt-get.cc:755 msgid "Internal error, InstallPackages was called with broken packages!" msgstr "" -#: cmdline/apt-get.cc:779 +#: cmdline/apt-get.cc:764 msgid "Packages need to be removed but remove is disabled." msgstr "" -#: cmdline/apt-get.cc:790 +#: cmdline/apt-get.cc:775 msgid "Internal error, Ordering didn't finish" msgstr "" -#: cmdline/apt-get.cc:806 cmdline/apt-get.cc:1999 cmdline/apt-get.cc:2032 +#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1818 cmdline/apt-get.cc:1851 msgid "Unable to lock the download directory" msgstr "" -#: cmdline/apt-get.cc:816 cmdline/apt-get.cc:2080 cmdline/apt-get.cc:2321 -#: apt-pkg/cachefile.cc:67 +#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1899 cmdline/apt-get.cc:2135 - #: apt-pkg/cachefile.cc:67 ++#: apt-pkg/cachefile.cc:67 apt-pkg/cachefile.cc:63 msgid "The list of sources could not be read." msgstr "" -#: cmdline/apt-get.cc:831 +#: cmdline/apt-get.cc:816 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" msgstr "" -#: cmdline/apt-get.cc:836 +#: cmdline/apt-get.cc:821 #, c-format msgid "Need to get %sB/%sB of archives.\n" msgstr "" -#: cmdline/apt-get.cc:839 +#: cmdline/apt-get.cc:824 #, c-format msgid "Need to get %sB of archives.\n" msgstr "" -#: cmdline/apt-get.cc:844 +#: cmdline/apt-get.cc:829 #, c-format msgid "After unpacking %sB of additional disk space will be used.\n" msgstr "" -#: cmdline/apt-get.cc:847 +#: cmdline/apt-get.cc:832 #, c-format msgid "After unpacking %sB disk space will be freed.\n" msgstr "" -#: cmdline/apt-get.cc:861 cmdline/apt-get.cc:2175 +#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1989 #, c-format msgid "Couldn't determine free space in %s" msgstr "" -#: cmdline/apt-get.cc:864 +#: cmdline/apt-get.cc:849 #, c-format msgid "You don't have enough free space in %s." msgstr "" -#: cmdline/apt-get.cc:879 cmdline/apt-get.cc:899 +#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884 msgid "Trivial Only specified but this is not a trivial operation." msgstr "" -#: cmdline/apt-get.cc:881 +#: cmdline/apt-get.cc:866 msgid "Yes, do as I say!" msgstr "" -#: cmdline/apt-get.cc:883 +#: cmdline/apt-get.cc:868 #, c-format msgid "" "You are about to do something potentially harmful.\n" @@@ -764,74 -772,74 +765,74 @@@ " ?] " msgstr "" -#: cmdline/apt-get.cc:889 cmdline/apt-get.cc:908 +#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893 msgid "Abort." msgstr "" -#: cmdline/apt-get.cc:904 +#: cmdline/apt-get.cc:889 msgid "Do you want to continue [Y/n]? " msgstr "" -#: cmdline/apt-get.cc:976 cmdline/apt-get.cc:1383 cmdline/apt-get.cc:2218 +#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2032 #, c-format msgid "Failed to fetch %s %s\n" msgstr "" -#: cmdline/apt-get.cc:994 +#: cmdline/apt-get.cc:979 msgid "Some files failed to download" msgstr "" -#: cmdline/apt-get.cc:995 cmdline/apt-get.cc:2227 +#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2041 msgid "Download complete and in download only mode" msgstr "" -#: cmdline/apt-get.cc:1001 +#: cmdline/apt-get.cc:986 msgid "" "Unable to fetch some archives, maybe run apt-get update or try with --fix-" "missing?" msgstr "" -#: cmdline/apt-get.cc:1005 +#: cmdline/apt-get.cc:990 msgid "--fix-missing and media swapping is not currently supported" msgstr "" -#: cmdline/apt-get.cc:1010 +#: cmdline/apt-get.cc:995 msgid "Unable to correct missing packages." msgstr "" -#: cmdline/apt-get.cc:1011 +#: cmdline/apt-get.cc:996 msgid "Aborting install." msgstr "" -#: cmdline/apt-get.cc:1045 +#: cmdline/apt-get.cc:1030 #, c-format msgid "Note, selecting %s instead of %s\n" msgstr "" -#: cmdline/apt-get.cc:1055 +#: cmdline/apt-get.cc:1040 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" msgstr "" -#: cmdline/apt-get.cc:1073 +#: cmdline/apt-get.cc:1058 #, c-format msgid "Package %s is not installed, so not removed\n" msgstr "" -#: cmdline/apt-get.cc:1084 +#: cmdline/apt-get.cc:1069 #, c-format msgid "Package %s is a virtual package provided by:\n" msgstr "" -#: cmdline/apt-get.cc:1096 +#: cmdline/apt-get.cc:1081 msgid " [Installed]" msgstr "" -#: cmdline/apt-get.cc:1101 +#: cmdline/apt-get.cc:1086 msgid "You should explicitly select one to install." msgstr "" -#: cmdline/apt-get.cc:1106 +#: cmdline/apt-get.cc:1091 #, c-format msgid "" "Package %s is not available, but is referred to by another package.\n" @@@ -839,79 -847,117 +840,79 @@@ "is only available from another source\n" msgstr "" -#: cmdline/apt-get.cc:1125 +#: cmdline/apt-get.cc:1110 msgid "However the following packages replace it:" msgstr "" -#: cmdline/apt-get.cc:1128 +#: cmdline/apt-get.cc:1113 #, c-format msgid "Package %s has no installation candidate" msgstr "" -#: cmdline/apt-get.cc:1148 +#: cmdline/apt-get.cc:1133 #, c-format msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n" msgstr "" -#: cmdline/apt-get.cc:1156 +#: cmdline/apt-get.cc:1141 #, c-format msgid "%s is already the newest version.\n" msgstr "" -#: cmdline/apt-get.cc:1185 +#: cmdline/apt-get.cc:1168 #, c-format msgid "Release '%s' for '%s' was not found" msgstr "" -#: cmdline/apt-get.cc:1187 +#: cmdline/apt-get.cc:1170 #, c-format msgid "Version '%s' for '%s' was not found" msgstr "" -#: cmdline/apt-get.cc:1193 +#: cmdline/apt-get.cc:1176 #, c-format msgid "Selected version %s (%s) for %s\n" msgstr "" -#: cmdline/apt-get.cc:1330 +#: cmdline/apt-get.cc:1313 msgid "The update command takes no arguments" msgstr "" -#: cmdline/apt-get.cc:1343 +#: cmdline/apt-get.cc:1326 msgid "Unable to lock the list directory" msgstr "" -#: cmdline/apt-get.cc:1410 cmdline/apt-get.cc:1412 +#: cmdline/apt-get.cc:1384 msgid "" "Some index files failed to download, they have been ignored, or old ones " "used instead." msgstr "" -#: cmdline/apt-get.cc:1433 -msgid "We are not supposed to delete stuff, can't start AutoRemover" -msgstr "" - -#: cmdline/apt-get.cc:1465 -msgid "" -"The following packages were automatically installed and are no longer " -"required:" -msgstr "" - -#: cmdline/apt-get.cc:1467 -msgid "Use 'apt-get autoremove' to remove them." -msgstr "" - -#: cmdline/apt-get.cc:1472 -msgid "" -"Hmm, seems like the AutoRemover destroyed something which really\n" -"shouldn't happen. Please file a bug report against apt." -msgstr "" - -#: cmdline/apt-get.cc:1475 cmdline/apt-get.cc:1740 -msgid "The following information may help to resolve the situation:" -msgstr "" - -#: cmdline/apt-get.cc:1479 -msgid "Internal Error, AutoRemover broke stuff" -msgstr "" - -#: cmdline/apt-get.cc:1498 +#: cmdline/apt-get.cc:1403 msgid "Internal error, AllUpgrade broke stuff" msgstr "" -#: cmdline/apt-get.cc:1543 -#, c-format -msgid "Couldn't find task %s" -msgstr "" - -#: cmdline/apt-get.cc:1646 cmdline/apt-get.cc:1682 +#: cmdline/apt-get.cc:1493 cmdline/apt-get.cc:1529 #, c-format msgid "Couldn't find package %s" msgstr "" -#: cmdline/apt-get.cc:1669 +#: cmdline/apt-get.cc:1516 #, c-format msgid "Note, selecting %s for regex '%s'\n" msgstr "" -#: cmdline/apt-get.cc:1699 -#, c-format -msgid "%s set to manual installed.\n" -msgstr "" - -#: cmdline/apt-get.cc:1712 +#: cmdline/apt-get.cc:1546 msgid "You might want to run `apt-get -f install' to correct these:" msgstr "" -#: cmdline/apt-get.cc:1715 +#: cmdline/apt-get.cc:1549 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." msgstr "" -#: cmdline/apt-get.cc:1727 +#: cmdline/apt-get.cc:1561 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" @@@ -919,163 -965,159 +920,163 @@@ "or been moved out of Incoming." msgstr "" -#: cmdline/apt-get.cc:1735 +#: cmdline/apt-get.cc:1569 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:1743 +#: cmdline/apt-get.cc:1574 +msgid "The following information may help to resolve the situation:" +msgstr "" + +#: cmdline/apt-get.cc:1577 msgid "Broken packages" msgstr "" -#: cmdline/apt-get.cc:1774 +#: cmdline/apt-get.cc:1603 msgid "The following extra packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:1863 +#: cmdline/apt-get.cc:1692 msgid "Suggested packages:" msgstr "" -#: cmdline/apt-get.cc:1864 +#: cmdline/apt-get.cc:1693 msgid "Recommended packages:" msgstr "" -#: cmdline/apt-get.cc:1892 +#: cmdline/apt-get.cc:1713 msgid "Calculating upgrade... " msgstr "" - #: cmdline/apt-get.cc:1716 methods/ftp.cc:702 methods/connect.cc:101 -#: cmdline/apt-get.cc:1895 methods/ftp.cc:702 methods/connect.cc:101 ++#: cmdline/apt-get.cc:1716 methods/ftp.cc:702 methods/connect.cc:100 msgid "Failed" msgstr "" -#: cmdline/apt-get.cc:1900 +#: cmdline/apt-get.cc:1721 msgid "Done" msgstr "" -#: cmdline/apt-get.cc:1967 cmdline/apt-get.cc:1975 +#: cmdline/apt-get.cc:1786 cmdline/apt-get.cc:1794 msgid "Internal error, problem resolver broke stuff" msgstr "" -#: cmdline/apt-get.cc:2075 +#: cmdline/apt-get.cc:1894 msgid "Must specify at least one package to fetch source for" msgstr "" -#: cmdline/apt-get.cc:2105 cmdline/apt-get.cc:2339 +#: cmdline/apt-get.cc:1924 cmdline/apt-get.cc:2153 #, c-format msgid "Unable to find a source package for %s" msgstr "" -#: cmdline/apt-get.cc:2154 +#: cmdline/apt-get.cc:1968 #, c-format msgid "Skipping already downloaded file '%s'\n" msgstr "" -#: cmdline/apt-get.cc:2178 +#: cmdline/apt-get.cc:1992 #, c-format msgid "You don't have enough free space in %s" msgstr "" -#: cmdline/apt-get.cc:2183 +#: cmdline/apt-get.cc:1997 #, c-format msgid "Need to get %sB/%sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:2186 +#: cmdline/apt-get.cc:2000 #, c-format msgid "Need to get %sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:2192 +#: cmdline/apt-get.cc:2006 #, c-format msgid "Fetch source %s\n" msgstr "" -#: cmdline/apt-get.cc:2223 +#: cmdline/apt-get.cc:2037 msgid "Failed to fetch some archives." msgstr "" -#: cmdline/apt-get.cc:2251 +#: cmdline/apt-get.cc:2065 #, c-format msgid "Skipping unpack of already unpacked source in %s\n" msgstr "" -#: cmdline/apt-get.cc:2263 +#: cmdline/apt-get.cc:2077 #, c-format msgid "Unpack command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2264 +#: cmdline/apt-get.cc:2078 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" msgstr "" -#: cmdline/apt-get.cc:2281 +#: cmdline/apt-get.cc:2095 #, c-format msgid "Build command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2300 +#: cmdline/apt-get.cc:2114 msgid "Child process failed" msgstr "" -#: cmdline/apt-get.cc:2316 +#: cmdline/apt-get.cc:2130 msgid "Must specify at least one package to check builddeps for" msgstr "" -#: cmdline/apt-get.cc:2344 +#: cmdline/apt-get.cc:2158 #, c-format msgid "Unable to get build-dependency information for %s" msgstr "" -#: cmdline/apt-get.cc:2364 +#: cmdline/apt-get.cc:2178 #, c-format msgid "%s has no build depends.\n" msgstr "" -#: cmdline/apt-get.cc:2416 +#: cmdline/apt-get.cc:2230 #, c-format msgid "" "%s dependency for %s cannot be satisfied because the package %s cannot be " "found" msgstr "" -#: cmdline/apt-get.cc:2468 +#: cmdline/apt-get.cc:2282 #, 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:2503 +#: cmdline/apt-get.cc:2317 #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" msgstr "" -#: cmdline/apt-get.cc:2528 +#: cmdline/apt-get.cc:2342 #, c-format msgid "Failed to satisfy %s dependency for %s: %s" msgstr "" -#: cmdline/apt-get.cc:2542 +#: cmdline/apt-get.cc:2356 #, c-format msgid "Build-dependencies for %s could not be satisfied." msgstr "" -#: cmdline/apt-get.cc:2546 +#: cmdline/apt-get.cc:2360 msgid "Failed to process build dependencies" msgstr "" -#: cmdline/apt-get.cc:2578 +#: cmdline/apt-get.cc:2392 msgid "Supported modules:" msgstr "" -#: cmdline/apt-get.cc:2619 +#: cmdline/apt-get.cc:2433 msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@@ -1090,6 -1132,7 +1091,6 @@@ " upgrade - Perform an upgrade\n" " install - Install new packages (pkg is libc6 not libc6.deb)\n" " remove - Remove packages\n" -" purge - Remove and purge packages\n" " source - Download source archives\n" " build-dep - Configure build-dependencies for source packages\n" " dist-upgrade - Distribution upgrade, see apt-get(8)\n" @@@ -1330,7 -1373,7 +1331,9 @@@ msgstr " #: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750 #: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324 --#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38 ++#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38 methods/mirror.cc:82 ++#: apt-pkg/contrib/configuration.cc:747 apt-pkg/contrib/cdromutl.cc:150 ++#: apt-pkg/sourcelist.cc:320 apt-pkg/acquire.cc:418 apt-pkg/clean.cc:34 #, c-format msgid "Unable to read %s" msgstr "" @@@ -1360,9 -1403,9 +1363,11 @@@ msgid "The info and temp directories ne 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:752 + #: apt-pkg/pkgcachegen.cc:821 apt-pkg/pkgcachegen.cc:826 -#: apt-pkg/pkgcachegen.cc:949 ++#: apt-pkg/pkgcachegen.cc:949 apt-pkg/pkgcachegen.cc:748 ++#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822 ++#: apt-pkg/pkgcachegen.cc:945 msgid "Reading package lists" msgstr "" @@@ -1491,11 -1534,12 +1496,12 @@@ msgid "File not found msgstr "" #: methods/copy.cc:42 methods/gpgv.cc:281 methods/gzip.cc:141 - #: methods/gzip.cc:150 + #: methods/gzip.cc:150 methods/rred.cc:234 methods/rred.cc:243 msgid "Failed to stat" msgstr "" #: methods/copy.cc:79 methods/gpgv.cc:278 methods/gzip.cc:147 + #: methods/rred.cc:240 msgid "Failed to set modification time" msgstr "" @@@ -1555,7 -1599,7 +1561,8 @@@ msgstr " msgid "Server closed the connection" msgstr "" -#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:472 methods/rsh.cc:190 +#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:471 methods/rsh.cc:190 ++#: apt-pkg/contrib/fileutl.cc:469 msgid "Read error" msgstr "" @@@ -1567,7 -1611,7 +1574,8 @@@ msgstr " msgid "Protocol corruption" msgstr "" -#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:511 methods/rsh.cc:232 +#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:510 methods/rsh.cc:232 ++#: apt-pkg/contrib/fileutl.cc:508 msgid "Write error" msgstr "" @@@ -1621,7 -1665,7 +1629,7 @@@ msgstr " msgid "Unable to accept connection" msgstr "" - #: methods/ftp.cc:864 methods/http.cc:959 methods/rsh.cc:303 -#: methods/ftp.cc:864 methods/http.cc:958 methods/rsh.cc:303 ++#: methods/ftp.cc:864 methods/http.cc:961 methods/rsh.cc:303 msgid "Problem hashing file" msgstr "" @@@ -1648,39 -1692,39 +1656,39 @@@ msgstr " msgid "Unable to invoke " msgstr "" --#: methods/connect.cc:64 ++#: methods/connect.cc:65 #, c-format msgid "Connecting to %s (%s)" msgstr "" --#: methods/connect.cc:71 ++#: methods/connect.cc:72 #, c-format msgid "[IP: %s %s]" msgstr "" --#: methods/connect.cc:80 ++#: methods/connect.cc:79 #, c-format msgid "Could not create a socket for %s (f=%u t=%u p=%u)" msgstr "" --#: methods/connect.cc:86 ++#: methods/connect.cc:85 #, c-format msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "" --#: methods/connect.cc:93 ++#: methods/connect.cc:92 #, c-format msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" --#: methods/connect.cc:108 ++#: methods/connect.cc:107 #, 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:136 methods/rsh.cc:425 ++#: methods/connect.cc:135 methods/rsh.cc:425 #, c-format msgid "Connecting to %s" msgstr "" @@@ -1752,427 -1796,445 +1760,455 @@@ msgstr " msgid "Read error from %s process" msgstr "" - #: methods/http.cc:377 + #: methods/http.cc:376 msgid "Waiting for headers" msgstr "" - #: methods/http.cc:523 + #: methods/http.cc:522 #, c-format msgid "Got a single header line over %u chars" msgstr "" - #: methods/http.cc:531 + #: methods/http.cc:530 msgid "Bad header line" msgstr "" - #: methods/http.cc:550 methods/http.cc:557 + #: methods/http.cc:549 methods/http.cc:556 msgid "The HTTP server sent an invalid reply header" msgstr "" - #: methods/http.cc:586 + #: methods/http.cc:585 msgid "The HTTP server sent an invalid Content-Length header" msgstr "" - #: methods/http.cc:601 + #: methods/http.cc:600 msgid "The HTTP server sent an invalid Content-Range header" msgstr "" - #: methods/http.cc:603 + #: methods/http.cc:602 msgid "This HTTP server has broken range support" msgstr "" - #: methods/http.cc:627 + #: methods/http.cc:626 msgid "Unknown date format" msgstr "" - #: methods/http.cc:774 + #: methods/http.cc:773 msgid "Select failed" msgstr "" - #: methods/http.cc:779 + #: methods/http.cc:778 msgid "Connection timed out" msgstr "" - #: methods/http.cc:802 + #: methods/http.cc:801 msgid "Error writing to output file" msgstr "" - #: methods/http.cc:833 + #: methods/http.cc:832 msgid "Error writing to file" msgstr "" - #: methods/http.cc:861 + #: methods/http.cc:860 msgid "Error writing to the file" msgstr "" - #: methods/http.cc:875 + #: methods/http.cc:874 msgid "Error reading from server. Remote end closed connection" msgstr "" - #: methods/http.cc:877 + #: methods/http.cc:876 msgid "Error reading from server" msgstr "" - #: methods/http.cc:1108 -#: methods/http.cc:1107 ++#: methods/http.cc:1110 msgid "Bad header data" msgstr "" - #: methods/http.cc:1125 -#: methods/http.cc:1124 ++#: methods/http.cc:1127 msgid "Connection failed" msgstr "" - #: methods/http.cc:1216 -#: methods/http.cc:1215 ++#: methods/http.cc:1218 msgid "Internal error" msgstr "" --#: apt-pkg/contrib/mmap.cc:82 ++#: apt-pkg/contrib/mmap.cc:82 apt-pkg/contrib/mmap.cc:78 msgid "Can't mmap an empty file" msgstr "" --#: apt-pkg/contrib/mmap.cc:87 ++#: apt-pkg/contrib/mmap.cc:87 apt-pkg/contrib/mmap.cc:83 #, c-format msgid "Couldn't make mmap of %lu bytes" msgstr "" - #: apt-pkg/contrib/strutl.cc:938 -#: apt-pkg/contrib/strutl.cc:982 ++#: apt-pkg/contrib/strutl.cc:981 apt-pkg/contrib/strutl.cc:978 #, c-format msgid "Selection %s not found" msgstr "" --#: apt-pkg/contrib/configuration.cc:436 ++#: apt-pkg/contrib/configuration.cc:436 apt-pkg/contrib/configuration.cc:433 #, c-format msgid "Unrecognized type abbreviation: '%c'" msgstr "" --#: apt-pkg/contrib/configuration.cc:494 ++#: apt-pkg/contrib/configuration.cc:494 apt-pkg/contrib/configuration.cc:491 #, c-format msgid "Opening configuration file %s" msgstr "" --#: apt-pkg/contrib/configuration.cc:512 ++#: apt-pkg/contrib/configuration.cc:512 apt-pkg/contrib/configuration.cc:509 #, c-format msgid "Line %d too long (max %d)" msgstr "" --#: apt-pkg/contrib/configuration.cc:608 ++#: apt-pkg/contrib/configuration.cc:608 apt-pkg/contrib/configuration.cc:605 #, c-format msgid "Syntax error %s:%u: Block starts with no name." msgstr "" --#: apt-pkg/contrib/configuration.cc:627 ++#: apt-pkg/contrib/configuration.cc:627 apt-pkg/contrib/configuration.cc:624 #, c-format msgid "Syntax error %s:%u: Malformed tag" msgstr "" --#: apt-pkg/contrib/configuration.cc:644 ++#: apt-pkg/contrib/configuration.cc:644 apt-pkg/contrib/configuration.cc:641 #, c-format msgid "Syntax error %s:%u: Extra junk after value" msgstr "" --#: apt-pkg/contrib/configuration.cc:684 ++#: apt-pkg/contrib/configuration.cc:684 apt-pkg/contrib/configuration.cc:681 #, c-format msgid "Syntax error %s:%u: Directives can only be done at the top level" msgstr "" --#: apt-pkg/contrib/configuration.cc:691 ++#: apt-pkg/contrib/configuration.cc:691 apt-pkg/contrib/configuration.cc:688 #, c-format msgid "Syntax error %s:%u: Too many nested includes" msgstr "" #: apt-pkg/contrib/configuration.cc:695 apt-pkg/contrib/configuration.cc:700 ++#: apt-pkg/contrib/configuration.cc:692 apt-pkg/contrib/configuration.cc:697 #, c-format msgid "Syntax error %s:%u: Included from here" msgstr "" --#: apt-pkg/contrib/configuration.cc:704 ++#: apt-pkg/contrib/configuration.cc:704 apt-pkg/contrib/configuration.cc:701 #, c-format msgid "Syntax error %s:%u: Unsupported directive '%s'" msgstr "" --#: apt-pkg/contrib/configuration.cc:738 ++#: apt-pkg/contrib/configuration.cc:738 apt-pkg/contrib/configuration.cc:735 #, c-format msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "" --#: apt-pkg/contrib/progress.cc:155 ++#: apt-pkg/contrib/progress.cc:155 apt-pkg/contrib/progress.cc:152 #, c-format msgid "%c%s... Error!" msgstr "" --#: apt-pkg/contrib/progress.cc:157 ++#: apt-pkg/contrib/progress.cc:157 apt-pkg/contrib/progress.cc:154 #, c-format msgid "%c%s... Done" msgstr "" --#: apt-pkg/contrib/cmndline.cc:80 ++#: apt-pkg/contrib/cmndline.cc:80 apt-pkg/contrib/cmndline.cc:77 #, c-format msgid "Command line option '%c' [from %s] is not known." msgstr "" #: apt-pkg/contrib/cmndline.cc:106 apt-pkg/contrib/cmndline.cc:114 --#: apt-pkg/contrib/cmndline.cc:122 ++#: apt-pkg/contrib/cmndline.cc:122 apt-pkg/contrib/cmndline.cc:103 ++#: apt-pkg/contrib/cmndline.cc:111 apt-pkg/contrib/cmndline.cc:119 #, c-format msgid "Command line option %s is not understood" msgstr "" --#: apt-pkg/contrib/cmndline.cc:127 ++#: apt-pkg/contrib/cmndline.cc:127 apt-pkg/contrib/cmndline.cc:124 #, c-format msgid "Command line option %s is not boolean" msgstr "" #: apt-pkg/contrib/cmndline.cc:166 apt-pkg/contrib/cmndline.cc:187 ++#: apt-pkg/contrib/cmndline.cc:163 apt-pkg/contrib/cmndline.cc:184 #, c-format msgid "Option %s requires an argument." msgstr "" #: apt-pkg/contrib/cmndline.cc:201 apt-pkg/contrib/cmndline.cc:207 ++#: apt-pkg/contrib/cmndline.cc:198 apt-pkg/contrib/cmndline.cc:204 #, c-format msgid "Option %s: Configuration item specification must have an =." msgstr "" --#: apt-pkg/contrib/cmndline.cc:237 ++#: apt-pkg/contrib/cmndline.cc:237 apt-pkg/contrib/cmndline.cc:234 #, c-format msgid "Option %s requires an integer argument, not '%s'" msgstr "" --#: apt-pkg/contrib/cmndline.cc:268 ++#: apt-pkg/contrib/cmndline.cc:268 apt-pkg/contrib/cmndline.cc:265 #, c-format msgid "Option '%s' is too long" msgstr "" --#: apt-pkg/contrib/cmndline.cc:301 ++#: apt-pkg/contrib/cmndline.cc:301 apt-pkg/contrib/cmndline.cc:298 #, c-format msgid "Sense %s is not understood, try true or false." msgstr "" --#: apt-pkg/contrib/cmndline.cc:351 ++#: apt-pkg/contrib/cmndline.cc:351 apt-pkg/contrib/cmndline.cc:348 #, c-format msgid "Invalid operation %s" msgstr "" --#: apt-pkg/contrib/cdromutl.cc:55 ++#: apt-pkg/contrib/cdromutl.cc:55 apt-pkg/contrib/cdromutl.cc:52 #, c-format msgid "Unable to stat the mount point %s" msgstr "" #: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44 ++#: methods/mirror.cc:88 apt-pkg/contrib/cdromutl.cc:146 apt-pkg/acquire.cc:424 ++#: apt-pkg/clean.cc:40 #, c-format msgid "Unable to change to %s" msgstr "" --#: apt-pkg/contrib/cdromutl.cc:190 ++#: apt-pkg/contrib/cdromutl.cc:190 apt-pkg/contrib/cdromutl.cc:187 msgid "Failed to stat the cdrom" msgstr "" - #: apt-pkg/contrib/fileutl.cc:82 -#: apt-pkg/contrib/fileutl.cc:83 ++#: apt-pkg/contrib/fileutl.cc:82 apt-pkg/contrib/fileutl.cc:80 #, c-format msgid "Not using locking for read only lock file %s" msgstr "" - #: apt-pkg/contrib/fileutl.cc:87 -#: apt-pkg/contrib/fileutl.cc:88 ++#: apt-pkg/contrib/fileutl.cc:87 apt-pkg/contrib/fileutl.cc:85 #, c-format msgid "Could not open lock file %s" msgstr "" - #: apt-pkg/contrib/fileutl.cc:105 -#: apt-pkg/contrib/fileutl.cc:106 ++#: apt-pkg/contrib/fileutl.cc:105 apt-pkg/contrib/fileutl.cc:103 #, c-format msgid "Not using locking for nfs mounted lock file %s" msgstr "" - #: apt-pkg/contrib/fileutl.cc:109 -#: apt-pkg/contrib/fileutl.cc:110 ++#: apt-pkg/contrib/fileutl.cc:109 apt-pkg/contrib/fileutl.cc:107 #, c-format msgid "Could not get lock %s" msgstr "" - #: apt-pkg/contrib/fileutl.cc:377 -#: apt-pkg/contrib/fileutl.cc:378 ++#: apt-pkg/contrib/fileutl.cc:377 apt-pkg/contrib/fileutl.cc:375 #, c-format msgid "Waited for %s but it wasn't there" msgstr "" - #: apt-pkg/contrib/fileutl.cc:387 -#: apt-pkg/contrib/fileutl.cc:388 ++#: apt-pkg/contrib/fileutl.cc:387 apt-pkg/contrib/fileutl.cc:385 #, c-format msgid "Sub-process %s received a segmentation fault." msgstr "" - #: apt-pkg/contrib/fileutl.cc:390 -#: apt-pkg/contrib/fileutl.cc:391 ++#: apt-pkg/contrib/fileutl.cc:390 apt-pkg/contrib/fileutl.cc:388 #, c-format msgid "Sub-process %s returned an error code (%u)" msgstr "" - #: apt-pkg/contrib/fileutl.cc:392 -#: apt-pkg/contrib/fileutl.cc:393 ++#: apt-pkg/contrib/fileutl.cc:392 apt-pkg/contrib/fileutl.cc:390 #, c-format msgid "Sub-process %s exited unexpectedly" msgstr "" - #: apt-pkg/contrib/fileutl.cc:436 -#: apt-pkg/contrib/fileutl.cc:437 ++#: apt-pkg/contrib/fileutl.cc:436 apt-pkg/contrib/fileutl.cc:434 #, c-format msgid "Could not open file %s" msgstr "" - #: apt-pkg/contrib/fileutl.cc:492 -#: apt-pkg/contrib/fileutl.cc:493 ++#: apt-pkg/contrib/fileutl.cc:492 apt-pkg/contrib/fileutl.cc:490 #, c-format msgid "read, still have %lu to read but none left" msgstr "" - #: apt-pkg/contrib/fileutl.cc:522 -#: apt-pkg/contrib/fileutl.cc:523 ++#: apt-pkg/contrib/fileutl.cc:522 apt-pkg/contrib/fileutl.cc:520 #, c-format msgid "write, still have %lu to write but couldn't" msgstr "" - #: apt-pkg/contrib/fileutl.cc:597 -#: apt-pkg/contrib/fileutl.cc:598 ++#: apt-pkg/contrib/fileutl.cc:597 apt-pkg/contrib/fileutl.cc:595 msgid "Problem closing the file" msgstr "" - #: apt-pkg/contrib/fileutl.cc:603 -#: apt-pkg/contrib/fileutl.cc:604 ++#: apt-pkg/contrib/fileutl.cc:603 apt-pkg/contrib/fileutl.cc:601 msgid "Problem unlinking the file" msgstr "" - #: apt-pkg/contrib/fileutl.cc:614 -#: apt-pkg/contrib/fileutl.cc:615 ++#: apt-pkg/contrib/fileutl.cc:614 apt-pkg/contrib/fileutl.cc:612 msgid "Problem syncing the file" msgstr "" - #: apt-pkg/pkgcache.cc:121 -#: apt-pkg/pkgcache.cc:132 ++#: apt-pkg/pkgcache.cc:137 apt-pkg/pkgcache.cc:132 msgid "Empty package cache" msgstr "" - #: apt-pkg/pkgcache.cc:127 -#: apt-pkg/pkgcache.cc:138 ++#: apt-pkg/pkgcache.cc:143 apt-pkg/pkgcache.cc:138 msgid "The package cache file is corrupted" msgstr "" - #: apt-pkg/pkgcache.cc:132 -#: apt-pkg/pkgcache.cc:143 ++#: apt-pkg/pkgcache.cc:148 apt-pkg/pkgcache.cc:143 msgid "The package cache file is an incompatible version" msgstr "" - #: apt-pkg/pkgcache.cc:137 -#: apt-pkg/pkgcache.cc:148 ++#: apt-pkg/pkgcache.cc:153 apt-pkg/pkgcache.cc:148 #, c-format msgid "This APT does not support the versioning system '%s'" msgstr "" - #: apt-pkg/pkgcache.cc:142 -#: apt-pkg/pkgcache.cc:153 ++#: apt-pkg/pkgcache.cc:158 apt-pkg/pkgcache.cc:153 msgid "The package cache was built for a different architecture" msgstr "" - #: apt-pkg/pkgcache.cc:213 -#: apt-pkg/pkgcache.cc:224 ++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224 msgid "Depends" msgstr "" - #: apt-pkg/pkgcache.cc:213 -#: apt-pkg/pkgcache.cc:224 ++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224 msgid "PreDepends" msgstr "" - #: apt-pkg/pkgcache.cc:213 -#: apt-pkg/pkgcache.cc:224 ++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224 msgid "Suggests" msgstr "" - #: apt-pkg/pkgcache.cc:214 -#: apt-pkg/pkgcache.cc:225 ++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225 msgid "Recommends" msgstr "" - #: apt-pkg/pkgcache.cc:214 -#: apt-pkg/pkgcache.cc:225 ++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225 msgid "Conflicts" msgstr "" - #: apt-pkg/pkgcache.cc:214 -#: apt-pkg/pkgcache.cc:225 ++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225 msgid "Replaces" msgstr "" - #: apt-pkg/pkgcache.cc:215 -#: apt-pkg/pkgcache.cc:226 ++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:226 msgid "Obsoletes" msgstr "" --#: apt-pkg/pkgcache.cc:226 ++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:226 + msgid "Breaks" + msgstr "" + -#: apt-pkg/pkgcache.cc:237 ++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237 msgid "important" msgstr "" - #: apt-pkg/pkgcache.cc:226 -#: apt-pkg/pkgcache.cc:237 ++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237 msgid "required" msgstr "" - #: apt-pkg/pkgcache.cc:226 -#: apt-pkg/pkgcache.cc:237 ++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237 msgid "standard" msgstr "" - #: apt-pkg/pkgcache.cc:227 -#: apt-pkg/pkgcache.cc:238 ++#: apt-pkg/pkgcache.cc:243 apt-pkg/pkgcache.cc:238 msgid "optional" msgstr "" - #: apt-pkg/pkgcache.cc:227 -#: apt-pkg/pkgcache.cc:238 ++#: apt-pkg/pkgcache.cc:243 apt-pkg/pkgcache.cc:238 msgid "extra" msgstr "" - #: apt-pkg/depcache.cc:58 apt-pkg/depcache.cc:87 -#: apt-pkg/depcache.cc:98 apt-pkg/depcache.cc:127 ++#: apt-pkg/depcache.cc:103 apt-pkg/depcache.cc:132 apt-pkg/depcache.cc:100 ++#: apt-pkg/depcache.cc:129 msgid "Building dependency tree" msgstr "" - #: apt-pkg/depcache.cc:59 -#: apt-pkg/depcache.cc:99 ++#: apt-pkg/depcache.cc:104 apt-pkg/depcache.cc:101 msgid "Candidate versions" msgstr "" - #: apt-pkg/depcache.cc:88 -#: apt-pkg/depcache.cc:128 ++#: apt-pkg/depcache.cc:133 apt-pkg/depcache.cc:130 msgid "Dependency generation" msgstr "" - #: apt-pkg/tagfile.cc:106 -#: apt-pkg/depcache.cc:149 apt-pkg/depcache.cc:168 apt-pkg/depcache.cc:172 ++#: apt-pkg/depcache.cc:154 apt-pkg/depcache.cc:173 apt-pkg/depcache.cc:177 ++#: apt-pkg/depcache.cc:151 apt-pkg/depcache.cc:170 apt-pkg/depcache.cc:174 + msgid "Reading state information" + msgstr "" + -#: apt-pkg/depcache.cc:196 ++#: apt-pkg/depcache.cc:201 apt-pkg/depcache.cc:198 + #, c-format + msgid "Failed to open StateFile %s" + msgstr "" + -#: apt-pkg/depcache.cc:202 ++#: apt-pkg/depcache.cc:207 apt-pkg/depcache.cc:204 + #, c-format + msgid "Failed to write temporary StateFile %s" + msgstr "" + -#: apt-pkg/tagfile.cc:106 ++#: apt-pkg/tagfile.cc:106 apt-pkg/tagfile.cc:102 #, c-format msgid "Unable to parse package file %s (1)" msgstr "" --#: apt-pkg/tagfile.cc:193 ++#: apt-pkg/tagfile.cc:193 apt-pkg/tagfile.cc:189 #, c-format msgid "Unable to parse package file %s (2)" msgstr "" --#: apt-pkg/sourcelist.cc:94 ++#: apt-pkg/sourcelist.cc:94 apt-pkg/sourcelist.cc:90 #, c-format msgid "Malformed line %lu in source list %s (URI)" msgstr "" --#: apt-pkg/sourcelist.cc:96 ++#: apt-pkg/sourcelist.cc:96 apt-pkg/sourcelist.cc:92 #, c-format msgid "Malformed line %lu in source list %s (dist)" msgstr "" --#: apt-pkg/sourcelist.cc:99 ++#: apt-pkg/sourcelist.cc:99 apt-pkg/sourcelist.cc:95 #, c-format msgid "Malformed line %lu in source list %s (URI parse)" msgstr "" --#: apt-pkg/sourcelist.cc:105 ++#: apt-pkg/sourcelist.cc:105 apt-pkg/sourcelist.cc:101 #, c-format msgid "Malformed line %lu in source list %s (absolute dist)" msgstr "" --#: apt-pkg/sourcelist.cc:112 ++#: apt-pkg/sourcelist.cc:112 apt-pkg/sourcelist.cc:108 #, c-format msgid "Malformed line %lu in source list %s (dist parse)" msgstr "" --#: apt-pkg/sourcelist.cc:203 ++#: apt-pkg/sourcelist.cc:203 apt-pkg/sourcelist.cc:199 #, c-format msgid "Opening %s" msgstr "" - #: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426 -#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:451 ++#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:450 apt-pkg/sourcelist.cc:216 ++#: apt-pkg/cdrom.cc:448 #, c-format msgid "Line %u too long in source list %s." msgstr "" --#: apt-pkg/sourcelist.cc:240 ++#: apt-pkg/sourcelist.cc:240 apt-pkg/sourcelist.cc:236 #, c-format msgid "Malformed line %u in source list %s (type)" msgstr "" --#: apt-pkg/sourcelist.cc:244 ++#: apt-pkg/sourcelist.cc:244 apt-pkg/sourcelist.cc:240 #, c-format msgid "Type '%s' is not known on line %u in source list %s" msgstr "" #: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255 ++#: apt-pkg/sourcelist.cc:248 apt-pkg/sourcelist.cc:251 #, c-format msgid "Malformed line %u in source list %s (vendor id)" msgstr "" - #: apt-pkg/packagemanager.cc:402 -#: apt-pkg/packagemanager.cc:403 ++#: apt-pkg/packagemanager.cc:403 apt-pkg/packagemanager.cc:399 #, c-format msgid "" "This installation run will require temporarily removing the essential " @@@ -2180,216 -2242,231 +2216,233 @@@ "you really want to do it, activate the APT::Force-LoopBreak option." msgstr "" --#: apt-pkg/pkgrecords.cc:37 ++#: apt-pkg/pkgrecords.cc:35 apt-pkg/pkgrecords.cc:32 #, c-format msgid "Index file type '%s' is not supported" msgstr "" - #: apt-pkg/algorithms.cc:241 -#: apt-pkg/algorithms.cc:254 ++#: apt-pkg/algorithms.cc:248 apt-pkg/algorithms.cc:247 #, c-format msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." msgstr "" - #: apt-pkg/algorithms.cc:1066 -#: apt-pkg/algorithms.cc:1110 ++#: apt-pkg/algorithms.cc:1104 apt-pkg/algorithms.cc:1103 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." msgstr "" - #: apt-pkg/algorithms.cc:1068 -#: apt-pkg/algorithms.cc:1112 ++#: apt-pkg/algorithms.cc:1106 apt-pkg/algorithms.cc:1105 msgid "Unable to correct problems, you have held broken packages." msgstr "" --#: apt-pkg/acquire.cc:62 ++#: apt-pkg/acquire.cc:62 apt-pkg/acquire.cc:59 #, c-format msgid "Lists directory %spartial is missing." msgstr "" --#: apt-pkg/acquire.cc:66 ++#: apt-pkg/acquire.cc:66 apt-pkg/acquire.cc:63 #, c-format msgid "Archive directory %spartial is missing." msgstr "" #. only show the ETA if it makes sense #. two days --#: apt-pkg/acquire.cc:830 ++#: apt-pkg/acquire.cc:830 apt-pkg/acquire.cc:827 #, c-format msgid "Retrieving file %li of %li (%s remaining)" msgstr "" --#: apt-pkg/acquire.cc:832 ++#: apt-pkg/acquire.cc:832 apt-pkg/acquire.cc:829 #, c-format msgid "Retrieving file %li of %li" msgstr "" --#: apt-pkg/acquire-worker.cc:113 ++#: apt-pkg/acquire-worker.cc:113 apt-pkg/acquire-worker.cc:110 #, c-format msgid "The method driver %s could not be found." msgstr "" --#: apt-pkg/acquire-worker.cc:162 ++#: apt-pkg/acquire-worker.cc:162 apt-pkg/acquire-worker.cc:159 #, c-format msgid "Method %s did not start correctly" msgstr "" - #: apt-pkg/acquire-worker.cc:377 -#: apt-pkg/acquire-worker.cc:384 ++#: apt-pkg/acquire-worker.cc:384 apt-pkg/acquire-worker.cc:381 #, c-format msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." msgstr "" - #: apt-pkg/init.cc:120 -#: apt-pkg/init.cc:126 ++#: apt-pkg/init.cc:123 apt-pkg/init.cc:126 #, c-format msgid "Packaging system '%s' is not supported" msgstr "" - #: apt-pkg/init.cc:136 -#: apt-pkg/init.cc:142 ++#: apt-pkg/init.cc:139 apt-pkg/init.cc:142 msgid "Unable to determine a suitable packaging system type" msgstr "" --#: apt-pkg/clean.cc:61 ++#: apt-pkg/clean.cc:61 apt-pkg/clean.cc:57 #, c-format msgid "Unable to stat %s." msgstr "" --#: apt-pkg/srcrecords.cc:48 ++#: apt-pkg/srcrecords.cc:48 apt-pkg/srcrecords.cc:44 msgid "You must put some 'source' URIs in your sources.list" msgstr "" --#: apt-pkg/cachefile.cc:73 ++#: apt-pkg/cachefile.cc:73 apt-pkg/cachefile.cc:69 msgid "The package lists or status file could not be parsed or opened." msgstr "" --#: apt-pkg/cachefile.cc:77 ++#: apt-pkg/cachefile.cc:77 apt-pkg/cachefile.cc:73 msgid "You may want to run apt-get update to correct these problems" msgstr "" --#: apt-pkg/policy.cc:270 ++#: apt-pkg/policy.cc:270 apt-pkg/policy.cc:267 msgid "Invalid record in the preferences file, no Package header" msgstr "" --#: apt-pkg/policy.cc:292 ++#: apt-pkg/policy.cc:292 apt-pkg/policy.cc:289 #, c-format msgid "Did not understand pin type %s" msgstr "" --#: apt-pkg/policy.cc:300 ++#: apt-pkg/policy.cc:300 apt-pkg/policy.cc:297 msgid "No priority (or zero) specified for pin" msgstr "" - #: apt-pkg/pkgcachegen.cc:74 -#: apt-pkg/pkgcachegen.cc:76 ++#: apt-pkg/pkgcachegen.cc:76 apt-pkg/pkgcachegen.cc:72 msgid "Cache has an incompatible versioning system" msgstr "" - #: apt-pkg/pkgcachegen.cc:117 -#: apt-pkg/pkgcachegen.cc:119 ++#: apt-pkg/pkgcachegen.cc:119 apt-pkg/pkgcachegen.cc:115 #, c-format msgid "Error occurred while processing %s (NewPackage)" msgstr "" - #: apt-pkg/pkgcachegen.cc:129 -#: apt-pkg/pkgcachegen.cc:134 ++#: apt-pkg/pkgcachegen.cc:134 apt-pkg/pkgcachegen.cc:130 #, c-format msgid "Error occurred while processing %s (UsePackage1)" msgstr "" - #: apt-pkg/pkgcachegen.cc:150 -#: apt-pkg/pkgcachegen.cc:157 ++#: apt-pkg/pkgcachegen.cc:157 apt-pkg/pkgcachegen.cc:153 + #, c-format + msgid "Error occured while processing %s (NewFileDesc1)" + msgstr "" + -#: apt-pkg/pkgcachegen.cc:182 ++#: apt-pkg/pkgcachegen.cc:182 apt-pkg/pkgcachegen.cc:178 #, c-format msgid "Error occurred while processing %s (UsePackage2)" msgstr "" - #: apt-pkg/pkgcachegen.cc:154 -#: apt-pkg/pkgcachegen.cc:186 ++#: apt-pkg/pkgcachegen.cc:186 apt-pkg/pkgcachegen.cc:182 #, c-format msgid "Error occurred while processing %s (NewFileVer1)" msgstr "" - #: apt-pkg/pkgcachegen.cc:184 -#: apt-pkg/pkgcachegen.cc:217 ++#: apt-pkg/pkgcachegen.cc:217 apt-pkg/pkgcachegen.cc:213 #, c-format msgid "Error occurred while processing %s (NewVersion1)" msgstr "" - #: apt-pkg/pkgcachegen.cc:188 -#: apt-pkg/pkgcachegen.cc:221 ++#: apt-pkg/pkgcachegen.cc:221 apt-pkg/pkgcachegen.cc:217 #, c-format msgid "Error occurred while processing %s (UsePackage3)" msgstr "" - #: apt-pkg/pkgcachegen.cc:192 -#: apt-pkg/pkgcachegen.cc:225 ++#: apt-pkg/pkgcachegen.cc:225 apt-pkg/pkgcachegen.cc:221 #, c-format msgid "Error occurred while processing %s (NewVersion2)" msgstr "" - #: apt-pkg/pkgcachegen.cc:207 -#: apt-pkg/pkgcachegen.cc:249 ++#: apt-pkg/pkgcachegen.cc:249 apt-pkg/pkgcachegen.cc:245 + #, c-format + msgid "Error occured while processing %s (NewFileDesc2)" + msgstr "" + -#: apt-pkg/pkgcachegen.cc:255 ++#: apt-pkg/pkgcachegen.cc:255 apt-pkg/pkgcachegen.cc:251 msgid "Wow, you exceeded the number of package names this APT is capable of." msgstr "" - #: apt-pkg/pkgcachegen.cc:210 -#: apt-pkg/pkgcachegen.cc:258 ++#: apt-pkg/pkgcachegen.cc:258 apt-pkg/pkgcachegen.cc:254 msgid "Wow, you exceeded the number of versions this APT is capable of." msgstr "" - #: apt-pkg/pkgcachegen.cc:213 -#: apt-pkg/pkgcachegen.cc:261 ++#: apt-pkg/pkgcachegen.cc:261 apt-pkg/pkgcachegen.cc:257 + msgid "Wow, you exceeded the number of descriptions this APT is capable of." + msgstr "" + -#: apt-pkg/pkgcachegen.cc:264 ++#: apt-pkg/pkgcachegen.cc:264 apt-pkg/pkgcachegen.cc:260 msgid "Wow, you exceeded the number of dependencies this APT is capable of." msgstr "" - #: apt-pkg/pkgcachegen.cc:241 -#: apt-pkg/pkgcachegen.cc:292 ++#: apt-pkg/pkgcachegen.cc:292 apt-pkg/pkgcachegen.cc:288 #, c-format msgid "Error occurred while processing %s (FindPkg)" msgstr "" - #: apt-pkg/pkgcachegen.cc:254 -#: apt-pkg/pkgcachegen.cc:305 ++#: apt-pkg/pkgcachegen.cc:305 apt-pkg/pkgcachegen.cc:301 #, c-format msgid "Error occurred while processing %s (CollectFileProvides)" msgstr "" - #: apt-pkg/pkgcachegen.cc:260 -#: apt-pkg/pkgcachegen.cc:311 ++#: apt-pkg/pkgcachegen.cc:311 apt-pkg/pkgcachegen.cc:307 #, c-format msgid "Package %s %s was not found while processing file dependencies" msgstr "" - #: apt-pkg/pkgcachegen.cc:574 -#: apt-pkg/pkgcachegen.cc:682 ++#: apt-pkg/pkgcachegen.cc:682 apt-pkg/pkgcachegen.cc:678 #, c-format msgid "Couldn't stat source package list %s" msgstr "" - #: apt-pkg/pkgcachegen.cc:658 -#: apt-pkg/pkgcachegen.cc:767 ++#: apt-pkg/pkgcachegen.cc:767 apt-pkg/pkgcachegen.cc:763 msgid "Collecting File Provides" msgstr "" - #: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792 + #: apt-pkg/pkgcachegen.cc:894 apt-pkg/pkgcachegen.cc:901 ++#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897 msgid "IO Error saving source cache" msgstr "" - #: apt-pkg/acquire-item.cc:126 -#: apt-pkg/acquire-item.cc:127 ++#: apt-pkg/acquire-item.cc:134 #, c-format msgid "rename failed, %s (%s -> %s)." msgstr "" - #: apt-pkg/acquire-item.cc:243 apt-pkg/acquire-item.cc:952 -#: apt-pkg/acquire-item.cc:406 apt-pkg/acquire-item.cc:661 -#: apt-pkg/acquire-item.cc:1411 ++#: apt-pkg/acquire-item.cc:293 apt-pkg/acquire-item.cc:1039 ++#: apt-pkg/acquire-item.cc:456 apt-pkg/acquire-item.cc:710 ++#: apt-pkg/acquire-item.cc:1462 msgid "MD5Sum mismatch" msgstr "" - #: apt-pkg/acquire-item.cc:647 -#: apt-pkg/acquire-item.cc:1106 ++#: apt-pkg/acquire-item.cc:733 apt-pkg/acquire-item.cc:1156 msgid "There is no public key available for the following key IDs:\n" msgstr "" - #: apt-pkg/acquire-item.cc:760 -#: apt-pkg/acquire-item.cc:1219 ++#: apt-pkg/acquire-item.cc:847 apt-pkg/acquire-item.cc:1270 #, 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:819 -#: apt-pkg/acquire-item.cc:1278 ++#: apt-pkg/acquire-item.cc:906 apt-pkg/acquire-item.cc:1329 #, 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:855 -#: apt-pkg/acquire-item.cc:1314 ++#: apt-pkg/acquire-item.cc:942 apt-pkg/acquire-item.cc:1365 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." msgstr "" - #: apt-pkg/acquire-item.cc:942 -#: apt-pkg/acquire-item.cc:1401 ++#: apt-pkg/acquire-item.cc:1029 apt-pkg/acquire-item.cc:1452 msgid "Size mismatch" msgstr "" @@@ -2398,146 -2475,157 +2451,162 @@@ msgid "Vendor block %s contains no fingerprint" msgstr "" - #: apt-pkg/cdrom.cc:507 -#: apt-pkg/cdrom.cc:532 ++#: apt-pkg/cdrom.cc:531 apt-pkg/cdrom.cc:529 #, c-format msgid "" "Using CD-ROM mount point %s\n" "Mounting CD-ROM\n" msgstr "" - #: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598 -#: apt-pkg/cdrom.cc:541 apt-pkg/cdrom.cc:623 ++#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622 apt-pkg/cdrom.cc:538 ++#: apt-pkg/cdrom.cc:620 msgid "Identifying.. " msgstr "" - #: apt-pkg/cdrom.cc:541 -#: apt-pkg/cdrom.cc:566 ++#: apt-pkg/cdrom.cc:565 apt-pkg/cdrom.cc:563 #, c-format msgid "Stored label: %s \n" msgstr "" - #: apt-pkg/cdrom.cc:561 -#: apt-pkg/cdrom.cc:586 ++#: apt-pkg/cdrom.cc:585 apt-pkg/cdrom.cc:583 #, c-format msgid "Using CD-ROM mount point %s\n" msgstr "" - #: apt-pkg/cdrom.cc:579 -#: apt-pkg/cdrom.cc:604 ++#: apt-pkg/cdrom.cc:603 apt-pkg/cdrom.cc:601 msgid "Unmounting CD-ROM\n" msgstr "" - #: apt-pkg/cdrom.cc:583 -#: apt-pkg/cdrom.cc:608 ++#: apt-pkg/cdrom.cc:607 apt-pkg/cdrom.cc:605 msgid "Waiting for disc...\n" msgstr "" #. Mount the new CDROM - #: apt-pkg/cdrom.cc:591 -#: apt-pkg/cdrom.cc:616 ++#: apt-pkg/cdrom.cc:615 apt-pkg/cdrom.cc:613 msgid "Mounting CD-ROM...\n" msgstr "" - #: apt-pkg/cdrom.cc:609 -#: apt-pkg/cdrom.cc:634 ++#: apt-pkg/cdrom.cc:633 apt-pkg/cdrom.cc:631 msgid "Scanning disc for index files..\n" msgstr "" - #: apt-pkg/cdrom.cc:647 -#: apt-pkg/cdrom.cc:674 ++#: apt-pkg/cdrom.cc:673 apt-pkg/cdrom.cc:671 #, c-format - msgid "Found %i package indexes, %i source indexes and %i signatures\n" + msgid "" + "Found %i package indexes, %i source indexes, %i translation indexes and %i " + "signatures\n" msgstr "" - #: apt-pkg/cdrom.cc:712 -#: apt-pkg/cdrom.cc:711 -#, c-format -msgid "Found label '%s'\n" -msgstr "" - -#: apt-pkg/cdrom.cc:740 ++#: apt-pkg/cdrom.cc:739 apt-pkg/cdrom.cc:737 msgid "That is not a valid name, try again.\n" msgstr "" - #: apt-pkg/cdrom.cc:728 -#: apt-pkg/cdrom.cc:756 ++#: apt-pkg/cdrom.cc:755 apt-pkg/cdrom.cc:753 #, c-format msgid "" "This disc is called: \n" "'%s'\n" msgstr "" - #: apt-pkg/cdrom.cc:732 -#: apt-pkg/cdrom.cc:760 ++#: apt-pkg/cdrom.cc:759 apt-pkg/cdrom.cc:757 msgid "Copying package lists..." msgstr "" - #: apt-pkg/cdrom.cc:756 -#: apt-pkg/cdrom.cc:786 ++#: apt-pkg/cdrom.cc:785 apt-pkg/cdrom.cc:783 msgid "Writing new source list\n" msgstr "" - #: apt-pkg/cdrom.cc:765 -#: apt-pkg/cdrom.cc:795 ++#: apt-pkg/cdrom.cc:794 apt-pkg/cdrom.cc:792 msgid "Source list entries for this disc are:\n" msgstr "" - #: apt-pkg/cdrom.cc:807 -#: apt-pkg/cdrom.cc:837 -msgid "Unmounting CD-ROM...\n" ++#: apt-pkg/cdrom.cc:836 +msgid "Unmounting CD-ROM..." msgstr "" - #: apt-pkg/indexcopy.cc:261 + #: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830 #, c-format msgid "Wrote %i records.\n" msgstr "" - #: apt-pkg/indexcopy.cc:263 + #: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832 #, c-format msgid "Wrote %i records with %i missing files.\n" msgstr "" - #: apt-pkg/indexcopy.cc:266 + #: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835 #, c-format msgid "Wrote %i records with %i mismatched files\n" msgstr "" - #: apt-pkg/indexcopy.cc:269 + #: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838 #, c-format msgid "Wrote %i records with %i missing files and %i mismatched files\n" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:358 ++#: apt-pkg/deb/dpkgpm.cc:358 apt-pkg/deb/dpkgpm.cc:357 #, c-format msgid "Preparing %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:359 ++#: apt-pkg/deb/dpkgpm.cc:359 apt-pkg/deb/dpkgpm.cc:358 #, c-format msgid "Unpacking %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:364 ++#: apt-pkg/deb/dpkgpm.cc:364 apt-pkg/deb/dpkgpm.cc:363 #, c-format msgid "Preparing to configure %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:365 ++#: apt-pkg/deb/dpkgpm.cc:365 apt-pkg/deb/dpkgpm.cc:364 #, c-format msgid "Configuring %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:366 ++#: apt-pkg/deb/dpkgpm.cc:366 apt-pkg/deb/dpkgpm.cc:365 #, c-format msgid "Installed %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:371 ++#: apt-pkg/deb/dpkgpm.cc:371 apt-pkg/deb/dpkgpm.cc:370 #, c-format msgid "Preparing for removal of %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:372 ++#: apt-pkg/deb/dpkgpm.cc:372 apt-pkg/deb/dpkgpm.cc:371 #, c-format msgid "Removing %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:373 ++#: apt-pkg/deb/dpkgpm.cc:373 apt-pkg/deb/dpkgpm.cc:372 #, c-format msgid "Removed %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:378 ++#: apt-pkg/deb/dpkgpm.cc:378 apt-pkg/deb/dpkgpm.cc:377 #, c-format msgid "Preparing to completely remove %s" msgstr "" --#: apt-pkg/deb/dpkgpm.cc:379 ++#: apt-pkg/deb/dpkgpm.cc:379 apt-pkg/deb/dpkgpm.cc:378 #, c-format msgid "Completely removed %s" msgstr "" -#: methods/rred.cc:219 -msgid "Could not patch file" -msgstr "" - #: methods/rsh.cc:330 msgid "Connection closed prematurely" msgstr "" ++ ++#: apt-pkg/cdrom.cc:708 ++#, c-format ++msgid "Found label '%s'\n" ++msgstr "" ++ ++#: apt-pkg/cdrom.cc:834 ++msgid "Unmounting CD-ROM...\n" ++msgstr "" ++ ++#: methods/rred.cc:219 ++msgid "Could not patch file" ++msgstr "" diff --combined share/debian-archive.gpg.moved index 000000000,000000000..bb5ed5033 new file mode 100644 Binary files differ