From: Michael Vogt <michael.vogt@ubuntu.com> 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 * 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 --cc apt-pkg/acquire-item.cc index c42c8af24,1b9120586..b7b16b9a2 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@@ -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())); @@@ -136,49 -132,424 +139,467 @@@ 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<DiffInfo> 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<DiffInfo> 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 << ")"<<std::endl; + + // remove all patches until the next matching patch is found + // this requires the Index file to be ordered + for(vector<DiffInfo>::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 @@@ -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); } } diff --cc apt-pkg/acquire-item.h index 1885f7beb,f5272ed86..233cbdda9 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@@ -44,43 -77,188 +77,200 @@@ class pkgAcquire::Ite 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(); }; @@@ -105,11 -524,34 +536,34 @@@ class pkgAcqIndex : public pkgAcquire:: 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: diff --cc apt-pkg/depcache.cc index 9f0fa143d,fe981ea76..491ba6d4c --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@@ -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 --cc apt-pkg/init.cc index f58855792,2f15486d9..a209d7477 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@@ -105,7 -105,10 +106,9 @@@ bool pkgInitConfig(Configuration &Cnf bindtextdomain(textdomain(0),Cnf.FindDir("Dir::Locale").c_str()); } #endif -- + // Translation + Cnf.Set("APT::Acquire::Translation", "environment"); + return true; } /*}}}*/ diff --cc 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) diff --cc 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 --cc 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 --cc debian/changelog index 32f2ac68a,41609bd74..c86f8abbc --- a/debian/changelog +++ b/debian/changelog @@@ -1,10 -1,64 +1,76 @@@ - 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 <michael.vogt@ubuntu.com> 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 <mvo@debian.org> 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 @@@ -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 <mvo@debian.org> Wed, 2 May 2007 13:43:44 +0200 + -- Michael Vogt <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <mvo@debian.org> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> Thu, 7 Dec 2006 23:07:24 +0100 + +apt (0.6.46.4ubuntu1) feisty; urgency=low + + * merged with debian + + -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 7 Dec 2006 12:13:14 +0100 + apt (0.6.46.4-0.1) unstable; urgency=emergency * NMU diff --cc debian/control index 502edd0c6,5686926d4..7dc0b377f --- a/debian/control +++ b/debian/control @@@ -1,13 -1,12 +1,13 @@@ Source: apt Section: admin Priority: important - Maintainer: Michael Vogt <mvo@ubuntu.com> -Maintainer: APT Development Team <deity@lists.debian.org> ++Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: APT Development Team <deity@lists.debian.org> Uploaders: Jason Gunthorpe <jgg@debian.org>, Adam Heath <doogie@debian.org>, Matt Zimmerman <mdz@debian.org>, Michael Vogt <mvo@debian.org> - 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 diff --cc 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 diff --cc methods/makefile index 610bd5b49,f178cbbea..83bd8c7c9 --- a/methods/makefile +++ b/methods/makefile @@@ -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) diff --cc 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 <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\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 "" @@@ -709,8 -717,8 +710,8 @@@ msgstr " 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 "" @@@ -950,7 -992,7 +951,7 @@@ msgstr " 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 "" @@@ -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 "" @@@ -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 "" @@@ -1813,366 -1857,384 +1821,394 @@@ msgstr " 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 =<val>." 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,77 -2475,84 +2451,80 @@@ 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 "" @@@ -2488,52 -2572,52 +2544,52 @@@ msgstr " 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 "" @@@ -2541,3 -2625,7 +2597,16 @@@ #: 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 --cc share/debian-archive.gpg.moved index 000000000,000000000..bb5ed5033 new file mode 100644 Binary files differ