diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2011-02-08 11:02:46 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2011-02-08 11:02:46 +0100 |
commit | 86e2dc4dd728924d71995ebaeb83a4d9abba94d5 (patch) | |
tree | b535bac6a1c5d75a3db5c810fb225c1e26f080b7 | |
parent | de6d91438ef2e3632615647647099f4c6fa227fa (diff) | |
parent | 33e46bc7032c2bcab654ab3f6a0a10ad82264ead (diff) |
merged from the debian-sid branch
110 files changed, 5416 insertions, 1528 deletions
diff --git a/.bzr-builddeb/default.conf b/.bzr-builddeb/default.conf index f2c082569..9c55498ce 100644 --- a/.bzr-builddeb/default.conf +++ b/.bzr-builddeb/default.conf @@ -1,5 +1,2 @@ [BUILDDEB] native = true - -[HOOKS] -pre-build=./pre-build.sh diff --git a/apt-inst/contrib/extracttar.cc b/apt-inst/contrib/extracttar.cc index 3d2788aaf..1a358d57e 100644 --- a/apt-inst/contrib/extracttar.cc +++ b/apt-inst/contrib/extracttar.cc @@ -195,10 +195,14 @@ bool ExtractTar::Go(pkgDirStream &Stream) // Decode all of the fields pkgDirStream::Item Itm; if (StrToNum(Tar->Mode,Itm.Mode,sizeof(Tar->Mode),8) == false || - StrToNum(Tar->UserID,Itm.UID,sizeof(Tar->UserID),8) == false || - StrToNum(Tar->GroupID,Itm.GID,sizeof(Tar->GroupID),8) == false || - StrToNum(Tar->Size,Itm.Size,sizeof(Tar->Size),8) == false || - StrToNum(Tar->MTime,Itm.MTime,sizeof(Tar->MTime),8) == false || + (Base256ToNum(Tar->UserID,Itm.UID,8) == false && + StrToNum(Tar->UserID,Itm.UID,sizeof(Tar->UserID),8) == false) || + (Base256ToNum(Tar->GroupID,Itm.GID,8) == false && + StrToNum(Tar->GroupID,Itm.GID,sizeof(Tar->GroupID),8) == false) || + (Base256ToNum(Tar->Size,Itm.Size,12) == false && + StrToNum(Tar->Size,Itm.Size,sizeof(Tar->Size),8) == false) || + (Base256ToNum(Tar->MTime,Itm.MTime,12) == false && + StrToNum(Tar->MTime,Itm.MTime,sizeof(Tar->MTime),8) == false) || StrToNum(Tar->Major,Itm.Major,sizeof(Tar->Major),8) == false || StrToNum(Tar->Minor,Itm.Minor,sizeof(Tar->Minor),8) == false) return _error->Error(_("Corrupted archive")); diff --git a/apt-inst/extract.cc b/apt-inst/extract.cc index 85363b9a1..cd8edb27a 100644 --- a/apt-inst/extract.cc +++ b/apt-inst/extract.cc @@ -372,7 +372,6 @@ bool pkgExtract::HandleOverwrites(pkgFLCache::NodeIterator Nde, pkgFLCache::NodeIterator TmpNde = Nde; unsigned long DiverOwner = 0; unsigned long FileGroup = Nde->File; - const char *FirstOwner = 0; for (; Nde.end() == false && FileGroup == Nde->File; Nde++) { if ((Nde->Flags & pkgFLCache::Node::Diversion) != 0) @@ -392,8 +391,7 @@ bool pkgExtract::HandleOverwrites(pkgFLCache::NodeIterator Nde, if something has already been diverted by this diversion */ if (FPkg.Offset() == DiverOwner) continue; - FirstOwner = FPkg.Name(); - + // Now see if this package matches one in a replace depends pkgCache::DepIterator Dep = Ver.DependsList(); bool Ok = false; diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 2c4ce91a0..d4df31e85 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -184,6 +184,151 @@ void pkgAcquire::Item::ReportMirrorFailure(string FailCode) } } /*}}}*/ +// AcqSubIndex::AcqSubIndex - Constructor /*{{{*/ +// --------------------------------------------------------------------- +/* Get the Index file first and see if there are languages available + * If so, create a pkgAcqIndexTrans for the found language(s). + */ +pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire *Owner, string const &URI, + string const &URIDesc, string const &ShortDesc, + HashString const &ExpectedHash) + : Item(Owner), ExpectedHash(ExpectedHash) +{ + Debug = _config->FindB("Debug::pkgAcquire::SubIndex",false); + + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; + DestFile += URItoFileName(URI); + + Desc.URI = URI; + Desc.Description = URIDesc; + Desc.Owner = this; + Desc.ShortDesc = ShortDesc; + + QueueURI(Desc); + + if(Debug) + std::clog << "pkgAcqSubIndex: " << Desc.URI << std::endl; +} + /*}}}*/ +// AcqSubIndex::Custom600Headers - Insert custom request headers /*{{{*/ +// --------------------------------------------------------------------- +/* The only header we use is the last-modified header. */ +string pkgAcqSubIndex::Custom600Headers() +{ + string Final = _config->FindDir("Dir::State::lists"); + Final += URItoFileName(Desc.URI); + + 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 pkgAcqSubIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/ +{ + if(Debug) + std::clog << "pkgAcqSubIndex failed: " << Desc.URI << std::endl; + + Complete = false; + Status = StatDone; + Dequeue(); + + // No good Index is provided, so try guessing + std::vector<std::string> langs = APT::Configuration::getLanguages(true); + for (std::vector<std::string>::const_iterator l = langs.begin(); + l != langs.end(); ++l) + { + if (*l == "none") continue; + string const file = "Translation-" + *l; + new pkgAcqIndexTrans(Owner, Desc.URI.substr(0, Desc.URI.rfind('/')+1).append(file), + Desc.Description.erase(Desc.Description.rfind(' ')+1).append(file), + file); + } +} + /*}}}*/ +void pkgAcqSubIndex::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ + pkgAcquire::MethodConfig *Cnf) +{ + if(Debug) + std::clog << "pkgAcqSubIndex::Done(): " << Desc.URI << std::endl; + + string FileName = LookupTag(Message,"Filename"); + if (FileName.empty() == true) + { + Status = StatError; + ErrorText = "Method gave a blank filename"; + return; + } + + if (FileName != DestFile) + { + Local = true; + Desc.URI = "copy:" + FileName; + QueueURI(Desc); + return; + } + + Item::Done(Message,Size,Md5Hash,Cnf); + + string FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(Desc.URI); + + // sucess in downloading the index + // rename the index + if(Debug) + std::clog << "Renaming: " << DestFile << " -> " << FinalFile << std::endl; + Rename(DestFile,FinalFile); + chmod(FinalFile.c_str(),0644); + DestFile = FinalFile; + + if(ParseIndex(DestFile) == false) + return Failed("", NULL); + + Complete = true; + Status = StatDone; + Dequeue(); + return; +} + /*}}}*/ +bool pkgAcqSubIndex::ParseIndex(string const &IndexFile) /*{{{*/ +{ + indexRecords SubIndexParser; + if (FileExists(IndexFile) == false || SubIndexParser.Load(IndexFile) == false) + return false; + + std::vector<std::string> lang = APT::Configuration::getLanguages(true); + for (std::vector<std::string>::const_iterator l = lang.begin(); + l != lang.end(); ++l) + { + if (*l == "none") + continue; + + string file = "Translation-" + *l; + indexRecords::checkSum const *Record = SubIndexParser.Lookup(file); + HashString expected; + if (Record == NULL) + { + // FIXME: the Index file provided by debian currently only includes bz2 records + Record = SubIndexParser.Lookup(file + ".bz2"); + if (Record == NULL) + continue; + } + else + { + expected = Record->Hash; + if (expected.empty() == true) + continue; + } + + IndexTarget target; + target.Description = Desc.Description.erase(Desc.Description.rfind(' ')+1).append(file); + target.MetaKey = file; + target.ShortDesc = file; + target.URI = Desc.URI.substr(0, Desc.URI.rfind('/')+1).append(file); + new pkgAcqIndexTrans(Owner, &target, expected, &SubIndexParser); + } + return true; +} + /*}}}*/ // AcqDiffIndex::AcqDiffIndex - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Get the DiffIndex file first and see if there are patches availabe @@ -570,24 +715,7 @@ void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash, /* 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) + if(State == StateFetchDiff) { // rred excepts the patch as $FinalFile.ed @@ -639,29 +767,61 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, HashString ExpectedHash, string comprExt) : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash) { + if(comprExt.empty() == true) + { + // autoselect the compression method + std::vector<std::string> types = APT::Configuration::getCompressionTypes(); + for (std::vector<std::string>::const_iterator t = types.begin(); t != types.end(); ++t) + comprExt.append(*t).append(" "); + if (comprExt.empty() == false) + comprExt.erase(comprExt.end()-1); + } + CompressionExtension = comprExt; + + Init(URI, URIDesc, ShortDesc); +} +pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, IndexTarget const *Target, + HashString const &ExpectedHash, indexRecords const *MetaIndexParser) + : Item(Owner), RealURI(Target->URI), ExpectedHash(ExpectedHash) +{ + // autoselect the compression method + std::vector<std::string> types = APT::Configuration::getCompressionTypes(); + CompressionExtension = ""; + if (ExpectedHash.empty() == false) + { + for (std::vector<std::string>::const_iterator t = types.begin(); t != types.end(); ++t) + if (*t == "uncompressed" || MetaIndexParser->Exists(string(Target->MetaKey).append(".").append(*t)) == true) + CompressionExtension.append(*t).append(" "); + } + else + { + for (std::vector<std::string>::const_iterator t = types.begin(); t != types.end(); ++t) + CompressionExtension.append(*t).append(" "); + } + if (CompressionExtension.empty() == false) + CompressionExtension.erase(CompressionExtension.end()-1); + + Init(Target->URI, Target->Description, Target->ShortDesc); +} + /*}}}*/ +// AcqIndex::Init - defered Constructor /*{{{*/ +void pkgAcqIndex::Init(string const &URI, string const &URIDesc, string const &ShortDesc) { Decompression = false; Erase = false; DestFile = _config->FindDir("Dir::State::lists") + "partial/"; DestFile += URItoFileName(URI); - if(comprExt.empty()) - { - // autoselect the compression method - std::vector<std::string> types = APT::Configuration::getCompressionTypes(); - if (types.empty() == true) - comprExt = "plain"; - else - comprExt = "." + types[0]; - } - CompressionExtension = ((comprExt == "plain" || comprExt == ".") ? "" : comprExt); - - Desc.URI = URI + CompressionExtension; + std::string const comprExt = CompressionExtension.substr(0, CompressionExtension.find(' ')); + if (comprExt == "uncompressed") + Desc.URI = URI; + else + Desc.URI = URI + '.' + comprExt; Desc.Description = URIDesc; Desc.Owner = this; Desc.ShortDesc = ShortDesc; - + QueueURI(Desc); } /*}}}*/ @@ -683,37 +843,18 @@ string pkgAcqIndex::Custom600Headers() /*}}}*/ void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/ { - std::vector<std::string> types = APT::Configuration::getCompressionTypes(); - - for (std::vector<std::string>::const_iterator t = types.begin(); - t != types.end(); t++) + size_t const nextExt = CompressionExtension.find(' '); + if (nextExt != std::string::npos) { - // jump over all already tried compression types - const unsigned int nameLen = Desc.URI.size() - (*t).size(); - if(Desc.URI.substr(nameLen) != *t) - continue; - - // we want to try it with the next extension (and make sure to - // not skip over the end) - t++; - if (t == types.end()) - break; - - // queue new download - Desc.URI = Desc.URI.substr(0, nameLen) + *t; - new pkgAcqIndex(Owner, RealURI, Desc.Description, Desc.ShortDesc, - ExpectedHash, string(".").append(*t)); - - Status = StatDone; - Complete = false; - Dequeue(); + CompressionExtension = CompressionExtension.substr(nextExt+1); + Init(RealURI, Desc.Description, Desc.ShortDesc); return; } // on decompression failure, remove bad versions in partial/ - if(Decompression && Erase) { + if (Decompression && Erase) { string s = _config->FindDir("Dir::State::lists") + "partial/"; - s += URItoFileName(RealURI); + s.append(URItoFileName(RealURI)); unlink(s.c_str()); } @@ -790,8 +931,8 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, Status = StatError; ErrorText = "Method gave a blank filename"; } - - string compExt = flExtension(flNotDir(URI(Desc.URI).Path)); + + std::string const compExt = CompressionExtension.substr(0, CompressionExtension.find(' ')); // The files timestamp matches if (StringToBool(LookupTag(Message,"IMS-Hit"),false) == true) { @@ -824,12 +965,7 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, // get the binary name for your used compression type decompProg = _config->Find(string("Acquire::CompressionTypes::").append(compExt),""); if(decompProg.empty() == false); - // flExtensions returns the full name if no extension is found - // this is why we have this complicated compare operation here - // FIMXE: add a new flJustExtension() that return "" if no - // extension is found and use that above so that it can - // be tested against "" - else if(compExt == flNotDir(URI(Desc.URI).Path)) + else if(compExt == "uncompressed") decompProg = "copy"; else { _error->Error("Unsupported extension: %s", compExt.c_str()); @@ -851,6 +987,11 @@ pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire *Owner, : pkgAcqIndex(Owner, URI, URIDesc, ShortDesc, HashString(), "") { } +pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire *Owner, IndexTarget const *Target, + HashString const &ExpectedHash, indexRecords const *MetaIndexParser) + : pkgAcqIndex(Owner, Target, ExpectedHash, MetaIndexParser) +{ +} /*}}}*/ // AcqIndexTrans::Custom600Headers - Insert custom request headers /*{{{*/ // --------------------------------------------------------------------- @@ -870,6 +1011,15 @@ string pkgAcqIndexTrans::Custom600Headers() /* */ void pkgAcqIndexTrans::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { + size_t const nextExt = CompressionExtension.find(' '); + if (nextExt != std::string::npos) + { + CompressionExtension = CompressionExtension.substr(nextExt+1); + Init(RealURI, Desc.Description, Desc.ShortDesc); + Status = StatIdle; + return; + } + if (Cnf->LocalOnly == true || StringToBool(LookupTag(Message,"Transient-Failure"),false) == false) { @@ -879,7 +1029,7 @@ void pkgAcqIndexTrans::Failed(string Message,pkgAcquire::MethodConfig *Cnf) Dequeue(); return; } - + Item::Failed(Message,Cnf); } /*}}}*/ @@ -1094,6 +1244,8 @@ void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash, /*{{{* { string FinalFile = _config->FindDir("Dir::State::lists"); FinalFile += URItoFileName(RealURI); + if (SigFile == DestFile) + SigFile = FinalFile; Rename(DestFile,FinalFile); chmod(FinalFile.c_str(),0644); DestFile = FinalFile; @@ -1127,6 +1279,8 @@ void pkgAcqMetaIndex::RetrievalDone(string Message) /*{{{*/ { string FinalFile = _config->FindDir("Dir::State::lists"); FinalFile += URItoFileName(RealURI); + if (SigFile == DestFile) + SigFile = FinalFile; DestFile = FinalFile; } Complete = true; @@ -1158,6 +1312,10 @@ void pkgAcqMetaIndex::AuthDone(string Message) /*{{{*/ // Download further indexes with verification QueueIndexes(true); + // is it a clearsigned MetaIndex file? + if (DestFile == SigFile) + return; + // Done, move signature file into position string VerifiedSigFile = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI) + ".gpg"; @@ -1174,27 +1332,41 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ HashString ExpectedIndexHash; if (verify) { - const indexRecords::checkSum *Record = MetaIndexParser->Lookup((*Target)->MetaKey); - if (!Record) - { - Status = StatAuthError; - ErrorText = "Unable to find expected entry " - + (*Target)->MetaKey + " in Meta-index file (malformed Release file?)"; - return; - } - ExpectedIndexHash = Record->Hash; - if (_config->FindB("Debug::pkgAcquire::Auth", false)) - { - std::cerr << "Queueing: " << (*Target)->URI << std::endl; - std::cerr << "Expected Hash: " << ExpectedIndexHash.toStr() << std::endl; - } - if (ExpectedIndexHash.empty()) - { - Status = StatAuthError; - ErrorText = "Unable to find hash sum for " - + (*Target)->MetaKey + " in Meta-index file"; - return; - } + const indexRecords::checkSum *Record = MetaIndexParser->Lookup((*Target)->MetaKey); + if (Record == NULL) + { + if ((*Target)->IsOptional() == false) + { + Status = StatAuthError; + strprintf(ErrorText, _("Unable to find expected entry '%s' in Release file (Wrong sources.list entry or malformed file)"), (*Target)->MetaKey.c_str()); + return; + } + } + else + { + ExpectedIndexHash = Record->Hash; + if (_config->FindB("Debug::pkgAcquire::Auth", false)) + { + std::cerr << "Queueing: " << (*Target)->URI << std::endl; + std::cerr << "Expected Hash: " << ExpectedIndexHash.toStr() << std::endl; + } + if (ExpectedIndexHash.empty() == true && (*Target)->IsOptional() == false) + { + Status = StatAuthError; + strprintf(ErrorText, _("Unable to find hash sum for '%s' in Release file"), (*Target)->MetaKey.c_str()); + return; + } + } + } + + if ((*Target)->IsOptional() == true) + { + if ((*Target)->IsSubIndex() == true) + new pkgAcqSubIndex(Owner, (*Target)->URI, (*Target)->Description, + (*Target)->ShortDesc, ExpectedIndexHash); + else + new pkgAcqIndexTrans(Owner, *Target, ExpectedIndexHash, MetaIndexParser); + continue; } /* Queue Packages file (either diff or full packages files, depending @@ -1206,8 +1378,7 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description, (*Target)->ShortDesc, ExpectedIndexHash); else - new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description, - (*Target)->ShortDesc, ExpectedIndexHash); + new pkgAcqIndex(Owner, *Target, ExpectedIndexHash, MetaIndexParser); } } /*}}}*/ @@ -1317,13 +1488,20 @@ void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) if (AuthPass == true) { // gpgv method failed, if we have a good signature - string LastGoodSigFile = _config->FindDir("Dir::State::lists") + - "partial/" + URItoFileName(RealURI) + ".gpg.reverify"; + string LastGoodSigFile = _config->FindDir("Dir::State::lists"); + if (DestFile == SigFile) + LastGoodSigFile.append(URItoFileName(RealURI)); + else + LastGoodSigFile.append("partial/").append(URItoFileName(RealURI)).append(".gpg.reverify"); + if(FileExists(LastGoodSigFile)) { - string VerifiedSigFile = _config->FindDir("Dir::State::lists") + - URItoFileName(RealURI) + ".gpg"; - Rename(LastGoodSigFile,VerifiedSigFile); + if (DestFile != SigFile) + { + string VerifiedSigFile = _config->FindDir("Dir::State::lists") + + URItoFileName(RealURI) + ".gpg"; + Rename(LastGoodSigFile,VerifiedSigFile); + } Status = StatTransientNetworkError; _error->Warning(_("A error occurred during the signature " "verification. The repository is not updated " @@ -1347,6 +1525,35 @@ void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) QueueIndexes(false); } /*}}}*/ +pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire *Owner, /*{{{*/ + string const &URI, string const &URIDesc, string const &ShortDesc, + string const &MetaIndexURI, string const &MetaIndexURIDesc, string const &MetaIndexShortDesc, + string const &MetaSigURI, string const &MetaSigURIDesc, string const &MetaSigShortDesc, + const vector<struct IndexTarget*>* IndexTargets, + indexRecords* MetaIndexParser) : + pkgAcqMetaIndex(Owner, URI, URIDesc, ShortDesc, "", IndexTargets, MetaIndexParser), + MetaIndexURI(MetaIndexURI), MetaIndexURIDesc(MetaIndexURIDesc), MetaIndexShortDesc(MetaIndexShortDesc), + MetaSigURI(MetaSigURI), MetaSigURIDesc(MetaSigURIDesc), MetaSigShortDesc(MetaSigShortDesc) +{ + SigFile = DestFile; +} + /*}}}*/ +void pkgAcqMetaClearSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/ +{ + if (AuthPass == false) + { + new pkgAcqMetaSig(Owner, + MetaSigURI, MetaSigURIDesc, MetaSigShortDesc, + MetaIndexURI, MetaIndexURIDesc, MetaIndexShortDesc, + IndexTargets, MetaIndexParser); + if (Cnf->LocalOnly == true || + StringToBool(LookupTag(Message, "Transient-Failure"), false) == false) + Dequeue(); + } + else + pkgAcqMetaIndex::Failed(Message, Cnf); +} + /*}}}*/ // AcqArchive::AcqArchive - Constructor /*{{{*/ // --------------------------------------------------------------------- /* This just sets up the initial fetch environment and queues the first @@ -1793,3 +2000,13 @@ string pkgAcqFile::Custom600Headers() return ""; } /*}}}*/ +bool IndexTarget::IsOptional() const { + if (strncmp(ShortDesc.c_str(), "Translation", 11) != 0) + return false; + return true; +} +bool IndexTarget::IsSubIndex() const { + if (ShortDesc != "TranslationIndex") + return false; + return true; +} diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 943c61876..2ae7bf27c 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -287,6 +287,50 @@ struct DiffInfo { unsigned long size; }; /*}}}*/ +/** \brief An item that is responsible for fetching a SubIndex {{{ + * + * The MetaIndex file includes only records for important indexes + * and records for these SubIndex files so these can carry records + * for addition files like PDiffs and Translations + */ +class pkgAcqSubIndex : 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 Hash that this file should have after download + */ + HashString ExpectedHash; + + 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 Desc.URI;}; + virtual string Custom600Headers(); + virtual bool ParseIndex(string const &IndexFile); + + /** \brief Create a new pkgAcqSubIndex. + * + * \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 ExpectedHash The list file's MD5 signature. + */ + pkgAcqSubIndex(pkgAcquire *Owner, string const &URI,string const &URIDesc, + string const &ShortDesc, HashString const &ExpectedHash); +}; + /*}}}*/ /** \brief An item that is responsible for fetching an index file of {{{ * package list diffs and starting the package list's download. * @@ -449,7 +493,7 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item StateFetchDiff, /** \brief The diff is currently being uncompressed. */ - StateUnzipDiff, + StateUnzipDiff, // FIXME: No longer used /** \brief The diff is currently being applied. */ StateApplyDiff @@ -528,8 +572,8 @@ class pkgAcqIndex : public pkgAcquire::Item /** \brief The expected hashsum of the decompressed index file. */ HashString ExpectedHash; - /** \brief The compression-related file extension that is being - * added to the downloaded file (e.g., ".gz" or ".bz2"). + /** \brief The compression-related file extensions that are being + * added to the downloaded file one by one if first fails (e.g., "gz bz2"). */ string CompressionExtension; @@ -540,7 +584,7 @@ class pkgAcqIndex : public pkgAcquire::Item virtual void Done(string Message,unsigned long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); virtual string Custom600Headers(); - virtual string DescURI() {return RealURI + CompressionExtension;}; + virtual string DescURI() {return Desc.URI;}; virtual string HashSum() {return ExpectedHash.toStr(); }; /** \brief Create a pkgAcqIndex. @@ -565,6 +609,9 @@ class pkgAcqIndex : public pkgAcquire::Item pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesc, HashString ExpectedHash, string compressExt=""); + pkgAcqIndex(pkgAcquire *Owner, struct IndexTarget const * const Target, + HashString const &ExpectedHash, indexRecords const *MetaIndexParser); + void Init(string const &URI, string const &URIDesc, string const &ShortDesc); }; /*}}}*/ /** \brief An acquire item that is responsible for fetching a {{{ @@ -594,6 +641,8 @@ class pkgAcqIndexTrans : public pkgAcqIndex */ pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesc); + pkgAcqIndexTrans(pkgAcquire *Owner, struct IndexTarget const * const Target, + HashString const &ExpectedHash, indexRecords const *MetaIndexParser); }; /*}}}*/ /** \brief Information about an index file. */ /*{{{*/ @@ -612,8 +661,18 @@ struct IndexTarget * looked up within the meta signature file. */ string MetaKey; + + //FIXME: We should use virtual methods here instead… + bool IsOptional() const; + bool IsSubIndex() const; +}; + /*}}}*/ +/** \brief Information about an optional index file. */ /*{{{*/ +struct OptionalIndexTarget : public IndexTarget +{ }; /*}}}*/ + /** \brief An acquire item that downloads the detached signature {{{ * of a meta-index (Release) file, then queues up the release * file itself. @@ -772,6 +831,39 @@ class pkgAcqMetaIndex : public pkgAcquire::Item indexRecords* MetaIndexParser); }; /*}}}*/ +/** \brief An item repsonsible for downloading clearsigned metaindexes {{{*/ +class pkgAcqMetaClearSig : public pkgAcqMetaIndex +{ + /** \brief The URI of the meta-index file for the detached signature */ + string MetaIndexURI; + + /** \brief A "URI-style" description of the meta-index file */ + string MetaIndexURIDesc; + + /** \brief A brief description of the meta-index file */ + string MetaIndexShortDesc; + + /** \brief The URI of the detached meta-signature file if the clearsigned one failed. */ + string MetaSigURI; + + /** \brief A "URI-style" description of the meta-signature file */ + string MetaSigURIDesc; + + /** \brief A brief description of the meta-signature file */ + string MetaSigShortDesc; + +public: + void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + + /** \brief Create a new pkgAcqMetaClearSig. */ + pkgAcqMetaClearSig(pkgAcquire *Owner, + string const &URI, string const &URIDesc, string const &ShortDesc, + string const &MetaIndexURI, string const &MetaIndexURIDesc, string const &MetaIndexShortDesc, + string const &MetaSigURI, string const &MetaSigURIDesc, string const &MetaSigShortDesc, + const vector<struct IndexTarget*>* IndexTargets, + indexRecords* MetaIndexParser); +}; + /*}}}*/ /** \brief An item that is responsible for fetching a package file. {{{ * * If the package file already exists in the cache, nothing will be diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 0fbce3c2a..0d26f8f66 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -162,7 +162,28 @@ bool pkgSimulate::Configure(PkgIterator iPkg) } } -// Sim.MarkInstall(Pkg,false); + if (Sim[Pkg].InstBroken() == true) + { + /* We don't call Configure for Pseudo packages and if the 'all' is already installed + the simulation will think the pseudo package is not installed, so if something is + broken we walk over the dependencies and search for not installed pseudo packages */ + for (pkgCache::DepIterator D = Sim[Pkg].InstVerIter(Sim).DependsList(); D.end() == false; D++) + { + if (Sim.IsImportantDep(D) == false || + (Sim[D] & pkgDepCache::DepInstall) != 0) + continue; + pkgCache::PkgIterator T = D.TargetPkg(); + if (T.end() == true || T->CurrentVer != 0 || Flags[T->ID] != 0) + continue; + pkgCache::PkgIterator A = T.Group().FindPkg("all"); + if (A.end() == true || A->VersionList == 0 || A->CurrentVer == 0 || + Cache.VS().CheckDep(A.CurVersion(), pkgCache::Dep::Equals, T.CandVersion()) == false) + continue; + Sim.MarkInstall(T, false); + Flags[T->ID] = 2; + } + } + if (Sim[Pkg].InstBroken() == true) { cout << "Conf " << Pkg.FullName(false) << " broken" << endl; diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc index 52f54073c..3cf4d2429 100644 --- a/apt-pkg/aptconfiguration.cc +++ b/apt-pkg/aptconfiguration.cc @@ -90,6 +90,14 @@ const Configuration::getCompressionTypes(bool const &Cached) { types.push_back(Types->Tag); } + // add the special "uncompressed" type + if (std::find(types.begin(), types.end(), "uncompressed") == types.end()) + { + string const uncompr = _config->FindFile("Dir::Bin::uncompressed", ""); + if (uncompr.empty() == true || FileExists(uncompr) == true) + types.push_back("uncompressed"); + } + return types; } /*}}}*/ @@ -155,33 +163,6 @@ std::vector<std::string> const Configuration::getLanguages(bool const &All, } closedir(D); - // get the environment language codes: LC_MESSAGES (and later LANGUAGE) - // we extract both, a long and a short code and then we will - // check if we actually need both (rare) or if the short is enough - string const envMsg = string(Locale == 0 ? std::setlocale(LC_MESSAGES, NULL) : *Locale); - size_t const lenShort = (envMsg.find('_') != string::npos) ? envMsg.find('_') : 2; - size_t const lenLong = (envMsg.find_first_of(".@") != string::npos) ? envMsg.find_first_of(".@") : (lenShort + 3); - - string envLong = envMsg.substr(0,lenLong); - string const envShort = envLong.substr(0,lenShort); - bool envLongIncluded = true; - - // to save the servers from unneeded queries, we only try also long codes - // for languages it is realistic to have a long code translation file… - // TODO: Improve translation acquire system to drop them dynamic - char const *needLong[] = { "cs", "en", "pt", "sv", "zh", NULL }; - if (envLong != envShort) { - for (char const **l = needLong; *l != NULL; l++) - if (envShort.compare(*l) == 0) { - envLongIncluded = false; - break; - } - } - - // we don't add the long code, but we allow the user to do so - if (envLongIncluded == true) - envLong.clear(); - // FIXME: Remove support for the old APT::Acquire::Translation // it was undocumented and so it should be not very widthly used string const oldAcquire = _config->Find("APT::Acquire::Translation",""); @@ -203,12 +184,22 @@ std::vector<std::string> const Configuration::getLanguages(bool const &All, return codes; } - // It is very likely we will need to environment codes later, + // get the environment language codes: LC_MESSAGES (and later LANGUAGE) + // we extract both, a long and a short code and then we will + // check if we actually need both (rare) or if the short is enough + string const envMsg = string(Locale == 0 ? std::setlocale(LC_MESSAGES, NULL) : *Locale); + size_t const lenShort = (envMsg.find('_') != string::npos) ? envMsg.find('_') : 2; + size_t const lenLong = (envMsg.find_first_of(".@") != string::npos) ? envMsg.find_first_of(".@") : (lenShort + 3); + + string const envLong = envMsg.substr(0,lenLong); + string const envShort = envLong.substr(0,lenShort); + + // It is very likely we will need the environment codes later, // so let us generate them now from LC_MESSAGES and LANGUAGE std::vector<string> environment; if (envShort != "C") { // take care of LC_MESSAGES - if (envLongIncluded == false) + if (envLong != envShort) environment.push_back(envLong); environment.push_back(envShort); // take care of LANGUAGE @@ -225,16 +216,6 @@ std::vector<std::string> const Configuration::getLanguages(bool const &All, continue; if (std::find(environment.begin(), environment.end(), *e) != environment.end()) continue; - if (e->find('_') != string::npos) { - // Drop LongCodes here - ShortCodes are also included - string const shorty = e->substr(0, e->find('_')); - char const **n = needLong; - for (; *n != NULL; ++n) - if (shorty == *n) - break; - if (*n == NULL) - continue; - } ++addedLangs; environment.push_back(*e); } diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index 26070636e..449d4b441 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -96,7 +96,7 @@ class pkgCache::GrpIterator: public Iterator<Group, GrpIterator> { protected: inline Group* OwnerPointer() const { - return Owner->GrpP; + return (Owner != 0) ? Owner->GrpP : 0; }; public: @@ -137,7 +137,7 @@ class pkgCache::PkgIterator: public Iterator<Package, PkgIterator> { protected: inline Package* OwnerPointer() const { - return Owner->PkgP; + return (Owner != 0) ? Owner->PkgP : 0; }; public: @@ -184,7 +184,7 @@ class pkgCache::PkgIterator: public Iterator<Package, PkgIterator> { class pkgCache::VerIterator : public Iterator<Version, VerIterator> { protected: inline Version* OwnerPointer() const { - return Owner->VerP; + return (Owner != 0) ? Owner->VerP : 0; }; public: @@ -241,7 +241,7 @@ class pkgCache::VerIterator : public Iterator<Version, VerIterator> { class pkgCache::DescIterator : public Iterator<Description, DescIterator> { protected: inline Description* OwnerPointer() const { - return Owner->DescP; + return (Owner != 0) ? Owner->DescP : 0; }; public: @@ -270,7 +270,7 @@ class pkgCache::DepIterator : public Iterator<Dependency, DepIterator> { protected: inline Dependency* OwnerPointer() const { - return Owner->DepP; + return (Owner != 0) ? Owner->DepP : 0; }; public: @@ -315,7 +315,7 @@ class pkgCache::PrvIterator : public Iterator<Provides, PrvIterator> { protected: inline Provides* OwnerPointer() const { - return Owner->ProvideP; + return (Owner != 0) ? Owner->ProvideP : 0; }; public: @@ -349,7 +349,7 @@ class pkgCache::PrvIterator : public Iterator<Provides, PrvIterator> { class pkgCache::PkgFileIterator : public Iterator<PackageFile, PkgFileIterator> { protected: inline PackageFile* OwnerPointer() const { - return Owner->PkgFileP; + return (Owner != 0) ? Owner->PkgFileP : 0; }; public: @@ -382,7 +382,7 @@ class pkgCache::PkgFileIterator : public Iterator<PackageFile, PkgFileIterator> class pkgCache::VerFileIterator : public pkgCache::Iterator<VerFile, VerFileIterator> { protected: inline VerFile* OwnerPointer() const { - return Owner->VerFileP; + return (Owner != 0) ? Owner->VerFileP : 0; }; public: @@ -401,7 +401,7 @@ class pkgCache::VerFileIterator : public pkgCache::Iterator<VerFile, VerFileIter class pkgCache::DescFileIterator : public Iterator<DescFile, DescFileIterator> { protected: inline DescFile* OwnerPointer() const { - return Owner->DescFileP; + return (Owner != 0) ? Owner->DescFileP : 0; }; public: diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc index 0e36f44a2..04ace10a6 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -198,7 +198,7 @@ int pkgCdrom::Score(string Path) // a symlink gets a big penalty struct stat Buf; string statPath = flNotFile(Path); - string cdromPath = _config->FindDir("Acquire::cdrom::mount","/cdrom/"); + string cdromPath = _config->FindDir("Acquire::cdrom::mount"); while(statPath != cdromPath && statPath != "./") { statPath.resize(statPath.size()-1); // remove the trailing '/' if (lstat(statPath.c_str(),&Buf) == 0) { @@ -509,7 +509,7 @@ bool pkgCdrom::Ident(string &ident, pkgCdromStatus *log) /*{{{*/ stringstream msg; // Startup - string CDROM = _config->FindDir("Acquire::cdrom::mount","/cdrom/"); + string CDROM = _config->FindDir("Acquire::cdrom::mount"); if (CDROM[0] == '.') CDROM= SafeGetCWD() + '/' + CDROM; @@ -568,7 +568,7 @@ bool pkgCdrom::Add(pkgCdromStatus *log) /*{{{*/ stringstream msg; // Startup - string CDROM = _config->FindDir("Acquire::cdrom::mount","/cdrom/"); + string CDROM = _config->FindDir("Acquire::cdrom::mount"); if (CDROM[0] == '.') CDROM= SafeGetCWD() + '/' + CDROM; diff --git a/apt-pkg/contrib/error.cc b/apt-pkg/contrib/error.cc index e2e8d6e57..7dad11689 100644 --- a/apt-pkg/contrib/error.cc +++ b/apt-pkg/contrib/error.cc @@ -18,6 +18,7 @@ #include <iostream> #include <errno.h> #include <stdio.h> +#include <stdlib.h> #include <unistd.h> #include <string> @@ -103,10 +104,21 @@ bool GlobalError::InsertErrno(MsgType const &type, const char *Function, // GlobalError::InsertErrno - formats an error message with the errno /*{{{*/ bool GlobalError::InsertErrno(MsgType type, const char* Function, const char* Description, va_list &args) { - char S[400]; - snprintf(S, sizeof(S), "%s - %s (%i: %s)", Description, - Function, errno, strerror(errno)); - return Insert(type, S, args); + int const errsv = errno; + char* S = (char*) malloc(400); + size_t const Ssize = snprintf(S, 400, "%s - %s (%i: %s)", Description, + Function, errsv, strerror(errsv)) + 1; + + if (Ssize > 400) { + free(S); + S = (char*) malloc(Ssize); + snprintf(S, Ssize, "%s - %s (%i: %s)", Description, + Function, errsv, strerror(errsv)); + } + + bool const geins = Insert(type, S, args); + free(S); + return geins; } /*}}}*/ // GlobalError::Fatal - Add a fatal error to the list /*{{{*/ @@ -157,8 +169,14 @@ bool GlobalError::Insert(MsgType const &type, const char *Description,...) // GlobalError::Insert - Insert a new item at the end /*{{{*/ bool GlobalError::Insert(MsgType type, const char* Description, va_list &args) { - char S[400]; - vsnprintf(S,sizeof(S),Description,args); + char* S = (char*) malloc(400); + size_t const Ssize = vsnprintf(S, 400, Description, args) + 1; + + if (Ssize > 400) { + free(S); + S = (char*) malloc(Ssize); + vsnprintf(S, Ssize, Description, args); + } Item const m(S, type); Messages.push_back(m); @@ -169,6 +187,7 @@ bool GlobalError::Insert(MsgType type, const char* Description, if (type == FATAL || type == DEBUG) std::clog << m << std::endl; + free(S); return false; } /*}}}*/ diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index f4ab066d7..52f517ee0 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -191,7 +191,7 @@ int GetLock(string File,bool Errors) /*}}}*/ // FileExists - Check if a file exists /*{{{*/ // --------------------------------------------------------------------- -/* */ +/* Beware: Directories are also files! */ bool FileExists(string File) { struct stat Buf; @@ -200,6 +200,17 @@ bool FileExists(string File) return true; } /*}}}*/ +// RealFileExists - Check if a file exists and if it is really a file /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool RealFileExists(string File) +{ + struct stat Buf; + if (stat(File.c_str(),&Buf) != 0) + return false; + return ((Buf.st_mode & S_IFREG) != 0); +} + /*}}}*/ // DirectoryExists - Check if a directory exists and is really one /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -304,6 +315,13 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c } std::vector<string> List; + + if (DirectoryExists(Dir.c_str()) == false) + { + _error->Error(_("List of files can't be created as '%s' is not a directory"), Dir.c_str()); + return List; + } + Configuration::MatchAgainstConfig SilentIgnore("Dir::Ignore-Files-Silently"); DIR *D = opendir(Dir.c_str()); if (D == 0) @@ -318,6 +336,20 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c if (Ent->d_name[0] == '.') continue; + // Make sure it is a file and not something else + string const File = flCombine(Dir,Ent->d_name); +#ifdef _DIRENT_HAVE_D_TYPE + if (Ent->d_type != DT_REG) +#endif + { + if (RealFileExists(File.c_str()) == false) + { + if (SilentIgnore.Match(Ent->d_name) == false) + _error->Notice(_("Ignoring '%s' in directory '%s' as it is not a regular file"), Ent->d_name, Dir.c_str()); + continue; + } + } + // check for accepted extension: // no extension given -> periods are bad as hell! // extensions given -> "" extension allows no extension @@ -331,7 +363,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c if (Debug == true) std::clog << "Bad file: " << Ent->d_name << " → no extension" << std::endl; if (SilentIgnore.Match(Ent->d_name) == false) - _error->Notice("Ignoring file '%s' in directory '%s' as it has no filename extension", Ent->d_name, Dir.c_str()); + _error->Notice(_("Ignoring file '%s' in directory '%s' as it has no filename extension"), Ent->d_name, Dir.c_str()); continue; } } @@ -340,7 +372,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c if (Debug == true) std::clog << "Bad file: " << Ent->d_name << " → bad extension »" << flExtension(Ent->d_name) << "«" << std::endl; if (SilentIgnore.Match(Ent->d_name) == false) - _error->Notice("Ignoring file '%s' in directory '%s' as it has an invalid filename extension", Ent->d_name, Dir.c_str()); + _error->Notice(_("Ignoring file '%s' in directory '%s' as it has an invalid filename extension"), Ent->d_name, Dir.c_str()); continue; } } @@ -373,16 +405,6 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c continue; } - // Make sure it is a file and not something else - string const File = flCombine(Dir,Ent->d_name); - struct stat St; - if (stat(File.c_str(),&St) != 0 || S_ISREG(St.st_mode) == 0) - { - if (Debug == true) - std::clog << "Bad file: " << Ent->d_name << " → stat says not a good file" << std::endl; - continue; - } - if (Debug == true) std::clog << "Accept file: " << Ent->d_name << " in " << Dir << std::endl; List.push_back(File); diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index 1380f06b4..cde288ad2 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -72,6 +72,7 @@ class FileFd // Simple manipulators inline int Fd() {return iFd;}; inline void Fd(int fd) {iFd = fd;}; + inline gzFile gzFd() {return gz;}; inline bool IsOpen() {return iFd >= 0;}; inline bool Failed() {return (Flags & Fail) == Fail;}; inline void EraseOnFailure() {Flags |= DelOnFail;}; @@ -93,6 +94,7 @@ bool RunScripts(const char *Cnf); bool CopyFile(FileFd &From,FileFd &To); int GetLock(string File,bool Errors = true); bool FileExists(string File); +bool RealFileExists(string File); bool DirectoryExists(string const &Path) __attrib_const; bool CreateDirectory(string const &Parent, string const &Path); diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc index cffdddc4f..45e81edcb 100644 --- a/apt-pkg/contrib/progress.cc +++ b/apt-pkg/contrib/progress.cc @@ -135,7 +135,7 @@ bool OpProgress::CheckChange(float Interval) OpTextProgress::OpTextProgress(Configuration &Config) : NoUpdate(false), NoDisplay(false), LastLen(0) { - if (Config.FindI("quiet",0) >= 1) + if (Config.FindI("quiet",0) >= 1 || Config.FindB("quiet::NoUpdate", false) == true) NoUpdate = true; if (Config.FindI("quiet",0) >= 2) NoDisplay = true; diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc index c2b335ed7..2e2bb5ebc 100644 --- a/apt-pkg/contrib/strutl.cc +++ b/apt-pkg/contrib/strutl.cc @@ -968,6 +968,23 @@ bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigned Base) return true; } /*}}}*/ +// Base256ToNum - Convert a fixed length binary to a number /*{{{*/ +// --------------------------------------------------------------------- +/* This is used in decoding the 256bit encoded fixed length fields in + tar files */ +bool Base256ToNum(const char *Str,unsigned long &Res,unsigned int Len) +{ + if ((Str[0] & 0x80) == 0) + return false; + else + { + Res = Str[0] & 0x7F; + for(unsigned int i = 1; i < Len; ++i) + Res = (Res<<8) + Str[i]; + return true; + } +} + /*}}}*/ // HexDigit - Convert a hex character into an integer /*{{{*/ // --------------------------------------------------------------------- /* Helper for Hex2Num */ diff --git a/apt-pkg/contrib/strutl.h b/apt-pkg/contrib/strutl.h index 14cf5c943..89cbf0370 100644 --- a/apt-pkg/contrib/strutl.h +++ b/apt-pkg/contrib/strutl.h @@ -52,6 +52,7 @@ string LookupTag(const string &Message,const char *Tag,const char *Default = 0); int StringToBool(const string &Text,int Default = -1); bool ReadMessages(int Fd, vector<string> &List); bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigned Base = 0); +bool Base256ToNum(const char *Str,unsigned long &Res,unsigned int Len); bool Hex2Num(const string &Str,unsigned char *Num,unsigned int Length); bool TokSplitString(char Tok,char *Input,char **List, unsigned long ListMax); diff --git a/apt-pkg/contrib/weakptr.h b/apt-pkg/contrib/weakptr.h index 5158e393c..8de727d89 100644 --- a/apt-pkg/contrib/weakptr.h +++ b/apt-pkg/contrib/weakptr.h @@ -22,6 +22,8 @@ #define WEAK_POINTER_H #include <set> +#include <stddef.h> + /** * Class for objects providing support for weak pointers. * diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index af1209ccb..9961b5ae4 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -324,8 +324,14 @@ bool debPackagesIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const return _error->Error("Problem with MergeList %s",PackageFile.c_str()); // Check the release file - string ReleaseFile = debReleaseIndex(URI,Dist).MetaIndexFile("Release"); + string ReleaseFile = debReleaseIndex(URI,Dist).MetaIndexFile("InRelease"); + bool releaseExists = false; if (FileExists(ReleaseFile) == true) + releaseExists = true; + else + ReleaseFile = debReleaseIndex(URI,Dist).MetaIndexFile("Release"); + + if (releaseExists == true || FileExists(ReleaseFile) == true) { FileFd Rel(ReleaseFile,FileFd::ReadOnly); if (_error->PendingError() == true) diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 1b3bfd6ae..9201e6a54 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -783,45 +783,89 @@ bool debListParser::Step() bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, FileFd &File, string component) { - pkgTagFile Tags(&File, File.Size() + 256); // XXX - pkgTagSection Section; - if (Tags.Step(Section) == false) - return false; - - // FIXME: Do we need it now for multi-arch? - // mvo: I don't think we need to fill that in (it's unused since apt-0.6) -// FileI->Architecture = WriteUniqString(Arch); - // apt-secure does no longer download individual (per-section) Release // file. to provide Component pinning we use the section name now FileI->Component = WriteUniqString(component); - const char *Start; - const char *Stop; - if (Section.Find("Suite",Start,Stop) == true) - FileI->Archive = WriteUniqString(Start,Stop - Start); - if (Section.Find("Component",Start,Stop) == true) - FileI->Component = WriteUniqString(Start,Stop - Start); - if (Section.Find("Version",Start,Stop) == true) - FileI->Version = WriteUniqString(Start,Stop - Start); - if (Section.Find("Origin",Start,Stop) == true) - FileI->Origin = WriteUniqString(Start,Stop - Start); - if (Section.Find("Codename",Start,Stop) == true) - FileI->Codename = WriteUniqString(Start,Stop - Start); - if (Section.Find("Label",Start,Stop) == true) - FileI->Label = WriteUniqString(Start,Stop - Start); - if (Section.Find("Architecture",Start,Stop) == true) - FileI->Architecture = WriteUniqString(Start,Stop - Start); - - if (Section.FindFlag("NotAutomatic",FileI->Flags, - pkgCache::Flag::NotAutomatic) == false) - _error->Warning("Bad NotAutomatic flag"); - if (Section.FindFlag("ButAutomaticUpgrades",FileI->Flags, - pkgCache::Flag::ButAutomaticUpgrades) == false) - _error->Warning("Bad ButAutomaticUpgrades flag"); - // overrule the NotAutomatic setting if needed as they are both present for compatibility - else if ((FileI->Flags & pkgCache::Flag::ButAutomaticUpgrades) == pkgCache::Flag::ButAutomaticUpgrades) - FileI->Flags &= ~pkgCache::Flag::NotAutomatic; + FILE* release = fdopen(dup(File.Fd()), "r"); + if (release == NULL) + return false; + + char buffer[101]; + bool gpgClose = false; + while (fgets(buffer, sizeof(buffer), release) != NULL) + { + size_t len = 0; + + // Skip empty lines + for (; buffer[len] == '\r' && buffer[len] == '\n'; ++len); + if (buffer[len] == '\0') + continue; + + // only evalute the first GPG section + if (strncmp("-----", buffer, 5) == 0) + { + if (gpgClose == true) + break; + gpgClose = true; + continue; + } + + // seperate the tag from the data + for (; buffer[len] != ':' && buffer[len] != '\0'; ++len); + if (buffer[len] == '\0') + continue; + char* dataStart = buffer + len; + for (++dataStart; *dataStart == ' '; ++dataStart); + char* dataEnd = dataStart; + for (++dataEnd; *dataEnd != '\0'; ++dataEnd); + + // which datastorage need to be updated + map_ptrloc* writeTo = NULL; + if (buffer[0] == ' ') + ; + #define APT_PARSER_WRITETO(X, Y) else if (strncmp(Y, buffer, len) == 0) writeTo = &X; + APT_PARSER_WRITETO(FileI->Archive, "Suite") + APT_PARSER_WRITETO(FileI->Component, "Component") + APT_PARSER_WRITETO(FileI->Version, "Version") + APT_PARSER_WRITETO(FileI->Origin, "Origin") + APT_PARSER_WRITETO(FileI->Codename, "Codename") + APT_PARSER_WRITETO(FileI->Label, "Label") + #undef APT_PARSER_WRITETO + #define APT_PARSER_FLAGIT(X) else if (strncmp(#X, buffer, len) == 0) \ + pkgTagSection::FindFlag(FileI->Flags, pkgCache::Flag:: X, dataStart, dataEnd-1); + APT_PARSER_FLAGIT(NotAutomatic) + APT_PARSER_FLAGIT(ButAutomaticUpgrades) + #undef APT_PARSER_FLAGIT + + // load all data from the line and save it + string data; + if (writeTo != NULL) + data.append(dataStart, dataEnd); + if (sizeof(buffer) - 1 == (dataEnd - buffer)) + { + while (fgets(buffer, sizeof(buffer), release) != NULL) + { + if (writeTo != NULL) + data.append(buffer); + if (strlen(buffer) != sizeof(buffer) - 1) + break; + } + } + if (writeTo != NULL) + { + // remove spaces and stuff from the end of the data line + for (std::string::reverse_iterator s = data.rbegin(); + s != data.rend(); ++s) + { + if (*s != '\r' && *s != '\n' && *s != ' ') + break; + *s = '\0'; + } + *writeTo = WriteUniqString(data); + } + } + fclose(release); return !_error->PendingError(); } diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index 717d0bcde..a6edab6b9 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -119,6 +119,29 @@ string debReleaseIndex::SourceIndexURI(const char *Type, const string &Section) return URI + "dists/" + Dist + "/" + SourceIndexURISuffix(Type, Section); } +string debReleaseIndex::TranslationIndexURISuffix(const char *Type, const string &Section) const +{ + string Res =""; + if (Dist[Dist.size() - 1] != '/') + Res += Section + "/i18n/"; + return Res + Type; +} + +string debReleaseIndex::TranslationIndexURI(const char *Type, const string &Section) const +{ + string Res; + if (Dist[Dist.size() - 1] == '/') + { + if (Dist != "/") + Res = URI + Dist; + else + Res = URI; + return Res + Type; + } + else + return URI + "dists/" + Dist + "/" + TranslationIndexURISuffix(Type, Section); +} + debReleaseIndex::debReleaseIndex(string const &URI, string const &Dist) { this->URI = URI; this->Dist = Dist; @@ -155,6 +178,7 @@ vector <struct IndexTarget *>* debReleaseIndex::ComputeIndexTargets() const { if (IndexTargets->empty() == false && ArchEntries.size() == 1) return IndexTargets; + std::set<std::string> sections; for (map<string, vector<debSectionEntry const*> >::const_iterator a = ArchEntries.begin(); a != ArchEntries.end(); ++a) { if (a->first == "source") @@ -167,6 +191,37 @@ vector <struct IndexTarget *>* debReleaseIndex::ComputeIndexTargets() const { Target->URI = IndexURI(Target->ShortDesc.c_str(), (*I)->Section, a->first); Target->Description = Info (Target->ShortDesc.c_str(), (*I)->Section, a->first); IndexTargets->push_back (Target); + sections.insert((*I)->Section); + } + } + + // get the Translations: + // - if its a dists-style repository get the i18n/Index first + // - if its flat try to acquire files by guessing + if (Dist[Dist.size() - 1] == '/') { + std::vector<std::string> const lang = APT::Configuration::getLanguages(true); + for (std::set<std::string>::const_iterator s = sections.begin(); + s != sections.end(); ++s) { + for (std::vector<std::string>::const_iterator l = lang.begin(); + l != lang.end(); l++) { + if (*l == "none") continue; + IndexTarget * Target = new OptionalIndexTarget(); + Target->ShortDesc = "Translation-" + *l; + Target->MetaKey = TranslationIndexURISuffix(l->c_str(), *s); + Target->URI = TranslationIndexURI(l->c_str(), *s); + Target->Description = Info (Target->ShortDesc.c_str(), *s); + IndexTargets->push_back(Target); + } + } + } else { + for (std::set<std::string>::const_iterator s = sections.begin(); + s != sections.end(); ++s) { + IndexTarget * Target = new OptionalIndexTarget(); + Target->ShortDesc = "TranslationIndex"; + Target->MetaKey = TranslationIndexURISuffix("Index", *s); + Target->URI = TranslationIndexURI("Index", *s); + Target->Description = Info (Target->ShortDesc.c_str(), *s); + IndexTargets->push_back (Target); } } @@ -182,58 +237,34 @@ bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll) const new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description, (*Target)->ShortDesc, HashString()); } - // this is normally created in pkgAcqMetaSig, but if we run - // in --print-uris mode, we add it here - new pkgAcqMetaIndex(Owner, MetaIndexURI("Release"), - MetaIndexInfo("Release"), "Release", - MetaIndexURI("Release.gpg"), - ComputeIndexTargets(), - new indexRecords (Dist)); - } - new pkgAcqMetaSig(Owner, MetaIndexURI("Release.gpg"), - MetaIndexInfo("Release.gpg"), "Release.gpg", - MetaIndexURI("Release"), MetaIndexInfo("Release"), "Release", - ComputeIndexTargets(), - new indexRecords (Dist)); - - // Queue the translations - std::vector<std::string> const lang = APT::Configuration::getLanguages(true); - map<string, set<string> > sections; - for (map<string, vector<debSectionEntry const*> >::const_iterator a = ArchEntries.begin(); - a != ArchEntries.end(); ++a) { - if (a->first == "source") - continue; - for (vector<debSectionEntry const*>::const_iterator I = a->second.begin(); - I != a->second.end(); I++) - sections[(*I)->Section].insert(lang.begin(), lang.end()); - } - - for (map<string, set<string> >::const_iterator s = sections.begin(); - s != sections.end(); ++s) - for (set<string>::const_iterator l = s->second.begin(); - l != s->second.end(); l++) { - if (*l == "none") continue; - debTranslationsIndex i = debTranslationsIndex(URI,Dist,s->first,(*l).c_str()); - i.GetIndexes(Owner); - } + new pkgAcqMetaClearSig(Owner, MetaIndexURI("InRelease"), + MetaIndexInfo("InRelease"), "InRelease", + MetaIndexURI("Release"), MetaIndexInfo("Release"), "Release", + MetaIndexURI("Release.gpg"), MetaIndexInfo("Release.gpg"), "Release.gpg", + ComputeIndexTargets(), + new indexRecords (Dist)); return true; } bool debReleaseIndex::IsTrusted() const { - string VerifiedSigFile = _config->FindDir("Dir::State::lists") + - URItoFileName(MetaIndexURI("Release")) + ".gpg"; - if(_config->FindB("APT::Authentication::TrustCDROM", false)) if(URI.substr(0,strlen("cdrom:")) == "cdrom:") return true; - + + string VerifiedSigFile = _config->FindDir("Dir::State::lists") + + URItoFileName(MetaIndexURI("Release")) + ".gpg"; + if (FileExists(VerifiedSigFile)) return true; - return false; + + VerifiedSigFile = _config->FindDir("Dir::State::lists") + + URItoFileName(MetaIndexURI("InRelease")); + + return FileExists(VerifiedSigFile); } vector <pkgIndexFile *> *debReleaseIndex::GetIndexFiles() { diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h index 360fa5419..1561c6e00 100644 --- a/apt-pkg/deb/debmetaindex.h +++ b/apt-pkg/deb/debmetaindex.h @@ -37,6 +37,8 @@ class debReleaseIndex : public metaIndex { string IndexURISuffix(const char *Type, string const &Section, string const &Arch="native") const; string SourceIndexURI(const char *Type, const string &Section) const; string SourceIndexURISuffix(const char *Type, const string &Section) const; + string TranslationIndexURI(const char *Type, const string &Section) const; + string TranslationIndexURISuffix(const char *Type, const string &Section) const; virtual vector <pkgIndexFile *> *GetIndexFiles(); virtual bool IsTrusted() const; diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index cca590a63..f56e258e3 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -322,7 +322,6 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) return _error->Errno("fdopen","Faild to open new FD"); // Feed it the filenames. - bool Die = false; if (Version <= 1) { for (vector<Item>::iterator I = List.begin(); I != List.end(); I++) @@ -339,14 +338,11 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) into the pipe. */ fprintf(F,"%s\n",I->File.c_str()); if (ferror(F) != 0) - { - Die = true; break; - } } } else - Die = !SendV2Pkgs(F); + SendV2Pkgs(F); fclose(F); @@ -1230,7 +1226,7 @@ bool pkgDPkgPM::Go(int OutStatusFd) strprintf(dpkg_error, "Sub-process %s exited unexpectedly",Args[0]); if(dpkg_error.size() > 0) - _error->Error(dpkg_error.c_str()); + _error->Error("%s", dpkg_error.c_str()); if(stopOnError) { @@ -1427,7 +1423,7 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) { while( fgets(buf, sizeof(buf), log) != NULL) fprintf(report, " %s", buf); - fclose(log); + pclose(log); } } @@ -1443,7 +1439,7 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) { while( fgets(buf, sizeof(buf), log) != NULL) fprintf(report, " %s", buf); - fclose(log); + pclose(log); } } diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 72bdd3199..4c12a4fe1 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -10,6 +10,7 @@ // Include Files /*{{{*/ #include <apt-pkg/depcache.h> #include <apt-pkg/version.h> +#include <apt-pkg/versionmatch.h> #include <apt-pkg/error.h> #include <apt-pkg/sptr.h> #include <apt-pkg/algorithms.h> @@ -166,7 +167,7 @@ bool pkgDepCache::readStateFile(OpProgress *Prog) /*{{{*/ { FileFd state_file; string const state = _config->FindFile("Dir::State::extended_states"); - if(FileExists(state)) { + if(RealFileExists(state)) { state_file.Open(state, FileFd::ReadOnly); int const file_size = state_file.Size(); if(Prog != NULL) @@ -225,7 +226,7 @@ bool pkgDepCache::writeStateFile(OpProgress *prog, bool InstalledOnly) /*{{{*/ string const state = _config->FindFile("Dir::State::extended_states"); // if it does not exist, create a empty one - if(!FileExists(state)) + if(!RealFileExists(state)) { StateFile.Open(state, FileFd::WriteAtomic); StateFile.Close(); @@ -338,7 +339,7 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res) /* Check simple depends. A depends -should- never self match but we allow it anyhow because dpkg does. Technically it is a packaging bug. Conflicts may never self match */ - if (Dep.TargetPkg()->Group != Dep.ParentPkg()->Group || + if (Dep.TargetPkg() != Dep.ParentPkg() || (Dep->Type != Dep::Conflicts && Dep->Type != Dep::DpkgBreaks && Dep->Type != Dep::Obsoletes)) { PkgIterator Pkg = Dep.TargetPkg(); @@ -1333,8 +1334,6 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, for (DepIterator D = instVer.DependsList(); D.end() != true; D++) { //FIXME: deal better with or-groups(?) - DepIterator LocalStart = D; - if(IsImportantDep(D) && !D.IsCritical() && Start.TargetPkg() == D.TargetPkg()) { @@ -1514,15 +1513,19 @@ void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To) /* */ void pkgDepCache::SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo) { - ActionGroup group(*this); pkgCache::PkgIterator Pkg = TargetVer.ParentPkg(); StateCache &P = PkgState[Pkg->ID]; + if (P.CandidateVer == TargetVer) + return; + + ActionGroup group(*this); + RemoveSizes(Pkg); RemoveStates(Pkg); - if (P.CandidateVer == P.InstallVer) + if (P.CandidateVer == P.InstallVer && P.Install() == true) P.InstallVer = (Version *)TargetVer; P.CandidateVer = (Version *)TargetVer; P.Update(Pkg,*this); @@ -1553,7 +1556,171 @@ void pkgDepCache::SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo) } } } + /*}}}*/ +// DepCache::SetCandidateRelease - Change the candidate version /*{{{*/ +// --------------------------------------------------------------------- +/* changes the candidate of a package and walks over all its dependencies + to check if it needs to change the candidate of the dependency, too, + to reach a installable versionstate */ +bool pkgDepCache::SetCandidateRelease(pkgCache::VerIterator TargetVer, + std::string const &TargetRel) +{ + std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > Changed; + return SetCandidateRelease(TargetVer, TargetRel, Changed); +} +bool pkgDepCache::SetCandidateRelease(pkgCache::VerIterator TargetVer, + std::string const &TargetRel, + std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > &Changed) +{ + ActionGroup group(*this); + SetCandidateVersion(TargetVer); + + if (TargetRel == "installed" || TargetRel == "candidate") // both doesn't make sense in this context + return true; + + pkgVersionMatch Match(TargetRel, pkgVersionMatch::Release); + // save the position of the last element we will not undo - if we have to + std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> >::iterator newChanged = --(Changed.end()); + + for (pkgCache::DepIterator D = TargetVer.DependsList(); D.end() == false; ++D) + { + if (D->Type != pkgCache::Dep::PreDepends && D->Type != pkgCache::Dep::Depends && + ((D->Type != pkgCache::Dep::Recommends && D->Type != pkgCache::Dep::Suggests) || + IsImportantDep(D) == false)) + continue; + + // walk over an or-group and check if we need to do anything + // for simpilicity no or-group is handled as a or-group including one dependency + pkgCache::DepIterator Start = D; + bool itsFine = false; + for (bool stillOr = true; stillOr == true; ++Start) + { + stillOr = (Start->CompareOp & Dep::Or) == Dep::Or; + pkgCache::PkgIterator const P = Start.TargetPkg(); + // virtual packages can't be a solution + if (P.end() == true || (P->ProvidesList == 0 && P->VersionList == 0)) + continue; + pkgCache::VerIterator const Cand = PkgState[P->ID].CandidateVerIter(*this); + // no versioned dependency - but is it installable? + if (Start.TargetVer() == 0 || Start.TargetVer()[0] == '\0') + { + // Check if one of the providers is installable + if (P->ProvidesList != 0) + { + pkgCache::PrvIterator Prv = P.ProvidesList(); + for (; Prv.end() == false; ++Prv) + { + pkgCache::VerIterator const C = PkgState[Prv.OwnerPkg()->ID].CandidateVerIter(*this); + if (C.end() == true || C != Prv.OwnerVer() || + (VersionState(C.DependsList(), DepInstall, DepCandMin, DepCandPolicy) & DepCandMin) != DepCandMin) + continue; + break; + } + if (Prv.end() == true) + continue; + } + // no providers, so check if we have an installable candidate version + else if (Cand.end() == true || + (VersionState(Cand.DependsList(), DepInstall, DepCandMin, DepCandPolicy) & DepCandMin) != DepCandMin) + continue; + itsFine = true; + break; + } + if (Cand.end() == true) + continue; + // check if the current candidate is enough for the versioned dependency - and installable? + if (VS().CheckDep(P.CandVersion(), Start->CompareOp, Start.TargetVer()) == true && + (VersionState(Cand.DependsList(), DepInstall, DepCandMin, DepCandPolicy) & DepCandMin) == DepCandMin) + { + itsFine = true; + break; + } + } + + if (itsFine == true) { + // something in the or-group was fine, skip all other members + for (; (D->CompareOp & Dep::Or) == Dep::Or; ++D); + continue; + } + + // walk again over the or-group and check each if a candidate switch would help + itsFine = false; + for (bool stillOr = true; stillOr == true; ++D) + { + stillOr = (D->CompareOp & Dep::Or) == Dep::Or; + // changing candidate will not help if the dependency is not versioned + if (D.TargetVer() == 0 || D.TargetVer()[0] == '\0') + { + if (stillOr == true) + continue; + break; + } + + pkgCache::VerIterator V; + if (TargetRel == "newest") + V = D.TargetPkg().VersionList(); + else + V = Match.Find(D.TargetPkg()); + + // check if the version from this release could satisfy the dependency + if (V.end() == true || VS().CheckDep(V.VerStr(), D->CompareOp, D.TargetVer()) == false) + { + if (stillOr == true) + continue; + break; + } + + pkgCache::VerIterator oldCand = PkgState[D.TargetPkg()->ID].CandidateVerIter(*this); + if (V == oldCand) + { + // Do we already touched this Version? If so, their versioned dependencies are okay, no need to check again + for (std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> >::const_iterator c = Changed.begin(); + c != Changed.end(); ++c) + { + if (c->first->ParentPkg != V->ParentPkg) + continue; + itsFine = true; + break; + } + } + + if (itsFine == false) + { + // change the candidate + Changed.push_back(make_pair(oldCand, TargetVer)); + if (SetCandidateRelease(V, TargetRel, Changed) == false) + { + if (stillOr == false) + break; + // undo the candidate changing + SetCandidateVersion(oldCand); + Changed.pop_back(); + continue; + } + itsFine = true; + } + + // something in the or-group was fine, skip all other members + for (; (D->CompareOp & Dep::Or) == Dep::Or; ++D); + break; + } + if (itsFine == false && (D->Type == pkgCache::Dep::PreDepends || D->Type == pkgCache::Dep::Depends)) + { + // undo all changes which aren't lead to a solution + for (std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> >::const_iterator c = ++newChanged; + c != Changed.end(); ++c) + SetCandidateVersion(c->first); + Changed.erase(newChanged, Changed.end()); + return false; + } + } + return true; +} + /*}}}*/ +// DepCache::MarkAuto - set the Auto flag for a package /*{{{*/ +// --------------------------------------------------------------------- +/* */ void pkgDepCache::MarkAuto(const PkgIterator &Pkg, bool Auto) { StateCache &state = PkgState[Pkg->ID]; @@ -1756,10 +1923,11 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg, return; VerIterator const currver = pkg.CurrentVer(); - VerIterator const candver = state.CandidateVerIter(*this); VerIterator const instver = state.InstVerIter(*this); #if 0 + VerIterator const candver = state.CandidateVerIter(*this); + // If a package was garbage-collected but is now being marked, we // should re-select it // For cases when a pkg is set to upgrade and this trigger the diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index 2d3dbdf77..dba3e22dc 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -396,6 +396,25 @@ class pkgDepCache : protected pkgCache::Namespace void SetReInstall(PkgIterator const &Pkg,bool To); void SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo = true); + bool SetCandidateRelease(pkgCache::VerIterator TargetVer, + std::string const &TargetRel); + /** Set the candidate version for dependencies too if needed. + * + * Sets not only the candidate version as SetCandidateVersion does, + * but walks also down the dependency tree and checks if it is required + * to set the candidate of the dependency to a version from the given + * release, too. + * + * \param TargetVer new candidate version of the package + * \param TargetRel try to switch to this release if needed + * \param[out] Changed a list of pairs consisting of the \b old + * version of the changed package and the version which + * required the switch of this dependency + * \return \b true if the switch was successful, \b false otherwise + */ + bool SetCandidateRelease(pkgCache::VerIterator TargetVer, + std::string const &TargetRel, + std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > &Changed); /** Set the "is automatically installed" flag of Pkg. */ void MarkAuto(const PkgIterator &Pkg, bool Auto); diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc index f88d51fc5..c2ee1c347 100644 --- a/apt-pkg/indexcopy.cc +++ b/apt-pkg/indexcopy.cc @@ -722,7 +722,8 @@ bool SigVerify::RunGPGV(std::string const &File, std::string const &FileGPG, } Args.push_back(FileGPG.c_str()); - Args.push_back(File.c_str()); + if (FileGPG != File) + Args.push_back(File.c_str()); Args.push_back(NULL); if (Debug == true) diff --git a/apt-pkg/indexrecords.cc b/apt-pkg/indexrecords.cc index eb9a36866..10e154ad2 100644 --- a/apt-pkg/indexrecords.cc +++ b/apt-pkg/indexrecords.cc @@ -55,14 +55,17 @@ bool indexRecords::Load(const string Filename) /*{{{*/ } pkgTagSection Section; - if (TagFile.Step(Section) == false) - { - strprintf(ErrorText, _("No sections in Release file %s"), Filename.c_str()); - return false; - } - const char *Start, *End; - Section.Get (Start, End, 0); + // Skip over sections beginning with ----- as this is an idicator for clearsigns + do { + if (TagFile.Step(Section) == false) + { + strprintf(ErrorText, _("No sections in Release file %s"), Filename.c_str()); + return false; + } + + Section.Get (Start, End, 0); + } while (End - Start > 5 && strncmp(Start, "-----", 5) == 0); Suite = Section.FindS("Suite"); Dist = Section.FindS("Codename"); diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index e031cbb94..0354e6e4d 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -52,7 +52,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/"); Cnf.Set("Dir::Cache::archives","archives/"); @@ -91,16 +91,19 @@ bool pkgInitConfig(Configuration &Cnf) // Translation Cnf.Set("APT::Acquire::Translation", "environment"); + // Default cdrom mount point + Cnf.Set("Acquire::cdrom::mount", "/media/cdrom/"); + bool Res = true; // Read an alternate config file const char *Cfg = getenv("APT_CONFIG"); if (Cfg != 0) { - if (FileExists(Cfg) == true) + if (RealFileExists(Cfg) == true) Res &= ReadConfigFile(Cnf,Cfg); else - _error->WarningE("FileExists",_("Unable to read %s"),Cfg); + _error->WarningE("RealFileExists",_("Unable to read %s"),Cfg); } // Read the configuration parts dir @@ -112,7 +115,7 @@ bool pkgInitConfig(Configuration &Cnf) // Read the main config file string FName = Cnf.FindFile("Dir::Etc::main"); - if (FileExists(FName) == true) + if (RealFileExists(FName) == true) Res &= ReadConfigFile(Cnf,FName); if (Res == false) diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index ed35174bb..5b943cca1 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -638,21 +638,19 @@ bool pkgCacheGenerator::FinishCache(OpProgress *Progress) Dynamic<pkgCache::PkgIterator> DynP(P); for (; P.end() != true; P = G.NextPkg(P)) { - if (strcmp(P.Arch(),"all") == 0) - continue; pkgCache::PkgIterator allPkg; Dynamic<pkgCache::PkgIterator> DynallPkg(allPkg); pkgCache::VerIterator V = P.VersionList(); Dynamic<pkgCache::VerIterator> DynV(V); for (; V.end() != true; V++) { - string const Arch = V.Arch(true); + char const * const Arch = P.Arch(); map_ptrloc *OldDepLast = NULL; /* MultiArch handling introduces a lot of implicit Dependencies: - MultiArch: same → Co-Installable if they have the same version - Architecture: all → Need to be Co-Installable for internal reasons - All others conflict with all other group members */ - bool const coInstall = (V->MultiArch == pkgCache::Version::All || + bool const coInstall = ((V->MultiArch == pkgCache::Version::All && strcmp(Arch, "all") != 0) || V->MultiArch == pkgCache::Version::Same); if (V->MultiArch == pkgCache::Version::All && allPkg.end() == true) allPkg = G.FindPkg("all"); @@ -686,9 +684,15 @@ bool pkgCacheGenerator::FinishCache(OpProgress *Progress) } } else { // Conflicts: ${self}:other - NewDepends(D, V, "", - pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts, - OldDepLast); + if (strcmp(Arch, "all") == 0) { + NewDepends(D, V, V.VerStr(), + pkgCache::Dep::NotEquals, pkgCache::Dep::Conflicts, + OldDepLast); + } else { + NewDepends(D, V, "", + pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts, + OldDepLast); + } } } } diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index 4f9d56775..5427271b6 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -45,6 +45,8 @@ using namespace std; file matches the V0 policy engine. */ pkgPolicy::pkgPolicy(pkgCache *Owner) : Pins(0), PFPriority(0), Cache(Owner) { + if (Owner == 0 || &(Owner->Head()) == 0) + return; PFPriority = new signed short[Owner->Head().PackageFileCount]; Pins = new Pin[Owner->Head().PackageCount]; @@ -328,7 +330,7 @@ bool ReadPinFile(pkgPolicy &Plcy,string File) if (File.empty() == true) File = _config->FindFile("Dir::Etc::Preferences"); - if (FileExists(File) == false) + if (RealFileExists(File) == false) return true; FileFd Fd(File,FileFd::ReadOnly); diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc index c3ec9865a..851eefdfe 100644 --- a/apt-pkg/sourcelist.cc +++ b/apt-pkg/sourcelist.cc @@ -197,7 +197,7 @@ bool pkgSourceList::ReadMainList() string Main = _config->FindFile("Dir::Etc::sourcelist"); string Parts = _config->FindDir("Dir::Etc::sourceparts"); - if (FileExists(Main) == true) + if (RealFileExists(Main) == true) Res &= ReadAppend(Main); else if (DirectoryExists(Parts) == false) // Only warn if there are no sources.list.d. @@ -205,9 +205,9 @@ bool pkgSourceList::ReadMainList() if (DirectoryExists(Parts) == true) Res &= ReadSourceDir(Parts); - else if (FileExists(Main) == false) + else if (RealFileExists(Main) == false) // Only warn if there is no sources.list file. - _error->WarningE("FileExists", _("Unable to read %s"), Main.c_str()); + _error->WarningE("RealFileExists", _("Unable to read %s"), Main.c_str()); return Res; } diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc index 96a681bec..4a2f3f7e6 100644 --- a/apt-pkg/tagfile.cc +++ b/apt-pkg/tagfile.cc @@ -399,9 +399,13 @@ bool pkgTagSection::FindFlag(const char *Tag,unsigned long &Flags, const char *Stop; if (Find(Tag,Start,Stop) == false) return true; - - switch (StringToBool(string(Start,Stop))) - { + return FindFlag(Flags, Flag, Start, Stop); +} +bool const pkgTagSection::FindFlag(unsigned long &Flags, unsigned long Flag, + char const* Start, char const* Stop) +{ + switch (StringToBool(string(Start, Stop))) + { case 0: Flags &= ~Flag; return true; diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h index 6891c1d81..61491aa04 100644 --- a/apt-pkg/tagfile.h +++ b/apt-pkg/tagfile.h @@ -60,6 +60,8 @@ class pkgTagSection unsigned long long FindULL(const char *Tag, unsigned long long const &Default = 0) const; bool FindFlag(const char *Tag,unsigned long &Flags, unsigned long Flag) const; + bool static const FindFlag(unsigned long &Flags, unsigned long Flag, + const char* Start, const char* Stop); bool Scan(const char *Start,unsigned long MaxLength); inline unsigned long size() const {return Stop - Section;}; void Trim(); diff --git a/apt-pkg/vendorlist.cc b/apt-pkg/vendorlist.cc index 589997081..92ff38894 100644 --- a/apt-pkg/vendorlist.cc +++ b/apt-pkg/vendorlist.cc @@ -21,11 +21,11 @@ bool pkgVendorList::ReadMainList() Configuration Cnf; string CnfFile = _config->FindDir("Dir::Etc::vendorparts"); - if (FileExists(CnfFile) == true) + if (DirectoryExists(CnfFile) == true) if (ReadConfigDir(Cnf,CnfFile,true) == false) return false; CnfFile = _config->FindFile("Dir::Etc::vendorlist"); - if (FileExists(CnfFile) == true) + if (RealFileExists(CnfFile) == true) if (ReadConfigFile(Cnf,CnfFile,true) == false) return false; diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index 45ea50433..34070ba9b 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -1118,58 +1118,6 @@ bool Dotty(CommandLine &CmdL) return true; } /*}}}*/ -// DoAdd - Perform an adding operation /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool DoAdd(CommandLine &CmdL) -{ - return _error->Error("Unimplemented"); -#if 0 - // Make sure there is at least one argument - if (CmdL.FileSize() <= 1) - return _error->Error("You must give at least one file name"); - - // Open the cache - FileFd CacheF(_config->FindFile("Dir::Cache::pkgcache"),FileFd::WriteAny); - if (_error->PendingError() == true) - return false; - - DynamicMMap Map(CacheF,MMap::Public); - if (_error->PendingError() == true) - return false; - - OpTextProgress Progress(*_config); - pkgCacheGenerator Gen(Map,Progress); - if (_error->PendingError() == true) - return false; - - unsigned long Length = CmdL.FileSize() - 1; - for (const char **I = CmdL.FileList + 1; *I != 0; I++) - { - Progress.OverallProgress(I - CmdL.FileList,Length,1,"Generating cache"); - Progress.SubProgress(Length); - - // Do the merge - FileFd TagF(*I,FileFd::ReadOnly); - debListParser Parser(TagF); - if (_error->PendingError() == true) - return _error->Error("Problem opening %s",*I); - - if (Gen.SelectFile(*I,"") == false) - return _error->Error("Problem with SelectFile"); - - if (Gen.MergeList(Parser) == false) - return _error->Error("Problem with MergeList"); - } - - Progress.Done(); - GCache = &Gen.GetCache(); - Stats(CmdL); - - return true; -#endif -} - /*}}}*/ // DisplayRecord - Displays the complete record for the package /*{{{*/ // --------------------------------------------------------------------- /* This displays the package record from the proper package index file. @@ -1743,15 +1691,13 @@ bool ShowHelp(CommandLine &Cmd) cout << _("Usage: apt-cache [options] command\n" - " apt-cache [options] add file1 [file2 ...]\n" " apt-cache [options] showpkg pkg1 [pkg2 ...]\n" " apt-cache [options] showsrc pkg1 [pkg2 ...]\n" "\n" - "apt-cache is a low-level tool used to manipulate APT's binary\n" - "cache files, and query information from them\n" + "apt-cache is a low-level tool used to query information\n" + "from APT's binary cache files\n" "\n" "Commands:\n" - " add - Add a package file to the source cache\n" " gencaches - Build both the package and source cache\n" " showpkg - Show some general information for a single package\n" " showsrc - Show source records\n" @@ -1811,7 +1757,6 @@ int main(int argc,const char *argv[]) /*{{{*/ {0,"enhances","APT::Cache::ShowEnhances",0}, {0,0,0,0}}; CommandLine::Dispatch CmdsA[] = {{"help",&ShowHelp}, - {"add",&DoAdd}, {"gencaches",&GenCaches}, {"showsrc",&ShowSrcPackage}, {0,0}}; diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 8754744da..0419359a3 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -538,7 +538,9 @@ bool ShowEssential(ostream &out,CacheFile &Cache) //VersionsList += string(Cache[I].CurVersion) + "\n"; ??? } } - + else + continue; + if (I->CurrentVer == 0) continue; @@ -626,6 +628,8 @@ class CacheSetHelperAPTGet : public APT::CacheSetHelper { APT::PackageSet virtualPkgs; public: + std::list<std::pair<pkgCache::VerIterator, std::string> > selectedByRelease; + CacheSetHelperAPTGet(std::ostream &out) : APT::CacheSetHelper(true), out(out) { explicitlyNamed = true; } @@ -644,9 +648,9 @@ public: } virtual void showSelectedVersion(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const Ver, string const &ver, bool const &verIsRel) { - if (ver != Ver.VerStr()) - ioprintf(out, _("Selected version '%s' (%s) for '%s'\n"), - Ver.VerStr(), Ver.RelStr().c_str(), Pkg.FullName(true).c_str()); + if (ver == Ver.VerStr()) + return; + selectedByRelease.push_back(make_pair(Ver, ver)); } bool showVirtualPackageErrors(pkgCacheFile &Cache) { @@ -827,6 +831,37 @@ struct TryToInstall { } } + bool propergateReleaseCandiateSwitching(std::list<std::pair<pkgCache::VerIterator, std::string> > start, std::ostream &out) + { + for (std::list<std::pair<pkgCache::VerIterator, std::string> >::const_iterator s = start.begin(); + s != start.end(); ++s) + Cache->GetDepCache()->SetCandidateVersion(s->first); + + bool Success = true; + std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > Changed; + for (std::list<std::pair<pkgCache::VerIterator, std::string> >::const_iterator s = start.begin(); + s != start.end(); ++s) + { + Changed.push_back(std::make_pair(s->first, pkgCache::VerIterator(*Cache))); + // We continue here even if it failed to enhance the ShowBroken output + Success &= Cache->GetDepCache()->SetCandidateRelease(s->first, s->second, Changed); + } + for (std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> >::const_iterator c = Changed.begin(); + c != Changed.end(); ++c) + { + if (c->second.end() == true) + ioprintf(out, _("Selected version '%s' (%s) for '%s'\n"), + c->first.VerStr(), c->first.RelStr().c_str(), c->first.ParentPkg().FullName(true).c_str()); + else if (c->first.ParentPkg()->Group != c->second.ParentPkg()->Group) + { + pkgCache::VerIterator V = (*Cache)[c->first.ParentPkg()].CandidateVerIter(*Cache); + ioprintf(out, _("Selected version '%s' (%s) for '%s' because of '%s'\n"), V.VerStr(), + V.RelStr().c_str(), V.ParentPkg().FullName(true).c_str(), c->second.ParentPkg().FullName(true).c_str()); + } + } + return Success; + } + void doAutoInstall() { for (APT::PackageSet::const_iterator P = doAutoInstallLater.begin(); P != doAutoInstallLater.end(); ++P) { @@ -860,7 +895,11 @@ struct TryToRemove { if ((Pkg->CurrentVer == 0 && PurgePkgs == false) || (PurgePkgs == true && Pkg->CurrentState == pkgCache::State::NotInstalled)) + { ioprintf(c1out,_("Package %s is not installed, so not removed\n"),Pkg.FullName(true).c_str()); + // MarkInstall refuses to install packages on hold + Pkg->SelectedState = pkgCache::State::Hold; + } else Cache->GetDepCache()->MarkDelete(Pkg, PurgePkgs); } @@ -1077,8 +1116,6 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true, { // force a hashsum for compatibility reasons _config->CndSet("Acquire::ForceHash", "md5sum"); - if (Fetcher.Setup(&Stat, "") == false) - return false; } else if (Fetcher.Setup(&Stat, _config->FindDir("Dir::Cache::Archives")) == false) return false; @@ -1608,10 +1645,6 @@ bool DoAutomaticRemove(CacheFile &Cache) if(Debug) std::cout << "DoAutomaticRemove()" << std::endl; - // we don't want to autoremove and we don't want to see it, so why calculating? - if (doAutoRemove == false && hideAutoRemove == true) - return true; - if (doAutoRemove == true && _config->FindB("APT::Get::Remove",true) == false) { @@ -1622,7 +1655,7 @@ bool DoAutomaticRemove(CacheFile &Cache) bool purgePkgs = _config->FindB("APT::Get::Purge", false); bool smallList = (hideAutoRemove == false && - strcasecmp(_config->Find("APT::Get::HideAutoRemove","").c_str(),"small") == 0); + strcasecmp(_config->Find("APT::Get::HideAutoRemove","").c_str(),"small") == 0); string autoremovelist, autoremoveversions; unsigned long autoRemoveCount = 0; @@ -1645,8 +1678,12 @@ bool DoAutomaticRemove(CacheFile &Cache) } else { + // if the package is a new install and already garbage we don't need to + // install it in the first place, so nuke it instead of show it + if (Cache[Pkg].Install() == true && Pkg.CurrentVer() == 0) + Cache->MarkDelete(Pkg, false); // only show stuff in the list that is not yet marked for removal - if(Cache[Pkg].Delete() == false) + else if(hideAutoRemove == false && Cache[Pkg].Delete() == false) { ++autoRemoveCount; // we don't need to fill the strings if we don't need them @@ -1659,6 +1696,20 @@ bool DoAutomaticRemove(CacheFile &Cache) } } } + + // Now see if we had destroyed anything (if we had done anything) + if (Cache->BrokenCount() != 0) + { + c1out << _("Hmm, seems like the AutoRemover destroyed something which really\n" + "shouldn't happen. Please file a bug report against apt.") << endl; + c1out << endl; + c1out << _("The following information may help to resolve the situation:") << endl; + c1out << endl; + ShowBroken(c1out,Cache,false); + + return _error->Error(_("Internal Error, AutoRemover broke stuff")); + } + // if we don't remove them, we should show them! if (doAutoRemove == false && (autoremovelist.empty() == false || autoRemoveCount != 0)) { @@ -1671,18 +1722,6 @@ bool DoAutomaticRemove(CacheFile &Cache) "%lu packages were automatically installed and are no longer required.\n", autoRemoveCount), autoRemoveCount); c1out << _("Use 'apt-get autoremove' to remove them.") << std::endl; } - // Now see if we had destroyed anything (if we had done anything) - else if (Cache->BrokenCount() != 0) - { - c1out << _("Hmm, seems like the AutoRemover destroyed something which really\n" - "shouldn't happen. Please file a bug report against apt.") << endl; - c1out << endl; - c1out << _("The following information may help to resolve the situation:") << endl; - c1out << endl; - ShowBroken(c1out,Cache,false); - - return _error->Error(_("Internal Error, AutoRemover broke stuff")); - } return true; } /*}}}*/ @@ -1755,14 +1794,7 @@ bool DoInstall(CommandLine &CmdL) return false; } - unsigned short order[] = { 0, 0, 0 }; - if (fallback == MOD_INSTALL) { - order[0] = MOD_INSTALL; - order[1] = MOD_REMOVE; - } else { - order[0] = MOD_REMOVE; - order[1] = MOD_INSTALL; - } + unsigned short const order[] = { MOD_REMOVE, MOD_INSTALL, 0 }; TryToInstall InstallAction(Cache, Fix, BrokenFix); TryToRemove RemoveAction(Cache, Fix); @@ -1775,6 +1807,7 @@ bool DoInstall(CommandLine &CmdL) { if (order[i] == MOD_INSTALL) { InstallAction = std::for_each(verset[MOD_INSTALL].begin(), verset[MOD_INSTALL].end(), InstallAction); + InstallAction.propergateReleaseCandiateSwitching(helper.selectedByRelease, c0out); InstallAction.doAutoInstall(); } else if (order[i] == MOD_REMOVE) @@ -1839,16 +1872,15 @@ bool DoInstall(CommandLine &CmdL) pkgCache::PkgIterator I(Cache,Cache.List[J]); if ((*Cache)[I].Install() == false) continue; + pkgCache::VerIterator Cand = Cache[I].CandidateVerIter(Cache); + if (Cand.Pseudo() == true) + continue; - const char **J; - for (J = CmdL.FileList + 1; *J != 0; J++) - if (strcmp(*J,I.Name()) == 0) - break; - - if (*J == 0) { - List += I.FullName(true) + " "; - VersionsList += string(Cache[I].CandVersion) + "\n"; - } + if (verset[MOD_INSTALL].find(Cand) != verset[MOD_INSTALL].end()) + continue; + + List += I.FullName(true) + " "; + VersionsList += string(Cache[I].CandVersion) + "\n"; } ShowList(c1out,_("The following extra packages will be installed:"),List,VersionsList); @@ -2176,13 +2208,15 @@ bool DoDownload(CommandLine &CmdL) APT::CacheSetHelper helper(c0out); APT::VersionSet verset = APT::VersionSet::FromCommandLine(Cache, CmdL.FileList + 1, APT::VersionSet::CANDIDATE, helper); - pkgAcquire Fetcher; - AcqTextStatus Stat(ScreenWidth, _config->FindI("quiet",0)); - Fetcher.Setup(&Stat); if (verset.empty() == true) return false; + pkgAcquire Fetcher; + AcqTextStatus Stat(ScreenWidth, _config->FindI("quiet",0)); + if (_config->FindB("APT::Get::Print-URIs") == true) + Fetcher.Setup(&Stat); + pkgRecords Recs(Cache); pkgSourceList *SrcList = Cache.GetSourceList(); for (APT::VersionSet::const_iterator Ver = verset.begin(); @@ -2213,9 +2247,18 @@ bool DoDownload(CommandLine &CmdL) // get the file new pkgAcqFile(&Fetcher, uri, hash.toStr(), (*Ver)->Size, descr, Pkg.Name(), "."); } - bool result = (Fetcher.Run() == pkgAcquire::Continue); - return result; + // Just print out the uris and exit if the --print-uris flag was used + if (_config->FindB("APT::Get::Print-URIs") == true) + { + pkgAcquire::UriIterator I = Fetcher.UriBegin(); + for (; I != Fetcher.UriEnd(); I++) + cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' << + I->Owner->FileSize << ' ' << I->Owner->HashSum() << endl; + return true; + } + + return (Fetcher.Run() == pkgAcquire::Continue); } /*}}}*/ // DoCheck - Perform the check operation /*{{{*/ @@ -2844,6 +2887,7 @@ bool GuessThirdPartyChangelogUri(CacheFile &Cache, // now strip away the filename and add srcpkg_srcver.changelog return true; } + /*}}}*/ // DownloadChangelog - Download the changelog /*{{{*/ // --------------------------------------------------------------------- bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher, @@ -2868,13 +2912,19 @@ bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher, "http://packages.debian.org/changelogs"); path = GetChangelogPath(CacheFile, Pkg, Ver); strprintf(changelog_uri, "%s/%s/changelog", server.c_str(), path.c_str()); + if (_config->FindB("APT::Get::Print-URIs", false) == true) + { + std::cout << '\'' << changelog_uri << '\'' << std::endl; + return true; + } + strprintf(descr, _("Changelog for %s (%s)"), Pkg.Name(), changelog_uri.c_str()); // queue it new pkgAcqFile(&Fetcher, changelog_uri, "", 0, descr, Pkg.Name(), "ignored", targetfile); - // try downloading it, if that fails, they third-party-changelogs location - // FIXME: res is "Continue" even if I get a 404?!? - int res = Fetcher.Run(); + // try downloading it, if that fails, try third-party-changelogs location + // FIXME: Fetcher.Run() is "Continue" even if I get a 404?!? + Fetcher.Run(); if (!FileExists(targetfile)) { string third_party_uri; @@ -2882,7 +2932,7 @@ bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher, { strprintf(descr, _("Changelog for %s (%s)"), Pkg.Name(), third_party_uri.c_str()); new pkgAcqFile(&Fetcher, third_party_uri, "", 0, descr, Pkg.Name(), "ignored", targetfile); - res = Fetcher.Run(); + Fetcher.Run(); } } @@ -2925,30 +2975,53 @@ bool DoChangelog(CommandLine &CmdL) APT::CacheSetHelper helper(c0out); APT::VersionSet verset = APT::VersionSet::FromCommandLine(Cache, CmdL.FileList + 1, APT::VersionSet::CANDIDATE, helper); + if (verset.empty() == true) + return false; pkgAcquire Fetcher; + + if (_config->FindB("APT::Get::Print-URIs", false) == true) + for (APT::VersionSet::const_iterator Ver = verset.begin(); + Ver != verset.end(); ++Ver) + return DownloadChangelog(Cache, Fetcher, Ver, ""); + AcqTextStatus Stat(ScreenWidth, _config->FindI("quiet",0)); Fetcher.Setup(&Stat); - if (verset.empty() == true) - return false; - char *tmpdir = mkdtemp(strdup("/tmp/apt-changelog-XXXXXX")); - if (tmpdir == NULL) { - return _error->Errno("mkdtemp", "mkdtemp failed"); + bool const downOnly = _config->FindB("APT::Get::Download-Only", false); + + char tmpname[100]; + char* tmpdir = NULL; + if (downOnly == false) + { + const char* const tmpDir = getenv("TMPDIR"); + if (tmpDir != NULL && *tmpDir != '\0') + snprintf(tmpname, sizeof(tmpname), "%s/apt-changelog-XXXXXX", tmpDir); + else + strncpy(tmpname, "/tmp/apt-changelog-XXXXXX", sizeof(tmpname)); + tmpdir = mkdtemp(tmpname); + if (tmpdir == NULL) + return _error->Errno("mkdtemp", "mkdtemp failed"); } - + for (APT::VersionSet::const_iterator Ver = verset.begin(); Ver != verset.end(); ++Ver) { - string changelogfile = string(tmpdir) + "changelog"; - if (DownloadChangelog(Cache, Fetcher, Ver, changelogfile)) + string changelogfile; + if (downOnly == false) + changelogfile.append(tmpname).append("changelog"); + else + changelogfile.append(Ver.ParentPkg().Name()).append(".changelog"); + if (DownloadChangelog(Cache, Fetcher, Ver, changelogfile) && downOnly == false) + { DisplayFileInPager(changelogfile); - // cleanup temp file - unlink(changelogfile.c_str()); + // cleanup temp file + unlink(changelogfile.c_str()); + } } // clenaup tmp dir - rmdir(tmpdir); - free(tmpdir); + if (tmpdir != NULL) + rmdir(tmpdir); return true; } /*}}}*/ diff --git a/cmdline/apt-key b/cmdline/apt-key index f0b084448..7beedd38d 100755 --- a/cmdline/apt-key +++ b/cmdline/apt-key @@ -5,7 +5,12 @@ unset GREP_OPTIONS # We don't use a secret keyring, of course, but gpg panics and # implodes if there isn't one available -GPG_CMD="gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg" +GPG_CMD='gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg' + +if ! id -u > /dev/null; then + GPG_CMD="$GPG_CMD --trustdb-name /etc/apt/trustdb.gpg" +fi + GPG="$GPG_CMD" diff --git a/debian/NEWS b/debian/NEWS index 775dc9458..91b71225f 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,3 +1,12 @@ +apt (0.8.11) UNRELEASED; urgency=low + + * apt-get install pkg/experimental will now not only switch the + candidate of package pkg to the version from the release experimental + but also of all dependencies of pkg if the current candidate can't + satisfy a versioned dependency. + + -- David Kalnischkies <kalnischkies@gmail.com> Fri, 03 Dec 2010 14:09:12 +0100 + apt (0.7.26~exp3) experimental; urgency=low * apt-ftparchive now reads the standard configuration files in diff --git a/debian/apt-transport-https.dirs b/debian/apt-transport-https.dirs new file mode 100644 index 000000000..3abb3fee8 --- /dev/null +++ b/debian/apt-transport-https.dirs @@ -0,0 +1 @@ +usr/lib/apt/methods diff --git a/debian/apt-transport-https.install b/debian/apt-transport-https.install new file mode 100644 index 000000000..848f10c78 --- /dev/null +++ b/debian/apt-transport-https.install @@ -0,0 +1 @@ +bin/methods/https usr/lib/apt/methods diff --git a/debian/apt-utils.install b/debian/apt-utils.install new file mode 100644 index 000000000..d947f26d4 --- /dev/null +++ b/debian/apt-utils.install @@ -0,0 +1 @@ +bin/libapt-inst*.so.* usr/lib/ diff --git a/debian/apt-utils.symbols b/debian/apt-utils.symbols new file mode 100644 index 000000000..8313f6ffd --- /dev/null +++ b/debian/apt-utils.symbols @@ -0,0 +1,119 @@ +libapt-inst.so.1.2 libapt-inst1.2 +| apt-utils #MINVER# +* Build-Depends-Package: libapt-pkg-dev + (c++)"ExtractTar::Done(bool)@Base" 0.8.0 + (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0 + (c++)"ExtractTar::StartGzip()@Base" 0.8.0 + (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"ExtractTar::~ExtractTar()@Base" 0.8.0 + (c++)"debDebFile::GotoMember(char const*)@Base" 0.8.0 + (c++)"debDebFile::CheckMember(char const*)@Base" 0.8.0 + (c++)"debDebFile::MergeControl(pkgDataBase&)@Base" 0.8.0 + (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0 + (c++)"debDebFile::ControlExtract::~ControlExtract()@Base" 0.8.0 + (c++)"debDebFile::ExtractArchive(pkgDirStream&)@Base" 0.8.0 + (c++)"debDebFile::ExtractControl(pkgDataBase&)@Base" 0.8.0 + (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long)@Base" 0.8.0 + (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@Base" 0.8.0 + (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0 + (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long, unsigned long)@Base" 0.8.0 + (c++)"debDebFile::MemControlExtract::~MemControlExtract()@Base" 0.8.0 + (c++)"debDebFile::debDebFile(FileFd&)@Base" 0.8.0 + (c++)"pkgExtract::FinishedFile(pkgDirStream::Item&, int)@Base" 0.8.0 + (c++)"pkgExtract::CheckDirReplace(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int)@Base" 0.8.0 + (c++)"pkgExtract::HandleOverwrites(pkgFLCache::NodeIterator, bool)@Base" 0.8.0 + (c++)"pkgExtract::Fail(pkgDirStream::Item&, int)@Base" 0.8.0 + (c++)"pkgExtract::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0 + (c++)"pkgExtract::Aborted()@Base" 0.8.0 + (c++)"pkgExtract::Finished()@Base" 0.8.0 + (c++)"pkgExtract::pkgExtract(pkgFLCache&, pkgCache::VerIterator)@Base" 0.8.0 + (c++)"pkgExtract::~pkgExtract()@Base" 0.8.0 + (c++)"pkgFLCache::TreeLookup(unsigned int*, char const*, char const*, unsigned long, unsigned int*, bool)@Base" 0.8.0 + (c++)"pkgFLCache::AddConfFile(char const*, char const*, pkgFLCache::PkgIterator const&, unsigned char const*)@Base" 0.8.0 + (c++)"pkgFLCache::AddDiversion(pkgFLCache::PkgIterator const&, char const*, char const*)@Base" 0.8.0 + (c++)"pkgFLCache::BeginDiverLoad()@Base" 0.8.0 + (c++)"pkgFLCache::FinishDiverLoad()@Base" 0.8.0 + (c++)"pkgFLCache::GetPkg(char const*, char const*, bool)@Base" 0.8.0 + (c++)"pkgFLCache::Header::Header()@Base" 0.8.0 + (c++)"pkgFLCache::GetNode(char const*, char const*, unsigned int, bool, bool)@Base" 0.8.0 + (c++)"pkgFLCache::DropNode(unsigned int)@Base" 0.8.0 + (c++)"pkgFLCache::HashNode(pkgFLCache::NodeIterator const&)@Base" 0.8.0 + (c++)"pkgFLCache::PrintTree(unsigned int, unsigned long)@Base" 0.8.0 + (c++)"pkgFLCache::pkgFLCache(DynamicMMap&)@Base" 0.8.0 + (c++)"pkgDataBase::GetMetaTmp(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 + (c++)"pkgDataBase::~pkgDataBase()@Base" 0.8.0 + (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@Base" 0.8.0 + (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@Base" 0.8.0 + (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0 + (c++)"pkgDirStream::Process(pkgDirStream::Item&, unsigned char const*, unsigned long, unsigned long)@Base" 0.8.0 + (c++)"pkgDirStream::~pkgDirStream()@Base" 0.8.0 + (c++|optional)"debListParser::~debListParser()@Base" 0.8.0 + (c++|optional)"pkgCacheGenerator::ListParser::CollectFileProvides(pkgCache&, pkgCache::VerIterator&)@Base" 0.8.0 + (c++|optional)"pkgCacheGenerator::ListParser::~ListParser()@Base" 0.8.0 + (c++|optional)"pkgCache::DepIterator::operator++(int)@Base" 0.8.0 + (c++|optional)"pkgCache::DepIterator::operator++()@Base" 0.8.0 + (c++|optional)"pkgCache::VerIterator::operator++(int)@Base" 0.8.0 + (c++|optional)"pkgCache::VerIterator::operator++()@Base" 0.8.0 + (c++)"ARArchive::LoadHeaders()@Base" 0.8.0 + (c++)"ARArchive::ARArchive(FileFd&)@Base" 0.8.0 + (c++)"ARArchive::~ARArchive()@Base" 0.8.0 + (c++)"debDpkgDB::InitMetaTmp(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 + (c++)"debDpkgDB::LoadChanges()@Base" 0.8.0 + (c++)"debDpkgDB::ReadConfFiles()@Base" 0.8.0 + (c++)"debDpkgDB::ReadyFileList(OpProgress&)@Base" 0.8.0 + (c++)"debDpkgDB::ReadyPkgCache(OpProgress&)@Base" 0.8.0 + (c++)"debDpkgDB::ReadDiversions()@Base" 0.8.0 + (c++)"debDpkgDB::ReadFList(OpProgress&)@Base" 0.8.0 + (c++)"debDpkgDB::debDpkgDB()@Base" 0.8.0 + (c++)"debDpkgDB::~debDpkgDB()@Base" 0.8.0 + (c++)"pkgFLCache::NodeIterator::RealPackage() const@Base" 0.8.0 + (c++)"pkgFLCache::Header::CheckSizes(pkgFLCache::Header&) const@Base" 0.8.0 + (c++|optional)"pkgCache::DepIterator::OwnerPointer() const@Base" 0.8.0 + (c++|optional)"pkgCache::VerIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"ARArchive::FindMember(char const*) const@Base" 0.8.0 + (c++)"typeinfo for ExtractTar@Base" 0.8.0 + (c++)"typeinfo for pkgExtract@Base" 0.8.0 + (c++)"typeinfo for pkgDataBase@Base" 0.8.0 + (c++)"typeinfo for pkgDirStream@Base" 0.8.0 + (c++)"typeinfo for debDpkgDB@Base" 0.8.0 + (c++)"typeinfo for debDebFile::ControlExtract@Base" 0.8.0 + (c++)"typeinfo for debDebFile::MemControlExtract@Base" 0.8.0 + (c++|optional)"typeinfo for pkgCacheGenerator::ListParser@Base" 0.8.0 + (c++|optional)"typeinfo for pkgCache::DepIterator@Base" 0.8.0 + (c++|optional)"typeinfo for pkgCache::VerIterator@Base" 0.8.0 + (c++|optional)"typeinfo for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 + (c++|optional)"typeinfo for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 + (c++|optional)"typeinfo for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 + (c++)"typeinfo name for ExtractTar@Base" 0.8.0 + (c++)"typeinfo name for pkgExtract@Base" 0.8.0 + (c++)"typeinfo name for pkgDataBase@Base" 0.8.0 + (c++)"typeinfo name for pkgDirStream@Base" 0.8.0 + (c++)"typeinfo name for debDpkgDB@Base" 0.8.0 + (c++)"typeinfo name for debDebFile::ControlExtract@Base" 0.8.0 + (c++)"typeinfo name for debDebFile::MemControlExtract@Base" 0.8.0 + (c++|optional)"typeinfo name for pkgCacheGenerator::ListParser@Base" 0.8.0 + (c++|optional)"typeinfo name for pkgCache::DepIterator@Base" 0.8.0 + (c++|optional)"typeinfo name for pkgCache::VerIterator@Base" 0.8.0 + (c++|optional)"typeinfo name for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 + (c++|optional)"typeinfo name for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 + (c++|optional)"typeinfo name for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 + (c++)"vtable for ExtractTar@Base" 0.8.0 + (c++)"vtable for pkgExtract@Base" 0.8.0 + (c++)"vtable for pkgDataBase@Base" 0.8.0 + (c++)"vtable for pkgDirStream@Base" 0.8.0 + (c++)"vtable for debDpkgDB@Base" 0.8.0 + (c++)"vtable for debDebFile::ControlExtract@Base" 0.8.0 + (c++)"vtable for debDebFile::MemControlExtract@Base" 0.8.0 + (c++|optional)"vtable for pkgCacheGenerator::ListParser@Base" 0.8.0 + (c++|optional)"vtable for pkgCache::DepIterator@Base" 0.8.0 + (c++|optional)"vtable for pkgCache::VerIterator@Base" 0.8.0 + (c++|optional)"vtable for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 + (c++|optional)"vtable for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 + (c++|optional)"vtable for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 +### try to ignore std:: template instances + (c++|optional)"std::basic_string<char, std::char_traits<char>, std::allocator<char> >& std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append<unsigned char*>(unsigned char*, unsigned char*)@Base" 0.8.0 + (c++|regex|optional)"^std::basic_string<.+ >\(.+\)@Base$" 0.8.0 + (c++|regex|optional)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 + (c++|regex|optional)"^typeinfo name for std::iterator<.*>@Base$" 0.8.0 + (c++|regex|optional)"^typeinfo for std::iterator<.*>@Base$" 0.8.0 +### diff --git a/debian/bugscript b/debian/apt.bug-script index f5ec9e05d..f5ec9e05d 100755 --- a/debian/bugscript +++ b/debian/apt.bug-script diff --git a/debian/apt.conf.autoremove b/debian/apt.conf.autoremove index b3f4a3edd..ebe49c7cd 100644 --- a/debian/apt.conf.autoremove +++ b/debian/apt.conf.autoremove @@ -8,6 +8,7 @@ APT "^kfreebsd-image.*"; "^linux-restricted-modules.*"; "^linux-ubuntu-modules-.*"; + "^gnumach$"; }; Never-MarkAuto-Sections diff --git a/debian/apt.dirs b/debian/apt.dirs index 76cbde68a..31d811acc 100644 --- a/debian/apt.dirs +++ b/debian/apt.dirs @@ -14,4 +14,3 @@ var/lib/apt/periodic var/log/apt usr/share/apt usr/share/bug/apt -usr/share/lintian/overrides diff --git a/debian/apt.install b/debian/apt.install new file mode 100644 index 000000000..979e04ce2 --- /dev/null +++ b/debian/apt.install @@ -0,0 +1,5 @@ +bin/apt-* usr/bin/ +bin/libapt-pkg*.so.* usr/lib/ +bin/methods/* usr/lib/apt/methods/ +scripts/dselect/* usr/lib/dpkg/methods/apt/ +locale usr/share/ diff --git a/share/lintian-overrides b/debian/apt.lintian-overrides index 49c5ce53c..49c5ce53c 100644 --- a/share/lintian-overrides +++ b/debian/apt.lintian-overrides diff --git a/debian/apt.symbols b/debian/apt.symbols new file mode 100644 index 000000000..10e17cc80 --- /dev/null +++ b/debian/apt.symbols @@ -0,0 +1,1263 @@ +libapt-pkg.so.4.10 libapt-pkg4.10 +| apt #MINVER# +* Build-Depends-Package: libapt-pkg-dev + TFRewritePackageOrder@Base 0.8.0 + TFRewriteSourceOrder@Base 0.8.0 + (c++)"FileExists(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"IdentCdrom(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int)@Base" 0.8.0 + (c++)"ListUpdate(pkgAcquireStatus&, pkgSourceList&, int)@Base" 0.8.0 + (c++)"MountCdrom(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"ParseCWord(char const*&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 + (c++)"ReadPinDir(pkgPolicy&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"RunScripts(char const*)@Base" 0.8.0 + (c++)"SafeGetCWD()@Base" 0.8.0 + (c++)"parsenetrc(char*, char*, char*, char*)@Base" 0.8.0 + (c++)"QuoteString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@Base" 0.8.0 + (c++)"ReadPinFile(pkgPolicy&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"RegexChoice(RxChoiceList*, char const**, char const**)@Base" 0.8.0 + (c++)"SetNonBlock(int, bool)@Base" 0.8.0 + (c++)"TimeRFC1123(long)@Base" 0.8.0 + (c++)"flExtension(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"Base64Encode(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"ReadMessages(int, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@Base" 0.8.0 + (c++)"SetCloseExec(int, bool)@Base" 0.8.0 + (c++)"StringToBool(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)@Base" 0.8.0 + (c++)"UnmountCdrom(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"_GetErrorObj()@Base" 0.8.0 + (c++)"pkgFixBroken(pkgDepCache&)@Base" 0.8.0 + (c++)"DeQuoteString(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)@Base" 0.8.0 + (c++)"DeQuoteString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"OutputInDepth(unsigned long, char const*)@Base" 0.8.0 + (c++)"ReadConfigDir(Configuration&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, unsigned int const&)@Base" 0.8.0 + (c++)"URItoFileName(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"UTF8ToCodeset(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@Base" 0.8.0 + (c++)"_strtabexpand(char*, unsigned int)@Base" 0.8.0 + (c++)"pkgAllUpgrade(pkgDepCache&)@Base" 0.8.0 + (c++)"pkgInitConfig(Configuration&)@Base" 0.8.0 + (c++)"pkgInitSystem(Configuration&, pkgSystem*&)@Base" 0.8.0 + (c++)"safe_snprintf(char*, char*, char const*, ...)@Base" 0.8.0 + (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@Base" 0.8.0 + (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@Base" 0.8.0 + (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@Base" 0.8.0 + (c++|optional=inline)"stringcasecmp(char const*, char const*, char const*)@Base" 0.8.0 + (c++|optional=inline)"stringcasecmp(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@Base" 0.8.0 + (c++)"tolower_ascii(int)@Base" 0.8.0 + (c++)"ParseQuoteWord(char const*&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 + (c++)"ReadConfigFile(Configuration&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, unsigned int const&)@Base" 0.8.0 + (c++)"TokSplitString(char, char*, char**, unsigned long)@Base" 0.8.0 + (c++)"maybe_add_auth(URI&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgApplyStatus(pkgDepCache&)@Base" 0.8.0 + (c++)"pkgDistUpgrade(pkgDepCache&)@Base" 0.8.0 + (c++)"CheckDomainList(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"CreateDirectory(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"DirectoryExists(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"VectorizeString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const&)@Base" 0.8.0 + (c++)"pkgPrioSortList(pkgCache&, pkgCache::Version**)@Base" 0.8.0 + (c++)"FTPMDTMStrToTime(char const*, long&)@Base" 0.8.0 + (c++)"RFC1123StrToTime(char const*, long&)@Base" 0.8.0 + (c++)"pkgMakeStatusCache(pkgSourceList&, OpProgress&, MMap**, bool)@Base" 0.8.0 + (c++)"pkgMinimizeUpgrade(pkgDepCache&)@Base" 0.8.0 + (c++)"GetListOfFilesInDir(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool const&)@Base" 0.8.0 + (c++)"GetListOfFilesInDir(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, bool const&)@Base" 0.8.0 + (c++)"pkgMakeStatusCacheMem(pkgSourceList&, OpProgress&)@Base" 0.8.0 + (c++)"pkgMakeOnlyStatusCache(OpProgress&, DynamicMMap**)@Base" 0.8.0 + (c++)"WaitFd(int, bool, unsigned long)@Base" 0.8.0 + (c++)"GetLock(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@Base" 0.8.0 + (c++)"Hex2Num(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char*, unsigned int)@Base" 0.8.0 + (c++)"AddCRC16(unsigned short, void const*, unsigned long)@Base" 0.8.0 + (c++)"CopyFile(FileFd&, FileFd&)@Base" 0.8.0 + (c++)"ExecFork()@Base" 0.8.0 + (c++)"ExecWait(int, char const*, bool)@Base" 0.8.0 + (c++)"StrToNum(char const*, unsigned long&, unsigned int, unsigned int)@Base" 0.8.0 + (c++)"SubstVar(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"SubstVar(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, SubstVar const*)@Base" 0.8.0 + (c++)"flNoLink(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"flNotDir(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"ioprintf(std::basic_ostream<char, std::char_traits<char> >&, char const*, ...)@Base" 0.8.0 + (c++)"IsMounted(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 + (c++)"LookupTag(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*)@Base" 0.8.0 + (c++)"SizeToStr(double)@Base" 0.8.0 + (c++)"StrToTime(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long&)@Base" 0.8.0 + (c++)"TFRewrite(_IO_FILE*, pkgTagSection const&, char const**, TFRewriteData*)@Base" 0.8.0 + (c++)"TimeToStr(unsigned long)@Base" 0.8.0 + (c++)"_strstrip(char*)@Base" 0.8.0 + (c++)"flCombine(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"flNotFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"stringcmp(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@Base" 0.8.0 + (c++)"stringcmp(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@Base" 0.8.0 + (c++)"stringcmp(char const*, char const*, char const*, char const*)@Base" 0.8.0 + (c++)"strprintf(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char const*, ...)@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic<pkgCache::DepIterator>::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic<pkgCache::GrpIterator>::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic<pkgCache::PkgIterator>::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic<pkgCache::PrvIterator>::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic<pkgCache::VerIterator>::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic<pkgCache::DescIterator>::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic<pkgCache::PkgFileIterator>::toReMap@Base" 0.8.0 + (c++)"HashString::SupportedHashes()@Base" 0.8.0 + (c++)"HashString::_SupportedHashes@Base" 0.8.0 + (c++)"HashString::HashString(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"HashString::HashString(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"HashString::HashString()@Base" 0.8.0 + (c++)"HashString::~HashString()@Base" 0.8.0 + (c++)"OpProgress::CheckChange(float)@Base" 0.8.0 + (c++)"OpProgress::SubProgress(unsigned long)@Base" 0.8.0 + (c++)"OpProgress::SubProgress(unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"OpProgress::OverallProgress(unsigned long, unsigned long, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"OpProgress::Done()@Base" 0.8.0 + (c++)"OpProgress::Update()@Base" 0.8.0 + (c++)"OpProgress::Progress(unsigned long)@Base" 0.8.0 + (c++)"OpProgress::OpProgress()@Base" 0.8.0 + (c++)"OpProgress::~OpProgress()@Base" 0.8.0 + (c++)"SourceCopy::GetFileName()@Base" 0.8.0 + (c++)"SourceCopy::RewriteEntry(_IO_FILE*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"SourceCopy::Type()@Base" 0.8.0 + (c++)"SourceCopy::GetFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)@Base" 0.8.0 + (c++)"SourceCopy::~SourceCopy()@Base" 0.8.0 + (c++)"pkgAcqFile::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqFile::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqFile::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqFile::DescURI()@Base" 0.8.0 + (c++)"pkgAcqFile::HashSum()@Base" 0.8.0 + (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@Base" 0.8.0 + (c++)"pkgAcqFile::~pkgAcqFile()@Base" 0.8.0 + (c++)"pkgAcquire::WorkerStep(pkgAcquire::Worker*)@Base" 0.8.0 + (c++)"pkgAcquire::FetchNeeded()@Base" 0.8.0 + (c++)"pkgAcquire::TotalNeeded()@Base" 0.8.0 + (c++)"pkgAcquire::MethodConfig::MethodConfig()@Base" 0.8.0 + (c++)"pkgAcquire::PartialPresent()@Base" 0.8.0 + (c++)"pkgAcquire::Add(pkgAcquire::Item*)@Base" 0.8.0 + (c++)"pkgAcquire::Add(pkgAcquire::Worker*)@Base" 0.8.0 + (c++)"pkgAcquire::Run(int)@Base" 0.8.0 + (c++)"pkgAcquire::Bump()@Base" 0.8.0 + (c++)"pkgAcquire::Item::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcquire::Item::ReportMirrorFailure(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcquire::Item::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcquire::Item::Start(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long)@Base" 0.8.0 + (c++)"pkgAcquire::Item::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcquire::Item::Rename(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcquire::Item::HashSum()@Base" 0.8.0 + (c++)"pkgAcquire::Item::Finished()@Base" 0.8.0 + (c++)"pkgAcquire::Item::IsTrusted()@Base" 0.8.0 + (c++)"pkgAcquire::Item::ShortDesc()@Base" 0.8.0 + (c++)"pkgAcquire::Item::Item(pkgAcquire*)@Base" 0.8.0 + (c++)"pkgAcquire::Item::~Item()@Base" 0.8.0 + (c++)"pkgAcquire::Clean(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcquire::Queue::Bump()@Base" 0.8.0 + (c++)"pkgAcquire::Queue::Cycle()@Base" 0.8.0 + (c++)"pkgAcquire::Queue::Dequeue(pkgAcquire::Item*)@Base" 0.8.0 + (c++)"pkgAcquire::Queue::Enqueue(pkgAcquire::ItemDesc&)@Base" 0.8.0 + (c++)"pkgAcquire::Queue::Startup()@Base" 0.8.0 + (c++)"pkgAcquire::Queue::FindItem(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::Worker*)@Base" 0.8.0 + (c++)"pkgAcquire::Queue::ItemDone(pkgAcquire::Queue::QItem*)@Base" 0.8.0 + (c++)"pkgAcquire::Queue::Shutdown(bool)@Base" 0.8.0 + (c++)"pkgAcquire::Queue::Queue(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire*)@Base" 0.8.0 + (c++)"pkgAcquire::Queue::~Queue()@Base" 0.8.0 + (c++)"pkgAcquire::Setup(pkgAcquireStatus*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgAcquire::Remove(pkgAcquire::Item*)@Base" 0.8.0 + (c++)"pkgAcquire::Remove(pkgAcquire::Worker*)@Base" 0.8.0 + (c++)"pkgAcquire::RunFds(fd_set*, fd_set*)@Base" 0.8.0 + (c++)"pkgAcquire::SetFds(int&, fd_set*, fd_set*)@Base" 0.8.0 + (c++)"pkgAcquire::UriEnd()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::OutFdReady()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::MediaChange(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcquire::Worker::RunMessages()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::Capabilities(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcquire::Worker::ReadMessages()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::MethodFailure()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::SendConfiguration()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::Pulse()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::Start()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::ItemDone()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::Construct()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::InFdReady()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem*)@Base" 0.8.0 + (c++)"pkgAcquire::Worker::Worker(pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcquire::Worker::Worker(pkgAcquire::Queue*, pkgAcquire::MethodConfig*, pkgAcquireStatus*)@Base" 0.8.0 + (c++)"pkgAcquire::Worker::~Worker()@Base" 0.8.0 + (c++)"pkgAcquire::Dequeue(pkgAcquire::Item*)@Base" 0.8.0 + (c++)"pkgAcquire::Enqueue(pkgAcquire::ItemDesc&)@Base" 0.8.0 + (c++)"pkgAcquire::ItemDesc::~ItemDesc()@Base" 0.8.0 + (c++)"pkgAcquire::Shutdown()@Base" 0.8.0 + (c++)"pkgAcquire::UriBegin()@Base" 0.8.0 + (c++)"pkgAcquire::GetConfig(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcquire::QueueName(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig const*&)@Base" 0.8.0 + (c++)"pkgAcquire::pkgAcquire(pkgAcquireStatus*)@Base" 0.8.0 + (c++)"pkgAcquire::pkgAcquire()@Base" 0.8.0 + (c++)"pkgAcquire::~pkgAcquire()@Base" 0.8.0 + (c++)"pkgRecords::Lookup(pkgCache::VerFileIterator const&)@Base" 0.8.0 + (c++)"pkgRecords::Lookup(pkgCache::DescFileIterator const&)@Base" 0.8.0 + (c++)"pkgRecords::Parser::Maintainer()@Base" 0.8.0 + (c++)"pkgRecords::Parser::SHA256Hash()@Base" 0.8.0 + (c++)"pkgRecords::Parser::Name()@Base" 0.8.0 + (c++)"pkgRecords::Parser::GetRec(char const*&, char const*&)@Base" 0.8.0 + (c++)"pkgRecords::Parser::MD5Hash()@Base" 0.8.0 + (c++)"pkgRecords::Parser::FileName()@Base" 0.8.0 + (c++)"pkgRecords::Parser::Homepage()@Base" 0.8.0 + (c++)"pkgRecords::Parser::LongDesc()@Base" 0.8.0 + (c++)"pkgRecords::Parser::SHA1Hash()@Base" 0.8.0 + (c++)"pkgRecords::Parser::ShortDesc()@Base" 0.8.0 + (c++)"pkgRecords::Parser::SourcePkg()@Base" 0.8.0 + (c++)"pkgRecords::Parser::SourceVer()@Base" 0.8.0 + (c++)"pkgRecords::Parser::~Parser()@Base" 0.8.0 + (c++)"pkgRecords::pkgRecords(pkgCache&)@Base" 0.8.0 + (c++)"pkgRecords::~pkgRecords()@Base" 0.8.0 + (c++)"pkgTagFile::Fill()@Base" 0.8.0 + (c++)"pkgTagFile::Jump(pkgTagSection&, unsigned long)@Base" 0.8.0 + (c++)"pkgTagFile::Step(pkgTagSection&)@Base" 0.8.0 + (c++)"pkgTagFile::Resize()@Base" 0.8.0 + (c++)"pkgTagFile::pkgTagFile(FileFd*, unsigned long)@Base" 0.8.0 + (c++)"pkgTagFile::~pkgTagFile()@Base" 0.8.0 + (c++)"CdromDevice::~CdromDevice()@Base" 0.8.0 + (c++)"CommandLine::DispatchArg(CommandLine::Dispatch*, bool)@Base" 0.8.0 + (c++)"CommandLine::SaveInConfig(unsigned int const&, char const* const*)@Base" 0.8.0 + (c++)"CommandLine::Parse(int, char const**)@Base" 0.8.0 + (c++)"CommandLine::HandleOpt(int&, int, char const**, char const*&, CommandLine::Args*, bool)@Base" 0.8.0 + (c++)"CommandLine::CommandLine(CommandLine::Args*, Configuration*)@Base" 0.8.0 + (c++)"CommandLine::~CommandLine()@Base" 0.8.0 + (c++)"DynamicMMap::RawAllocate(unsigned long, unsigned long)@Base" 0.8.0 + (c++)"DynamicMMap::WriteString(char const*, unsigned long)@Base" 0.8.0 + (c++)"DynamicMMap::Grow()@Base" 0.8.0 + (c++)"DynamicMMap::Allocate(unsigned long)@Base" 0.8.0 + (c++)"DynamicMMap::DynamicMMap(FileFd&, unsigned long, unsigned long const&, unsigned long const&, unsigned long const&)@Base" 0.8.0 + (c++)"DynamicMMap::DynamicMMap(unsigned long, unsigned long const&, unsigned long const&, unsigned long const&)@Base" 0.8.0 + (c++)"DynamicMMap::~DynamicMMap()@Base" 0.8.0 + (c++)"GlobalError::DumpErrors(std::basic_ostream<char, std::char_traits<char> >&, GlobalError::MsgType const&, bool const&)@Base" 0.8.0 + (c++)"GlobalError::PopMessage(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 + (arch=!armel|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&)@Base" 0.8.0 + (arch=armel|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&)@Base" 0.8.0 + (c++)"GlobalError::InsertErrno(GlobalError::MsgType const&, char const*, char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::PushToStack()@Base" 0.8.0 + (c++)"GlobalError::RevertToStack()@Base" 0.8.0 + (c++)"GlobalError::MergeWithStack()@Base" 0.8.0 + (c++)"GlobalError::Debug(char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::Errno(char const*, char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::Error(char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::Fatal(char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::DebugE(char const*, char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::FatalE(char const*, char const*, ...)@Base" 0.8.0 + (arch=!armel|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&)@Base" 0.8.0 + (arch=armel|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&)@Base" 0.8.0 + (c++)"GlobalError::Insert(GlobalError::MsgType const&, char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::Notice(char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::Discard()@Base" 0.8.0 + (c++)"GlobalError::NoticeE(char const*, char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::Warning(char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::WarningE(char const*, char const*, ...)@Base" 0.8.0 + (c++)"GlobalError::GlobalError()@Base" 0.8.0 + (c++)"MD5SumValue::Set(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"MD5SumValue::MD5SumValue(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"MD5SumValue::MD5SumValue()@Base" 0.8.0 + (c++)"PackageCopy::GetFileName()@Base" 0.8.0 + (c++)"PackageCopy::RewriteEntry(_IO_FILE*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"PackageCopy::Type()@Base" 0.8.0 + (c++)"PackageCopy::GetFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)@Base" 0.8.0 + (c++)"PackageCopy::~PackageCopy()@Base" 0.8.0 + (c++)"pkgAcqIndex::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqIndex::DescURI()@Base" 0.8.0 + (c++)"pkgAcqIndex::HashSum()@Base" 0.8.0 + (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, HashString, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcqIndex::~pkgAcqIndex()@Base" 0.8.0 + (c++)"pkgDepCache::IsDeleteOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.8.0 + (c++)"pkgDepCache::MarkDelete(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.8.0 + (c++)"pkgDepCache::StateCache::StripEpoch(char const*)@Base" 0.8.0 + (c++)"pkgDepCache::StateCache::Update(pkgCache::PkgIterator, pkgCache&)@Base" 0.8.0 + (c++)"pkgDepCache::ActionGroup::release()@Base" 0.8.0 + (c++)"pkgDepCache::ActionGroup::ActionGroup(pkgDepCache&)@Base" 0.8.0 + (c++)"pkgDepCache::ActionGroup::~ActionGroup()@Base" 0.8.0 + (c++)"pkgDepCache::IsInstallOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.8.0 + (c++)"pkgDepCache::MarkInstall(pkgCache::PkgIterator const&, bool, unsigned long, bool, bool)@Base" 0.8.0 + (c++)"pkgDepCache::MarkPackage(pkgCache::PkgIterator const&, pkgCache::VerIterator const&, bool const&, bool const&)@Base" 0.8.0 + (c++)"pkgDepCache::MarkRequired(pkgDepCache::InRootSetFunc&)@Base" 0.8.0 + (c++)"pkgDepCache::SetReInstall(pkgCache::PkgIterator const&, bool)@Base" 0.8.0 + (c++)"pkgDepCache::VersionState(pkgCache::DepIterator, unsigned char, unsigned char, unsigned char)@Base" 0.8.0 + (c++)"pkgDepCache::BuildGroupOrs(pkgCache::VerIterator const&)@Base" 0.8.0 + (c++)"pkgDepCache::InRootSetFunc::InRootSet(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"pkgDepCache::InRootSetFunc::~InRootSetFunc()@Base" 0.8.0 + (c++)"pkgDepCache::readStateFile(OpProgress*)@Base" 0.8.0 + (c++)"pkgDepCache::GetRootSetFunc()@Base" 0.8.0 + (c++)"pkgDepCache::UpdateVerState(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgDepCache::writeStateFile(OpProgress*, bool)@Base" 0.8.0 + (c++)"pkgDepCache::DependencyState(pkgCache::DepIterator&)@Base" 0.8.0 + (c++)"pkgDepCache::DefaultRootSetFunc::InRootSet(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()@Base" 0.8.0 + (c++)"pkgDepCache::MarkFollowsSuggests()@Base" 0.8.0 + (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.0 + (c++)"pkgDepCache::MarkFollowsRecommends()@Base" 0.8.0 + (c++)"pkgDepCache::ReInstallPseudoForGroup(pkgCache::PkgIterator const&, std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >&)@Base" 0.8.0 + (c++)"pkgDepCache::ReInstallPseudoForGroup(unsigned long const&, std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >&)@Base" 0.8.0 + (c++)"pkgDepCache::RemovePseudoInstalledPkg(pkgCache::PkgIterator&, std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >&)@Base" 0.8.0 + (c++)"pkgDepCache::Init(OpProgress*)@Base" 0.8.0 + (c++)"pkgDepCache::Sweep()@Base" 0.8.0 + (c++)"pkgDepCache::Policy::IsImportantDep(pkgCache::DepIterator const&)@Base" 0.8.0 + (c++)"pkgDepCache::Policy::GetCandidateVer(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"pkgDepCache::Policy::~Policy()@Base" 0.8.0 + (c++)"pkgDepCache::Update(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgDepCache::Update(OpProgress*)@Base" 0.8.0 + (c++)"pkgDepCache::Update(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, bool const&)@Base" 0.8.0 + (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, long)@Base" 0.8.0 + (c++)"pkgDepCache::CheckDep(pkgCache::DepIterator, int, pkgCache::PkgIterator&)@Base" 0.8.0 + (c++)"pkgDepCache::MarkAuto(pkgCache::PkgIterator const&, bool)@Base" 0.8.0 + (c++)"pkgDepCache::MarkKeep(pkgCache::PkgIterator const&, bool, bool, unsigned long)@Base" 0.8.0 + (c++)"pkgDepCache::AddStates(pkgCache::PkgIterator const&, int)@Base" 0.8.0 + (c++)"pkgDepCache::pkgDepCache(pkgCache*, pkgDepCache::Policy*)@Base" 0.8.0 + (c++)"pkgDepCache::~pkgDepCache()@Base" 0.8.0 + (c++)"pkgSimulate::ShortBreaks()@Base" 0.8.0 + (c++)"pkgSimulate::Policy::GetCandidateVer(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"pkgSimulate::Policy::~Policy()@Base" 0.8.0 + (c++)"pkgSimulate::Remove(pkgCache::PkgIterator, bool)@Base" 0.8.0 + (c++)"pkgSimulate::Install(pkgCache::PkgIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgSimulate::Describe(pkgCache::PkgIterator, std::basic_ostream<char, std::char_traits<char> >&, bool, bool)@Base" 0.8.0 + (c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@Base" 0.8.0 + (c++)"pkgSimulate::~pkgSimulate()@Base" 0.8.0 + (c++)"MD5Summation::Add(unsigned char const*, unsigned long)@Base" 0.8.0 + (c++)"MD5Summation::AddFD(int, unsigned long)@Base" 0.8.0 + (c++)"MD5Summation::Result()@Base" 0.8.0 + (c++)"MD5Summation::MD5Summation()@Base" 0.8.0 + (c++)"SHA1SumValue::Set(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"SHA1SumValue::SHA1SumValue(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"SHA1SumValue::SHA1SumValue()@Base" 0.8.0 + (c++)"debIFTypePkg::~debIFTypePkg()@Base" 0.8.0 + (c++)"debIFTypeSrc::~debIFTypeSrc()@Base" 0.8.0 + (c++)"debSLTypeDeb::~debSLTypeDeb()@Base" 0.8.0 + (c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&)@Base" 0.8.0 + (c++)"indexRecords::Load(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"indexRecords::Lookup(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"indexRecords::MetaKeys()@Base" 0.8.0 + (c++)"indexRecords::indexRecords(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"indexRecords::indexRecords()@Base" 0.8.0 + (c++)"indexRecords::~indexRecords()@Base" 0.8.0 + (c++)"pkgAcqMethod::FetchResult::TakeHashes(Hashes&)@Base" 0.8.0 + (c++)"pkgAcqMethod::FetchResult::FetchResult()@Base" 0.8.0 + (c++)"pkgAcqMethod::Configuration(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcqMethod::Log(char const*, ...)@Base" 0.8.0 + (c++)"pkgAcqMethod::Run(bool)@Base" 0.8.0 + (c++)"pkgAcqMethod::Exit()@Base" 0.8.0 + (c++)"pkgAcqMethod::Fail(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@Base" 0.8.0 + (c++)"pkgAcqMethod::Fail(bool)@Base" 0.8.0 + (c++)"pkgAcqMethod::Fetch(pkgAcqMethod::FetchItem*)@Base" 0.8.0 + (c++)"pkgAcqMethod::Status(char const*, ...)@Base" 0.8.0 + (c++)"pkgAcqMethod::URIDone(pkgAcqMethod::FetchResult&, pkgAcqMethod::FetchResult*)@Base" 0.8.0 + (c++)"pkgAcqMethod::Redirect(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgAcqMethod::URIStart(pkgAcqMethod::FetchResult&)@Base" 0.8.0 + (c++)"pkgAcqMethod::MediaFail(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcqMethod::pkgAcqMethod(char const*, unsigned long)@Base" 0.8.0 + (c++)"pkgAcqMethod::~pkgAcqMethod()@Base" 0.8.0 + (c++)"pkgCacheFile::BuildCaches(OpProgress*, bool)@Base" 0.8.0 + (c++)"pkgCacheFile::BuildPolicy(OpProgress*)@Base" 0.8.0 + (c++)"pkgCacheFile::BuildDepCache(OpProgress*)@Base" 0.8.0 + (c++)"pkgCacheFile::BuildSourceList(OpProgress*)@Base" 0.8.0 + (c++)"pkgCacheFile::Open(OpProgress*, bool)@Base" 0.8.0 + (c++)"pkgCacheFile::Close()@Base" 0.8.0 + (c++)"pkgCacheFile::pkgCacheFile()@Base" 0.8.0 + (c++)"pkgCacheFile::~pkgCacheFile()@Base" 0.8.0 + (c++)"pkgIndexFile::LanguageCode()@Base" 0.8.0 + (c++)"pkgIndexFile::CheckLanguageCode(char const*)@Base" 0.8.0 + (c++)"pkgIndexFile::TranslationsAvailable()@Base" 0.8.0 + (c++)"pkgIndexFile::Type::GlobalList@Base" 0.8.0 + (c++)"pkgIndexFile::Type::GlobalListLen@Base" 0.8.0 + (c++)"pkgIndexFile::Type::GetType(char const*)@Base" 0.8.0 + (c++)"pkgIndexFile::Type::Type()@Base" 0.8.0 + (c++)"pkgIndexFile::Type::~Type()@Base" 0.8.0 + (c++)"pkgIndexFile::~pkgIndexFile()@Base" 0.8.0 + (c++)"pkgOrderList::VisitRDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgOrderList::OrderUnpack(std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)@Base" 0.8.0 + (c++)"pkgOrderList::DepConfigure(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgOrderList::DepUnPackDep(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgOrderList::DepUnPackPre(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgOrderList::DepUnPackCrit(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgOrderList::DepUnPackPreD(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgOrderList::OrderCompareA(void const*, void const*)@Base" 0.8.0 + (c++)"pkgOrderList::OrderCompareB(void const*, void const*)@Base" 0.8.0 + (c++)"pkgOrderList::OrderCritical()@Base" 0.8.0 + (c++)"pkgOrderList::VisitProvides(pkgCache::DepIterator, bool)@Base" 0.8.0 + (c++)"pkgOrderList::OrderConfigure()@Base" 0.8.0 + (c++)"pkgOrderList::VisitRProvides(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::VerIterator)@Base" 0.8.0 + (c++)"pkgOrderList::Me@Base" 0.8.0 + (c++)"pkgOrderList::DoRun()@Base" 0.8.0 + (c++)"pkgOrderList::Score(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgOrderList::AddLoop(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgOrderList::FileCmp(pkgCache::PkgIterator, pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgOrderList::CheckDep(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgOrderList::DepRemove(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgOrderList::IsMissing(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgOrderList::VisitDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgOrderList::WipeFlags(unsigned long)@Base" 0.8.0 + (c++)"pkgOrderList::pkgOrderList(pkgDepCache*)@Base" 0.8.0 + (c++)"pkgOrderList::~pkgOrderList()@Base" 0.8.0 + (c++)"Configuration::MatchAgainstConfig::MatchAgainstConfig(char const*)@Base" 0.8.0 + (c++)"Configuration::MatchAgainstConfig::~MatchAgainstConfig()@Base" 0.8.0 + (c++)"Configuration::Set(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"Configuration::Set(char const*, int const&)@Base" 0.8.0 + (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&)@Base" 0.8.0 + (c++)"Configuration::Clear(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"Configuration::Clear(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&)@Base" 0.8.0 + (c++)"Configuration::Clear(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"Configuration::CndSet(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"Configuration::Lookup(char const*, bool const&)@Base" 0.8.0 + (c++)"Configuration::Lookup(Configuration::Item*, char const*, unsigned long const&, bool const&)@Base" 0.8.0 + (c++)"Configuration::Configuration(Configuration::Item const*)@Base" 0.8.0 + (c++)"Configuration::Configuration()@Base" 0.8.0 + (c++)"Configuration::~Configuration()@Base" 0.8.0 + (c++)"SHA1Summation::Add(unsigned char const*, unsigned long)@Base" 0.8.0 + (c++)"SHA1Summation::AddFD(int, unsigned long)@Base" 0.8.0 + (c++)"SHA1Summation::Result()@Base" 0.8.0 + (c++)"SHA1Summation::SHA1Summation()@Base" 0.8.0 + (c++)"WeakPointable::~WeakPointable()@Base" 0.8.0 + (c++)"debListParser::NewVersion(pkgCache::VerIterator&)@Base" 0.8.0 + (c++)"debListParser::UsePackage(pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.0 + (c++)"debListParser::Description()@Base" 0.8.0 + (c++)"debListParser::ParseStatus(pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.0 + (c++)"debListParser::VersionHash()@Base" 0.8.0 + (c++)"debListParser::Architecture()@Base" 0.8.0 + (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&, bool const&)@Base" 0.8.0 + (c++)"debListParser::ParseDepends(pkgCache::VerIterator&, char const*, unsigned int)@Base" 0.8.0 + (c++)"debListParser::ParseProvides(pkgCache::VerIterator&)@Base" 0.8.0 + (c++)"debListParser::ArchitectureAll()@Base" 0.8.0 + (c++)"debListParser::ConvertRelation(char const*, unsigned int&)@Base" 0.8.0 + (c++)"debListParser::Description_md5()@Base" 0.8.0 + (c++)"debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator&, FileFd&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"debListParser::UniqFindTagWrite(char const*)@Base" 0.8.0 + (c++)"debListParser::DescriptionLanguage()@Base" 0.8.0 + (c++)"debListParser::Size()@Base" 0.8.0 + (c++)"debListParser::Step()@Base" 0.8.0 + (c++)"debListParser::Offset()@Base" 0.8.0 + (c++)"debListParser::GetPrio(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"debListParser::Package()@Base" 0.8.0 + (c++)"debListParser::Version()@Base" 0.8.0 + (c++)"debListParser::GrabWord(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, debListParser::WordList*, unsigned char&)@Base" 0.8.0 + (c++)"debListParser::debListParser(FileFd*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"debListParser::~debListParser()@Base" 0.8.0 + (c++)"pkgAcqArchive::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqArchive::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqArchive::DescURI()@Base" 0.8.0 + (c++)"pkgAcqArchive::HashSum()@Base" 0.8.0 + (c++)"pkgAcqArchive::Finished()@Base" 0.8.0 + (c++)"pkgAcqArchive::IsTrusted()@Base" 0.8.0 + (c++)"pkgAcqArchive::QueueNext()@Base" 0.8.0 + (c++)"pkgAcqArchive::ShortDesc()@Base" 0.8.0 + (c++)"pkgAcqArchive::pkgAcqArchive(pkgAcquire*, pkgSourceList*, pkgRecords*, pkgCache::VerIterator const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 + (c++)"pkgAcqArchive::~pkgAcqArchive()@Base" 0.8.0 + (c++)"pkgAcqMetaSig::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqMetaSig::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqMetaSig::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqMetaSig::DescURI()@Base" 0.8.0 + (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.0 + (c++)"pkgAcqMetaSig::~pkgAcqMetaSig()@Base" 0.8.0 + (c++)"pkgSourceList::ReadAppend(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgSourceList::ReadMainList()@Base" 0.8.0 + (c++)"pkgSourceList::ReadSourceDir(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgSourceList::Read(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgSourceList::Type::GlobalList@Base" 0.8.0 + (c++)"pkgSourceList::Type::GlobalListLen@Base" 0.8.0 + (c++)"pkgSourceList::Type::GetType(char const*)@Base" 0.8.0 + (c++)"pkgSourceList::Type::Type()@Base" 0.8.0 + (c++)"pkgSourceList::Type::~Type()@Base" 0.8.0 + (c++)"pkgSourceList::Reset()@Base" 0.8.0 + (c++)"pkgSourceList::pkgSourceList(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgSourceList::pkgSourceList()@Base" 0.8.0 + (c++)"pkgSourceList::~pkgSourceList()@Base" 0.8.0 + (c++)"pkgSrcRecords::File::~File()@Base" 0.8.0 + (c++)"pkgSrcRecords::Find(char const*, bool const&)@Base" 0.8.0 + (c++)"pkgSrcRecords::Parser::BuildDepRec::~BuildDepRec()@Base" 0.8.0 + (c++)"pkgSrcRecords::Parser::BuildDepType(unsigned char const&)@Base" 0.8.0 + (c++)"pkgSrcRecords::Parser::~Parser()@Base" 0.8.0 + (c++)"pkgSrcRecords::Restart()@Base" 0.8.0 + (c++)"pkgSrcRecords::pkgSrcRecords(pkgSourceList&)@Base" 0.8.0 + (c++)"pkgSrcRecords::~pkgSrcRecords()@Base" 0.8.0 + (c++)"pkgTagSection::TrimRecord(bool, char const*&)@Base" 0.8.0 + (c++)"pkgTagSection::Scan(char const*, unsigned long)@Base" 0.8.0 + (c++)"pkgTagSection::Trim()@Base" 0.8.0 + (c++)"pkgVendorList::CreateList(Configuration&)@Base" 0.8.0 + (c++)"pkgVendorList::FindVendor(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)@Base" 0.8.0 + (c++)"pkgVendorList::ReadMainList()@Base" 0.8.0 + (c++)"pkgVendorList::LookupFingerprint(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgVendorList::Read(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgVendorList::~pkgVendorList()@Base" 0.8.0 + (c++)"OpTextProgress::Done()@Base" 0.8.0 + (c++)"OpTextProgress::Write(char const*)@Base" 0.8.0 + (c++)"OpTextProgress::Update()@Base" 0.8.0 + (c++)"OpTextProgress::OpTextProgress(Configuration&)@Base" 0.8.0 + (c++)"OpTextProgress::~OpTextProgress()@Base" 0.8.0 + (c++)"SHA256SumValue::Set(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"SHA256SumValue::SHA256SumValue(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"SHA256SumValue::SHA256SumValue()@Base" 0.8.0 + (c++)"debIFTypeTrans::~debIFTypeTrans()@Base" 0.8.0 + (c++)"debStatusIndex::debStatusIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"debStatusIndex::~debStatusIndex()@Base" 0.8.0 + (c++)"SHA256Summation::Add(unsigned char const*, unsigned long)@Base" 0.8.0 + (c++)"SHA256Summation::AddFD(int, unsigned long)@Base" 0.8.0 + (c++)"SHA256Summation::Result()@Base" 0.8.0 + (c++)"SHA256Summation::SHA256Summation()@Base" 0.8.0 + (c++)"debIFTypeStatus::~debIFTypeStatus()@Base" 0.8.0 + (c++)"debRecordParser::Maintainer()@Base" 0.8.0 + (c++)"debRecordParser::SHA256Hash()@Base" 0.8.0 + (c++)"debRecordParser::Jump(pkgCache::VerFileIterator const&)@Base" 0.8.0 + (c++)"debRecordParser::Jump(pkgCache::DescFileIterator const&)@Base" 0.8.0 + (c++)"debRecordParser::Name()@Base" 0.8.0 + (c++)"debRecordParser::GetRec(char const*&, char const*&)@Base" 0.8.0 + (c++)"debRecordParser::MD5Hash()@Base" 0.8.0 + (c++)"debRecordParser::FileName()@Base" 0.8.0 + (c++)"debRecordParser::Homepage()@Base" 0.8.0 + (c++)"debRecordParser::LongDesc()@Base" 0.8.0 + (c++)"debRecordParser::SHA1Hash()@Base" 0.8.0 + (c++)"debRecordParser::ShortDesc()@Base" 0.8.0 + (c++)"debRecordParser::SourcePkg()@Base" 0.8.0 + (c++)"debRecordParser::SourceVer()@Base" 0.8.0 + (c++)"debRecordParser::debRecordParser(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgCache&)@Base" 0.8.0 + (c++)"debRecordParser::~debRecordParser()@Base" 0.8.0 + (c++)"debReleaseIndex::GetIndexFiles()@Base" 0.8.0 + (c++)"debReleaseIndex::debSectionEntry::debSectionEntry(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&)@Base" 0.8.0 + (c++)"debReleaseIndex::PushSectionEntry(debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 + (c++)"debReleaseIndex::PushSectionEntry(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 + (c++)"debReleaseIndex::PushSectionEntry(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 + (c++)"debReleaseIndex::debReleaseIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"debReleaseIndex::~debReleaseIndex()@Base" 0.8.0 + (c++)"debSLTypeDebSrc::~debSLTypeDebSrc()@Base" 0.8.0 + (c++)"debSLTypeDebian::~debSLTypeDebian()@Base" 0.8.0 + (c++)"debSourcesIndex::debSourcesIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@Base" 0.8.0 + (c++)"debSourcesIndex::~debSourcesIndex()@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::ParseDiffIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::DescURI()@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, HashString)@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::~pkgAcqDiffIndex()@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::QueueIndexes(bool)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::VerifyVendor(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::RetrievalDone(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::DescURI()@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::AuthDone(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::~pkgAcqMetaIndex()@Base" 0.8.0 + (c++)"pkgVersionMatch::ExpressionMatches(char const*, char const*)@Base" 0.8.0 + (c++)"pkgVersionMatch::ExpressionMatches(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@Base" 0.8.0 + (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgVersionMatch::MatchVer(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@Base" 0.8.0 + (c++)"pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator)@Base" 0.8.0 + (c++)"pkgVersionMatch::pkgVersionMatch(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgVersionMatch::MatchType)@Base" 0.8.0 + (c++)"pkgVersionMatch::~pkgVersionMatch()@Base" 0.8.0 + (c++)"TranslationsCopy::CopyTranslations(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, pkgCdromStatus*)@Base" 0.8.0 + (c++)"debPackagesIndex::debPackagesIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"debPackagesIndex::~debPackagesIndex()@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::QueueNextDiff()@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::Finish(bool)@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::DescURI()@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, HashString, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<DiffInfo, std::allocator<DiffInfo> >)@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::~pkgAcqIndexDiffs()@Base" 0.8.0 + (c++)"pkgAcqIndexTrans::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqIndexTrans::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgAcqIndexTrans::~pkgAcqIndexTrans()@Base" 0.8.0 + (c++)"pkgAcquireStatus::Done(pkgAcquire::ItemDesc&)@Base" 0.8.0 + (c++)"pkgAcquireStatus::Fail(pkgAcquire::ItemDesc&)@Base" 0.8.0 + (c++)"pkgAcquireStatus::Stop()@Base" 0.8.0 + (c++)"pkgAcquireStatus::Fetch(pkgAcquire::ItemDesc&)@Base" 0.8.0 + (c++)"pkgAcquireStatus::Pulse(pkgAcquire*)@Base" 0.8.0 + (c++)"pkgAcquireStatus::Start()@Base" 0.8.0 + (c++)"pkgAcquireStatus::IMSHit(pkgAcquire::ItemDesc&)@Base" 0.8.0 + (c++)"pkgAcquireStatus::Fetched(unsigned long, unsigned long)@Base" 0.8.0 + (c++)"pkgAcquireStatus::pkgAcquireStatus()@Base" 0.8.0 + (c++)"pkgAcquireStatus::~pkgAcquireStatus()@Base" 0.8.0 + (c++)"PreferenceSection::TrimRecord(bool, char const*&)@Base" 0.8.0 + (c++)"pkgArchiveCleaner::Go(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgCache&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::ListParser::NewDepends(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)@Base" 0.8.0 + (c++)"pkgCacheGenerator::ListParser::NewProvides(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::ListParser::CollectFileProvides(pkgCache&, pkgCache::VerIterator&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::ListParser::~ListParser()@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewDepends(pkgCache::PkgIterator&, pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int const&, unsigned int const&, unsigned int*)@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewFileVer(pkgCache::VerIterator&, pkgCacheGenerator::ListParser&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewPackage(pkgCache::PkgIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewVersion(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)@Base" 0.8.0 + (c++)"pkgCacheGenerator::SelectFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgIndexFile const&, unsigned long)@Base" 0.8.0 + (c++)"pkgCacheGenerator::FinishCache(OpProgress*)@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator&, pkgCacheGenerator::ListParser&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::AllocateInMap(unsigned long const&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewDescription(pkgCache::DescIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, MD5SumValue const&, unsigned int)@Base" 0.8.0 + (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@Base" 0.8.0 + (c++)"pkgCacheGenerator::WriteUniqString(char const*, unsigned int)@Base" 0.8.0 + (c++)"pkgCacheGenerator::WriteStringInMap(char const*)@Base" 0.8.0 + (c++)"pkgCacheGenerator::WriteStringInMap(char const*, unsigned long const&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::CreateDynamicMMap(FileFd*, unsigned long)@Base" 0.8.0 + (c++)"pkgCacheGenerator::MergeFileProvides(pkgCacheGenerator::ListParser&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::MakeOnlyStatusCache(OpProgress*, DynamicMMap**)@Base" 0.8.0 + (c++)"pkgCacheGenerator::ReMap(void const*, void const*)@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic<pkgCache::DepIterator>::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic<pkgCache::GrpIterator>::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic<pkgCache::PkgIterator>::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic<pkgCache::PrvIterator>::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic<pkgCache::VerIterator>::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic<pkgCache::DescIterator>::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic<pkgCache::PkgFileIterator>::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewGroup(pkgCache::GrpIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::MergeList(pkgCacheGenerator::ListParser&, pkgCache::VerIterator*)@Base" 0.8.0 + (c++)"pkgCacheGenerator::pkgCacheGenerator(DynamicMMap*, OpProgress*)@Base" 0.8.0 + (c++)"pkgCacheGenerator::~pkgCacheGenerator()@Base" 0.8.0 + (c++)"pkgPackageManager::FixMissing()@Base" 0.8.0 + (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgPackageManager::GetArchives(pkgAcquire*, pkgSourceList*, pkgRecords*)@Base" 0.8.0 + (c++)"pkgPackageManager::SmartRemove(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgPackageManager::ConfigureAll()@Base" 0.8.0 + (c++)"pkgPackageManager::ImmediateAdd(pkgCache::PkgIterator, bool, unsigned int const&)@Base" 0.8.0 + (c++)"pkgPackageManager::OrderInstall()@Base" 0.8.0 + (c++)"pkgPackageManager::DepAlwaysTrue(pkgCache::DepIterator)@Base" 0.8.0 + (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgPackageManager::CheckRConflicts(pkgCache::PkgIterator, pkgCache::DepIterator, char const*)@Base" 0.8.0 + (c++)"pkgPackageManager::CreateOrderList()@Base" 0.8.0 + (c++)"pkgPackageManager::DoInstallPostFork(int)@Base" 0.8.0 + (c++)"pkgPackageManager::Go(int)@Base" 0.8.0 + (c++)"pkgPackageManager::Reset()@Base" 0.8.0 + (c++)"pkgPackageManager::DepAdd(pkgOrderList&, pkgCache::PkgIterator, int)@Base" 0.8.0 + (c++)"pkgPackageManager::Remove(pkgCache::PkgIterator, bool)@Base" 0.8.0 + (c++)"pkgPackageManager::Install(pkgCache::PkgIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgPackageManager::Configure(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgPackageManager::DoInstall(int)@Base" 0.8.0 + (c++)"pkgPackageManager::pkgPackageManager(pkgDepCache*)@Base" 0.8.0 + (c++)"pkgPackageManager::~pkgPackageManager()@Base" 0.8.0 + (c++)"debSrcRecordParser::BuildDepends(std::vector<pkgSrcRecords::Parser::BuildDepRec, std::allocator<pkgSrcRecords::Parser::BuildDepRec> >&, bool const&, bool const&)@Base" 0.8.0 + (c++)"debSrcRecordParser::Jump(unsigned long const&)@Base" 0.8.0 + (c++)"debSrcRecordParser::Step()@Base" 0.8.0 + (c++)"debSrcRecordParser::AsStr()@Base" 0.8.0 + (c++)"debSrcRecordParser::Files(std::vector<pkgSrcRecords::File, std::allocator<pkgSrcRecords::File> >&)@Base" 0.8.0 + (c++)"debSrcRecordParser::Offset()@Base" 0.8.0 + (c++)"debSrcRecordParser::Restart()@Base" 0.8.0 + (c++)"debSrcRecordParser::Binaries()@Base" 0.8.0 + (c++)"debSrcRecordParser::~debSrcRecordParser()@Base" 0.8.0 + (c++)"pkgProblemResolver::MakeScores()@Base" 0.8.0 + (c++)"pkgProblemResolver::ResolveByKeep()@Base" 0.8.0 + (c++)"pkgProblemResolver::InstallProtect()@Base" 0.8.0 + (c++)"pkgProblemResolver::This@Base" 0.8.0 + (c++)"pkgProblemResolver::Resolve(bool)@Base" 0.8.0 + (c++)"pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgProblemResolver::ScoreSort(void const*, void const*)@Base" 0.8.0 + (c++)"pkgProblemResolver::pkgProblemResolver(pkgDepCache*)@Base" 0.8.0 + (c++)"pkgProblemResolver::~pkgProblemResolver()@Base" 0.8.0 + (c++)"debVersioningSystem::CmpFragment(char const*, char const*, char const*, char const*)@Base" 0.8.0 + (c++)"debVersioningSystem::DoCmpVersion(char const*, char const*, char const*, char const*)@Base" 0.8.0 + (c++)"debVersioningSystem::DoCmpReleaseVer(char const*, char const*, char const*, char const*)@Base" 0.8.0 + (c++)"debVersioningSystem::UpstreamVersion(char const*)@Base" 0.8.0 + (c++)"debVersioningSystem::CheckDep(char const*, int, char const*)@Base" 0.8.0 + (c++)"debVersioningSystem::debVersioningSystem()@Base" 0.8.0 + (c++)"debVersioningSystem::~debVersioningSystem()@Base" 0.8.0 + (c++)"pkgUdevCdromDevices::Scan()@Base" 0.8.0 + (c++)"pkgUdevCdromDevices::Dlopen()@Base" 0.8.0 + (c++)"pkgUdevCdromDevices::pkgUdevCdromDevices()@Base" 0.8.0 + (c++)"pkgUdevCdromDevices::~pkgUdevCdromDevices()@Base" 0.8.0 + (c++)"pkgVersioningSystem::GlobalList@Base" 0.8.0 + (c++)"pkgVersioningSystem::GlobalListLen@Base" 0.8.0 + (c++)"pkgVersioningSystem::TestCompatibility(pkgVersioningSystem const&)@Base" 0.8.0 + (c++)"pkgVersioningSystem::GetVS(char const*)@Base" 0.8.0 + (c++)"pkgVersioningSystem::pkgVersioningSystem()@Base" 0.8.0 + (c++)"pkgVersioningSystem::~pkgVersioningSystem()@Base" 0.8.0 + (c++)"debTranslationsIndex::debTranslationsIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const*)@Base" 0.8.0 + (c++)"debTranslationsIndex::~debTranslationsIndex()@Base" 0.8.0 + (c++)"APT::PackageSet::FromString(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::FromCommandLine(pkgCacheFile&, char const**, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::GroupedFromCommandLine(pkgCacheFile&, char const**, std::list<APT::PackageSet::Modifier, std::allocator<APT::PackageSet::Modifier> > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::FromName(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::FromTask(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::FromRegEx(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::~PackageSet()@Base" 0.8.0 + (c++|optional=inherent)"APT::PackageSet::PackageSet(APT::PackageSet const&)@Base" 0.8.0 + (c++)"APT::VersionSet::FromString(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::VersionSet::Version const&, APT::CacheSetHelper&, bool const&)@Base" 0.8.0 + (c++)"APT::VersionSet::FromPackage(pkgCacheFile&, pkgCache::PkgIterator const&, APT::VersionSet::Version const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::VersionSet::FromCommandLine(pkgCacheFile&, char const**, APT::VersionSet::Version const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::VersionSet::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::VersionSet::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::VersionSet::GroupedFromCommandLine(pkgCacheFile&, char const**, std::list<APT::VersionSet::Modifier, std::allocator<APT::VersionSet::Modifier> > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::VersionSet::~VersionSet()@Base" 0.8.0 + (c++|optional=inline)"APT::VersionSet::insert(APT::VersionSet const&)@Base" 0.8.0 + (c++|optional=inline)"APT::VersionSet::insert(pkgCache::VerIterator const&)@Base" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::~PackageNameMatchesRegEx()@Base" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::GrpIterator const&)@Base" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::Configuration::getLanguages(bool const&, bool const&, char const**)@Base" 0.8.0 + (c++)"APT::Configuration::getArchitectures(bool const&)@Base" 0.8.0 + (c++)"APT::Configuration::checkArchitecture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"APT::Configuration::getCompressionTypes(bool const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindTask(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindRegEx(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindAllVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindPackage(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::showTaskSelection(APT::PackageSet const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::showRegExSelection(APT::PackageSet const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindNewestVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::~CacheSetHelper()@Base" 0.8.0 + (c++)"URI::NoUserPassword(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"URI::CopyFrom(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"URI::SiteOnly(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"URI::~URI()@Base" 0.8.0 + (c++)"URI::operator std::basic_string<char, std::char_traits<char>, std::allocator<char> >()@Base" 0.8.0 + (c++)"MMap::Map(FileFd&)@Base" 0.8.0 + (c++)"MMap::Sync(unsigned long, unsigned long)@Base" 0.8.0 + (c++)"MMap::Sync()@Base" 0.8.0 + (c++)"MMap::Close(bool)@Base" 0.8.0 + (c++)"MMap::MMap(FileFd&, unsigned long)@Base" 0.8.0 + (c++)"MMap::MMap(unsigned long)@Base" 0.8.0 + (c++)"MMap::~MMap()@Base" 0.8.0 + (c++)"FileFd::OpenDescriptor(int, FileFd::OpenMode, bool)@Base" 0.8.0 + (c++)"FileFd::Open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 + (c++)"FileFd::Read(void*, unsigned long, unsigned long*)@Base" 0.8.0 + (c++)"FileFd::Seek(unsigned long)@Base" 0.8.0 + (c++)"FileFd::Size()@Base" 0.8.0 + (c++)"FileFd::Skip(unsigned long)@Base" 0.8.0 + (c++)"FileFd::Sync()@Base" 0.8.0 + (c++)"FileFd::Tell()@Base" 0.8.0 + (c++)"FileFd::Close()@Base" 0.8.0 + (c++)"FileFd::Write(void const*, unsigned long)@Base" 0.8.0 + (c++)"FileFd::Truncate(unsigned long)@Base" 0.8.0 + (c++|optional=inline)"FileFd::FileFd(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 + (c++)"FileFd::~FileFd()@Base" 0.8.0 + (c++)"Hashes::AddFD(int, unsigned long)@Base" 0.8.0 + (c++)"Vendor::CheckDist(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"Vendor::Vendor(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<Vendor::Fingerprint*, std::allocator<Vendor::Fingerprint*> >*)@Base" 0.8.0 + (c++)"Vendor::~Vendor()@Base" 0.8.0 + (c++)"DiffInfo::~DiffInfo()@Base" 0.8.0 + (c++)"pkgCache::CompTypeDeb(unsigned char)@Base" 0.8.0 + (c++)"pkgCache::DepIterator::GlobOr(pkgCache::DepIterator&, pkgCache::DepIterator&)@Base" 0.8.0 + (c++)"pkgCache::DepIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::DepIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::GrpIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::GrpIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::PkgIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::PkgIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::PrvIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::PrvIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::VerIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::VerIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::DescIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::DescIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::PkgFileIterator::IsOk()@Base" 0.8.0 + (c++)"pkgCache::PkgFileIterator::RelStr()@Base" 0.8.0 + (c++)"pkgCache::PkgFileIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::PkgFileIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::VerFileIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::VerFileIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::DescFileIterator::operator++(int)@Base" 0.8.0 + (c++)"pkgCache::DescFileIterator::operator++()@Base" 0.8.0 + (c++)"pkgCache::SingleArchFindPkg(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgCache::ReMap(bool const&)@Base" 0.8.0 + (c++)"pkgCache::Header::Header()@Base" 0.8.0 + (c++)"pkgCache::DepType(unsigned char)@Base" 0.8.0 + (c++)"pkgCache::FindGrp(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgCache::FindPkg(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgCache::FindPkg(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgCache::CompType(unsigned char)@Base" 0.8.0 + (c++)"pkgCache::Priority(unsigned char)@Base" 0.8.0 + (c++)"pkgCache::pkgCache(MMap*, bool)@Base" 0.8.0 + (c++)"pkgCache::~pkgCache()@Base" 0.8.0 + (c++)"pkgCdrom::DropRepeats(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, char const*)@Base" 0.8.0 + (c++)"pkgCdrom::FindPackages(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*, unsigned int)@Base" 0.8.0 + (c++)"pkgCdrom::WriteDatabase(Configuration&)@Base" 0.8.0 + (c++)"pkgCdrom::DropBinaryArch(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@Base" 0.8.0 + (c++)"pkgCdrom::WriteSourceList(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, bool)@Base" 0.8.0 + (c++)"pkgCdrom::ReduceSourcelist(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@Base" 0.8.0 + (c++)"pkgCdrom::Add(pkgCdromStatus*)@Base" 0.8.0 + (c++)"pkgCdrom::Ident(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*)@Base" 0.8.0 + (c++)"pkgCdrom::Score(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"IndexCopy::CopyPackages(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, pkgCdromStatus*)@Base" 0.8.0 + (c++)"IndexCopy::ReconstructChop(unsigned long&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"IndexCopy::ReconstructPrefix(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"IndexCopy::ConvertToSourceList(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 + (c++)"IndexCopy::ChopDirs(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int)@Base" 0.8.0 + (c++)"IndexCopy::GrabFirst(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int)@Base" 0.8.0 + (c++)"IndexCopy::~IndexCopy()@Base" 0.8.0 + (c++|regex|optional=template)"^SPtrArray<[^ ]+>::~SPtrArray\(\)@Base$" 0.8.0 + (c++|optional=template)"SPtrArray<unsigned char>::~SPtrArray()@Base" 0.8.0 + (c++)"SigVerify::CopyAndVerify(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >)@Base" 0.8.0 + (c++)"SigVerify::CopyMetaIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"SigVerify::Verify(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, indexRecords*)@Base" 0.8.0 + (c++)"SigVerify::RunGPGV(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&, int*)@Base" 0.8.0 + (c++)"debSystem::Initialize(Configuration&)@Base" 0.8.0 + (c++)"debSystem::CheckUpdates()@Base" 0.8.0 + (c++)"debSystem::AddStatusFiles(std::vector<pkgIndexFile*, std::allocator<pkgIndexFile*> >&)@Base" 0.8.0 + (c++)"debSystem::ArchiveSupported(char const*)@Base" 0.8.0 + (c++)"debSystem::Lock()@Base" 0.8.0 + (c++)"debSystem::Score(Configuration const&)@Base" 0.8.0 + (c++)"debSystem::UnLock(bool)@Base" 0.8.0 + (c++)"debSystem::debSystem()@Base" 0.8.0 + (c++)"debSystem::~debSystem()@Base" 0.8.0 + (c++)"metaIndex::~metaIndex()@Base" 0.8.0 + (c++)"pkgDPkgPM::SendV2Pkgs(_IO_FILE*)@Base" 0.8.0 + (c++)"pkgDPkgPM::DoTerminalPty(int)@Base" 0.8.0 + (c++)"pkgDPkgPM::DoDpkgStatusFd(int, int)@Base" 0.8.0 + (c++)"pkgDPkgPM::WriteHistoryTag(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgDPkgPM::WriteApportReport(char const*, char const*)@Base" 0.8.0 + (c++)"pkgDPkgPM::RunScriptsWithPkgs(char const*)@Base" 0.8.0 + (c++)"pkgDPkgPM::ProcessDpkgStatusLine(int, char*)@Base" 0.8.0 + (c++)"pkgDPkgPM::handleDisappearAction(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 + (c++)"pkgDPkgPM::Go(int)@Base" 0.8.0 + (c++)"pkgDPkgPM::Reset()@Base" 0.8.0 + (c++)"pkgDPkgPM::Remove(pkgCache::PkgIterator, bool)@Base" 0.8.0 + (c++)"pkgDPkgPM::DoStdin(int)@Base" 0.8.0 + (c++)"pkgDPkgPM::Install(pkgCache::PkgIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 + (c++)"pkgDPkgPM::OpenLog()@Base" 0.8.0 + (c++)"pkgDPkgPM::CloseLog()@Base" 0.8.0 + (c++)"pkgDPkgPM::Configure(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgDPkgPM::pkgDPkgPM(pkgDepCache*)@Base" 0.8.0 + (c++)"pkgDPkgPM::~pkgDPkgPM()@Base" 0.8.0 + (c++)"pkgPolicy::GetPriority(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"pkgPolicy::InitDefaults()@Base" 0.8.0 + (c++)"pkgPolicy::IsImportantDep(pkgCache::DepIterator const&)@Base" 0.8.0 + (c++)"pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"pkgPolicy::PkgPin::~PkgPin()@Base" 0.8.0 + (c++)"pkgPolicy::GetMatch(pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"pkgPolicy::CreatePin(pkgVersionMatch::MatchType, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, short)@Base" 0.8.0 + (c++)"pkgPolicy::pkgPolicy(pkgCache*)@Base" 0.8.0 + (c++)"pkgPolicy::~pkgPolicy()@Base" 0.8.0 + (c++)"pkgSystem::GlobalList@Base" 0.8.0 + (c++)"pkgSystem::Initialize(Configuration&)@Base" 0.8.0 + (c++)"pkgSystem::GlobalListLen@Base" 0.8.0 + (c++)"pkgSystem::Score(Configuration const&)@Base" 0.8.0 + (c++)"pkgSystem::GetSystem(char const*)@Base" 0.8.0 + (c++)"pkgSystem::pkgSystem()@Base" 0.8.0 + (c++)"pkgSystem::~pkgSystem()@Base" 0.8.0 + (c++)"HashString::VerifyFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.8.0 + (c++)"HashString::empty() const@Base" 0.8.0 + (c++)"HashString::toStr() const@Base" 0.8.0 + (c++|optional=inherent)"HashString::operator=(HashString const&)@Base" 0.8.0 + (c++)"CommandLine::FileSize() const@Base" 0.8.0 + (c++)"GlobalError::empty(GlobalError::MsgType const&) const@Base" 0.8.0 + (c++)"MD5SumValue::Value() const@Base" 0.8.0 + (c++)"MD5SumValue::operator==(MD5SumValue const&) const@Base" 0.8.0 + (c++)"SHA1SumValue::Value() const@Base" 0.8.0 + (c++)"SHA1SumValue::operator==(SHA1SumValue const&) const@Base" 0.8.0 + (c++)"debIFTypePkg::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.0 + (c++)"debSLTypeDeb::CreateItem(std::vector<metaIndex*, std::allocator<metaIndex*> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 0.8.0 + (c++)"indexRecords::GetValidUntil() const@Base" 0.8.0 + (c++)"indexRecords::GetExpectedDist() const@Base" 0.8.0 + (c++)"indexRecords::Exists(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"indexRecords::GetDist() const@Base" 0.8.0 + (c++)"indexRecords::CheckDist(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.8.0 + (c++)"pkgIndexFile::ArchiveURI(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.8.0 + (c++)"pkgIndexFile::SourceInfo(pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@Base" 0.8.0 + (c++)"pkgIndexFile::ArchiveInfo(pkgCache::VerIterator) const@Base" 0.8.0 + (c++)"pkgIndexFile::FindInCache(pkgCache&) const@Base" 0.8.0 + (c++)"pkgIndexFile::CreateSrcParser() const@Base" 0.8.0 + (c++)"pkgIndexFile::MergeFileProvides(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 + (c++)"pkgIndexFile::MergeFileProvides(pkgCacheGenerator&, OpProgress&) const@Base" 0.8.0 + (c++)"pkgIndexFile::Type::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.0 + (c++)"pkgIndexFile::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 + (c++)"pkgIndexFile::Merge(pkgCacheGenerator&, OpProgress&) const@Base" 0.8.0 + (c++)"Configuration::FindVector(char const*) const@Base" 0.8.0 + (c++)"Configuration::MatchAgainstConfig::Match(char const*) const@Base" 0.8.0 + (c++)"Configuration::Find(char const*, char const*) const@Base" 0.8.0 + (c++)"Configuration::Item::FullTag(Configuration::Item const*) const@Base" 0.8.0 + (c++)"Configuration::FindB(char const*, bool const&) const@Base" 0.8.0 + (c++)"Configuration::FindI(char const*, int const&) const@Base" 0.8.0 + (c++)"Configuration::Exists(char const*) const@Base" 0.8.0 + (c++)"Configuration::FindAny(char const*, char const*) const@Base" 0.8.0 + (c++)"Configuration::FindDir(char const*, char const*) const@Base" 0.8.0 + (c++)"Configuration::FindFile(char const*, char const*) const@Base" 0.8.0 + (c++)"Configuration::ExistsAny(char const*) const@Base" 0.8.0 + (c++)"pkgSourceList::GetIndexes(pkgAcquire*, bool) const@Base" 0.8.0 + (c++)"pkgSourceList::Type::FixupURI(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const@Base" 0.8.0 + (c++)"pkgSourceList::Type::ParseLine(std::vector<metaIndex*, std::allocator<metaIndex*> >&, char const*, unsigned long const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"pkgSourceList::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@Base" 0.8.0 + (c++)"pkgTagSection::Find(char const*, char const*&, char const*&) const@Base" 0.8.0 + (c++)"pkgTagSection::Find(char const*, unsigned int&) const@Base" 0.8.0 + (c++)"pkgTagSection::FindI(char const*, long) const@Base" 0.8.0 + (c++)"pkgTagSection::FindS(char const*) const@Base" 0.8.0 + (c++)"pkgTagSection::FindULL(char const*, unsigned long long const&) const@Base" 0.8.0 + (c++)"pkgTagSection::FindFlag(char const*, unsigned long&, unsigned long) const@Base" 0.8.0 + (c++)"SHA256SumValue::Value() const@Base" 0.8.0 + (c++)"SHA256SumValue::operator==(SHA256SumValue const&) const@Base" 0.8.0 + (c++)"debStatusIndex::FindInCache(pkgCache&) const@Base" 0.8.0 + (c++)"debStatusIndex::HasPackages() const@Base" 0.8.0 + (c++)"debStatusIndex::Size() const@Base" 0.8.0 + (c++)"debStatusIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 + (c++)"debStatusIndex::Exists() const@Base" 0.8.0 + (c++)"debStatusIndex::GetType() const@Base" 0.8.0 + (c++)"debStatusIndex::Describe(bool) const@Base" 0.8.0 + (c++)"debIFTypeStatus::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.0 + (c++)"debReleaseIndex::ArchiveURI(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::GetIndexes(pkgAcquire*, bool const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::MetaIndexURI(char const*) const@Base" 0.8.0 + (c++)"debReleaseIndex::MetaIndexFile(char const*) const@Base" 0.8.0 + (c++)"debReleaseIndex::MetaIndexInfo(char const*) const@Base" 0.8.0 + (c++)"debReleaseIndex::IndexURISuffix(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::SourceIndexURI(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::ComputeIndexTargets() const@Base" 0.8.0 + (c++)"debReleaseIndex::SourceIndexURISuffix(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::Info(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::IndexURI(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::IsTrusted() const@Base" 0.8.0 + (c++)"debSLTypeDebSrc::CreateItem(std::vector<metaIndex*, std::allocator<metaIndex*> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 0.8.0 + (c++)"debSLTypeDebian::CreateItemInternal(std::vector<metaIndex*, std::allocator<metaIndex*> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 0.8.0 + (c++)"debSourcesIndex::ArchiveURI(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.8.0 + (c++)"debSourcesIndex::SourceInfo(pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@Base" 0.8.0 + (c++)"debSourcesIndex::HasPackages() const@Base" 0.8.0 + (c++)"debSourcesIndex::CreateSrcParser() const@Base" 0.8.0 + (c++)"debSourcesIndex::Info(char const*) const@Base" 0.8.0 + (c++)"debSourcesIndex::Size() const@Base" 0.8.0 + (c++)"debSourcesIndex::Exists() const@Base" 0.8.0 + (c++)"debSourcesIndex::GetType() const@Base" 0.8.0 + (c++)"debSourcesIndex::Describe(bool) const@Base" 0.8.0 + (c++)"debSourcesIndex::IndexURI(char const*) const@Base" 0.8.0 + (c++)"debPackagesIndex::ArchiveURI(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.8.0 + (c++)"debPackagesIndex::ArchiveInfo(pkgCache::VerIterator) const@Base" 0.8.0 + (c++)"debPackagesIndex::FindInCache(pkgCache&) const@Base" 0.8.0 + (c++)"debPackagesIndex::HasPackages() const@Base" 0.8.0 + (c++)"debPackagesIndex::Info(char const*) const@Base" 0.8.0 + (c++)"debPackagesIndex::Size() const@Base" 0.8.0 + (c++)"debPackagesIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 + (c++)"debPackagesIndex::Exists() const@Base" 0.8.0 + (c++)"debPackagesIndex::GetType() const@Base" 0.8.0 + (c++)"debPackagesIndex::Describe(bool) const@Base" 0.8.0 + (c++)"debPackagesIndex::IndexURI(char const*) const@Base" 0.8.0 + (c++)"debSrcRecordParser::Maintainer() const@Base" 0.8.0 + (c++)"debSrcRecordParser::Package() const@Base" 0.8.0 + (c++)"debSrcRecordParser::Section() const@Base" 0.8.0 + (c++)"debSrcRecordParser::Version() const@Base" 0.8.0 + (c++)"debTranslationsIndex::GetIndexes(pkgAcquire*) const@Base" 0.8.0 + (c++)"debTranslationsIndex::FindInCache(pkgCache&) const@Base" 0.8.0 + (c++)"debTranslationsIndex::HasPackages() const@Base" 0.8.0 + (c++)"debTranslationsIndex::Info(char const*) const@Base" 0.8.0 + (c++)"debTranslationsIndex::Size() const@Base" 0.8.0 + (c++)"debTranslationsIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.0 + (c++)"debTranslationsIndex::Exists() const@Base" 0.8.0 + (c++)"debTranslationsIndex::GetType() const@Base" 0.8.0 + (c++)"debTranslationsIndex::Describe(bool) const@Base" 0.8.0 + (c++)"debTranslationsIndex::IndexURI(char const*) const@Base" 0.8.0 + (c++|optional=private)"debTranslationsIndex::IndexFile(char const*) const@Base" 0.8.0 + (c++)"Vendor::GetVendorID() const@Base" 0.8.0 + (c++)"Vendor::LookupFingerprint(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.8.0 + (c++|optional=inline)"pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>::end() const@Base" 0.8.0 + (c++)"pkgCache::DepIterator::AllTargets() const@Base" 0.8.0 + (c++)"pkgCache::DepIterator::IsCritical() const@Base" 0.8.0 + (c++)"pkgCache::DepIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::DepIterator::SmartTargetPkg(pkgCache::PkgIterator&) const@Base" 0.8.0 + (c++)"pkgCache::GrpIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::GrpIterator::FindPreferredPkg(bool const&) const@Base" 0.8.0 + (c++)"pkgCache::GrpIterator::FindPkg(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.8.0 + (c++)"pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const&) const@Base" 0.8.0 + (c++)"pkgCache::PkgIterator::CurVersion() const@Base" 0.8.0 + (c++)"pkgCache::PkgIterator::CandVersion() const@Base" 0.8.0 + (c++)"pkgCache::PkgIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::PkgIterator::State() const@Base" 0.8.0 + (c++)"pkgCache::PkgIterator::FullName(bool const&) const@Base" 0.8.0 + (c++)"pkgCache::PrvIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::VerIterator::CompareVer(pkgCache::VerIterator const&) const@Base" 0.8.0 + (c++)"pkgCache::VerIterator::NewestFile() const@Base" 0.8.0 + (c++)"pkgCache::VerIterator::Downloadable() const@Base" 0.8.0 + (c++)"pkgCache::VerIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::VerIterator::TranslatedDescription() const@Base" 0.8.0 + (c++)"pkgCache::VerIterator::Pseudo() const@Base" 0.8.0 + (c++)"pkgCache::VerIterator::RelStr() const@Base" 0.8.0 + (c++)"pkgCache::VerIterator::Automatic() const@Base" 0.8.0 + (c++)"pkgCache::DescIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::PkgFileIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::VerFileIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::DescFileIterator::OwnerPointer() const@Base" 0.8.0 + (c++)"pkgCache::sHash(char const*) const@Base" 0.8.0 + (c++)"pkgCache::sHash(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.0 + (c++)"pkgCache::Header::CheckSizes(pkgCache::Header&) const@Base" 0.8.0 + (c++)"debSystem::CreatePM(pkgDepCache*) const@Base" 0.8.0 + (c++)"debSystem::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@Base" 0.8.0 + (c++)"metaIndex::GetURI() const@Base" 0.8.0 + (c++)"metaIndex::GetDist() const@Base" 0.8.0 + (c++)"metaIndex::GetType() const@Base" 0.8.0 + (c++)"typeinfo for OpProgress@Base" 0.8.0 + (c++)"typeinfo for SourceCopy@Base" 0.8.0 + (c++)"typeinfo for pkgAcqFile@Base" 0.8.0 + (c++)"typeinfo for pkgAcquire@Base" 0.8.0 + (c++)"typeinfo for DynamicMMap@Base" 0.8.0 + (c++)"typeinfo for PackageCopy@Base" 0.8.0 + (c++)"typeinfo for pkgAcqIndex@Base" 0.8.0 + (c++)"typeinfo for pkgDepCache@Base" 0.8.0 + (c++)"typeinfo for pkgSimulate@Base" 0.8.0 + (c++)"typeinfo for debIFTypePkg@Base" 0.8.0 + (c++)"typeinfo for debIFTypeSrc@Base" 0.8.0 + (c++)"typeinfo for debSLTypeDeb@Base" 0.8.0 + (c++)"typeinfo for indexRecords@Base" 0.8.0 + (c++)"typeinfo for pkgAcqMethod@Base" 0.8.0 + (c++)"typeinfo for pkgCacheFile@Base" 0.8.0 + (c++)"typeinfo for pkgIndexFile@Base" 0.8.0 + (c++)"typeinfo for WeakPointable@Base" 0.8.0 + (c++)"typeinfo for debListParser@Base" 0.8.0 + (c++)"typeinfo for pkgAcqArchive@Base" 0.8.0 + (c++)"typeinfo for pkgAcqMetaSig@Base" 0.8.0 + (c++)"typeinfo for pkgTagSection@Base" 0.8.0 + (c++)"typeinfo for OpTextProgress@Base" 0.8.0 + (c++)"typeinfo for debIFTypeTrans@Base" 0.8.0 + (c++)"typeinfo for debStatusIndex@Base" 0.8.0 + (c++)"typeinfo for debIFTypeStatus@Base" 0.8.0 + (c++)"typeinfo for debRecordParser@Base" 0.8.0 + (c++)"typeinfo for debReleaseIndex@Base" 0.8.0 + (c++)"typeinfo for debSLTypeDebSrc@Base" 0.8.0 + (c++)"typeinfo for debSLTypeDebian@Base" 0.8.0 + (c++)"typeinfo for debSourcesIndex@Base" 0.8.0 + (c++)"typeinfo for pkgAcqDiffIndex@Base" 0.8.0 + (c++)"typeinfo for pkgAcqMetaIndex@Base" 0.8.0 + (c++)"typeinfo for debPackagesIndex@Base" 0.8.0 + (c++)"typeinfo for pkgAcqIndexDiffs@Base" 0.8.0 + (c++)"typeinfo for pkgAcqIndexTrans@Base" 0.8.0 + (c++)"typeinfo for pkgAcquireStatus@Base" 0.8.0 + (c++)"typeinfo for PreferenceSection@Base" 0.8.0 + (c++)"typeinfo for pkgPackageManager@Base" 0.8.0 + (c++)"typeinfo for debSrcRecordParser@Base" 0.8.0 + (c++)"typeinfo for debVersioningSystem@Base" 0.8.0 + (c++)"typeinfo for pkgUdevCdromDevices@Base" 0.8.0 + (c++)"typeinfo for pkgVersioningSystem@Base" 0.8.0 + (c++)"typeinfo for debTranslationsIndex@Base" 0.8.0 + (c++)"typeinfo for MMap@Base" 0.8.0 + (c++)"typeinfo for FileFd@Base" 0.8.0 + (c++)"typeinfo for Vendor@Base" 0.8.0 + (c++)"typeinfo for pkgCache@Base" 0.8.0 + (c++)"typeinfo for IndexCopy@Base" 0.8.0 + (c++)"typeinfo for debSystem@Base" 0.8.0 + (c++)"typeinfo for metaIndex@Base" 0.8.0 + (c++)"typeinfo for pkgDPkgPM@Base" 0.8.0 + (c++)"typeinfo for pkgPolicy@Base" 0.8.0 + (c++)"typeinfo for pkgSystem@Base" 0.8.0 + (c++)"typeinfo for pkgAcquire::Item@Base" 0.8.0 + (c++)"typeinfo for pkgRecords::Parser@Base" 0.8.0 + (c++)"typeinfo for pkgDepCache::InRootSetFunc@Base" 0.8.0 + (c++)"typeinfo for pkgDepCache::DefaultRootSetFunc@Base" 0.8.0 + (c++)"typeinfo for pkgDepCache::Policy@Base" 0.8.0 + (c++)"typeinfo for pkgSimulate::Policy@Base" 0.8.0 + (c++)"typeinfo for pkgIndexFile::Type@Base" 0.8.0 + (c++)"typeinfo for Configuration::MatchAgainstConfig@Base" 0.8.0 + (c++)"typeinfo for pkgSourceList::Type@Base" 0.8.0 + (c++)"typeinfo for pkgSrcRecords::Parser@Base" 0.8.0 + (c++)"typeinfo for pkgCacheGenerator::ListParser@Base" 0.8.0 + (c++)"typeinfo for APT::CacheSetHelper@Base" 0.8.0 + (c++)"typeinfo for pkgCache::DepIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::GrpIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::PkgIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::PrvIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::VerIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::DescIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::PkgFileIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::VerFileIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::DescFileIterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::Description, pkgCache::DescIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::PackageFile, pkgCache::PkgFileIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::Group, pkgCache::GrpIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::VerFile, pkgCache::VerFileIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::DescFile, pkgCache::DescFileIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator<pkgCache::Provides, pkgCache::PrvIterator>@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Namespace@Base" 0.8.0 + (c++)"typeinfo name for OpProgress@Base" 0.8.0 + (c++)"typeinfo name for SourceCopy@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqFile@Base" 0.8.0 + (c++)"typeinfo name for pkgAcquire@Base" 0.8.0 + (c++)"typeinfo name for DynamicMMap@Base" 0.8.0 + (c++)"typeinfo name for PackageCopy@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqIndex@Base" 0.8.0 + (c++)"typeinfo name for pkgDepCache@Base" 0.8.0 + (c++)"typeinfo name for pkgSimulate@Base" 0.8.0 + (c++)"typeinfo name for debIFTypePkg@Base" 0.8.0 + (c++)"typeinfo name for debIFTypeSrc@Base" 0.8.0 + (c++)"typeinfo name for debSLTypeDeb@Base" 0.8.0 + (c++)"typeinfo name for indexRecords@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqMethod@Base" 0.8.0 + (c++)"typeinfo name for pkgCacheFile@Base" 0.8.0 + (c++)"typeinfo name for pkgIndexFile@Base" 0.8.0 + (c++)"typeinfo name for WeakPointable@Base" 0.8.0 + (c++)"typeinfo name for debListParser@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqArchive@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqMetaSig@Base" 0.8.0 + (c++)"typeinfo name for pkgTagSection@Base" 0.8.0 + (c++)"typeinfo name for OpTextProgress@Base" 0.8.0 + (c++)"typeinfo name for debIFTypeTrans@Base" 0.8.0 + (c++)"typeinfo name for debStatusIndex@Base" 0.8.0 + (c++)"typeinfo name for debIFTypeStatus@Base" 0.8.0 + (c++)"typeinfo name for debRecordParser@Base" 0.8.0 + (c++)"typeinfo name for debReleaseIndex@Base" 0.8.0 + (c++)"typeinfo name for debSLTypeDebSrc@Base" 0.8.0 + (c++)"typeinfo name for debSLTypeDebian@Base" 0.8.0 + (c++)"typeinfo name for debSourcesIndex@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqDiffIndex@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqMetaIndex@Base" 0.8.0 + (c++)"typeinfo name for debPackagesIndex@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqIndexDiffs@Base" 0.8.0 + (c++)"typeinfo name for pkgAcqIndexTrans@Base" 0.8.0 + (c++)"typeinfo name for pkgAcquireStatus@Base" 0.8.0 + (c++)"typeinfo name for PreferenceSection@Base" 0.8.0 + (c++)"typeinfo name for pkgPackageManager@Base" 0.8.0 + (c++)"typeinfo name for debSrcRecordParser@Base" 0.8.0 + (c++)"typeinfo name for debVersioningSystem@Base" 0.8.0 + (c++)"typeinfo name for pkgUdevCdromDevices@Base" 0.8.0 + (c++)"typeinfo name for pkgVersioningSystem@Base" 0.8.0 + (c++)"typeinfo name for debTranslationsIndex@Base" 0.8.0 + (c++)"typeinfo name for MMap@Base" 0.8.0 + (c++)"typeinfo name for FileFd@Base" 0.8.0 + (c++)"typeinfo name for Vendor@Base" 0.8.0 + (c++)"typeinfo name for pkgCache@Base" 0.8.0 + (c++)"typeinfo name for IndexCopy@Base" 0.8.0 + (c++)"typeinfo name for debSystem@Base" 0.8.0 + (c++)"typeinfo name for metaIndex@Base" 0.8.0 + (c++)"typeinfo name for pkgDPkgPM@Base" 0.8.0 + (c++)"typeinfo name for pkgPolicy@Base" 0.8.0 + (c++)"typeinfo name for pkgSystem@Base" 0.8.0 + (c++)"typeinfo name for pkgAcquire::Item@Base" 0.8.0 + (c++)"typeinfo name for pkgRecords::Parser@Base" 0.8.0 + (c++)"typeinfo name for pkgDepCache::InRootSetFunc@Base" 0.8.0 + (c++)"typeinfo name for pkgDepCache::DefaultRootSetFunc@Base" 0.8.0 + (c++)"typeinfo name for pkgDepCache::Policy@Base" 0.8.0 + (c++)"typeinfo name for pkgSimulate::Policy@Base" 0.8.0 + (c++)"typeinfo name for pkgIndexFile::Type@Base" 0.8.0 + (c++)"typeinfo name for Configuration::MatchAgainstConfig@Base" 0.8.0 + (c++)"typeinfo name for pkgSourceList::Type@Base" 0.8.0 + (c++)"typeinfo name for pkgSrcRecords::Parser@Base" 0.8.0 + (c++)"typeinfo name for pkgCacheGenerator::ListParser@Base" 0.8.0 + (c++)"typeinfo name for APT::CacheSetHelper@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::DepIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::GrpIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::PkgIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::PrvIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::VerIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::DescIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::PkgFileIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::VerFileIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::DescFileIterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::Description, pkgCache::DescIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::PackageFile, pkgCache::PkgFileIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::Group, pkgCache::GrpIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::VerFile, pkgCache::VerFileIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::DescFile, pkgCache::DescFileIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator<pkgCache::Provides, pkgCache::PrvIterator>@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Namespace@Base" 0.8.0 + (c++)"vtable for OpProgress@Base" 0.8.0 + (c++)"vtable for SourceCopy@Base" 0.8.0 + (c++)"vtable for pkgAcqFile@Base" 0.8.0 + (c++)"vtable for pkgAcquire@Base" 0.8.0 + (c++)"vtable for DynamicMMap@Base" 0.8.0 + (c++)"vtable for PackageCopy@Base" 0.8.0 + (c++)"vtable for pkgAcqIndex@Base" 0.8.0 + (c++)"vtable for pkgDepCache@Base" 0.8.0 + (c++)"vtable for pkgSimulate@Base" 0.8.0 + (c++)"vtable for debIFTypePkg@Base" 0.8.0 + (c++)"vtable for debIFTypeSrc@Base" 0.8.0 + (c++)"vtable for debSLTypeDeb@Base" 0.8.0 + (c++)"vtable for indexRecords@Base" 0.8.0 + (c++)"vtable for pkgAcqMethod@Base" 0.8.0 + (c++)"vtable for pkgCacheFile@Base" 0.8.0 + (c++)"vtable for pkgIndexFile@Base" 0.8.0 + (c++)"vtable for debListParser@Base" 0.8.0 + (c++)"vtable for pkgAcqArchive@Base" 0.8.0 + (c++)"vtable for pkgAcqMetaSig@Base" 0.8.0 + (c++)"vtable for pkgTagSection@Base" 0.8.0 + (c++)"vtable for OpTextProgress@Base" 0.8.0 + (c++)"vtable for debIFTypeTrans@Base" 0.8.0 + (c++)"vtable for debStatusIndex@Base" 0.8.0 + (c++)"vtable for debIFTypeStatus@Base" 0.8.0 + (c++)"vtable for debRecordParser@Base" 0.8.0 + (c++)"vtable for debReleaseIndex@Base" 0.8.0 + (c++)"vtable for debSLTypeDebSrc@Base" 0.8.0 + (c++)"vtable for debSLTypeDebian@Base" 0.8.0 + (c++)"vtable for debSourcesIndex@Base" 0.8.0 + (c++)"vtable for pkgAcqDiffIndex@Base" 0.8.0 + (c++)"vtable for pkgAcqMetaIndex@Base" 0.8.0 + (c++)"vtable for debPackagesIndex@Base" 0.8.0 + (c++)"vtable for pkgAcqIndexDiffs@Base" 0.8.0 + (c++)"vtable for pkgAcqIndexTrans@Base" 0.8.0 + (c++)"vtable for pkgAcquireStatus@Base" 0.8.0 + (c++)"vtable for PreferenceSection@Base" 0.8.0 + (c++)"vtable for pkgPackageManager@Base" 0.8.0 + (c++)"vtable for debSrcRecordParser@Base" 0.8.0 + (c++)"vtable for debVersioningSystem@Base" 0.8.0 + (c++)"vtable for pkgUdevCdromDevices@Base" 0.8.0 + (c++)"vtable for pkgVersioningSystem@Base" 0.8.0 + (c++)"vtable for debTranslationsIndex@Base" 0.8.0 + (c++)"vtable for MMap@Base" 0.8.0 + (c++)"vtable for FileFd@Base" 0.8.0 + (c++)"vtable for Vendor@Base" 0.8.0 + (c++)"vtable for pkgCache@Base" 0.8.0 + (c++)"vtable for IndexCopy@Base" 0.8.0 + (c++)"vtable for debSystem@Base" 0.8.0 + (c++)"vtable for metaIndex@Base" 0.8.0 + (c++)"vtable for pkgDPkgPM@Base" 0.8.0 + (c++)"vtable for pkgPolicy@Base" 0.8.0 + (c++)"vtable for pkgSystem@Base" 0.8.0 + (c++)"vtable for pkgAcquire::Item@Base" 0.8.0 + (c++)"vtable for pkgRecords::Parser@Base" 0.8.0 + (c++)"vtable for pkgDepCache::InRootSetFunc@Base" 0.8.0 + (c++)"vtable for pkgDepCache::DefaultRootSetFunc@Base" 0.8.0 + (c++)"vtable for pkgDepCache::Policy@Base" 0.8.0 + (c++)"vtable for pkgSimulate::Policy@Base" 0.8.0 + (c++)"vtable for pkgIndexFile::Type@Base" 0.8.0 + (c++)"vtable for Configuration::MatchAgainstConfig@Base" 0.8.0 + (c++)"vtable for pkgSourceList::Type@Base" 0.8.0 + (c++)"vtable for pkgSrcRecords::Parser@Base" 0.8.0 + (c++)"vtable for pkgCacheGenerator::ListParser@Base" 0.8.0 + (c++)"vtable for APT::CacheSetHelper@Base" 0.8.0 + (c++)"vtable for pkgCache::DepIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::GrpIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::PkgIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::PrvIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::VerIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::DescIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::PkgFileIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::VerFileIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::DescFileIterator@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::Description, pkgCache::DescIterator>@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::PackageFile, pkgCache::PkgFileIterator>@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::Group, pkgCache::GrpIterator>@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::VerFile, pkgCache::VerFileIterator>@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::DescFile, pkgCache::DescFileIterator>@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator<pkgCache::Provides, pkgCache::PrvIterator>@Base" 0.8.0 + (c++)"non-virtual thunk to pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()@Base" 0.8.0 + (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, pkgCache::DepIterator)@Base" 0.8.0 + (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, pkgCache::PkgIterator)@Base" 0.8.0 + _apt_DebSrcType@Base 0.8.0 + _apt_DebType@Base 0.8.0 + _config@Base 0.8.0 + _system@Base 0.8.0 + debSys@Base 0.8.0 + debVS@Base 0.8.0 + pkgLibVersion@Base 0.8.0 + pkgVersion@Base 0.8.0 +### try to ignore std:: template instances + (c++|regex|optional=std)"^(void |)std::[^ ]+<.+ >::(_|~).+\(.*\)@Base$" 0.8.0 + (c++|regex|optional=std)"^pkgCache::(Dep|Pkg|Ver|Grp|Prv|Desc|PkgFile)Iterator\*\* std::_.+@Base$" 0.8.0 + (c++|regex|optional=std)"^std::[^ ]+<.+ >::(append|insert|reserve|operator[^ ]+)\(.*\)@Base$" 0.8.0 + (c++|regex|optional=std)"^(void |DiffInfo\* |)std::_.*@Base$" 0.8.0 + (c++|regex|optional=std)"^(bool|void) std::(operator|sort_heap|make_heap)[^ ]+<.+ >\(.+\)@Base$" 0.8.0 + (c++|regex|optional=std)"^std::reverse_iterator<.+ > std::__.+@Base$" 0.8.0 + (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@Base$" 0.8.0 + (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 + (c++|regex|optional=std)"^__gnu_cxx::__[^ ]+<.*@Base$" 0.8.0 + (c++|regex|optional=std)"^typeinfo name for std::iterator<.*>@Base$" 0.8.0 + (c++|regex|optional=std)"^typeinfo for std::iterator<.*>@Base$" 0.8.0 + (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 + (c++|regex|optional=std)"^std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<char( const|)\*>\(.+\)@Base$" 0.8.0 + (c++|regex|optional=std)"^std::less<[^ ]+>::operator\(\)\(.+\) const@Base$" 0.8.0 +### + (c++)"Configuration::MatchAgainstConfig::clearPatterns()@Base" 0.8.1 1 + (c++)"CreateAPTDirectoryIfNeeded(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.2 1 + (c++)"FileFd::FileSize()@Base" 0.8.8 1 +### upcoming symbols + (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@Base" 0.8.11 1 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator>, std::allocator<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > >&)@Base" 0.8.11 1 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 + (c++)"RealFileExists(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.11 1 diff --git a/debian/changelog b/debian/changelog index 8555604a5..93def54aa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,146 @@ +apt (0.8.11) UNRELEASED; urgency=low + + [ David Kalnischkies ] + * apt-pkg/depcache.cc: + - add SetCandidateRelease() to set a candidate version and + the candidates of dependencies if needed to a specified + release (Closes: #572709) + - allow conflicts in the same group again (Closes: #612099) + * cmdline/apt-get.cc: + - if --print-uris is used don't setup downloader as we don't need + progress, lock nor the directories it would create otherwise + - show dependencies of essential packages which are going to remove + only if they cause the remove of this essential (Closes: #601961) + - keep not installed garbage packages uninstalled instead of showing + in the autoremove section and installing those (Closes: #604222) + - change pkg/release behavior to use the new SetCandidateRelease + so installing packages from experimental or backports is easier + - really do not show packages in the extra section if they were + requested on the commandline, e.g. with a modifier (Closes: #184730) + - always do removes first and set not installed remove packages + on hold to prevent temporary installation later (Closes: #549968) + * debian/control: + - add Vcs-Browser now that loggerhead works again (Closes: #511168) + - depend on debhelper 7 to raise compat level + - depend on dpkg-dev (>= 1.15.8) to have c++ symbol mangling + * apt-pkg/contrib/fileutl.cc: + - add a RealFileExists method and check that your configuration files + are real files to avoid endless loops if not (Closes: #604401) + - ignore non-regular files in GetListOfFilesInDir (Closes: #594694) + * apt-pkg/contrib/weakptr.h: + - include stddefs.h to fix compile error (undefined NULL) with gcc-4.6 + * methods/https.cc: + - fix CURLOPT_SSL_VERIFYHOST by really passing 2 to it if enabled + * deb/dpkgpm.cc: + - fix popen/fclose mismatch reported by cppcheck. Thanks to Petter + Reinholdtsen for report and patch! (Closes: #607803) + * doc/apt.conf.5.xml: + - fix multipl{y,e} spelling error reported by Jakub Wilk (Closes: #607636) + * apt-inst/contrib/extracttar.cc: + - let apt-utils work with encoded tar headers if uid/gid are large. + Thanks to Nobuhiro Hayashi for the patch! (Closes: #330162) + * apt-pkg/cacheiterator.h: + - do not segfault if cache is not build (Closes: #254770) + * doc/apt-get.8.xml: + - remove duplicated mentioning of --install-recommends + * doc/sources.list.5.xml: + - remove obsolete references to non-us (Closes: #594495) + - a notice is printed for ignored files (Closes: #597615) + * debian/rules: + - use -- instead of deprecated -u for dh_gencontrol + - remove shlibs.local creation and usage + - show differences in the symbol files, but never fail + * pre-build.sh: + - remove as it is not needed for a working 'bzr bd' + * debian/{apt,apt-utils}.symbols: + - ship experimental unmangled c++ symbol files + * methods/rred.cc: + - operate optional on gzip compressed pdiffs + * apt-pkg/acquire-item.cc: + - don't uncompress downloaded pdiff files before feeding it to rred + - try downloading clearsigned InRelease before trying Release.gpg + - change the internal handling of Extensions in pkgAcqIndex + - add a special uncompressed compression type to prefer those files + - download and use i18n/Index to choose which Translations to download + * cmdline/apt-key: + - don't set trustdb-name as non-root so 'list' and 'finger' + can be used without being root (Closes: #393005, #592107) + * apt-pkg/deb/deblistparser.cc: + - rewrite LoadReleaseInfo to cope with clearsigned Releasefiles + * ftparchive/writer.cc: + - add config option to search for more patterns in release command + - include Index files by default in the Release file + * methods/{gzip,bzip}.cc: + - print a good error message if FileSize() is zero + * apt-pkg/aptconfiguration.cc: + - remove the inbuilt Translation files whitelist + * cmdline/apt-cache.cc: + - remove not implemented 'apt-cache add' command + * doc/apt-cache.8.xml: + - describe reality as apt-cache just queries and doesn't manipulate + the caches. Thanks to Enrico Zini for spotting it! (Closes: #612009) + * apt-pkg/algorithms.cc: + - mark pseudo packages of installed all packages as configured + in the simulation as we don't call configure for these packages + * apt-pkg/pkgcachegen.cc: + - in multiarch, let :all packages conflict with :any packages + with a different version to be sure + * apt-pkg/contrib/error.cc: + - remove 400 char size limit of error messages (LP: #365611) + + [ Michael Vogt ] + * methods/http.cc: + - do not hang if Acquire::http::ProxyAutoDetect can not be + executed or returns no data (LP: #654393) + * debian/apt.conf.autoremove: + - never autoremove the GNU/Hurd kernel (closes: #588423), thanks + to Guillem Jover + * apt-pkg/cdrom.cc, apt-pkg/init.cc, methods/cdrom.cc: + - use /media/cdrom as default mountoint (closes: #611569) + + [ Martin Pitt ] + * test/integration/test-compressed-indexes, test/test-indexes.sh: + - Explicitly disable compressed indexes at the start. This ensures that we + will actually test uncompressed indexes regardless of the internal + default value of Acquire::GzipIndexes. + + -- David Kalnischkies <kalnischkies@gmail.com> Mon, 07 Feb 2011 22:14:09 +0100 + +apt (0.8.10.3) unstable; urgency=low + + [ Programs translations ] + * po/es.po: Updated, plus fixes encoding issues and fixes two fuzzy + strings, thanks to Javier Fernandez-Sanguino (closes: #610692) + + -- Michael Vogt <mvo@debian.org> Tue, 25 Jan 2011 11:51:42 +0100 + +apt (0.8.10.2) unstable; urgency=low + + [ David Kalnischkies ] + * ftparchive/apt-ftparchive.cc: + - fix endless loop for multiple TranslationsWriters + + -- Michael Vogt <mvo@debian.org> Tue, 25 Jan 2011 10:26:15 +0100 + +apt (0.8.10.1) unstable; urgency=low + + [ Christian Perrier ] + * Fix encoding for Slovenian translation. PO file switched + to UTF-8. Closes: #609957 + + [ Julian Andres Klode ] + * cmdline/apt-cache.cc: Create an error for apt-cache depends + if packages could not found (LP: #647045) + + [ Programs translations ] + * Spanish update by Javier Fernández-Sanguino Peña. Closes: #607145 + + [ Manpages translations ] + * Correct a typo and an error in French manpages translation. + Closes: # 607170 + + -- Michael Vogt <mvo@debian.org> Mon, 17 Jan 2011 13:41:04 +0100 + apt (0.8.10ubuntu2) UNRELEASED; urgency=low * apt-pkg/deb/dpkgpm.cc: diff --git a/debian/compat b/debian/compat index 7ed6ff82d..7f8f011eb 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -5 +7 diff --git a/debian/control b/debian/control index 88cc2b4d8..114241443 100644 --- a/debian/control +++ b/debian/control @@ -7,9 +7,10 @@ Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>, Christian Perrier <bubulle@debian.org>, Daniel Burrows <dburrows@debian.org>, Luca Bruno <lethalman88@gmail.com>, Julian Andres Klode <jak@debian.org> Standards-Version: 3.9.0 -Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.0), zlib1g-dev | libz-dev, debiandoc-sgml, xsltproc, docbook-xsl, docbook-xml, po4a (>= 0.34-2), autotools-dev, autoconf, automake, doxygen +Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 7.2.3~), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.0), zlib1g-dev | libz-dev, debiandoc-sgml, xsltproc, docbook-xsl, docbook-xml, po4a (>= 0.34-2), autotools-dev, autoconf, automake, doxygen Build-Conflicts: autoconf2.13, automake1.4 Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/ +Vcs-Browser: http://bzr.debian.org/loggerhead/apt/debian-sid/ Package: apt Architecture: any diff --git a/debian/libapt-pkg-dev.install b/debian/libapt-pkg-dev.install new file mode 100644 index 000000000..bd1a6c174 --- /dev/null +++ b/debian/libapt-pkg-dev.install @@ -0,0 +1,3 @@ +bin/libapt-pkg*.so usr/lib/ +bin/libapt-inst*.so usr/lib/ +include/apt-pkg/*.h usr/include/apt-pkg/ diff --git a/debian/rules b/debian/rules index 36dd4bece..817daee95 100755 --- a/debian/rules +++ b/debian/rules @@ -2,17 +2,6 @@ # Made with the aid of dh_make, by Craig Small # Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. # Some lines taken from debmake, by Christoph Lameter. -# $Id: rules,v 1.68 2004/05/30 18:21:43 mdz Exp $ - -# LD_LIBRARY_PATH=pwd/debian/apt/usr/lib dh_shlibdeps -papt -# dpkg: /home/jgg/work/apt2/debian/apt/usr/lib/libapt-pkg.so.2.9 not found. - -# For the deb builder, you can run 'debian/rules cvs-build', which does all -# steps nescessary to produce a proper source tarball with the CVS/ removed. -# It builds in debian/cvs-build/apt-<VER>/, and places files in -# debian/cvs-build/. Optionally, you can run 'debian/rules cvs-mkul' to -# create ../upload-<VER>, with all the files needed to be uploaded placed -# in it. export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) @@ -85,18 +74,8 @@ include buildlib/libversion.mak LIBAPTPKG_PROVIDE=libapt-pkg$(LIBAPTPKG_MAJOR) LIBAPTINST_PROVIDE=libapt-inst$(LIBAPTINST_MAJOR) -debian/shlibs.local: apt-pkg/makefile - # We have 3 shlibs.local files: One for 'apt', one for 'apt-utils' and - # one for the rest of the packages. This ensures that each package gets - # the right overrides… - rm -rf $@ $@.apt $@.apt-utils - echo "libapt-pkg $(LIBAPTPKG_MAJOR)" > $@.apt - - echo "libapt-pkg $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@.apt-utils - echo "libapt-inst $(LIBAPTINST_MAJOR)" >> $@.apt-utils - - echo "libapt-pkg $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@ - echo "libapt-inst $(LIBAPTINST_MAJOR) $(LIBAPTINST_PROVIDE)" >> $@ +# do not fail as we are just experimenting with symbol files for now +export DPKG_GENSYMBOLS_CHECK_LEVEL=0 build: build/build-stamp build-doc: build/build-doc-stamp @@ -131,15 +110,12 @@ clean: [ ! -f Makefile ] || $(MAKE) clean distclean rm -rf build - # Add here commands to clean up after the build process. - dh_clean debian/copyright debian/shlibs.local debian/shlibs.local.apt debian/shlibs.local.apt-utils - binary-indep: apt-doc libapt-pkg-doc # Build architecture-independent files here. -libapt-pkg-doc: build-doc debian/shlibs.local +libapt-pkg-doc: build-doc dh_testdir -p$@ dh_testroot -p$@ - dh_clean -p$@ -k + dh_prep -p$@ dh_installdirs -p$@ # # libapt-pkg-doc install @@ -158,14 +134,14 @@ libapt-pkg-doc: build-doc debian/shlibs.local dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) + dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) dh_md5sums -p$@ dh_builddeb -p$@ apt-doc: build-doc dh_testdir -p$@ dh_testroot -p$@ - dh_clean -p$@ -k + dh_prep -p$@ # # apt-doc install # @@ -188,99 +164,82 @@ apt-doc: build-doc binary-arch: apt libapt-pkg-dev apt-utils apt-transport-https apt_MANPAGES = apt-cache apt-cdrom apt-config apt-get apt-key apt-mark apt-secure apt apt.conf apt_preferences sources.list -apt: build build-doc debian/shlibs.local +apt: build build-doc dh_testdir -p$@ dh_testroot -p$@ - dh_clean -p$@ -k + dh_prep -p$@ dh_installdirs -p$@ # # apt install # - cp $(BLD)/bin/apt-* debian/$@/usr/bin/ - - # Remove the bits that are in apt-utils - rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS)) - - # install the shared libs - find $(BLD)/bin/ -type f -name "libapt-pkg*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \; - find $(BLD)/bin/ -type l -name "libapt-pkg*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \; - - cp $(BLD)/bin/methods/* debian/$@/usr/lib/apt/methods/ - # https has its own package - rm debian/$@/usr/lib/apt/methods/https - - cp $(BLD)/scripts/dselect/* debian/$@/usr/lib/dpkg/methods/apt/ - cp -r $(BLD)/locale debian/$@/usr/share/ - - cp debian/bugscript debian/$@/usr/share/bug/apt/script - cp debian/apt.logrotate debian/$@/etc/logrotate.d/apt - cp share/ubuntu-archive.gpg debian/$@/usr/share/$@ cp debian/apt.conf.autoremove debian/$@/etc/apt/apt.conf.d/01autoremove cp debian/apt.conf.changelog debian/$@/etc/apt/apt.conf.d/20changelog - - # copy lintian override - cp share/lintian-overrides debian/$@/usr/share/lintian/overrides/apt + cp share/ubuntu-archive.gpg debian/$@/usr/share/$@ # make rosetta happy and remove pot files in po/ (but leave stuff # in po/domains/* untouched) and cp *.po into each domain dir rm -f build/po/*.pot rm -f po/*.pot + dh_install -p$@ --sourcedir=$(BLD) + + # Remove the bits that are in apt-utils + rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS)) + + # https has its own package + rm debian/$@/usr/lib/apt/methods/https + # move the mirror failure script in place #mv debian/$@/usr/bin/apt-report-mirror-failure \ # debian/$@/usr/lib/apt/apt-report-mirror-failure \ + dh_bugfiles -p$@ + dh_lintian -p$@ dh_installexamples -p$@ $(BLD)/docs/examples/* dh_installman -p$@ $(wildcard $(patsubst %,doc/%.[158],$(apt_MANPAGES)) $(patsubst %,doc/*/%.*.[158],$(apt_MANPAGES))) dh_installcron -p$@ dh_installdocs -p$@ dh_installchangelogs -p$@ + dh_installlogrotate -p$@ dh_strip -p$@ dh_compress -p$@ dh_fixperms -p$@ - dh_makeshlibs -p$@ --major=$(LIBAPTPKG_MAJOR) --version-info='$(LIBAPTPKG_PROVIDE)' + dh_makeshlibs -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib -- -Ldebian/shlibs.local.apt - dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) + dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib + dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) dh_md5sums -p$@ dh_builddeb -p$@ -libapt-pkg-dev: build debian/shlibs.local +libapt-pkg-dev: build dh_testdir -p$@ dh_testroot -p$@ - dh_clean -p$@ -k + dh_prep -p$@ dh_installdirs -p$@ # # libapt-pkg-dev install # - cp -a $(BLD)/bin/libapt-pkg*.so debian/libapt-pkg-dev/usr/lib/ - cp -a $(BLD)/bin/libapt-inst*.so debian/libapt-pkg-dev/usr/lib/ -# ln -s libapt-pkg.so.$(LIBAPTPKG_MAJOR) debian/libapt-pkg-dev/usr/lib/libapt-pkg.so - cp $(BLD)/include/apt-pkg/*.h debian/libapt-pkg-dev/usr/include/apt-pkg/ - + dh_install -p$@ --sourcedir=$(BLD) dh_installdocs -p$@ - dh_installchangelogs -p$@ dh_strip -p$@ dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE) + dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE) dh_md5sums -p$@ dh_builddeb -p$@ apt-utils_MANPAGES = apt-sortpkgs apt-ftparchive apt-extracttemplates -apt-utils: build debian/shlibs.local +apt-utils: build dh_testdir -p$@ dh_testroot -p$@ - dh_clean -p$@ -k + dh_prep -p$@ dh_installdirs -p$@ - # install the shared libs - find $(BLD)/bin/ -type f -name "libapt-inst*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \; - find $(BLD)/bin/ -type l -name "libapt-inst*.so.*" -exec cp -a "{}" debian/$@/usr/lib/ \; - cp $(addprefix $(BLD)/bin/apt-,$(APT_UTILS)) debian/$@/usr/bin/ + + dh_install -p$@ --sourcedir=$(BLD) dh_installdocs -p$@ dh_installexamples -p$@ @@ -291,23 +250,20 @@ apt-utils: build debian/shlibs.local dh_strip -p$@ dh_compress -p$@ dh_fixperms -p$@ - dh_makeshlibs -p$@ --major=$(LIBAPTINST_MAJOR) --version-info='$(LIBAPTINST_PROVIDE)' + dh_makeshlibs -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib -- -Ldebian/shlibs.local.apt-utils - dh_gencontrol -p$@ -u -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE) + dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib + dh_gencontrol -p$@ -- -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE) dh_md5sums -p$@ dh_builddeb -p$@ -apt-transport-https: build debian/shlibs.local libapt-pkg-dev +apt-transport-https: build libapt-pkg-dev dh_testdir -p$@ dh_testroot -p$@ - dh_clean -p$@ -k + dh_prep -p$@ dh_installdirs -p$@ - # install the method - mkdir --parents debian/$@/usr/lib/apt/methods - cp $(BLD)/bin/methods/https debian/$@/usr/lib/apt/methods - + dh_install -p$@ --sourcedir=$(BLD) dh_installdocs -p$@ debian/apt-transport-https.README dh_installexamples -p$@ @@ -333,4 +289,4 @@ really-clean: clean rm -f l33ch-stamp binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary debian/shlibs.local +.PHONY: build clean binary-indep binary-arch binary diff --git a/doc/apt-cache.8.xml b/doc/apt-cache.8.xml index 359d210ea..9c6c64dac 100644 --- a/doc/apt-cache.8.xml +++ b/doc/apt-cache.8.xml @@ -18,7 +18,7 @@ &apt-email; &apt-product; <!-- The last update date --> - <date>29 February 2004</date> + <date>04 February 2011</date> </refentryinfo> <refmeta> @@ -30,7 +30,7 @@ <!-- Man page title --> <refnamediv> <refname>apt-cache</refname> - <refpurpose>APT package handling utility -- cache manipulator</refpurpose> + <refpurpose>query the APT cache</refpurpose> </refnamediv> <!-- Arguments --> @@ -41,7 +41,6 @@ <arg><option>-o=<replaceable>config string</replaceable></option></arg> <arg><option>-c=<replaceable>file</replaceable></option></arg> <group choice="req"> - <arg>add <arg choice="plain" rep="repeat"><replaceable>file</replaceable></arg></arg> <arg>gencaches</arg> <arg>showpkg <arg choice="plain" rep="repeat"><replaceable>pkg</replaceable></arg></arg> <arg>showsrc <arg choice="plain" rep="repeat"><replaceable>pkg</replaceable></arg></arg> @@ -72,11 +71,6 @@ commands below must be present.</para> <variablelist> - <varlistentry><term>add <replaceable>file(s)</replaceable></term> - <listitem><para><literal>add</literal> adds the named package index files to the package cache. - This is for debugging only.</para></listitem> - </varlistentry> - <varlistentry><term>gencaches</term> <listitem><para><literal>gencaches</literal> performs the same operation as <command>apt-get check</command>. It builds the source and package caches from diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml index 852da8ad1..0090d21d9 100644 --- a/doc/apt-ftparchive.1.xml +++ b/doc/apt-ftparchive.1.xml @@ -113,10 +113,13 @@ <varlistentry><term>release</term> <listitem><para> The <literal>release</literal> command generates a Release file from a - directory tree. It recursively searches the given directory for - Packages, Packages.gz, Packages.bz2, Sources, Sources.gz, - Sources.bz2, Release and md5sum.txt files. It then writes to - stdout a Release file containing an MD5 digest and SHA1 digest + directory tree. It recursively searches the given directory for uncompressed + <filename>Packages</filename> and <filename>Sources</filename> files and the ones + compressed with <command>gzip</command>, <command>bzip2</command> or <command>lzma</command> + as well as <filename>Release</filename> and <filename>md5sum.txt</filename> files by default + (<literal>APT::FTPArchive::Release::Default-Patterns</literal>). Additional filename patterns + can be added by listing them in <literal>APT::FTPArchive::Release::Patterns</literal>. + It then writes to stdout a Release file containing a MD5, SHA1 and SHA256 digest for each file.</para> <para> Values for the additional metadata fields in the Release file are diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml index 7eb87b452..1688c9136 100644 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@ -434,14 +434,6 @@ Configuration Item: <literal>APT::Get::Compile</literal>.</para></listitem> </varlistentry> - <varlistentry><term><option>--install-recommends</option></term> - <listitem><para>Also install recommended packages.</para></listitem> - </varlistentry> - - <varlistentry><term><option>--no-install-recommends</option></term> - <listitem><para>Do not install recommended packages.</para></listitem> - </varlistentry> - <varlistentry><term><option>--ignore-hold</option></term> <listitem><para>Ignore package Holds; This causes <command>apt-get</command> to ignore a hold placed on a package. This may be useful in conjunction with diff --git a/doc/apt-secure.8.xml b/doc/apt-secure.8.xml index f345c3f89..f8ff678b9 100644 --- a/doc/apt-secure.8.xml +++ b/doc/apt-secure.8.xml @@ -148,8 +148,8 @@ (you should make sure you are using a trusted communication channel when retrieving it), add it with <command>apt-key</command> and then run <command>apt-get update</command> so that apt can download - and verify the <filename>Release.gpg</filename> files from the archives you - have configured. + and verify the <filename>InRelease</filename> or <filename>Release.gpg</filename> + files from the archives you have configured. </para> </refsect1> @@ -166,6 +166,7 @@ (provided in apt-utils).</para></listitem> <listitem><para><emphasis>Sign it</emphasis>. You can do this by running + <command>gpg --clearsign -o InRelease Release</command> and <command>gpg -abs -o Release.gpg Release</command>.</para></listitem> <listitem><para><emphasis>Publish the key fingerprint</emphasis>, diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index f00baacea..477507598 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -52,8 +52,10 @@ <listitem><para>all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending order which have no or "<literal>conf</literal>" as filename extension and which only contain alphanumeric, - hyphen (-), underscore (_) and period (.) characters - - otherwise they will be silently ignored.</para></listitem> + hyphen (-), underscore (_) and period (.) characters. + Otherwise APT will print a notice that it has ignored a file if the file + doesn't match a pattern in the <literal>Dir::Ignore-Files-Silently</literal> + configuration list - in this case it will be silently ignored.</para></listitem> <listitem><para>the main configuration file specified by <literal>Dir::Etc::main</literal></para></listitem> <listitem><para>the command line options are applied to override the @@ -442,12 +444,11 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; the bzip2 method (the inbuilt) setting is <literallayout>Dir::Bin::bzip2 "/bin/bzip2";</literallayout> Note also that list entries specified on the command line will be added at the end of the list specified in the configuration files, but before the default entries. To prefer a type in this case - over the ones specified in in the configuration files you can set the option direct - not in list style. + over the ones specified in the configuration files you can set the option direct - not in list style. This will not override the defined list, it will only prefix the list with this type.</para> - <para>While it is possible to add an empty compression type to the order list, but APT in its current - version doesn't understand it correctly and will display many warnings about not downloaded files - - these warnings are most of the time false negatives. Future versions will maybe include a way to - really prefer uncompressed files to support the usage of local mirrors.</para></listitem> + <para>The special type <literal>uncompressed</literal> can be used to give uncompressed files a + preference, but note that most archives doesn't provide uncompressed files so this is mostly only + useable for local mirrors.</para></listitem> </varlistentry> <varlistentry><term>GzipIndexes</term> @@ -618,7 +619,7 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; <refsect2><title>dpkg trigger usage (and related options)</title> <para>APT can call dpkg in a way so it can make aggressive use of triggers over - multiply calls of dpkg. Without further options dpkg will use triggers only in between his + multiple calls of dpkg. Without further options dpkg will use triggers only in between his own run. Activating these options can therefore decrease the time needed to perform the install / upgrade. Note that it is intended to activate these options per default in the future, but as it changes the way APT calling dpkg drastically it needs a lot more testing. diff --git a/doc/apt_preferences.5.xml b/doc/apt_preferences.5.xml index 54c01100c..0d22d0413 100644 --- a/doc/apt_preferences.5.xml +++ b/doc/apt_preferences.5.xml @@ -71,8 +71,10 @@ You have been warned.</para> directory are parsed in alphanumeric ascending order and need to obey the following naming convention: The files have no or "<literal>pref</literal>" as filename extension and which only contain alphanumeric, hyphen (-), -underscore (_) and period (.) characters - otherwise they will be silently -ignored.</para> +underscore (_) and period (.) characters. +Otherwise APT will print a notice that it has ignored a file if the file +doesn't match a pattern in the <literal>Dir::Ignore-Files-Silently</literal> +configuration list - in this case it will be silently ignored.</para> <refsect2><title>APT's Default Priority Assignments</title> diff --git a/doc/examples/configure-index b/doc/examples/configure-index index b87251103..6119d67d0 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -17,6 +17,7 @@ */ quiet "0"; +quiet::NoUpdate "true"; // never update progress information - included in -q=1 // Options for APT in general APT @@ -288,7 +289,7 @@ Acquire lzma "lzma"; gz "gzip"; - Order { "gz"; "lzma"; "bz2"; }; + Order { "uncompressed"; "gz"; "lzma"; "bz2"; }; }; Languages diff --git a/doc/files.sgml b/doc/files.sgml index 108e73670..2d0ae4a44 100644 --- a/doc/files.sgml +++ b/doc/files.sgml @@ -118,82 +118,10 @@ fastest source listed first. The format of each line is: <p> The first item, <var>type</var>, indicates the format for the remainder of the line. It is designed to indicate the structure of the distribution -the line is talking about. Currently the only defined value is <em>deb</em> -which indicates a standard debian archive with a dists dir. - -<sect1>The deb Type - <p> - The <em>deb</em> type is to be a typical two level debian distributions, - dist/<var>distribution</var>/<var>component</var>. Typically distribution - is one of stable, unstable or testing while component is one of main, - contrib, non-free or non-us. The format for the deb line is as follows: - - <p> - deb <var>uri</var> <var>distribution</var> <var>component</var> - [<var>component</var> ...] - - <p> - <var>uri</var> for the <em>deb</em> type must specify the base of the - debian distribution. APT will automatically generate the proper longer - URIs to get the information it needs. <var>distribution</var> can specify - an exact path, in this case the components must be omitted and - <var>distribution</var> must end in a slash. - - <p> - Since only one distribution can be specified per deb line it may be - necessary to list a number of deb lines for the same URI. APT will - sort the URI list after it has generated a complete set to allow - connection reuse. It is important to order things in the sourcelist - from most preferred to least preferred (fastest to slowest). -</sect1> - -<sect1>URI specification -<p> -URIs in the source list support a large number of access schemes which -are listed in the sources.list manpage and can be further extended by -transport binaries placed in /usr/lib/apt/methods. The most important -builtin schemes are: - -<taglist> -<tag>cdrom<item> - The cdrom scheme is special in that If Modified Since queries are never - performed and that APT knows how to match a cdrom to the name it - was given when first inserted. APT also knows all of the possible - mount points the cdrom drives and that the user should be prompted - to insert a CD if it cannot be found. The path is relative to an - arbitrary mount point (of APT's choosing) and must not start with a - slash. The first pathname component is the given name and is purely - descriptive and of the users choice. However, if a file in the root of - the cdrom is called '.disk/info' its contents will be used instead of - prompting. The name serves as a tag for the cdrom and should be unique. - <example> - cdrom:Debian 1.3/debian - </example> - -<tag>http<item> - This scheme specifies a HTTP server for the debian archive. HTTP is preferred - over FTP because If Modified Since queries against the Package file are - possible as well as deep pipelining and resume capabilities. - <example> - http://www.debian.org/archive - </example> - -<tag>ftp<item> - This scheme specifies a FTP connection to the server. FTP is limited because - there is no support for IMS and is hard to proxy over firewalls. - <example> - ftp://ftp.debian.org/debian - </example> - -<tag>file<item> - The file scheme allows an arbitrary directory in the file system to be - considered as a debian archive. This is useful for NFS mounts and - local mirrors/archives. - <example> - file:/var/debian - </example> -</taglist> -</sect1> +the line is talking about. Currently the only defined values are <em>deb</em> +and <em>deb-src</em> which indicate a standard debian (source) archive with a +dists directory. More about these types and the URI specification can be found +in the sources.list manpage. <sect1>Hashing the URI <p> diff --git a/doc/po/fr.po b/doc/po/fr.po index 02bdf7646..defcb7f9a 100644 --- a/doc/po/fr.po +++ b/doc/po/fr.po @@ -7894,7 +7894,7 @@ msgid "" "upgraded when <command>apt-get install <replaceable>some-package</" "replaceable></command> or <command>apt-get upgrade</command> is executed." msgstr "" -"UEn général, la version installée d'un paquet (priorité 100) n'est pas aussi " +"En général, la version installée d'un paquet (priorité 100) n'est pas aussi " "récente que les versions disponibles dans les sources listées dans le " "fichier &sources-list; (priorité 500 ou 990). Et donc le paquet sera mis à " "niveau avec la commande : <command>apt-get install <replaceable>paquet</" @@ -8086,7 +8086,7 @@ msgid "" "</literal>\"." msgstr "" "L'entrée suivante affecte une priorité basse à toutes les versions d'un " -"paquet appartenant à toute distribution dont le nom d'« Archive » est " +"paquet appartenant à toute distribution dont le nom de code est " "<literal>&testing-codename;</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index 6029a7457..837f07683 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -57,17 +57,19 @@ File names need to end with <filename>.list</filename> and may only contain letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) characters. - Otherwise they will be silently ignored.</para> + Otherwise APT will print a notice that it has ignored a file if the file + doesn't match a pattern in the <literal>Dir::Ignore-Files-Silently</literal> + configuration list - in this case it will be silently ignored.</para> </refsect1> <refsect1><title>The deb and deb-src types</title> <para>The <literal>deb</literal> type describes a typical two-level Debian archive, <filename>distribution/component</filename>. Typically, - <literal>distribution</literal> is generally one of - <literal>stable</literal> <literal>unstable</literal> or - <literal>testing</literal> while component is one of <literal>main</literal> - <literal>contrib</literal> <literal>non-free</literal> or - <literal>non-us</literal>. The + <literal>distribution</literal> is generally an archivename like + <literal>stable</literal> or <literal>testing</literal> or a codename like + <literal>&stable-codename;</literal> or <literal>&testing-codename;</literal> + while component is one of <literal>main</literal> <literal>contrib</literal> or + <literal>non-free</literal>. The <literal>deb-src</literal> type describes a debian distribution's source code in the same form as the <literal>deb</literal> type. A <literal>deb-src</literal> line is required to fetch source indexes.</para> @@ -218,18 +220,14 @@ deb http://security.debian.org/ &stable-codename;/updates main contrib non-free a single FTP session will be used for both resource lines.</para> <literallayout>deb ftp://ftp.debian.org/debian unstable contrib</literallayout> - <para>Uses HTTP to access the archive at nonus.debian.org, under the - debian-non-US directory.</para> - <literallayout>deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free</literallayout> - - <para>Uses HTTP to access the archive at nonus.debian.org, under the - debian-non-US directory, and uses only files found under - <filename>unstable/binary-i386</filename> on i386 machines, - <filename>unstable/binary-m68k</filename> on m68k, and so - forth for other supported architectures. [Note this example only - illustrates how to use the substitution variable; non-us is no longer - structured like this] - <literallayout>deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/</literallayout> + <para>Uses HTTP to access the archive at ftp.tlh.debian.org, under the + universe directory, and uses only files found under + <filename>unstable/binary-i386</filename> on i386 machines, + <filename>unstable/binary-amd64</filename> on amd64, and so + forth for other supported architectures. [Note this example only + illustrates how to use the substitution variable; official debian + archives are not structured like this] + <literallayout>deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/</literallayout> </para> </refsect1> diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index 73d34249b..0c29002e6 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -832,7 +832,7 @@ bool Generate(CommandLine &CmdL) } // close the Translation master files - for (vector<PackageMap>::iterator I = PkgList.begin(); I != PkgList.end(); I++) + for (vector<PackageMap>::reverse_iterator I = PkgList.rbegin(); I != PkgList.rend(); I++) if (I->TransWriter != NULL && I->TransWriter->DecreaseRefCounter() == 0) delete I->TransWriter; diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index d7d699ddc..9cdca8d3e 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -306,7 +306,7 @@ PackagesWriter::PackagesWriter(string const &DB,string const &Overrides,string c Output = stdout; SetExts(".deb .udeb"); DeLinkLimit = 0; - + // Process the command line options DoMD5 = _config->FindB("APT::FTPArchive::MD5",true); DoSHA1 = _config->FindB("APT::FTPArchive::SHA1",true); @@ -907,16 +907,21 @@ bool ContentsWriter::ReadFromPkgs(string const &PkgFile,string const &PkgCompres /* */ ReleaseWriter::ReleaseWriter(string const &DB) { - AddPattern("Packages"); - AddPattern("Packages.gz"); - AddPattern("Packages.bz2"); - AddPattern("Packages.lzma"); - AddPattern("Sources"); - AddPattern("Sources.gz"); - AddPattern("Sources.bz2"); - AddPattern("Sources.lzma"); - AddPattern("Release"); - AddPattern("md5sum.txt"); + if (_config->FindB("APT::FTPArchive::Release::Default-Patterns", true) == true) + { + AddPattern("Packages"); + AddPattern("Packages.gz"); + AddPattern("Packages.bz2"); + AddPattern("Packages.lzma"); + AddPattern("Sources"); + AddPattern("Sources.gz"); + AddPattern("Sources.bz2"); + AddPattern("Sources.lzma"); + AddPattern("Release"); + AddPattern("Index"); + AddPattern("md5sum.txt"); + } + AddPatterns(_config->FindVector("APT::FTPArchive::Release::Patterns")); Output = stdout; time_t const now = time(NULL); diff --git a/ftparchive/writer.h b/ftparchive/writer.h index 49d430c47..3796f79f6 100644 --- a/ftparchive/writer.h +++ b/ftparchive/writer.h @@ -69,6 +69,8 @@ class FTWScanner bool LoadFileList(string const &BaseDir,string const &File); void ClearPatterns() { Patterns.clear(); }; void AddPattern(string const &Pattern) { Patterns.push_back(Pattern); }; + void AddPattern(char const *Pattern) { Patterns.push_back(Pattern); }; + void AddPatterns(std::vector<std::string> const &patterns) { Patterns.insert(Patterns.end(), patterns.begin(), patterns.end()); }; bool SetExts(string const &Vals); FTWScanner(string const &Arch = string()); diff --git a/methods/bzip2.cc b/methods/bzip2.cc index ccc3669a2..42932dded 100644 --- a/methods/bzip2.cc +++ b/methods/bzip2.cc @@ -56,9 +56,8 @@ bool Bzip2Method::Fetch(FetchItem *Itm) // Open the source and destination files FileFd From(Path,FileFd::ReadOnly); - // FIXME add an error message saying that empty files can't be valid archives if(From.FileSize() == 0) - return false; + return _error->Error(_("Empty files can't be valid archives")); int GzOut[2]; if (pipe(GzOut) < 0) diff --git a/methods/cdrom.cc b/methods/cdrom.cc index bf4281e40..b25fdf5a8 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -220,7 +220,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) } bool AutoDetect = _config->FindB("Acquire::cdrom::AutoDetect", true); - CDROM = _config->FindDir("Acquire::cdrom::mount","/cdrom/"); + CDROM = _config->FindDir("Acquire::cdrom::mount"); if (Debug) clog << "Looking for CDROM at " << CDROM << endl; diff --git a/methods/gzip.cc b/methods/gzip.cc index f1c76066e..fc4e1ecfd 100644 --- a/methods/gzip.cc +++ b/methods/gzip.cc @@ -48,9 +48,8 @@ bool GzipMethod::Fetch(FetchItem *Itm) // Open the source and destination files FileFd From(Path,FileFd::ReadOnlyGzip); - // FIXME add an error message saying that empty files can't be valid archives if(From.FileSize() == 0) - return false; + return _error->Error(_("Empty files can't be valid archives")); FileFd To(Itm->DestFile,FileFd::WriteAtomic); To.EraseOnFailure(); diff --git a/methods/https.cc b/methods/https.cc index aa6786aa8..fc649d6c2 100644 --- a/methods/https.cc +++ b/methods/https.cc @@ -143,13 +143,11 @@ bool HttpsMethod::Fetch(FetchItem *Itm) curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, peer_verify); // ... and hostname against cert CN or subjectAltName - int default_verify = 2; bool verify = _config->FindB("Acquire::https::Verify-Host",true); knob = "Acquire::https::"+remotehost+"::Verify-Host"; verify = _config->FindB(knob.c_str(),verify); - if (!verify) - default_verify = 0; - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, verify); + int const default_verify = (verify == true) ? 2 : 0; + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, default_verify); // Also enforce issuer of server certificate using its cert string issuercert = _config->Find("Acquire::https::IssuerCert",""); diff --git a/methods/makefile b/methods/makefile index d94a85340..4ee356cec 100644 --- a/methods/makefile +++ b/methods/makefile @@ -67,7 +67,7 @@ include $(PROGRAM_H) # The rred method PROGRAM=rred -SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS) +SLIBS = -lapt-pkg -lz $(SOCKETLIBS) $(INTLLIBS) LIB_MAKES = apt-pkg/makefile SOURCE = rred.cc include $(PROGRAM_H) diff --git a/methods/rred.cc b/methods/rred.cc index d51c45c85..1a18a381c 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -12,6 +12,7 @@ #include <utime.h> #include <stdio.h> #include <errno.h> +#include <zlib.h> #include <apti18n.h> /*}}}*/ /** \brief RredMethod - ed-style incremential patch method {{{ @@ -33,11 +34,14 @@ class RredMethod : public pkgAcqMethod { // return values enum State {ED_OK, ED_ORDERING, ED_PARSER, ED_FAILURE, MMAP_FAILED}; - State applyFile(FILE *ed_cmds, FILE *in_file, FILE *out_file, + State applyFile(gzFile &ed_cmds, FILE *in_file, FILE *out_file, unsigned long &line, char *buffer, Hashes *hash) const; void ignoreLineInFile(FILE *fin, char *buffer) const; + void ignoreLineInFile(gzFile &fin, char *buffer) const; void copyLinesFromFileToFile(FILE *fin, FILE *fout, unsigned int lines, Hashes *hash, char *buffer) const; + void copyLinesFromFileToFile(gzFile &fin, FILE *fout, unsigned int lines, + Hashes *hash, char *buffer) const; State patchFile(FileFd &Patch, FileFd &From, FileFd &out_file, Hashes *hash) const; State patchMMap(FileFd &Patch, FileFd &From, FileFd &out_file, Hashes *hash) const; @@ -65,10 +69,10 @@ public: * \param hash the created file for correctness * \return the success State of the ed command executor */ -RredMethod::State RredMethod::applyFile(FILE *ed_cmds, FILE *in_file, FILE *out_file, +RredMethod::State RredMethod::applyFile(gzFile &ed_cmds, FILE *in_file, FILE *out_file, unsigned long &line, char *buffer, Hashes *hash) const { // get the current command and parse it - if (fgets(buffer, BUF_SIZE, ed_cmds) == NULL) { + if (gzgets(ed_cmds, buffer, BUF_SIZE) == NULL) { if (Debug == true) std::clog << "rred: encounter end of file - we can start patching now." << std::endl; line = 0; @@ -123,7 +127,7 @@ RredMethod::State RredMethod::applyFile(FILE *ed_cmds, FILE *in_file, FILE *out_ unsigned char mode = *idx; // save the current position - unsigned const long pos = ftell(ed_cmds); + unsigned const long pos = gztell(ed_cmds); // if this is add or change then go to the next full stop unsigned int data_length = 0; @@ -157,7 +161,7 @@ RredMethod::State RredMethod::applyFile(FILE *ed_cmds, FILE *in_file, FILE *out_ // include data from ed script if (mode == MODE_CHANGED || mode == MODE_ADDED) { - fseek(ed_cmds, pos, SEEK_SET); + gzseek(ed_cmds, pos, SEEK_SET); copyLinesFromFileToFile(ed_cmds, out_file, data_length, hash, buffer); } @@ -183,6 +187,18 @@ void RredMethod::copyLinesFromFileToFile(FILE *fin, FILE *fout, unsigned int lin } } /*}}}*/ +void RredMethod::copyLinesFromFileToFile(gzFile &fin, FILE *fout, unsigned int lines,/*{{{*/ + Hashes *hash, char *buffer) const { + while (0 < lines--) { + do { + gzgets(fin, buffer, BUF_SIZE); + size_t const written = fwrite(buffer, 1, strlen(buffer), fout); + hash->Add((unsigned char*)buffer, written); + } while (strlen(buffer) == (BUF_SIZE - 1) && + buffer[BUF_SIZE - 2] != '\n'); + } +} + /*}}}*/ void RredMethod::ignoreLineInFile(FILE *fin, char *buffer) const { /*{{{*/ fgets(buffer, BUF_SIZE, fin); while (strlen(buffer) == (BUF_SIZE - 1) && @@ -192,11 +208,20 @@ void RredMethod::ignoreLineInFile(FILE *fin, char *buffer) const { /*{{{*/ } } /*}}}*/ +void RredMethod::ignoreLineInFile(gzFile &fin, char *buffer) const { /*{{{*/ + gzgets(fin, buffer, BUF_SIZE); + while (strlen(buffer) == (BUF_SIZE - 1) && + buffer[BUF_SIZE - 2] != '\n') { + gzgets(fin, buffer, BUF_SIZE); + buffer[0] = ' '; + } +} + /*}}}*/ RredMethod::State RredMethod::patchFile(FileFd &Patch, FileFd &From, /*{{{*/ FileFd &out_file, Hashes *hash) const { char buffer[BUF_SIZE]; FILE* fFrom = fdopen(From.Fd(), "r"); - FILE* fPatch = fdopen(Patch.Fd(), "r"); + gzFile fPatch = Patch.gzFd(); FILE* fTo = fdopen(out_file.Fd(), "w"); /* we do a tail recursion to read the commands in the right order */ @@ -228,6 +253,12 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ FileFd &out_file, Hashes *hash) const { #ifdef _POSIX_MAPPED_FILES MMap ed_cmds(Patch, MMap::ReadOnly); + if (Patch.gzFd() != NULL) { + unsigned long mapSize = Patch.Size(); + DynamicMMap dyn(0, mapSize, 0); + gzread(Patch.gzFd(), dyn.Data(), mapSize); + ed_cmds = dyn; + } MMap in_file(From, MMap::ReadOnly); if (ed_cmds.Size() == 0 || in_file.Size() == 0) @@ -445,7 +476,7 @@ bool RredMethod::Fetch(FetchItem *Itm) /*{{{*/ // Open the source and destination files (the d'tor of FileFd will do // the cleanup/closing of the fds) FileFd From(Path,FileFd::ReadOnly); - FileFd Patch(Path+".ed",FileFd::ReadOnly); + FileFd Patch(Path+".ed",FileFd::ReadOnlyGzip); FileFd To(Itm->DestFile,FileFd::WriteAtomic); To.EraseOnFailure(); if (_error->PendingError() == true) @@ -456,8 +487,8 @@ bool RredMethod::Fetch(FetchItem *Itm) /*{{{*/ State const result = patchMMap(Patch, From, To, &Hash); if (result == MMAP_FAILED) { // retry with patchFile - lseek(Patch.Fd(), 0, SEEK_SET); - lseek(From.Fd(), 0, SEEK_SET); + Patch.Seek(0); + From.Seek(0); To.Open(Itm->DestFile,FileFd::WriteAtomic); if (_error->PendingError() == true) return false; @@ -1,36 +1,90 @@ # Advanced Package Transfer - APT message translation catalog -# Copyright (C) 2002 Free Software Foundation, Inc. -# Rafael Sepulveda <drs@gnulinux.org.mx>, 2002. -# Asier Llano Palacios <asierllano@infonegocio.com> -# Ruben Porras Campo <nahoo@inicia.es> 2004 -# Javier Fernandez-Sanguino <jfs@debian.org> 2003, 2006-2008 +# Copyright (C) 2002-2010 Free Software Foundation, Inc. +# +# +# Curren translator: +# - Javier Fernandez-Sanguino <jfs@debian.org> 2003, 2006-2008 +# +# Previous Translators and reviewers: +# - Rafael Sepulveda <drs@gnulinux.org.mx>, 2002. +# - Asier Llano Palacios <asierllano@infonegocio.com> +# - Ruben Porras Campo <nahoo@inicia.es> 2004 +# +# Traductores, si no conoce el formato PO, merece la pena leer la +# documentación de gettext, especialmente las secciones dedicadas a este +# formato, por ejemplo ejecutando: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Equipo de traducción al español, por favor lean antes de traducir +# los siguientes documentos: +# +# - El proyecto de traducción de Debian al español +# http://www.debian.org/intl/spanish/ +# especialmente las notas y normas de traducción en +# http://www.debian.org/intl/spanish/notas +# +# Si tiene dudas o consultas sobre esta traducción consulte con el último +# traductor (campo Last-Translator) y ponga en copia a la lista de +# traducción de Debian al español (<debian-l10n-spanish@lists.debian.org>) +# # msgid "" msgstr "" -"Project-Id-Version: apt 0.7.18\n" +"Project-Id-Version: apt 0.8.10\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-09-28 17:23+0200\n" -"PO-Revision-Date: 2008-11-15 21:52+0100\n" -"Last-Translator: Javier Fernandez-Sanguino <jfs@debian.org>\n" +"POT-Creation-Date: 2010-11-30 11:14+0100\n" +"PO-Revision-Date: 2011-01-24 11:47+0100\n" +"Last-Translator: Javier Fernández-Sanguino Peña <jfs@debian.org>\n" "Language-Team: Debian Spanish <debian-l10n-spanish@lists.debian.org>\n" -"Language: \n" +"Language: es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-POFile-SpellExtra: BD getaddrinfo dist show xvcg Filename sources cachés\n" +"X-POFile-SpellExtra: dumpavail apport scanpackages yes pts URIs upgrade\n" +"X-POFile-SpellExtra: Hash TAR mmap fix Immediate li source add Pathprefix\n" +"X-POFile-SpellExtra: ftparchive policy main URIS qq Resolve Incoming\n" +"X-POFile-SpellExtra: NewFileVer depends get libc GPG URI sdiversions\n" +"X-POFile-SpellExtra: Length Limit PASS ConfFile NewVersion showpkg IPC\n" +"X-POFile-SpellExtra: Super unmet APT registrable NewPackage AddDiversion\n" +"X-POFile-SpellExtra: dists release dselect dir Hmmm debconf force dump ej\n" +"X-POFile-SpellExtra: list Section GraphViz Priority FindPkg gencaches\n" +"X-POFile-SpellExtra: Valid remove Ign DEB PORT LoopBreak tmp ftp\n" +"X-POFile-SpellExtra: AutoRemover stats AF Until delink unmarkauto firms\n" +"X-POFile-SpellExtra: ref Dpkg tar autoremove Obj missing update binary\n" +"X-POFile-SpellExtra: sobreescribe proxy org packages debs generate MD\n" +"X-POFile-SpellExtra: search ProxyLogin limin AllUpgrade Md Range dotty Pre\n" +"X-POFile-SpellExtra: NewFileDesc empaquetamiento root realloc gpgv apt\n" +"X-POFile-SpellExtra: pkgnames Release BinaryPath old DeLink showauto\n" +"X-POFile-SpellExtra: pkgProblemResolver parseable nstall\n" +"X-POFile-SpellExtra: desempaquetamiento script DESACTUALIZARÁN\n" +"X-POFile-SpellExtra: InstallPackages PreDepende lu sobreescribir Packages\n" +"X-POFile-SpellExtra: shell desincronizado override MaxReports cdrom dpkg\n" +"X-POFile-SpellExtra: socket info md Force temp dep CollectFileProvides\n" +"X-POFile-SpellExtra: spartial scansources Only dev purge nfs Intro install\n" +"X-POFile-SpellExtra: deb Sobreescribiendo openpty USER UsePackage vd\n" +"X-POFile-SpellExtra: markauto DB DropNode Content rdepends conf zu hash\n" +"X-POFile-SpellExtra: check contents paq Err Sources MMap lih decompresor\n" +"X-POFile-SpellExtra: build config EPRT http Package liseg dscs Remove\n" +"X-POFile-SpellExtra: sortpkgs sB man extracttemplates bzr potato clear\n" +"X-POFile-SpellExtra: autoclean showsrc desactualizados clean gzip TYPE\n" +"X-POFile-SpellExtra: sinfo Acquire\n" + #: cmdline/apt-cache.cc:156 #, c-format msgid "Package %s version %s has an unmet dep:\n" -msgstr "El paquete %s versi�n %s tiene dependencias incumplidas:\n" +msgstr "El paquete %s versión %s tiene dependencias incumplidas:\n" #: cmdline/apt-cache.cc:284 msgid "Total package names: " msgstr "Nombres de paquetes totales: " #: cmdline/apt-cache.cc:286 -#, fuzzy msgid "Total package structures: " -msgstr "Nombres de paquetes totales: " +msgstr "Estructuras de paquetes totales: " #: cmdline/apt-cache.cc:326 msgid " Normal packages: " @@ -42,7 +96,7 @@ msgstr " Paquetes virtuales puros: " #: cmdline/apt-cache.cc:328 msgid " Single virtual packages: " -msgstr " Paquetes virtuales �nicos: " +msgstr " Paquetes virtuales únicos: " #: cmdline/apt-cache.cc:329 msgid " Mixed virtual packages: " @@ -58,7 +112,7 @@ msgstr "Versiones diferentes totales: " #: cmdline/apt-cache.cc:334 msgid "Total distinct descriptions: " -msgstr "Descipciones diferentes totales: " +msgstr "Descripciones diferentes totales: " #: cmdline/apt-cache.cc:336 msgid "Total dependencies: " @@ -66,11 +120,11 @@ msgstr "Dependencias totales: " #: cmdline/apt-cache.cc:339 msgid "Total ver/file relations: " -msgstr "Relaciones versi�n/archivo totales: " +msgstr "Relaciones versión/archivo totales: " #: cmdline/apt-cache.cc:341 msgid "Total Desc/File relations: " -msgstr "Relaciones descripci�n/archivo totales: " +msgstr "Relaciones descripción/archivo totales: " #: cmdline/apt-cache.cc:343 msgid "Total Provides mappings: " @@ -83,7 +137,7 @@ msgstr "Cadenas globalizadas totales: " #: cmdline/apt-cache.cc:369 msgid "Total dependency version space: " -msgstr "Espacio de versi�n de dependencias total: " +msgstr "Espacio de versión de dependencias total: " #: cmdline/apt-cache.cc:374 msgid "Total slack space: " @@ -96,17 +150,16 @@ msgstr "Espacio registrado total: " #: cmdline/apt-cache.cc:513 cmdline/apt-cache.cc:1194 #, c-format msgid "Package file %s is out of sync." -msgstr "El archivo de paquetes %s est� desincronizado." +msgstr "El archivo de paquetes %s está desincronizado." #: cmdline/apt-cache.cc:1273 -#, fuzzy msgid "You must give at least one search pattern" -msgstr "Debes dar cuando menos un nombre de archivo" +msgstr "Debe proporcionar al menos un patrón de búsqueda" #: cmdline/apt-cache.cc:1429 cmdline/apt-cache.cc:1431 #: cmdline/apt-cache.cc:1508 msgid "No packages found" -msgstr "No se encontr� ning�n paquete" +msgstr "No se encontró ningún paquete" #: cmdline/apt-cache.cc:1503 apt-pkg/cacheset.cc:440 #, c-format @@ -120,7 +173,7 @@ msgstr "Archivos de paquetes:" #: cmdline/apt-cache.cc:1540 cmdline/apt-cache.cc:1638 msgid "Cache is out of sync, can't x-ref a package file" msgstr "" -"Cach� fuera de sincronismo, no se puede hacer x-ref a un archivo de paquetes" +"Caché fuera de sincronismo, no se puede hacer x-ref a un archivo de paquetes" #. Show any packages have explicit pins #: cmdline/apt-cache.cc:1554 @@ -150,7 +203,7 @@ msgstr " Pin del paquete: " #. Show the priority tables #: cmdline/apt-cache.cc:1624 msgid " Version table:" -msgstr " Tabla de versi�n:" +msgstr " Tabla de versión:" #: cmdline/apt-cache.cc:1738 cmdline/apt-cdrom.cc:197 cmdline/apt-config.cc:70 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:589 @@ -160,7 +213,6 @@ msgid "%s %s for %s compiled on %s %s\n" msgstr "%s %s para %s compilado en %s %s\n" #: cmdline/apt-cache.cc:1745 -#, fuzzy msgid "" "Usage: apt-cache [options] command\n" " apt-cache [options] add file1 [file2 ...]\n" @@ -199,59 +251,56 @@ msgid "" " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n" msgstr "" -"Uso: apt-cache [opciones] orden\n" -" apt-cache [opciones] add archivo1 [archivo2 ...]\n" -" apt-cache [opciones] showpkg paq1 [paq2 ...]\n" -" apt-cache [opciones] showsrc paq1 [paq2 ...]\n" +"Modo de uso: apt-cache [opciones] orden\n" +" apt-cache [opciones] add archivo1 [archivo2 ...]\n" +" apt-cache [opciones] showpkg paq1 [paq2 ...]\n" +" apt-cache [opciones] showsrc paq1 [paq2 ...]\n" "\n" "apt-cache es una herramienta de bajo nivel que se utiliza para manipular\n" -"los archivos binarios de cach� de APT y consultar informaci�n sobre �stos\n" +"los archivos binarios de caché de APT y consultar información sobre éstos\n" "\n" -"�rdenes:\n" -" add - Agrega un archivo de paquete a la cach� fuente\n" -" gencaches - Crea el ambas cach�s, la de paquetes y la de fuentes\n" -" showpkg - Muestra alguna informaci�n general para un s�lo paquete\n" -" showsrc - Muestra la informaci�n de fuente\n" -" stats - Muestra algunas estad�sticas b�sicas\n" +"Órdenes:\n" +" add - Agrega un archivo de paquete a la caché de fuentes\n" +" gencaches - Crea ambas cachés, la de paquetes y la de fuentes\n" +" showpkg - Muestra información general para un solo paquete\n" +" showsrc - Muestra la información de fuentes\n" +" stats - Muestra algunas estadísticas básicas\n" " dump - Muestra el archivo entero en un formato terso\n" -" dumpavail - Imprime un archivo disponible a la salida est�ndar\n" +" dumpavail - Imprime un archivo disponible a la salida estándar\n" " unmet - Muestra dependencias incumplidas\n" -" search - Busca en la lista de paquetes por un patr�n de expresi�n " -"regular\n" +" search - Busca en la lista de paquetes por un patrón de expresión regular\n" " show - Muestra un registro legible para el paquete\n" -" depends - Muestra la informaci�n de dependencias en bruto para el " -"paquete\n" -" rdepends - Muestra la informaci�n de dependencias inversas del paquete\n" +" showauto - Muestra una lista de los paquetes instalados de forma automática\n" +" depends - Muestra la información de dependencias en bruto para el paquete\n" +" rdepends - Muestra la información de dependencias inversas del paquete\n" " pkgnames - Lista los nombres de todos los paquetes en el sistema\n" -" dotty - Genera gr�ficas del paquete para GraphViz\n" -" xvcg - Genera gr�ficas del paquete para xvcg\n" -" policy - Muestra par�metros de las normas\n" +" dotty - Genera gráficas del paquete para GraphViz\n" +" xvcg - Genera gráficas del paquete para xvcg\n" +" policy - Muestra parámetros de las normas\n" "\n" "Opciones:\n" " -h Este texto de ayuda.\n" -" -p=? El cache del paquete.\n" -" -s=? El cache del fuente.\n" +" -p=? La caché de paquetes.\n" +" -s=? La caché de fuentes.\n" " -q Deshabilita el indicador de progreso.\n" -" -i Muestra s�lo dependencias importantes para la orden incumplida.\n" -" -c=? Lee este archivo de configuraci�n\n" -" -o=? Establece una opci�n de configuraci�n arbitraria, ej -o dir::\n" -"cache=/tmp\n" -"Vea las p�ginas del manual apt-cache(8) y apt.conf(5) para m�s informaci�n.\n" +" -i Muestra sólo dependencias importantes para la orden incumplida.\n" +" -c=? Lee este archivo de configuración\n" +" -o=? Establece una opción de configuración arbitraria, \n" +" p.ej. -o dir::cache=/tmp\n" +"Vea las páginas del manual apt-cache(8) y apt.conf(5) para más información.\n" #: cmdline/apt-cdrom.cc:77 -#, fuzzy msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'" -msgstr "" -"Por favor provea un nombre para este disco, como 'Debian 2.1r1 Disco 1'" +msgstr "Proporcione un nombre para este disco, como pueda ser «Debian 5.0.3 Disco 1»" #: cmdline/apt-cdrom.cc:92 msgid "Please insert a Disc in the drive and press enter" -msgstr "Por favor inserte un disco en la unidad y presione Intro" +msgstr "Por favor, introduzca un disco en la unidad y pulse Intro" #: cmdline/apt-cdrom.cc:127 -#, fuzzy, c-format +#, c-format msgid "Failed to mount '%s' to '%s'" -msgstr "Fall� el renombre de %s a %s" +msgstr "No se pudo montar «%s» como «%s»" #: cmdline/apt-cdrom.cc:162 msgid "Repeat this process for the rest of the CDs in your set." @@ -278,22 +327,22 @@ msgid "" msgstr "" "Uso: apt-config [opciones] orden\n" "\n" -"apt-config es una herramienta para leer el archivo de configuraci�n de APT.\n" +"apt-config es una herramienta para leer el archivo de configuración de APT.\n" "\n" "Comandos:\n" " shell - Modo shell\n" -" dump - Muestra la configuraci�n\n" +" dump - Muestra la configuración\n" "\n" "Opciones:\n" " -h Este texto de ayuda.\n" -" -c=? Lee este archivo de configuraci�n\n" -" -o=? Establece una opci�n de configuraci�n arbitraria, p. ej. -o dir::\n" +" -c=? Lee este archivo de configuración\n" +" -o=? Establece una opción de configuración arbitraria, p. ej. -o dir::\n" " cache=/tmp\n" #: cmdline/apt-extracttemplates.cc:98 #, c-format msgid "%s not a valid DEB package." -msgstr "%s no es un paquete DEB v�lido." +msgstr "%s no es un paquete DEB válido." #: cmdline/apt-extracttemplates.cc:232 msgid "" @@ -310,14 +359,14 @@ msgid "" msgstr "" "Uso: apt-extracttemplates archivo1 [archivo2 ...]\n" "\n" -"apt-extracttemplates es una herramienta para extraer informaci�n de\n" -"configuraci�n y plantillas de paquetes de debian.\n" +"apt-extracttemplates es una herramienta para extraer información de\n" +"configuración y plantillas de paquetes de debian.\n" "\n" "Opciones:\n" " -h Este texto de ayuda.\n" " -t Define el directorio temporal\n" -" -c=? Lee este archivo de configuraci�n\n" -" -o=? Establece una opci�n de configuraci�n arbitraria, p. ej. -o dir::" +" -c=? Lee este archivo de configuración\n" +" -o=? Establece una opción de configuración arbitraria, p. ej. -o dir::" "cache=/tmp\n" #: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1171 @@ -327,11 +376,11 @@ msgstr "No se puede escribir en %s" #: cmdline/apt-extracttemplates.cc:309 msgid "Cannot get debconf version. Is debconf installed?" -msgstr "No se puede encontrar la versi�n de debconf. �Est� debconf instalado?" +msgstr "No se puede encontrar la versión de debconf. ¿Está debconf instalado?" #: ftparchive/apt-ftparchive.cc:170 ftparchive/apt-ftparchive.cc:347 msgid "Package extension list is too long" -msgstr "La lista de extensi�n de paquetes es demasiado larga" +msgstr "La lista de extensión de paquetes es demasiado larga" #: ftparchive/apt-ftparchive.cc:172 ftparchive/apt-ftparchive.cc:189 #: ftparchive/apt-ftparchive.cc:212 ftparchive/apt-ftparchive.cc:262 @@ -342,7 +391,7 @@ msgstr "Error procesando el directorio %s" #: ftparchive/apt-ftparchive.cc:260 msgid "Source extension list is too long" -msgstr "La lista de extensi�n de fuentes es demasiado larga" +msgstr "La lista de extensión de fuentes es demasiado larga" #: ftparchive/apt-ftparchive.cc:377 msgid "Error writing header to contents file" @@ -404,53 +453,53 @@ msgstr "" " generate config [grupos]\n" " clean config\n" "\n" -"apt-ftparchive genera �ndices para archivos de Debian. Soporta\n" -"varios estilos de generaci�n de reemplazos desde los completamente\n" +"apt-ftparchive genera índices para archivos de Debian. Soporta\n" +"varios estilos de generación de reemplazos desde los completamente\n" "automatizados a los funcionales para dpkg-scanpackages y dpkg-scansources.\n" "\n" -"apt-ftparchive genera ficheros Package de un �rbol de .debs. El fichero\n" +"apt-ftparchive genera ficheros Package de un árbol de .debs. El fichero\n" "Package contiene los contenidos de todos los campos de control de cada\n" -"paquete al igual que la suma MD5 y el tama�o del archivo. Se puede usar\n" +"paquete al igual que la suma MD5 y el tamaño del archivo. Se puede usar\n" "un archivo de predominio para forzar el valor de Priority y\n" "Section.\n" "\n" -"Igualmente, apt-ftparchive genera ficheros Sources para un �rbol de\n" -".dscs. Se puede utilizar la opci�n --source-override para especificar un\n" +"Igualmente, apt-ftparchive genera ficheros Sources para un árbol de\n" +".dscs. Se puede utilizar la opción --source-override para especificar un\n" "fichero de predominio de fuente.\n" "\n" -"Las �rdenes �packages� y �sources� deben ejecutarse en la ra�z del\n" -"�rbol. BinaryPath debe apuntar a la base de la b�squeda\n" +"Las órdenes «packages» y «sources» deben ejecutarse en la raíz del\n" +"árbol. BinaryPath debe apuntar a la base de la búsqueda\n" "recursiva, y el archivo de predominio debe de contener banderas de\n" -"predominio. Se a�ade Pathprefix a los campos de nombre de fichero\n" -"si existen. A continuaci�n se muestra un ejemplo de uso basado en los \n" +"predominio. Se añade Pathprefix a los campos de nombre de fichero\n" +"si existen. A continuación se muestra un ejemplo de uso basado en los \n" "archivos de Debian:\n" " apt-ftparchive packages dists/potato/main/binary-i386/ > \\\\\n" " dists/potato/main/binary-i386/Packages\n" "\n" "Opciones:\n" " -h Este texto de ayuda\n" -" --md5 Generaci�n de control MD5 \n" +" --md5 Generación de control MD5 \n" " -s=? Archivo fuente de predominio\n" " -q Silencioso\n" -" -d=? Selecciona la base de datos de cach� opcional \n" -" --no-delink Habilita modo de depuraci�n delink\n" -" --contents Generaci�n del contenido del archivo �Control�\n" -" -c=? Lee este archivo de configuraci�n\n" -" -o=? Establece una opci�n de configuraci�n arbitraria" +" -d=? Selecciona la base de datos de caché opcional \n" +" --no-delink Habilita modo de depuración delink\n" +" --contents Generación del contenido del archivo «Control»\n" +" -c=? Lee este archivo de configuración\n" +" -o=? Establece una opción de configuración arbitraria" #: ftparchive/apt-ftparchive.cc:801 msgid "No selections matched" -msgstr "Ninguna selecci�n coincide" +msgstr "Ninguna selección coincide" #: ftparchive/apt-ftparchive.cc:879 #, c-format msgid "Some files are missing in the package file group `%s'" -msgstr "Faltan algunos archivos en el grupo de archivo de paquetes `%s'" +msgstr "Faltan algunos archivos en el grupo de archivo de paquetes «%s»" #: ftparchive/cachedb.cc:43 #, c-format msgid "DB was corrupted, file renamed to %s.old" -msgstr "BD corrompida, archivo renombrado a %s.old" +msgstr "BD dañada, se renombró el archivo a %s.old" #: ftparchive/cachedb.cc:61 #, c-format @@ -458,13 +507,10 @@ msgid "DB is old, attempting to upgrade %s" msgstr "DB anticuada, intentando actualizar %s" #: ftparchive/cachedb.cc:72 -#, fuzzy msgid "" "DB format is invalid. If you upgraded from an older version of apt, please " "remove and re-create the database." -msgstr "" -"El formato de la base de datos no es v�lido. Debe eliminar y recrear la base " -"de datos si ha actualizado de una versi�n anterior de apt." +msgstr "El formato de la base de datos no es válido. Debe eliminar y recrear la base de datos si vd. se actualizó de una versión anterior de apt." #: ftparchive/cachedb.cc:77 #, c-format @@ -505,7 +551,7 @@ msgstr "A: " #: ftparchive/writer.cc:143 msgid "E: Errors apply to file " -msgstr "E: Errores aplicables al archivo '" +msgstr "E: Errores aplicables al archivo " #: ftparchive/writer.cc:161 ftparchive/writer.cc:193 #, c-format @@ -514,7 +560,7 @@ msgstr "No se pudo resolver %s" #: ftparchive/writer.cc:174 msgid "Tree walking failed" -msgstr "Fall� el recorrido por el �rbol." +msgstr "Falló el recorrido por el árbol." #: ftparchive/writer.cc:201 #, c-format @@ -544,7 +590,7 @@ msgstr "*** No pude enlazar %s con %s" #: ftparchive/writer.cc:289 #, c-format msgid " DeLink limit of %sB hit.\n" -msgstr " DeLink se ha llegado al l�mite de %sB.\n" +msgstr " DeLink se ha llegado al límite de %sB.\n" #: ftparchive/writer.cc:393 msgid "Archive had no package field" @@ -587,17 +633,17 @@ msgstr "No se pudo abrir %s" #: ftparchive/override.cc:60 ftparchive/override.cc:166 #, c-format msgid "Malformed override %s line %lu #1" -msgstr "Predominio mal formado %s l�nea %lu #1" +msgstr "Predominio mal formado %s línea %lu #1" #: ftparchive/override.cc:74 ftparchive/override.cc:178 #, c-format msgid "Malformed override %s line %lu #2" -msgstr "Predominio mal formado %s l�nea %lu #2" +msgstr "Predominio mal formado %s línea %lu #2" #: ftparchive/override.cc:88 ftparchive/override.cc:191 #, c-format msgid "Malformed override %s line %lu #3" -msgstr "Predominio mal formado %s l�nea %lu #3" +msgstr "Predominio mal formado %s línea %lu #3" #: ftparchive/override.cc:127 ftparchive/override.cc:201 #, c-format @@ -607,16 +653,16 @@ msgstr "No se pudo leer el archivo de predominio %s" #: ftparchive/multicompress.cc:72 #, c-format msgid "Unknown compression algorithm '%s'" -msgstr "Algoritmo desconocido de compresi�n '%s'" +msgstr "Algoritmo desconocido de compresión «%s»" #: ftparchive/multicompress.cc:102 #, c-format msgid "Compressed output %s needs a compression set" -msgstr "Salida comprimida %s necesita una herramienta de compresi�n" +msgstr "Salida comprimida %s necesita una herramienta de compresión" #: ftparchive/multicompress.cc:169 methods/rsh.cc:91 msgid "Failed to create IPC pipe to subprocess" -msgstr "Fall� la creaci�n de una tuber�a IPC para el subproceso" +msgstr "Falló la creación de una tubería IPC para el subproceso" #: ftparchive/multicompress.cc:195 msgid "Failed to create FILE*" @@ -628,7 +674,7 @@ msgstr "No se pudo bifurcar" #: ftparchive/multicompress.cc:212 msgid "Compress child" -msgstr "Hijo compresi�n" +msgstr "Hijo compresión" #: ftparchive/multicompress.cc:235 #, c-format @@ -649,7 +695,7 @@ msgstr "decompresor" #: ftparchive/multicompress.cc:403 msgid "IO to subprocess/file failed" -msgstr "Fall� la ES a subproceso/archivo" +msgstr "Falló la ES a subproceso/archivo" #: ftparchive/multicompress.cc:455 msgid "Failed to read while computing MD5" @@ -658,12 +704,12 @@ msgstr "No se pudo leer mientras se computaba MD5" #: ftparchive/multicompress.cc:472 #, c-format msgid "Problem unlinking %s" -msgstr "Hay problemas desligando %s" +msgstr "Se produjo un problema al desligar %s" #: ftparchive/multicompress.cc:487 apt-inst/extract.cc:185 #, c-format msgid "Failed to rename %s to %s" -msgstr "Fall� el renombre de %s a %s" +msgstr "Falló el renombre de %s a %s" #: cmdline/apt-get.cc:135 msgid "Y" @@ -672,7 +718,7 @@ msgstr "S" #: cmdline/apt-get.cc:157 apt-pkg/cachefilter.cc:29 #, c-format msgid "Regex compilation error - %s" -msgstr "Error de compilaci�n de expresiones regulares - %s" +msgstr "Error de compilación de expresiones regulares - %s" #: cmdline/apt-get.cc:252 msgid "The following packages have unmet dependencies:" @@ -681,7 +727,7 @@ msgstr "Los siguientes paquetes tienen dependencias incumplidas:" #: cmdline/apt-get.cc:342 #, c-format msgid "but %s is installed" -msgstr "pero %s est� instalado" +msgstr "pero %s está instalado" #: cmdline/apt-get.cc:344 #, c-format @@ -698,7 +744,7 @@ msgstr "pero es un paquete virtual" #: cmdline/apt-get.cc:356 msgid "but it is not installed" -msgstr "pero no est� instalado" +msgstr "pero no está instalado" #: cmdline/apt-get.cc:356 msgid "but it is not going to be installed" @@ -710,11 +756,11 @@ msgstr " o" #: cmdline/apt-get.cc:392 msgid "The following NEW packages will be installed:" -msgstr "Se instalar�n los siguientes paquetes NUEVOS:" +msgstr "Se instalarán los siguientes paquetes NUEVOS:" #: cmdline/apt-get.cc:420 msgid "The following packages will be REMOVED:" -msgstr "Los siguientes paquetes se ELIMINAR�N:" +msgstr "Los siguientes paquetes se ELIMINARÁN:" #: cmdline/apt-get.cc:442 msgid "The following packages have been kept back:" @@ -722,15 +768,15 @@ msgstr "Los siguientes paquetes se han retenido:" #: cmdline/apt-get.cc:465 msgid "The following packages will be upgraded:" -msgstr "Se actualizar�n los siguientes paquetes:" +msgstr "Se actualizarán los siguientes paquetes:" #: cmdline/apt-get.cc:488 msgid "The following packages will be DOWNGRADED:" -msgstr "Se DESACTUALIZAR�N los siguientes paquetes:" +msgstr "Se DESACTUALIZARÁN los siguientes paquetes:" #: cmdline/apt-get.cc:508 msgid "The following held packages will be changed:" -msgstr "Se cambiar�n los siguientes paquetes retenidos:" +msgstr "Se cambiarán los siguientes paquetes retenidos:" #: cmdline/apt-get.cc:561 #, c-format @@ -743,12 +789,12 @@ msgid "" "This should NOT be done unless you know exactly what you are doing!" msgstr "" "AVISO: Se van a eliminar los siguientes paquetes esenciales.\n" -"�NO debe hacerse a menos que sepa exactamente lo que est� haciendo!" +"¡NO debe hacerse a menos que sepa exactamente lo que está haciendo!" #: cmdline/apt-get.cc:603 #, c-format msgid "%lu upgraded, %lu newly installed, " -msgstr "%lu actualizados, %lu se instalar�n, " +msgstr "%lu actualizados, %lu se instalarán, " #: cmdline/apt-get.cc:607 #, c-format @@ -771,19 +817,19 @@ msgid "%lu not fully installed or removed.\n" msgstr "%lu no instalados del todo o eliminados.\n" #: cmdline/apt-get.cc:635 -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for task '%s'\n" -msgstr "Nota, seleccionando %s para la expresi�n regular '%s'\n" +msgstr "Nota, seleccionando «%s» para la tarea «%s»\n" #: cmdline/apt-get.cc:641 -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for regex '%s'\n" -msgstr "Nota, seleccionando %s para la expresi�n regular '%s'\n" +msgstr "Nota, seleccionando «%s» para la expresión regular «%s»\n" #: cmdline/apt-get.cc:648 -#, fuzzy, c-format +#, c-format msgid "Selected version '%s' (%s) for '%s'\n" -msgstr "Versi�n seleccionada %s (%s) para %s\n" +msgstr "Versión seleccionada «%s» (%s) para «%s»\n" #: cmdline/apt-get.cc:658 #, c-format @@ -795,13 +841,12 @@ msgid " [Installed]" msgstr " [Instalado]" #: cmdline/apt-get.cc:678 -#, fuzzy msgid " [Not candidate version]" -msgstr "Versiones candidatas" +msgstr " [No es la versión candidata]" #: cmdline/apt-get.cc:680 msgid "You should explicitly select one to install." -msgstr "Necesita seleccionar expl�citamente uno para instalar." +msgstr "Necesita seleccionar explícitamente uno para instalar." #: cmdline/apt-get.cc:683 #, c-format @@ -810,8 +855,8 @@ msgid "" "This may mean that the package is missing, has been obsoleted, or\n" "is only available from another source\n" msgstr "" -"El paquete %s no est� disponible, pero alg�n otro paquete hace referencia\n" -"a �l. Esto puede significar que el paquete falta, est� obsoleto o s�lo se\n" +"El paquete %s no está disponible, pero algún otro paquete hace referencia\n" +"a él. Esto puede significar que el paquete falta, está obsoleto o sólo se\n" "encuentra disponible desde alguna otra fuente\n" #: cmdline/apt-get.cc:701 @@ -819,29 +864,29 @@ msgid "However the following packages replace it:" msgstr "Sin embargo, los siguientes paquetes lo reemplazan:" #: cmdline/apt-get.cc:713 -#, fuzzy, c-format +#, c-format msgid "Package '%s' has no installation candidate" -msgstr "El paquete %s no tiene candidato para su instalaci�n" +msgstr "El paquete «%s» no tiene un candidato para la instalación" #: cmdline/apt-get.cc:724 #, c-format msgid "Virtual packages like '%s' can't be removed\n" -msgstr "" +msgstr "No pueden eliminarse los paquetes virtuales como «%s»\n" #: cmdline/apt-get.cc:755 -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' instead of '%s'\n" -msgstr "Nota, seleccionando %s en lugar de %s\n" +msgstr "Nota, seleccionando «%s» en lugar de «%s»\n" #: cmdline/apt-get.cc:785 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" -msgstr "Ignorando %s, ya esta instalado y la actualizaci�n no esta activada.\n" +msgstr "Ignorando %s, ya está instalado y no está activada la actualización.\n" #: cmdline/apt-get.cc:789 -#, fuzzy, c-format +#, c-format msgid "Skipping %s, it is not installed and only upgrades are requested.\n" -msgstr "Ignorando %s, ya esta instalado y la actualizaci�n no esta activada.\n" +msgstr "Ignorando %s, no está instalado y sólo se están solicitando actualizaciones.\n" #: cmdline/apt-get.cc:799 #, c-format @@ -851,7 +896,7 @@ msgstr "No es posible reinstalar el paquete %s, no se puede descargar.\n" #: cmdline/apt-get.cc:804 #, c-format msgid "%s is already the newest version.\n" -msgstr "%s ya est� en su versi�n m�s reciente.\n" +msgstr "%s ya está en su versión más reciente.\n" #: cmdline/apt-get.cc:823 cmdline/apt-get.cc:1992 #, c-format @@ -861,7 +906,7 @@ msgstr "fijado %s como instalado manualmente.\n" #: cmdline/apt-get.cc:863 #, c-format msgid "Package %s is not installed, so not removed\n" -msgstr "El paquete %s no esta instalado, no se eliminar�\n" +msgstr "El paquete %s no está instalado, no se eliminará\n" #: cmdline/apt-get.cc:938 msgid "Correcting dependencies..." @@ -869,7 +914,7 @@ msgstr "Corrigiendo dependencias..." #: cmdline/apt-get.cc:941 msgid " failed." -msgstr " fall�." +msgstr " falló." #: cmdline/apt-get.cc:944 msgid "Unable to correct dependencies" @@ -877,7 +922,7 @@ msgstr "No se puede corregir las dependencias" #: cmdline/apt-get.cc:947 msgid "Unable to minimize the upgrade set" -msgstr "No se puede minimizar el conjunto de actualizaci�n" +msgstr "No se puede minimizar el conjunto de actualización" #: cmdline/apt-get.cc:949 msgid " Done" @@ -885,7 +930,7 @@ msgstr " Listo" #: cmdline/apt-get.cc:953 msgid "You might want to run 'apt-get -f install' to correct these." -msgstr "Tal vez quiera ejecutar 'apt-get -f install' para corregirlo." +msgstr "Tal vez quiera ejecutar «apt-get -f install» para corregirlo." #: cmdline/apt-get.cc:956 msgid "Unmet dependencies. Try using -f." @@ -893,15 +938,15 @@ msgstr "Dependencias incumplidas. Pruebe de nuevo usando -f." #: cmdline/apt-get.cc:981 msgid "WARNING: The following packages cannot be authenticated!" -msgstr "AVISO: �No se han podido autenticar los siguientes paquetes!" +msgstr "AVISO: ¡No se han podido autenticar los siguientes paquetes!" #: cmdline/apt-get.cc:985 msgid "Authentication warning overridden.\n" -msgstr "Aviso de autenticaci�n ignorado.\n" +msgstr "Aviso de autenticación ignorado.\n" #: cmdline/apt-get.cc:992 msgid "Install these packages without verification [y/N]? " -msgstr "�Instalar estos paquetes sin verificaci�n [s/N]? " +msgstr "¿Instalar estos paquetes sin verificación [s/N]? " #: cmdline/apt-get.cc:994 msgid "Some packages could not be authenticated" @@ -909,25 +954,24 @@ msgstr "Algunos paquetes no se pueden autenticar" #: cmdline/apt-get.cc:1003 cmdline/apt-get.cc:1166 msgid "There are problems and -y was used without --force-yes" -msgstr "Hay problemas y se utiliz� -y sin --force-yes" +msgstr "Hay problemas y se utilizó -y sin --force-yes" #: cmdline/apt-get.cc:1044 msgid "Internal error, InstallPackages was called with broken packages!" -msgstr "Error interno, InstallPackages fue llamado con un paquete roto!" +msgstr "Error interno, ¡se llamó a «InstallPackages» con paquetes rotos!" #: cmdline/apt-get.cc:1053 msgid "Packages need to be removed but remove is disabled." -msgstr "Los paquetes necesitan eliminarse pero Remove est� deshabilitado." +msgstr "Los paquetes necesitan eliminarse pero está deshabilitado la posibilidad de eliminar." #: cmdline/apt-get.cc:1064 msgid "Internal error, Ordering didn't finish" -msgstr "Error interno, no termin� el ordenamiento" +msgstr "Error interno, no terminó la ordenación" #: cmdline/apt-get.cc:1104 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" msgstr "" -"Que raro.. Los tama�os no concuerdan, mande un correo a \n" -"apt@packages.debian.org" +"Qué raro.. Los tamaños no concuerdan, mande un correo a apt@packages.debian.org" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB @@ -949,14 +993,14 @@ msgstr "Necesito descargar %sB de archivos.\n" #, c-format msgid "After this operation, %sB of additional disk space will be used.\n" msgstr "" -"Se utilizar�n %sB de espacio de disco adicional despu�s de esta operaci�n.\n" +"Se utilizarán %sB de espacio de disco adicional después de esta operación.\n" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB #: cmdline/apt-get.cc:1128 #, c-format msgid "After this operation, %sB disk space will be freed.\n" -msgstr "Se liberar�n %sB despu�s de esta operaci�n.\n" +msgstr "Se liberarán %sB después de esta operación.\n" #: cmdline/apt-get.cc:1143 cmdline/apt-get.cc:1146 cmdline/apt-get.cc:2332 #: cmdline/apt-get.cc:2335 @@ -971,11 +1015,11 @@ msgstr "No tiene suficiente espacio libre en %s." #: cmdline/apt-get.cc:1172 cmdline/apt-get.cc:1192 msgid "Trivial Only specified but this is not a trivial operation." -msgstr "Se especific� Trivial Only pero �sta no es una operaci�n trivial." +msgstr "Se especificó Trivial Only pero ésta no es una operación trivial." #: cmdline/apt-get.cc:1174 msgid "Yes, do as I say!" -msgstr "S�, �haga lo que le digo!" +msgstr "Sí, ¡haga lo que le digo!" #: cmdline/apt-get.cc:1176 #, c-format @@ -984,8 +1028,8 @@ msgid "" "To continue type in the phrase '%s'\n" " ?] " msgstr "" -"Est� a punto de hacer algo potencialmente da�ino\n" -"Para continuar escriba la frase �%s�\n" +"Está a punto de hacer algo potencialmente dañino\n" +"Para continuar escriba la frase «%s»\n" " ?] " #: cmdline/apt-get.cc:1182 cmdline/apt-get.cc:1201 @@ -994,32 +1038,32 @@ msgstr "Abortado." #: cmdline/apt-get.cc:1197 msgid "Do you want to continue [Y/n]? " -msgstr "�Desea continuar [S/n]? " +msgstr "¿Desea continuar [S/n]? " -#: cmdline/apt-get.cc:1269 cmdline/apt-get.cc:2392 apt-pkg/algorithms.cc:1462 +#: cmdline/apt-get.cc:1269 cmdline/apt-get.cc:2392 apt-pkg/algorithms.cc:1470 #, c-format msgid "Failed to fetch %s %s\n" msgstr "Imposible obtener %s %s\n" #: cmdline/apt-get.cc:1287 msgid "Some files failed to download" -msgstr "Algunos archivos no pudieron descargarse" +msgstr "No se pudieron descargar algunos archivos" #: cmdline/apt-get.cc:1288 cmdline/apt-get.cc:2401 msgid "Download complete and in download only mode" -msgstr "Descarga completa y en modo de s�lo descarga" +msgstr "Descarga completa y en modo de sólo descarga" #: cmdline/apt-get.cc:1294 msgid "" "Unable to fetch some archives, maybe run apt-get update or try with --fix-" "missing?" msgstr "" -"No se pudieron obtener algunos archivos, �quiz�s deba ejecutar\n" -"apt-get update o deba intentarlo de nuevo con --fix-missing?" +"No se pudieron obtener algunos archivos, ¿quizás deba ejecutar " +"«apt-get update» o deba intentarlo de nuevo con --fix-missing?" #: cmdline/apt-get.cc:1298 msgid "--fix-missing and media swapping is not currently supported" -msgstr "Actualmente no est�n soportados --fix-missing e intercambio de medio" +msgstr "Actualmente no están soportados --fix-missing e intercambio de medio" #: cmdline/apt-get.cc:1303 msgid "Unable to correct missing packages." @@ -1027,7 +1071,7 @@ msgstr "No se pudieron corregir los paquetes que faltan." #: cmdline/apt-get.cc:1304 msgid "Aborting install." -msgstr "Abortando la instalaci�n." +msgstr "Abortando la instalación." #: cmdline/apt-get.cc:1332 msgid "" @@ -1037,74 +1081,69 @@ msgid_plural "" "The following packages disappeared from your system as\n" "all files have been overwritten by other packages:" msgstr[0] "" +"El paquete mostrado a continuación ha desaparecido de su sistema\n" +"dado que todos sus ficheros han sido sobreescritos por otros paquetes:" msgstr[1] "" +"Los paquetes mostrados a continuación han desaparecido de su sistema\n" +"dado que todos sus ficheros han sido sobreescritos por otros paquetes:" #: cmdline/apt-get.cc:1336 msgid "Note: This is done automatic and on purpose by dpkg." -msgstr "" +msgstr "Nota: Dpkg realiza esto de forma automática y a propósito." #: cmdline/apt-get.cc:1466 #, c-format msgid "Ignore unavailable target release '%s' of package '%s'" -msgstr "" +msgstr "Ignorar la distribución objetivo no disponible «%s» del paquete «%s»" #: cmdline/apt-get.cc:1498 -#, fuzzy, c-format +#, c-format msgid "Picking '%s' as source package instead of '%s'\n" -msgstr "No se puede leer la lista de paquetes fuente %s" +msgstr "Escogiendo «%s» como paquete fuente en lugar de «%s»\n" #. if (VerTag.empty() == false && Last == 0) #: cmdline/apt-get.cc:1536 #, c-format msgid "Ignore unavailable version '%s' of package '%s'" -msgstr "" +msgstr "Ignorar la versión no disponible «%s» del paquete «%s»" #: cmdline/apt-get.cc:1552 msgid "The update command takes no arguments" -msgstr "El comando de actualizaci�n no toma argumentos" +msgstr "El comando de actualización no toma argumentos" #: cmdline/apt-get.cc:1618 msgid "We are not supposed to delete stuff, can't start AutoRemover" msgstr "" -"Se supone que no vamos a eliminar cosas, no se pudo iniciar �AutoRemover�" +"Se supone que no vamos a eliminar cosas, no se pudo iniciar «AutoRemover»" #: cmdline/apt-get.cc:1666 -#, fuzzy msgid "" "The following package was automatically installed and is no longer required:" msgid_plural "" "The following packages were automatically installed and are no longer " "required:" -msgstr[0] "" -"Se instalaron de forma autom�tica los siguientes paquetes y ya no son " -"necesarios." -msgstr[1] "" -"Se instalaron de forma autom�tica los siguientes paquetes y ya no son " -"necesarios." +msgstr[0] "El paquete indicado a continuación se instaló de forma automática y ya no es necesarios." +msgstr[1] "Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios." #: cmdline/apt-get.cc:1670 -#, fuzzy, c-format +#, c-format msgid "%lu package was automatically installed and is no longer required.\n" msgid_plural "" "%lu packages were automatically installed and are no longer required.\n" -msgstr[0] "" -"Se instalaron de forma autom�tica los siguientes paquetes y ya no son " -"necesarios." -msgstr[1] "" -"Se instalaron de forma autom�tica los siguientes paquetes y ya no son " -"necesarios." +msgstr[0] "Se instaló de forma automática %lu paquete y ya no es necesario.\n" +msgstr[1] "Se instalaron de forma automática %lu paquetes y ya no son necesarios.\n" #: cmdline/apt-get.cc:1672 msgid "Use 'apt-get autoremove' to remove them." -msgstr "Utilice �apt-get autoremove� para eliminarlos." +msgstr "Utilice «apt-get autoremove» para eliminarlos." #: cmdline/apt-get.cc:1677 msgid "" "Hmm, seems like the AutoRemover destroyed something which really\n" "shouldn't happen. Please file a bug report against apt." msgstr "" -"Hmmm. Parece que �AutoRemover� destruy� algo y eso no deber�a haber pasado. " -"Por favor, env�e un informe de fallo al programa apt." +"Hmmm. Parece que «AutoRemover» destruyó algo y eso no debería haber pasado. " +"Por favor, envíe un informe de fallo al programa apt." #. #. if (Packages == 1) @@ -1118,27 +1157,25 @@ msgstr "" #. #: cmdline/apt-get.cc:1680 cmdline/apt-get.cc:1822 msgid "The following information may help to resolve the situation:" -msgstr "La siguiente informaci�n puede ayudar a resolver la situaci�n:" +msgstr "La siguiente información puede ayudar a resolver la situación:" #: cmdline/apt-get.cc:1684 msgid "Internal Error, AutoRemover broke stuff" -msgstr "Error interno, �AutoRemover� rompi� cosas" +msgstr "Error interno, «AutoRemover» rompió cosas" #: cmdline/apt-get.cc:1703 msgid "Internal error, AllUpgrade broke stuff" -msgstr "Error Interno, AllUpgrade rompi� cosas" +msgstr "Error Interno, AllUpgrade rompió cosas" #: cmdline/apt-get.cc:1792 msgid "You might want to run 'apt-get -f install' to correct these:" -msgstr "Tal vez quiera ejecutar 'apt-get -f install' para corregirlo:" +msgstr "Tal vez quiera ejecutar «apt-get -f install» para corregirlo:" #: cmdline/apt-get.cc:1795 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." -msgstr "" -"Dependencias incumplidas. Intente 'apt-get -f install' sin paquetes (o " -"especifique una soluci�n)." +msgstr "Dependencias incumplidas. Intente «apt-get -f install» sin paquetes (o especifique una solución)." #: cmdline/apt-get.cc:1807 msgid "" @@ -1148,7 +1185,7 @@ msgid "" "or been moved out of Incoming." msgstr "" "No se pudieron instalar algunos paquetes. Esto puede significar que\n" -"usted pidi� una situaci�n imposible o, si est� usando la distribuci�n\n" +"usted pidió una situación imposible o, si está usando la distribución\n" "inestable, que algunos paquetes necesarios no han sido creados o han\n" "sido movidos fuera de Incoming." @@ -1158,7 +1195,7 @@ msgstr "Paquetes rotos" #: cmdline/apt-get.cc:1854 msgid "The following extra packages will be installed:" -msgstr "Se instalar�n los siguientes paquetes extras:" +msgstr "Se instalarán los siguientes paquetes extras:" #: cmdline/apt-get.cc:1944 msgid "Suggested packages:" @@ -1166,7 +1203,7 @@ msgstr "Paquetes sugeridos:" #: cmdline/apt-get.cc:1945 msgid "Recommended packages:" -msgstr "Paquetes recomendados" +msgstr "Paquetes recomendados:" #: cmdline/apt-get.cc:1987 #, c-format @@ -1174,17 +1211,17 @@ msgid "Couldn't find package %s" msgstr "No se pudo encontrar el paquete %s" #: cmdline/apt-get.cc:1994 -#, fuzzy, c-format +#, c-format msgid "%s set to automatically installed.\n" -msgstr "fijado %s como instalado manualmente.\n" +msgstr "fijado %s como instalado automáticamente.\n" #: cmdline/apt-get.cc:2015 msgid "Calculating upgrade... " -msgstr "Calculando la actualizaci�n... " +msgstr "Calculando la actualización... " #: cmdline/apt-get.cc:2018 methods/ftp.cc:707 methods/connect.cc:111 msgid "Failed" -msgstr "Fall�" +msgstr "Falló" #: cmdline/apt-get.cc:2023 msgid "Done" @@ -1193,7 +1230,7 @@ msgstr "Listo" #: cmdline/apt-get.cc:2090 cmdline/apt-get.cc:2098 msgid "Internal error, problem resolver broke stuff" msgstr "" -"Error interno, el sistema de soluci�n de problemas rompi�\n" +"Error interno, el sistema de solución de problemas rompió " "algunas cosas" #: cmdline/apt-get.cc:2122 cmdline/apt-get.cc:2155 @@ -1202,7 +1239,7 @@ msgstr "No se puede bloquear el directorio de descarga" #: cmdline/apt-get.cc:2198 msgid "Must specify at least one package to fetch source for" -msgstr "Debe especificar al menos un paquete para obtener su c�digo fuente" +msgstr "Debe especificar al menos un paquete para obtener su código fuente" #: cmdline/apt-get.cc:2238 cmdline/apt-get.cc:2519 #, c-format @@ -1215,6 +1252,8 @@ msgid "" "NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" "%s\n" msgstr "" +"NOTA: el empaquetamiento de «%s» se mantiene en el sistema de control de versiones «%s» en:\n" +"%s\n" #: cmdline/apt-get.cc:2259 #, c-format @@ -1223,11 +1262,14 @@ msgid "" "bzr get %s\n" "to retrieve the latest (possibly unreleased) updates to the package.\n" msgstr "" +"Por favor, utilice:\n" +"bzr get %s\n" +"para obtener las últimas actualizaciones (posiblemente no publicadas aún) del paquete.\n" #: cmdline/apt-get.cc:2310 #, c-format msgid "Skipping already downloaded file '%s'\n" -msgstr "Ignorando fichero ya descargado '%s'\n" +msgstr "Omitiendo el fichero ya descargado «%s»\n" #: cmdline/apt-get.cc:2345 #, c-format @@ -1265,37 +1307,37 @@ msgstr "Ignorando desempaquetamiento de paquetes ya desempaquetados en %s\n" #: cmdline/apt-get.cc:2439 #, c-format msgid "Unpack command '%s' failed.\n" -msgstr "Fall� la orden de desempaquetamiento '%s'.\n" +msgstr "Falló la orden de desempaquetamiento «%s».\n" #: cmdline/apt-get.cc:2440 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" -msgstr "Compruebe que el paquete �dpkg-dev� est� instalado.\n" +msgstr "Compruebe que el paquete «dpkg-dev» esté instalado.\n" #: cmdline/apt-get.cc:2457 #, c-format msgid "Build command '%s' failed.\n" -msgstr "Fall� la orden de construcci�n '%s'.\n" +msgstr "Falló la orden de construcción «%s».\n" #: cmdline/apt-get.cc:2477 msgid "Child process failed" -msgstr "Fall� el proceso hijo" +msgstr "Falló el proceso hijo" #: cmdline/apt-get.cc:2493 msgid "Must specify at least one package to check builddeps for" msgstr "" -"Debe especificar al menos un paquete para verificar sus\n" -"dependencias de construcci�n" +"Debe especificar al menos un paquete para verificar sus " +"dependencias de construcción" #: cmdline/apt-get.cc:2524 #, c-format msgid "Unable to get build-dependency information for %s" -msgstr "No se pudo obtener informaci�n de dependencias de construcci�n para %s" +msgstr "No se pudo obtener información de dependencias de construcción para %s" #: cmdline/apt-get.cc:2544 #, c-format msgid "%s has no build depends.\n" -msgstr "%s no tiene dependencias de construcci�n.\n" +msgstr "%s no tiene dependencias de construcción.\n" #: cmdline/apt-get.cc:2595 #, c-format @@ -1303,7 +1345,7 @@ msgid "" "%s dependency for %s cannot be satisfied because the package %s cannot be " "found" msgstr "" -"La dependencia %s en %s no puede satisfacerse porque no se puede \n" +"La dependencia %s en %s no puede satisfacerse porque no se puede " "encontrar el paquete %s" #: cmdline/apt-get.cc:2648 @@ -1312,8 +1354,8 @@ msgid "" "%s dependency for %s cannot be satisfied because no available versions of " "package %s can satisfy version requirements" msgstr "" -"La dependencia %s en %s no puede satisfacerse porque ninguna versi�n\n" -"disponible del paquete %s satisface los requisitos de versi�n" +"La dependencia %s en %s no puede satisfacerse porque ninguna versión " +"disponible del paquete %s satisface los requisitos de versión" #: cmdline/apt-get.cc:2684 #, c-format @@ -1330,18 +1372,17 @@ msgstr "No se pudo satisfacer la dependencia %s para %s: %s" #: cmdline/apt-get.cc:2727 #, c-format msgid "Build-dependencies for %s could not be satisfied." -msgstr "No se pudieron satisfacer las dependencias de construcci�n de %s." +msgstr "No se pudieron satisfacer las dependencias de construcción de %s." #: cmdline/apt-get.cc:2732 msgid "Failed to process build dependencies" -msgstr "No se pudieron procesar las dependencias de construcci�n" +msgstr "No se pudieron procesar las dependencias de construcción" #: cmdline/apt-get.cc:2763 msgid "Supported modules:" -msgstr "M�dulos soportados:" +msgstr "Módulos soportados:" #: cmdline/apt-get.cc:2804 -#, fuzzy msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@ -1390,42 +1431,42 @@ msgstr "" " apt-get [opciones] install|remove paq1 [paq2 ...]\n" " apt-get [opciones] source paq1 [paq2 ...]\n" "\n" -"apt-get es una sencilla interfaz de l�nea de �rdenes para descargar e\n" -"instalar paquetes. Las �rdenes m�s utilizadas son update e install.\n" +"apt-get es una sencilla interfaz de línea de órdenes para descargar e\n" +"instalar paquetes. Las órdenes más utilizadas son update e install.\n" "\n" -"�rdenes:\n" +"Órdenes:\n" " update - Descarga nuevas listas de paquetes\n" -" upgrade - Realiza una actualizaci�n\n" +" upgrade - Realiza una actualización\n" " install - Instala nuevos paquetes (paquete es libc6 y no libc6.deb)\n" " remove - Elimina paquetes\n" " purge - Elimina y purga paquetes\n" " source - Descarga archivos fuente\n" -" build-dep - Configura las dependencias de construcci�n para paquetes " -"fuente\n" -" dist-upgrade - Actualiza la distribuci�n, vea apt-get(8)\n" +" build-dep - Configura las dependencias de construcción para paquetes fuente\n" +" dist-upgrade - Actualiza la distribución, vea apt-get(8)\n" " dselect-upgrade - Sigue las selecciones de dselect\n" " clean - Elimina los archivos descargados\n" " autoclean - Elimina los archivos descargados antiguos\n" " check - Verifica que no haya dependencias incumplidas\n" +" markauto - Marca los paquetes indicados como instalados de forma automática\n" +" unmarkauto - Marca los paquetes indicados como instalado de forma manual\n" "\n" "Opciones:\n" " -h Este texto de ayuda.\n" " -q Salida registrable - sin indicador de progreso\n" " -qq Sin salida, excepto si hay errores\n" -" -d S�lo descarga - NO instala o desempaqueta los archivos\n" -" -s No act�a. Realiza una simulaci�n\n" -" -y Asume S� para todas las consultas\n" -" -f Intenta continuar si la comprobaci�n de integridad falla\n" +" -d Sólo descarga - NO instala o desempaqueta los archivos\n" +" -s No actúa. Realiza una simulación\n" +" -y Asume Sí para todas las consultas\n" +" -f Intenta continuar si la comprobación de integridad falla\n" " -m Intenta continuar si los archivos no son localizables\n" -" -u Muestra tambi�n una lista de paquetes actualizados\n" -" -b Construye el paquete fuente despu�s de obtenerlo\n" -" -V Muesta n�meros de versi�n detallados\n" -" -c=? Lee este archivo de configuraci�n\n" -" -o=? Establece una opci�n de configuraci�n arbitraria, p. ej. \n" +" -u Muestra también una lista de paquetes actualizados\n" +" -b Construye el paquete fuente después de obtenerlo\n" +" -V Muesta números de versión detallados\n" +" -c=? Lee este archivo de configuración\n" +" -o=? Establece una opción de configuración arbitraria, p. ej. \n" " -o dir::cache=/tmp\n" -"Consulte las p�ginas del manual de apt-get(8), sources.list(5) y apt.conf" -"(5)\n" -"para m�s informaci�n y opciones.\n" +"Consulte las páginas del manual de apt-get(8), sources.list(5) y apt.conf(5)\n" +"para más información y opciones.\n" " Este APT tiene poderes de Super Vaca.\n" #: cmdline/apt-get.cc:2960 @@ -1435,47 +1476,51 @@ msgid "" " Keep also in mind that locking is deactivated,\n" " so don't depend on the relevance to the real current situation!" msgstr "" +"NOTA: ¡Esto es sólo una simulación\n" +" apt-get necesita privilegios de administrador para la ejecución real.\n" +" Tenga también en cuenta que se han desactivado los bloqueos,\n" +" ¡no dependa de la relevancia a la situación real actual!" -#: cmdline/acqprogress.cc:55 +#: cmdline/acqprogress.cc:57 msgid "Hit " msgstr "Obj " -#: cmdline/acqprogress.cc:79 +#: cmdline/acqprogress.cc:81 msgid "Get:" msgstr "Des:" -#: cmdline/acqprogress.cc:110 +#: cmdline/acqprogress.cc:112 msgid "Ign " msgstr "Ign " -#: cmdline/acqprogress.cc:114 +#: cmdline/acqprogress.cc:116 msgid "Err " msgstr "Err " -#: cmdline/acqprogress.cc:135 +#: cmdline/acqprogress.cc:137 #, c-format msgid "Fetched %sB in %s (%sB/s)\n" msgstr "Descargados %sB en %s (%sB/s)\n" -#: cmdline/acqprogress.cc:225 +#: cmdline/acqprogress.cc:227 #, c-format msgid " [Working]" msgstr " [Trabajando]" -#: cmdline/acqprogress.cc:271 +#: cmdline/acqprogress.cc:283 #, c-format msgid "" "Media change: please insert the disc labeled\n" " '%s'\n" "in the drive '%s' and press enter\n" msgstr "" -"Cambio de medio: Por favor inserte el disco etiquetado\n" -" '%s'\n" -"en la unidad '%s' y presione Intro\n" +"Cambio de medio: Por favor, inserte el disco etiquetado como\n" +" «%s»\n" +"en la unidad «%s» y pulse Intro\n" #: cmdline/apt-sortpkgs.cc:86 msgid "Unknown package record!" -msgstr "�Registro de paquete desconocido!" +msgstr "¡Registro de paquete desconocido!" #: cmdline/apt-sortpkgs.cc:150 msgid "" @@ -1493,60 +1538,52 @@ msgstr "" "Uso: apt-sortpkgs [opciones] archivo1 [archivo2 ...]\n" "\n" "apt-sortpkgs es una herramienta sencilla para ordenar archivos de paquetes.\n" -"La opci�n -s se utiliza para indicar qu� tipo de archivo es.\n" +"La opción -s se utiliza para indicar qué tipo de archivo es.\n" "\n" "Opciones:\n" " -h Este texto de ayuda.\n" " -s Utiliza ordenamiento de archivos fuente\n" -" -c=? Lee este archivo de configuraci�n\n" -" -o=? Establece una opci�n de configuraci�n arbitraria, p. ej. -o dir::\n" +" -c=? Lee este archivo de configuración\n" +" -o=? Establece una opción de configuración arbitraria, p. ej. -o dir::\n" "cache=/tmp\n" #: dselect/install:32 msgid "Bad default setting!" -msgstr "�Par�metro por omisi�n incorrecto!" +msgstr "¡Parámetro por omisión incorrecto!" #: dselect/install:51 dselect/install:83 dselect/install:87 dselect/install:94 #: dselect/install:105 dselect/update:45 msgid "Press enter to continue." -msgstr "Presione Intro para continuar." +msgstr "Pulse Intro para continuar." #: dselect/install:91 msgid "Do you want to erase any previously downloaded .deb files?" -msgstr "�Desea borrar los archivos .deb descargados con anterioridad?" +msgstr "¿Desea borrar los archivos .deb descargados con anterioridad?" #: dselect/install:101 -#, fuzzy msgid "Some errors occurred while unpacking. Packages that were installed" -msgstr "" -"Ocurrieron algunos errores mientras se desempaquetaba. Se va a configurar el" +msgstr "Se produjeron algunos problemas mientras se desempaquetaba. Los paquetes que se instalaron" #: dselect/install:102 -#, fuzzy msgid "will be configured. This may result in duplicate errors" -msgstr "" -"paquetes que fueron instalados. Esto puede dar lugar a errores duplicados" +msgstr "van a configurarse. Esto puede dar lugar a errores duplicados" #: dselect/install:103 msgid "or errors caused by missing dependencies. This is OK, only the errors" -msgstr "" -"o errores causados por dependencias no presentes. Esto est� BIEN, s�lo los\n" -"errores" +msgstr "o errores causados por dependencias no presentes. Esto está BIEN, sólo los errores" #: dselect/install:104 msgid "" "above this message are important. Please fix them and run [I]nstall again" -msgstr "" -"encima de este mensaje son importantes. Por favor corrijalas y ejecute\n" -"[I]nstall otra vez" +msgstr "encima de este mensaje son importantes. Por favor, corríjalas y ejecute «[I]nstall» otra vez" #: dselect/update:30 msgid "Merging available information" -msgstr "Fusionando informaci�n disponible" +msgstr "Fusionando información disponible" #: apt-inst/contrib/extracttar.cc:114 msgid "Failed to create pipes" -msgstr "No pude crear las tuber�as" +msgstr "No pude crear las tuberías" #: apt-inst/contrib/extracttar.cc:141 msgid "Failed to exec gzip " @@ -1554,11 +1591,11 @@ msgstr "No pude ejecutar gzip" #: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:204 msgid "Corrupted archive" -msgstr "Archivo corrompido" +msgstr "Archivo dañado" #: apt-inst/contrib/extracttar.cc:193 msgid "Tar checksum failed, archive corrupted" -msgstr "No se aprob� la suma de control del tar, archive corrompido" +msgstr "Se produjo un fallo al calcular la suma de control de tar, archive dañado" #: apt-inst/contrib/extracttar.cc:296 #, c-format @@ -1567,24 +1604,24 @@ msgstr "Cabecera del TAR tipo %u desconocida, miembro %s" #: apt-inst/contrib/arfile.cc:70 msgid "Invalid archive signature" -msgstr "Firma del archivo inv�lida" +msgstr "Firma del archivo inválida" #: apt-inst/contrib/arfile.cc:78 msgid "Error reading archive member header" msgstr "Error leyendo la cabecera de miembro del archivo" #: apt-inst/contrib/arfile.cc:90 -#, fuzzy, c-format +#, c-format msgid "Invalid archive member header %s" -msgstr "Cabecera de miembro del archivo inv�lida" +msgstr "Cabecera de miembro del archivo inválida %s" #: apt-inst/contrib/arfile.cc:102 msgid "Invalid archive member header" -msgstr "Cabecera de miembro del archivo inv�lida" +msgstr "Cabecera de miembro del archivo inválida" #: apt-inst/contrib/arfile.cc:128 msgid "Archive is too short" -msgstr "El archivo es muy peque�o" +msgstr "El archivo es muy pequeño" #: apt-inst/contrib/arfile.cc:132 msgid "Failed to read the archive headers" @@ -1592,15 +1629,15 @@ msgstr "No pude leer las cabeceras del archivo" #: apt-inst/filelist.cc:380 msgid "DropNode called on still linked node" -msgstr "DropNode llamado en un nodo todav�a ligado" +msgstr "DropNode llamado en un nodo todavía ligado" #: apt-inst/filelist.cc:412 msgid "Failed to locate the hash element!" -msgstr "�No pude localizar el elemento enlazado!" +msgstr "¡No pude localizar el elemento enlazado!" #: apt-inst/filelist.cc:459 msgid "Failed to allocate diversion" -msgstr "No pude asignar una desviaci�n" +msgstr "No pude asignar una desviación" #: apt-inst/filelist.cc:464 msgid "Internal error in AddDiversion" @@ -1609,22 +1646,22 @@ msgstr "Error interno en AddDiversion" #: apt-inst/filelist.cc:477 #, c-format msgid "Trying to overwrite a diversion, %s -> %s and %s/%s" -msgstr "Tratando de sobreescribir una desviaci�n, %s -> %s y %s/%s" +msgstr "Tratando de sobreescribir una desviación, %s -> %s y %s/%s" #: apt-inst/filelist.cc:506 #, c-format msgid "Double add of diversion %s -> %s" -msgstr "Doble suma de desviaci�n %s -> %s" +msgstr "Doble suma de desviación %s -> %s" #: apt-inst/filelist.cc:549 #, c-format msgid "Duplicate conf file %s/%s" -msgstr "Archivo de configuraci�n duplicado %s/%s" +msgstr "Archivo de configuración duplicado %s/%s" #: apt-inst/dirstream.cc:41 apt-inst/dirstream.cc:46 apt-inst/dirstream.cc:49 #, c-format msgid "Failed to write file %s" -msgstr "Fall� la escritura del archivo %s" +msgstr "Falló la escritura del archivo %s" #: apt-inst/dirstream.cc:92 apt-inst/dirstream.cc:100 #, c-format @@ -1639,26 +1676,26 @@ msgstr "La trayectoria %s es demasiado larga" #: apt-inst/extract.cc:124 #, c-format msgid "Unpacking %s more than once" -msgstr "Desempaquetando %s m�s de una vez" +msgstr "Desempaquetando %s más de una vez" #: apt-inst/extract.cc:134 #, c-format msgid "The directory %s is diverted" -msgstr "El directorio %s est� desviado" +msgstr "El directorio %s está desviado" #: apt-inst/extract.cc:144 #, c-format msgid "The package is trying to write to the diversion target %s/%s" -msgstr "El paquete est� tratando de escribir al blanco desviado %s/%s" +msgstr "El paquete está tratando de escribir al blanco desviado %s/%s" #: apt-inst/extract.cc:154 apt-inst/extract.cc:297 msgid "The diversion path is too long" -msgstr "La trayectoria de desviaci�n es demasiado larga" +msgstr "La trayectoria de desviación es demasiado larga" #: apt-inst/extract.cc:240 #, c-format msgid "The directory %s is being replaced by a non-directory" -msgstr "El directorio %s est� siendo reemplazado por un no-directorio" +msgstr "El directorio %s está siendo reemplazado por un no-directorio" #: apt-inst/extract.cc:280 msgid "Failed to locate node in its hash bucket" @@ -1671,12 +1708,12 @@ msgstr "La trayectoria es muy larga" #: apt-inst/extract.cc:414 #, c-format msgid "Overwrite package match with no version for %s" -msgstr "Sobreescribiendo concordancia del paquete sin versi�n para %s" +msgstr "Sobreescribiendo concordancia del paquete sin versión para %s" #: apt-inst/extract.cc:431 #, c-format msgid "File %s/%s overwrites the one in the package %s" -msgstr "El archivo %s/%s sobreescribe al que est� en el paquete %s" +msgstr "El archivo %s/%s sobreescribe al que está en el paquete %s" #. Only warn if there are no sources.list.d. #. Only warn if there is no sources.list file. @@ -1723,7 +1760,7 @@ msgstr "Leyendo lista de paquetes" #: apt-inst/deb/dpkgdb.cc:176 #, c-format msgid "Failed to change to the admin dir %sinfo" -msgstr "No pude cambiarme al directorio de administraci�n %sinfo" +msgstr "No pude cambiarme al directorio de administración %sinfo" #: apt-inst/deb/dpkgdb.cc:197 apt-inst/deb/dpkgdb.cc:351 #: apt-inst/deb/dpkgdb.cc:444 @@ -1740,10 +1777,7 @@ msgid "" "Failed to open the list file '%sinfo/%s'. If you cannot restore this file " "then make it empty and immediately re-install the same version of the " "package!" -msgstr "" -"No pude abrir el archivo de lista '%sinfo/%s'. �Si no puede restablecer este " -"archivo entonces cree uno vac�o e inmediatamente reinstale la misma versi�n " -"del paquete!" +msgstr "No pude abrir el archivo de lista «%sinfo/%s». ¡Si no puede restablecer este archivo entonces cree uno vacío e inmediatamente reinstale la misma versión del paquete!" #: apt-inst/deb/dpkgdb.cc:225 apt-inst/deb/dpkgdb.cc:238 #, c-format @@ -1757,25 +1791,25 @@ msgstr "Error interno obteniendo un nodo" #: apt-inst/deb/dpkgdb.cc:305 #, c-format msgid "Failed to open the diversions file %sdiversions" -msgstr "No pude abrir el archivo de desviaci�n %sdiversions" +msgstr "No pude abrir el archivo de desviación %sdiversions" #: apt-inst/deb/dpkgdb.cc:320 msgid "The diversion file is corrupted" -msgstr "El archive de desviaci�n esta corrompido" +msgstr "El archive de desviaciones está dañado" #: apt-inst/deb/dpkgdb.cc:327 apt-inst/deb/dpkgdb.cc:332 #: apt-inst/deb/dpkgdb.cc:337 #, c-format msgid "Invalid line in the diversion file: %s" -msgstr "Linea inv�lida en el archivo de desviaci�n: %s" +msgstr "Linea inválida en el archivo de desviación: %s" #: apt-inst/deb/dpkgdb.cc:358 msgid "Internal error adding a diversion" -msgstr "Error interno agregando una desviaci�n" +msgstr "Error interno agregando una desviación" #: apt-inst/deb/dpkgdb.cc:379 msgid "The pkg cache must be initialized first" -msgstr "El cach� del paquete debe de inicializarse primero" +msgstr "El caché del paquete debe de inicializarse primero" #: apt-inst/deb/dpkgdb.cc:439 #, c-format @@ -1785,7 +1819,7 @@ msgstr "No pude encontrar un paquete: Cabecera, desplazo %lu" #: apt-inst/deb/dpkgdb.cc:461 #, c-format msgid "Bad ConfFile section in the status file. Offset %lu" -msgstr "Mala secci�n del ConfFile en el archivo de estado. Desplazo %lu" +msgstr "Mala sección del ConfFile en el archivo de estado. Desplazo %lu" #: apt-inst/deb/dpkgdb.cc:466 #, c-format @@ -1795,12 +1829,12 @@ msgstr "Error leyendo Md5. Desplazo %lu" #: apt-inst/deb/debfile.cc:38 apt-inst/deb/debfile.cc:43 #, c-format msgid "This is not a valid DEB archive, missing '%s' member" -msgstr "Este no es un archivo DEB v�lido, falta el miembro '%s'" +msgstr "Este no es un archivo DEB válido, falta el miembro «%s»" #: apt-inst/deb/debfile.cc:50 #, c-format msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member" -msgstr "Este no es un archivo DEB v�lido, falta el miembro '%s', '%s' o '%s'" +msgstr "Este no es un archivo DEB válido, falta el miembro «%s», «%s» o «%s»" #: apt-inst/deb/debfile.cc:110 #, c-format @@ -1813,7 +1847,7 @@ msgstr "Error interno, no pude localizar el miembro" #: apt-inst/deb/debfile.cc:173 msgid "Failed to locate a valid control file" -msgstr "No pude localizar un archivo de control v�lido" +msgstr "No pude localizar un archivo de control válido" #: apt-inst/deb/debfile.cc:258 msgid "Unparsable control file" @@ -1822,7 +1856,7 @@ msgstr "Archivo de control inanalizable" #: methods/bzip2.cc:65 #, c-format msgid "Couldn't open pipe for %s" -msgstr "No pude abrir una tuber�a para %s" +msgstr "No pude abrir una tubería para %s" #: methods/bzip2.cc:109 #, c-format @@ -1838,7 +1872,7 @@ msgstr "No pude leer" #: methods/bzip2.cc:147 methods/copy.cc:80 methods/gzip.cc:99 #: methods/rred.cc:492 msgid "Failed to set modification time" -msgstr "No pude poner el tiempo de modificaci�n" +msgstr "No pude poner el tiempo de modificación" #: methods/cdrom.cc:199 #, c-format @@ -1850,8 +1884,7 @@ msgid "" "Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update " "cannot be used to add new CD-ROMs" msgstr "" -"Por favor utilice apt-cdrom para hacer que APT reconozca este CD.\n" -"apt-get update no se puede usar para agregar nuevos CDs" +"Por favor, utilice «apt-cdrom» para hacer que APT reconozca este CD. No puede utilizar «apt-get update» para añadir nuevos CDs" #: methods/cdrom.cc:218 msgid "Wrong CD-ROM" @@ -1860,7 +1893,7 @@ msgstr "CD equivocado" #: methods/cdrom.cc:245 #, c-format msgid "Unable to unmount the CD-ROM in %s, it may still be in use." -msgstr "No pude desmontar el CD-ROM de %s, tal vez todav�a este en uso." +msgstr "No pude desmontar el CD-ROM de %s, tal vez todavía este en uso." #: methods/cdrom.cc:250 msgid "Disk not found." @@ -1872,7 +1905,7 @@ msgstr "Fichero no encontrado" #: methods/file.cc:44 msgid "Invalid URI, local URIS must not start with //" -msgstr "URI inv�lido, los URIS locales no deben de empezar con //" +msgstr "URI inválido, los URIS locales no deben de empezar con //" #. Login must be before getpeername otherwise dante won't work. #: methods/ftp.cc:168 @@ -1890,43 +1923,42 @@ msgstr "Imposible determinar el nombre local" #: methods/ftp.cc:210 methods/ftp.cc:238 #, c-format msgid "The server refused the connection and said: %s" -msgstr "El servidor rechaz� nuestra conexi�n y dijo: %s" +msgstr "El servidor rechazó nuestra conexión y dijo: %s" #: methods/ftp.cc:216 #, c-format msgid "USER failed, server said: %s" -msgstr "Usuario (USER) fall�, el servidor dijo: %s" +msgstr "Usuario (USER) falló, el servidor dijo: %s" #: methods/ftp.cc:223 #, c-format msgid "PASS failed, server said: %s" -msgstr "Clave (PASS) fall�, el servidor dijo: %s" +msgstr "Clave (PASS) falló, el servidor dijo: %s" #: methods/ftp.cc:243 msgid "" "A proxy server was specified but no login script, Acquire::ftp::ProxyLogin " "is empty." msgstr "" -"Se especific� un servidor proxy pero no un script de entrada,\n" -"Acquire::ftp::ProxyLogin est� vac�o." +"Se especificó un servidor proxy pero no un script de entrada, «Acquire::ftp::ProxyLogin» está vacío." #: methods/ftp.cc:271 #, c-format msgid "Login script command '%s' failed, server said: %s" -msgstr "Fall� la orden '%s' del script de entrada, el servidor dijo: %s" +msgstr "Falló la orden «%s» del script de entrada, el servidor dijo: %s" #: methods/ftp.cc:297 #, c-format msgid "TYPE failed, server said: %s" -msgstr "Tipo (TYPE) fall�, el servidor dijo: %s" +msgstr "Tipo (TYPE) falló, el servidor dijo: %s" #: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226 msgid "Connection timeout" -msgstr "La conexi�n expir�" +msgstr "La conexión expiró" #: methods/ftp.cc:341 msgid "Server closed the connection" -msgstr "El servidor cerr� la conexi�n" +msgstr "El servidor cerró la conexión" #: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:784 methods/rsh.cc:190 msgid "Read error" @@ -1934,11 +1966,11 @@ msgstr "Error de lectura" #: methods/ftp.cc:351 methods/rsh.cc:197 msgid "A response overflowed the buffer." -msgstr "Una respuesta desbord� el buffer." +msgstr "No pude crear un socket." #: methods/ftp.cc:368 methods/ftp.cc:380 msgid "Protocol corruption" -msgstr "Corrupci�n del protocolo" +msgstr "Fallo del protocolo" #: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:826 methods/rsh.cc:232 msgid "Write error" @@ -1950,7 +1982,7 @@ msgstr "No pude crear un socket" #: methods/ftp.cc:703 msgid "Could not connect data socket, connection timed out" -msgstr "No pude conectar el socket de datos, expir� el tiempo de conexi�n" +msgstr "No pude conectar el socket de datos, expiró el tiempo de conexión" #: methods/ftp.cc:709 msgid "Could not connect passive socket." @@ -1979,38 +2011,38 @@ msgstr "No pude mandar la orden PORT" #: methods/ftp.cc:794 #, c-format msgid "Unknown address family %u (AF_*)" -msgstr "Direcci�n de familia %u desconocida (AF_*)" +msgstr "Dirección de familia %u desconocida (AF_*)" #: methods/ftp.cc:803 #, c-format msgid "EPRT failed, server said: %s" -msgstr "EPRT fall�, el servidor dijo: %s" +msgstr "EPRT falló, el servidor dijo: %s" #: methods/ftp.cc:823 msgid "Data socket connect timed out" -msgstr "Expir� conexi�n a socket de datos" +msgstr "Expiró conexión a socket de datos" #: methods/ftp.cc:830 msgid "Unable to accept connection" -msgstr "No pude aceptar la conexi�n" +msgstr "No pude aceptar la conexión" #: methods/ftp.cc:869 methods/http.cc:1006 methods/rsh.cc:302 msgid "Problem hashing file" -msgstr "Hay problemas enlazando fichero" +msgstr "Se produjo un problema al hacer un hash del archivo" #: methods/ftp.cc:882 #, c-format msgid "Unable to fetch file, server said '%s'" -msgstr "Imposible traer archivo, el servidor dijo '%s'" +msgstr "Imposible traer archivo, el servidor dijo «%s»" #: methods/ftp.cc:897 methods/rsh.cc:321 msgid "Data socket timed out" -msgstr "Expir� el socket de datos" +msgstr "Expiró el socket de datos" #: methods/ftp.cc:927 #, c-format msgid "Data transfer failed, server said '%s'" -msgstr "Fall� transferencia de datos, el servidor dijo '%s'" +msgstr "Falló transferencia de datos, el servidor dijo «%s»" #. Get the files information #: methods/ftp.cc:1004 @@ -2039,12 +2071,12 @@ msgstr "No pude crear un socket para %s (f=%u t=%u p=%u)" #: methods/connect.cc:95 #, c-format msgid "Cannot initiate the connection to %s:%s (%s)." -msgstr "No puedo iniciar la conexi�n a %s:%s (%s)." +msgstr "No puedo iniciar la conexión a %s:%s (%s)." #: methods/connect.cc:103 #, c-format msgid "Could not connect to %s:%s (%s), connection timed out" -msgstr "No pude conectarme a %s:%s (%s), expir� tiempo para conexi�n" +msgstr "No pude conectarme a %s:%s (%s), expiró tiempo para conexión" #: methods/connect.cc:121 #, c-format @@ -2061,44 +2093,42 @@ msgstr "Conectando a %s" #: methods/connect.cc:168 methods/connect.cc:187 #, c-format msgid "Could not resolve '%s'" -msgstr "No pude resolver '%s'" +msgstr "No se pudo resolver «%s»" #: methods/connect.cc:193 #, c-format msgid "Temporary failure resolving '%s'" -msgstr "Fallo temporal al resolver '%s'" +msgstr "Fallo temporal al resolver «%s»" #: methods/connect.cc:196 -#, fuzzy, c-format +#, c-format msgid "Something wicked happened resolving '%s:%s' (%i - %s)" -msgstr "Algo raro pas� resolviendo '%s:%s' (%i)" +msgstr "Algo raro pasó al resolver «%s:%s» (%i - %s)" #: methods/connect.cc:243 -#, fuzzy, c-format +#, c-format msgid "Unable to connect to %s:%s:" -msgstr "No pude conectarme a %s %s:" +msgstr "No se pudo conectar a %s:%s:" #. TRANSLATOR: %s is the trusted keyring parts directory #: methods/gpgv.cc:71 -#, fuzzy, c-format +#, c-format msgid "No keyring installed in %s." -msgstr "Abortando la instalaci�n." +msgstr "No se instaló ningún anillo de claves %s." #: methods/gpgv.cc:163 msgid "" "Internal error: Good signature, but could not determine key fingerprint?!" msgstr "" -"Error interno: Firma correcta, pero no se pudo determinar su huella digital?!" +"Error interno: Firma correcta, ¡¿pero no se pudo determinar su huella digital?!" #: methods/gpgv.cc:168 msgid "At least one invalid signature was encountered." -msgstr "Se encontr� al menos una firma inv�lida." +msgstr "Se encontró al menos una firma inválida." #: methods/gpgv.cc:172 -#, fuzzy msgid "Could not execute 'gpgv' to verify signature (is gpgv installed?)" -msgstr "" -"No se pudo ejecutar '%s' para verificar la firma (�est� instalado gpgv?)" +msgstr "No se pudo ejecutar «gpgv» para verificar la firma (¿está instalado gpgv?)" #: methods/gpgv.cc:177 msgid "Unknown error executing gpgv" @@ -2106,15 +2136,15 @@ msgstr "Error desconocido ejecutando gpgv" #: methods/gpgv.cc:211 methods/gpgv.cc:218 msgid "The following signatures were invalid:\n" -msgstr "Las siguientes firms fueron inv�lidas:\n" +msgstr "Las siguientes firms fueron inválidas:\n" #: methods/gpgv.cc:225 msgid "" "The following signatures couldn't be verified because the public key is not " "available:\n" msgstr "" -"Las firmas siguientes no se pudieron verificar porque su llave p�blica no " -"est� disponible:\n" +"Las firmas siguientes no se pudieron verificar porque su llave pública no " +"está disponible:\n" #: methods/http.cc:385 msgid "Waiting for headers" @@ -2123,27 +2153,27 @@ msgstr "Esperando las cabeceras" #: methods/http.cc:531 #, c-format msgid "Got a single header line over %u chars" -msgstr "Obtuve una sola l�nea de cabecera arriba de %u caracteres" +msgstr "Obtuve una sola línea de cabecera arriba de %u caracteres" #: methods/http.cc:539 msgid "Bad header line" -msgstr "Mala l�nea de cabecera" +msgstr "Mala línea de cabecera" #: methods/http.cc:564 methods/http.cc:571 msgid "The HTTP server sent an invalid reply header" -msgstr "El servidor de http envi� una cabecera de respuesta inv�lida" +msgstr "El servidor de http envió una cabecera de respuesta inválida" #: methods/http.cc:600 msgid "The HTTP server sent an invalid Content-Length header" -msgstr "El servidor de http envi� una cabecera de Content-Length inv�lida" +msgstr "El servidor de http envió una cabecera de Content-Length inválida" #: methods/http.cc:615 msgid "The HTTP server sent an invalid Content-Range header" -msgstr "El servidor de http envi� una cabecera de Content-Range inv�lida" +msgstr "El servidor de http envió una cabecera de Content-Range inválida" #: methods/http.cc:617 msgid "This HTTP server has broken range support" -msgstr "�ste servidor de http tiene el soporte de alcance roto" +msgstr "Éste servidor de http tiene el soporte de alcance roto" #: methods/http.cc:641 msgid "Unknown date format" @@ -2151,11 +2181,11 @@ msgstr "Formato de fecha desconocido" #: methods/http.cc:799 msgid "Select failed" -msgstr "Fall� la selecci�n" +msgstr "Falló la selección" #: methods/http.cc:804 msgid "Connection timed out" -msgstr "Expir� la conexi�n" +msgstr "Expiró la conexión" #: methods/http.cc:827 msgid "Error writing to output file" @@ -2171,7 +2201,7 @@ msgstr "Error escribiendo al archivo" #: methods/http.cc:900 msgid "Error reading from server. Remote end closed connection" -msgstr "Error leyendo del servidor, el lado remoto cerr� la conexi�n." +msgstr "Error leyendo del servidor, el lado remoto cerró la conexión." #: methods/http.cc:902 msgid "Error reading from server" @@ -2179,7 +2209,7 @@ msgstr "Error leyendo del servidor" #: methods/http.cc:991 apt-pkg/contrib/mmap.cc:281 msgid "Failed to truncate file" -msgstr "Fall� al truncar el archivo" +msgstr "Falló al truncar el archivo" #: methods/http.cc:1160 msgid "Bad header data" @@ -2187,7 +2217,7 @@ msgstr "Mala cabecera Data" #: methods/http.cc:1177 methods/http.cc:1232 msgid "Connection failed" -msgstr "Fallo la conexi�n" +msgstr "Fallo la conexión" #: methods/http.cc:1324 msgid "Internal error" @@ -2195,12 +2225,12 @@ msgstr "Error interno" #: apt-pkg/contrib/mmap.cc:77 msgid "Can't mmap an empty file" -msgstr "No puedo hacer mmap de un fichero vac�o" +msgstr "No puedo hacer mmap de un fichero vacío" #: apt-pkg/contrib/mmap.cc:89 -#, fuzzy, c-format +#, c-format msgid "Couldn't duplicate file descriptor %i" -msgstr "No pude abrir una tuber�a para %s" +msgstr "No pude duplicar el descriptor de fichero %i" #: apt-pkg/contrib/mmap.cc:97 apt-pkg/contrib/mmap.cc:250 #, c-format @@ -2208,72 +2238,70 @@ msgid "Couldn't make mmap of %lu bytes" msgstr "No pude hacer mmap de %lu bytes" #: apt-pkg/contrib/mmap.cc:124 -#, fuzzy msgid "Unable to close mmap" -msgstr "No se pudo abrir %s" +msgstr "No se pudo cerrar «mmap»" #: apt-pkg/contrib/mmap.cc:152 apt-pkg/contrib/mmap.cc:180 -#, fuzzy msgid "Unable to synchronize mmap" -msgstr "No pude invocar " +msgstr "No pude sincronizar «mmap»" #: apt-pkg/contrib/mmap.cc:300 #, c-format msgid "" "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. " "Current value: %lu. (man 5 apt.conf)" -msgstr "" +msgstr "La asignación dinámica MMap no tiene más espacio. Por favor, incrementa el valor de «APT::Cache-Limit». El valor actual es: %lu (man 5 apt.conf)" #: apt-pkg/contrib/mmap.cc:399 #, c-format msgid "" "Unable to increase the size of the MMap as the limit of %lu bytes is already " "reached." -msgstr "" +msgstr "No se pudo incrementar el tamaño del MMap dado que se ha alcanzado ya el límite de %lu bytes." #: apt-pkg/contrib/mmap.cc:402 msgid "" "Unable to increase size of the MMap as automatic growing is disabled by user." -msgstr "" +msgstr "No se pudo incrementar el tamaño de MMap dado que el usuario ha deshabilitado el crecimiento automático." #. d means days, h means hours, min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc:371 #, c-format msgid "%lid %lih %limin %lis" -msgstr "" +msgstr "%lid %lih %limin. %liseg." #. h means hours, min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc:378 #, c-format msgid "%lih %limin %lis" -msgstr "" +msgstr "%lih %limin. %liseg." #. min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc:385 #, c-format msgid "%limin %lis" -msgstr "" +msgstr "%limin. %liseg." #. s means seconds #: apt-pkg/contrib/strutl.cc:390 #, c-format msgid "%lis" -msgstr "" +msgstr "%liseg." #: apt-pkg/contrib/strutl.cc:1119 #, c-format msgid "Selection %s not found" -msgstr "Selecci�n %s no encontrada" +msgstr "Selección %s no encontrada" #: apt-pkg/contrib/configuration.cc:452 #, c-format msgid "Unrecognized type abbreviation: '%c'" -msgstr "Tipo de abreviaci�n no reconocida: '%c'" +msgstr "Tipo de abreviación no reconocida: «%c»" #: apt-pkg/contrib/configuration.cc:510 #, c-format msgid "Opening configuration file %s" -msgstr "Abriendo fichero de configuraci�n %s" +msgstr "Abriendo fichero de configuración %s" #: apt-pkg/contrib/configuration.cc:678 #, c-format @@ -2288,14 +2316,13 @@ msgstr "Error de sintaxis %s:%u: Marca mal formada" #: apt-pkg/contrib/configuration.cc:714 #, c-format msgid "Syntax error %s:%u: Extra junk after value" -msgstr "Error de sintaxis %s:%u: Basura extra despu�s del valor" +msgstr "Error de sintaxis %s:%u: Basura extra después del valor" #: apt-pkg/contrib/configuration.cc:754 #, c-format msgid "Syntax error %s:%u: Directives can only be done at the top level" msgstr "" -"Error de sintaxis %s:%u: Las directivas s�lo se pueden poner\n" -"en el primer nivel" +"Error de sintaxis %s:%u: Las directivas sólo se pueden poner en el primer nivel" #: apt-pkg/contrib/configuration.cc:761 #, c-format @@ -2305,19 +2332,17 @@ msgstr "Error de sintaxis %s:%u: Demasiadas inclusiones anidadas" #: apt-pkg/contrib/configuration.cc:765 apt-pkg/contrib/configuration.cc:770 #, c-format msgid "Syntax error %s:%u: Included from here" -msgstr "Error de sintaxis %s:%u: Incluido desde aqu�" +msgstr "Error de sintaxis %s:%u: Incluido desde aquí" #: apt-pkg/contrib/configuration.cc:774 #, c-format msgid "Syntax error %s:%u: Unsupported directive '%s'" -msgstr "Error de sintaxis %s:%u: Directiva '%s' no soportada" +msgstr "Error de sintaxis %s:%u: Directiva «%s» no soportada" #: apt-pkg/contrib/configuration.cc:777 -#, fuzzy, c-format +#, c-format msgid "Syntax error %s:%u: clear directive requires an option tree as argument" -msgstr "" -"Error de sintaxis %s:%u: Las directivas s�lo se pueden poner\n" -"en el primer nivel" +msgstr "Error de sintaxis %s:%u: la directiva «clear» tiene que incluir un árbol de opciones como argumento" #: apt-pkg/contrib/configuration.cc:827 #, c-format @@ -2327,7 +2352,7 @@ msgstr "Error de sintaxis %s:%u: Basura extra al final del archivo" #: apt-pkg/contrib/progress.cc:153 #, c-format msgid "%c%s... Error!" -msgstr "%c%s... �Error!" +msgstr "%c%s... ¡Error!" #: apt-pkg/contrib/progress.cc:155 #, c-format @@ -2337,40 +2362,40 @@ msgstr "%c%s... Hecho" #: apt-pkg/contrib/cmndline.cc:77 #, c-format msgid "Command line option '%c' [from %s] is not known." -msgstr "No se conoce la opci�n de l�nea de �rdenes '%c' [ de %s]" +msgstr "No se conoce la opción de línea de órdenes «%c» [de %s]." #: 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 "No se entiende la opci�n de l�nea de �rdenes %s" +msgstr "No se entiende la opción de línea de órdenes %s" #: apt-pkg/contrib/cmndline.cc:124 #, c-format msgid "Command line option %s is not boolean" -msgstr "La opci�n de l�nea de �rdenes %s no es un booleano" +msgstr "La opción de línea de órdenes %s no es un booleano" #: apt-pkg/contrib/cmndline.cc:165 apt-pkg/contrib/cmndline.cc:186 #, c-format msgid "Option %s requires an argument." -msgstr "La opci�n %s necesita un argumento." +msgstr "La opción %s necesita un argumento." #: apt-pkg/contrib/cmndline.cc:200 apt-pkg/contrib/cmndline.cc:206 #, c-format msgid "Option %s: Configuration item specification must have an =<val>." msgstr "" -"Opci�n %s: La especificaci�n del elemento de configuraci�n debe tener un " +"Opción %s: La especificación del elemento de configuración debe tener un " "=<val>." #: apt-pkg/contrib/cmndline.cc:236 #, c-format msgid "Option %s requires an integer argument, not '%s'" -msgstr "La opci�n %s exige un argumento entero, no '%s'" +msgstr "La opción %s exige un argumento entero, no «%s»" #: apt-pkg/contrib/cmndline.cc:267 #, c-format msgid "Option '%s' is too long" -msgstr "Opci�n '%s' demasiado larga" +msgstr "Opción «%s» demasiado larga" #: apt-pkg/contrib/cmndline.cc:300 #, c-format @@ -2380,12 +2405,12 @@ msgstr "El sentido %s no se entiende, pruebe verdadero o falso." #: apt-pkg/contrib/cmndline.cc:350 #, c-format msgid "Invalid operation %s" -msgstr "Operaci�n inv�lida: %s" +msgstr "Operación inválida: %s" #: apt-pkg/contrib/cdromutl.cc:52 #, c-format msgid "Unable to stat the mount point %s" -msgstr "No se puede obtener informaci�n del punto de montaje %s" +msgstr "No se puede obtener información del punto de montaje %s" #: apt-pkg/contrib/cdromutl.cc:175 apt-pkg/contrib/cdromutl.cc:209 #: apt-pkg/acquire.cc:456 apt-pkg/acquire.cc:481 apt-pkg/clean.cc:39 @@ -2401,12 +2426,12 @@ msgstr "No pude montar el cdrom" #: apt-pkg/contrib/fileutl.cc:154 #, c-format msgid "Not using locking for read only lock file %s" -msgstr "No se utiliza bloqueos para el fichero de bloqueo de s�lo lectura %s" +msgstr "No se utiliza bloqueos para el fichero de bloqueo de sólo lectura %s" #: apt-pkg/contrib/fileutl.cc:159 #, c-format msgid "Could not open lock file %s" -msgstr "No se pudo abrir el fichero de bloqueo '%s'" +msgstr "No se pudo abrir el fichero de bloqueo «%s»" #: apt-pkg/contrib/fileutl.cc:177 #, c-format @@ -2421,27 +2446,27 @@ msgstr "No se pudo bloquear %s" #: apt-pkg/contrib/fileutl.cc:643 #, c-format msgid "Waited for %s but it wasn't there" -msgstr "Esperaba %s pero no estaba all�" +msgstr "Esperaba %s pero no estaba allí" #: apt-pkg/contrib/fileutl.cc:655 #, c-format msgid "Sub-process %s received a segmentation fault." -msgstr "El subproceso %s recibi� un fallo de segmentaci�n." +msgstr "El subproceso %s recibió un fallo de segmentación." #: apt-pkg/contrib/fileutl.cc:657 -#, fuzzy, c-format +#, c-format msgid "Sub-process %s received signal %u." -msgstr "El subproceso %s recibi� un fallo de segmentaci�n." +msgstr "El subproceso %s recibió la señal %u." #: apt-pkg/contrib/fileutl.cc:661 #, c-format msgid "Sub-process %s returned an error code (%u)" -msgstr "El subproceso %s devolvi� un c�digo de error (%u)" +msgstr "El subproceso %s devolvió un código de error (%u)" #: apt-pkg/contrib/fileutl.cc:663 #, c-format msgid "Sub-process %s exited unexpectedly" -msgstr "El subproceso %s termin� de forma inesperada" +msgstr "El subproceso %s terminó de forma inesperada" #: apt-pkg/contrib/fileutl.cc:728 #, c-format @@ -2449,64 +2474,64 @@ msgid "Could not open file %s" msgstr "No pude abrir el fichero %s" #: apt-pkg/contrib/fileutl.cc:745 -#, fuzzy, c-format +#, c-format msgid "Could not open file descriptor %d" -msgstr "No pude abrir una tuber�a para %s" +msgstr "No se pudo abrir el descriptor de fichero %d" #: apt-pkg/contrib/fileutl.cc:805 #, c-format msgid "read, still have %lu to read but none left" -msgstr "le�dos, todav�a deb�a leer %lu pero no queda nada" +msgstr "leídos, todavía debía leer %lu pero no queda nada" #: apt-pkg/contrib/fileutl.cc:838 #, c-format msgid "write, still have %lu to write but couldn't" -msgstr "escritos, todav�a ten�a que escribir %lu pero no pude hacerlo" +msgstr "escritos, todavía tenía que escribir %lu pero no pude hacerlo" -#: apt-pkg/contrib/fileutl.cc:937 -#, fuzzy, c-format +#: apt-pkg/contrib/fileutl.cc:967 +#, c-format msgid "Problem closing the gzip file %s" -msgstr "Problemas cerrando el archivo" +msgstr "Se produjo un problema al cerrar el fichero gzip %s" -#: apt-pkg/contrib/fileutl.cc:940 -#, fuzzy, c-format +#: apt-pkg/contrib/fileutl.cc:970 +#, c-format msgid "Problem closing the file %s" -msgstr "Problemas cerrando el archivo" +msgstr "Se produjo un problema al cerrar el fichero %s" -#: apt-pkg/contrib/fileutl.cc:945 -#, fuzzy, c-format +#: apt-pkg/contrib/fileutl.cc:975 +#, c-format msgid "Problem renaming the file %s to %s" -msgstr "Hay problemas sincronizando el fichero" +msgstr "Se produjo un problema al renombrar el fichero %s a %s" -#: apt-pkg/contrib/fileutl.cc:956 -#, fuzzy, c-format +#: apt-pkg/contrib/fileutl.cc:986 +#, c-format msgid "Problem unlinking the file %s" -msgstr "Hay problemas desligando el fichero %s" +msgstr "Se produjo un problema al desligar el fichero %s" -#: apt-pkg/contrib/fileutl.cc:969 +#: apt-pkg/contrib/fileutl.cc:999 msgid "Problem syncing the file" -msgstr "Hay problemas sincronizando el fichero" +msgstr "Se produjo un problema al sincronizar el fichero" #: apt-pkg/pkgcache.cc:145 msgid "Empty package cache" -msgstr "Cach� de paquetes vac�a." +msgstr "Caché de paquetes vacía." #: apt-pkg/pkgcache.cc:151 msgid "The package cache file is corrupted" -msgstr "El archivo de cach� de paquetes esta corrompido" +msgstr "El archivo de caché de paquetes está dañado" #: apt-pkg/pkgcache.cc:156 msgid "The package cache file is an incompatible version" -msgstr "El archivo de cach� de paquetes es una versi�n incompatible" +msgstr "El archivo de caché de paquetes es una versión incompatible" #: apt-pkg/pkgcache.cc:161 #, c-format msgid "This APT does not support the versioning system '%s'" -msgstr "Este APT no soporta el sistema de versiones '%s'" +msgstr "Esta versión de APT no soporta el sistema de versiones «%s»" #: apt-pkg/pkgcache.cc:166 msgid "The package cache was built for a different architecture" -msgstr "La cach� de paquetes se hab�a creado para una arquitectura diferente" +msgstr "La caché de paquetes se había creado para una arquitectura diferente" #: apt-pkg/pkgcache.cc:293 msgid "Depends" @@ -2542,7 +2567,7 @@ msgstr "Rompe" #: apt-pkg/pkgcache.cc:295 msgid "Enhances" -msgstr "" +msgstr "Mejora" #: apt-pkg/pkgcache.cc:306 msgid "important" @@ -2554,7 +2579,7 @@ msgstr "requiere" #: apt-pkg/pkgcache.cc:306 msgid "standard" -msgstr "est�ndar" +msgstr "estándar" #: apt-pkg/pkgcache.cc:307 msgid "optional" @@ -2566,7 +2591,7 @@ msgstr "extra" #: apt-pkg/depcache.cc:124 apt-pkg/depcache.cc:153 msgid "Building dependency tree" -msgstr "Creando �rbol de dependencias" +msgstr "Creando árbol de dependencias" #: apt-pkg/depcache.cc:125 msgid "Candidate versions" @@ -2574,11 +2599,11 @@ msgstr "Versiones candidatas" #: apt-pkg/depcache.cc:154 msgid "Dependency generation" -msgstr "Generaci�n de dependencias" +msgstr "Generación de dependencias" #: apt-pkg/depcache.cc:174 apt-pkg/depcache.cc:207 apt-pkg/depcache.cc:211 msgid "Reading state information" -msgstr "Leyendo la informaci�n de estado" +msgstr "Leyendo la información de estado" #: apt-pkg/depcache.cc:236 #, c-format @@ -2588,12 +2613,12 @@ msgstr "No se pudo abrir el fichero de estado %s" #: apt-pkg/depcache.cc:242 #, c-format msgid "Failed to write temporary StateFile %s" -msgstr "Fall� la escritura del fichero de estado temporal %s" +msgstr "Falló la escritura del fichero de estado temporal %s" #: apt-pkg/depcache.cc:921 -#, fuzzy, c-format +#, c-format msgid "Internal error, group '%s' has no installable pseudo package" -msgstr "Error interno, no pude leer un r�cord del paquete" +msgstr "Error interno, el grupo «%s» no tiene ningún pseudo-paquete instalable" #: apt-pkg/tagfile.cc:102 #, c-format @@ -2606,54 +2631,54 @@ msgid "Unable to parse package file %s (2)" msgstr "No se pudo tratar el archivo de paquetes %s (2)" #: apt-pkg/sourcelist.cc:92 -#, fuzzy, c-format +#, c-format msgid "Malformed line %lu in source list %s ([option] unparseable)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (an�lisis de dist)" +msgstr "Línea %lu mal formada en la lista de fuentes %s ([opción] no parseable)" #: apt-pkg/sourcelist.cc:95 -#, fuzzy, c-format +#, c-format msgid "Malformed line %lu in source list %s ([option] too short)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (dist)" +msgstr "Línea %lu mal formada en la lista de fuentes %s ([opción] demasiado corta)" #: apt-pkg/sourcelist.cc:106 -#, fuzzy, c-format +#, c-format msgid "Malformed line %lu in source list %s ([%s] is not an assignment)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (an�lisis de dist)" +msgstr "Línea %lu mal formada en la lista de fuentes %s ([%s] no es una asignación)" #: apt-pkg/sourcelist.cc:112 -#, fuzzy, c-format +#, c-format msgid "Malformed line %lu in source list %s ([%s] has no key)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (an�lisis de dist)" +msgstr "Línea %lu mal formada en la lista de fuentes %s (no hay clave para [%s])" #: apt-pkg/sourcelist.cc:115 -#, fuzzy, c-format +#, c-format msgid "Malformed line %lu in source list %s ([%s] key %s has no value)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (an�lisis de dist)" +msgstr "Línea %lu mal formada en la lista de fuentes %s ([%s] la clave %s no tiene asociado un valor)" #: apt-pkg/sourcelist.cc:128 #, c-format msgid "Malformed line %lu in source list %s (URI)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (URI)" +msgstr "Línea %lu mal formada en la lista de fuentes %s (URI)" #: apt-pkg/sourcelist.cc:130 #, c-format msgid "Malformed line %lu in source list %s (dist)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (dist)" +msgstr "Línea %lu mal formada en la lista de fuentes %s (dist)" #: apt-pkg/sourcelist.cc:133 #, c-format msgid "Malformed line %lu in source list %s (URI parse)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (an�lisis de URI)" +msgstr "Línea %lu mal formada en la lista de fuentes %s (análisis de URI)" #: apt-pkg/sourcelist.cc:139 #, c-format msgid "Malformed line %lu in source list %s (absolute dist)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (dist absoluta)" +msgstr "Línea %lu mal formada en la lista de fuentes %s (dist absoluta)" #: apt-pkg/sourcelist.cc:146 #, c-format msgid "Malformed line %lu in source list %s (dist parse)" -msgstr "L�nea %lu mal formada en lista de fuentes %s (an�lisis de dist)" +msgstr "Línea %lu mal formada en la lista de fuentes %s (análisis de dist)" #: apt-pkg/sourcelist.cc:244 #, c-format @@ -2663,24 +2688,24 @@ msgstr "Abriendo %s" #: apt-pkg/sourcelist.cc:261 apt-pkg/cdrom.cc:438 #, c-format msgid "Line %u too long in source list %s." -msgstr "L�nea %u demasiado larga en la lista de fuentes %s." +msgstr "Línea %u demasiado larga en la lista de fuentes %s." #: apt-pkg/sourcelist.cc:281 #, c-format msgid "Malformed line %u in source list %s (type)" -msgstr "L�nea %u mal formada en lista de fuentes %s (tipo)" +msgstr "Línea %u mal formada en la lista de fuentes %s (tipo)" #: apt-pkg/sourcelist.cc:285 #, c-format msgid "Type '%s' is not known on line %u in source list %s" -msgstr "Tipo '%s' desconocido en la l�nea %u de lista de fuentes %s" +msgstr "Tipo «%s» desconocido en la línea %u de lista de fuentes %s" #: apt-pkg/packagemanager.cc:331 apt-pkg/packagemanager.cc:616 #, c-format msgid "" "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf " "under APT::Immediate-Configure for details. (%d)" -msgstr "" +msgstr "No se pudo realizar la configuración inmediata de «%s». Consulte la página de manual con «man 5 apt.conf» bajo «APT::Immediate-Configure» para más información. (%d)" #: apt-pkg/packagemanager.cc:452 #, c-format @@ -2689,22 +2714,22 @@ msgid "" "package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if " "you really want to do it, activate the APT::Force-LoopBreak option." msgstr "" -"Esta ejecuci�n de la instalaci�n requiere eliminar temporalmente el \n" -"paquete esencial %s debido a un bucle de Conflictos/Pre-Dependencias. \n" -"Esto generalmente es malo, pero si realmente quiere hacerlo, active \n" -"la opci�n APT::Force-LoopBreak." +"Esta ejecución de la instalación requiere eliminar temporalmente el " +"paquete esencial %s debido a un bucle de Conflictos/Pre-Dependencias. " +"Esto generalmente es malo, pero si realmente quiere hacerlo, active " +"la opción |APT::Force-LoopBreak»." #: apt-pkg/packagemanager.cc:495 #, c-format msgid "" "Could not perform immediate configuration on already unpacked '%s'. Please " "see man 5 apt.conf under APT::Immediate-Configure for details." -msgstr "" +msgstr "No se pudo realizar la configuración inmediata sobre el paquete ya desempaquetado «%s». Consulte la página de manual con «man 5 apt.conf» bajo «APT::Immediate-Configure» para más información." #: apt-pkg/pkgrecords.cc:32 #, c-format msgid "Index file type '%s' is not supported" -msgstr "No se da soporte para el tipo de archivo de �ndice '%s'" +msgstr "No se da soporte para el tipo de archivo de índice «%s»" #: apt-pkg/algorithms.cc:292 #, c-format @@ -2712,44 +2737,44 @@ msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." msgstr "" "El paquete %s necesita ser reinstalado, pero no se encuentra un archivo para " -"�ste." +"éste." -#: apt-pkg/algorithms.cc:1210 +#: apt-pkg/algorithms.cc:1218 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." msgstr "" -"Error, pkgProblemResolver::Resolve gener� cortes, esto puede haber sido " +"Error, pkgProblemResolver::Resolve generó cortes, esto puede haber sido " "causado por paquetes retenidos." -#: apt-pkg/algorithms.cc:1212 +#: apt-pkg/algorithms.cc:1220 msgid "Unable to correct problems, you have held broken packages." msgstr "" -"No se pudieron corregir los problemas, usted ha retenido paquetes\n" +"No se pudieron corregir los problemas, usted ha retenido paquetes " "rotos." -#: apt-pkg/algorithms.cc:1488 apt-pkg/algorithms.cc:1490 +#: apt-pkg/algorithms.cc:1496 apt-pkg/algorithms.cc:1498 msgid "" "Some index files failed to download, they have been ignored, or old ones " "used instead." msgstr "" -"Algunos archivos de �ndice no se han podido descargar, se han ignorado,\n" +"No se han podido descargar algunos archivos de índice, se han ignorado, " "o se ha utilizado unos antiguos en su lugar." #: apt-pkg/acquire.cc:79 -#, fuzzy, c-format +#, c-format msgid "List directory %spartial is missing." msgstr "Falta el directorio de listas %spartial." #: apt-pkg/acquire.cc:83 -#, fuzzy, c-format +#, c-format msgid "Archives directory %spartial is missing." msgstr "Falta el directorio de archivos %spartial." #: apt-pkg/acquire.cc:91 -#, fuzzy, c-format +#, c-format msgid "Unable to lock directory %s" -msgstr "No se pudo bloquear el directorio de listas" +msgstr "No se pudo bloquear el directorio %s" #. only show the ETA if it makes sense #. two days @@ -2766,22 +2791,22 @@ msgstr "Descargando fichero %li de %li" #: apt-pkg/acquire-worker.cc:110 #, c-format msgid "The method driver %s could not be found." -msgstr "No se pudo encontrar el m�todo %s." +msgstr "No se pudo encontrar el método %s." #: apt-pkg/acquire-worker.cc:159 #, c-format msgid "Method %s did not start correctly" -msgstr "El m�todo %s no se inici� correctamente" +msgstr "El método %s no se inició correctamente" #: apt-pkg/acquire-worker.cc:413 #, c-format msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." -msgstr "Por favor, inserte el disco �%s� en la unidad �%s� y presione Intro" +msgstr "Por favor, inserte el disco «%s» en la unidad «%s» y pulse Intro." #: apt-pkg/init.cc:143 #, c-format msgid "Packaging system '%s' is not supported" -msgstr "El sistema de paquetes '%s' no est� soportado" +msgstr "No está soportado el sistema de paquetes «%s»" #: apt-pkg/init.cc:159 msgid "Unable to determine a suitable packaging system type" @@ -2794,7 +2819,7 @@ msgstr "No se pudo leer %s." #: apt-pkg/srcrecords.cc:44 msgid "You must put some 'source' URIs in your sources.list" -msgstr "Debe poner algunos URIs 'fuente' en su sources.list" +msgstr "Debe poner algunos URIs fuente («source») en su sources.list" #: apt-pkg/cachefile.cc:84 msgid "The package lists or status file could not be parsed or opened." @@ -2804,17 +2829,16 @@ msgstr "" #: apt-pkg/cachefile.cc:88 msgid "You may want to run apt-get update to correct these problems" -msgstr "Tal vez quiera ejecutar 'apt-get update' para corregir estos problemas" +msgstr "Tal vez quiera ejecutar «apt-get update» para corregir estos problemas" #: apt-pkg/cachefile.cc:106 msgid "The list of sources could not be read." msgstr "No se pudieron leer las listas de fuentes." #: apt-pkg/policy.cc:344 -#, fuzzy, c-format +#, c-format msgid "Invalid record in the preferences file %s, no Package header" -msgstr "" -"Registro inv�lido en el archivo de preferencias, no hay cabecera de paquete" +msgstr "Registro inválido en el archivo de preferencias %s, no hay cabecera «Package»" #: apt-pkg/policy.cc:366 #, c-format @@ -2827,84 +2851,84 @@ msgstr "No hay prioridad especificada para pin (o es cero)" #: apt-pkg/pkgcachegen.cc:80 msgid "Cache has an incompatible versioning system" -msgstr "La cach� tiene una versi�n incompatible de sistema de versiones" +msgstr "La caché tiene una versión incompatible de sistema de versiones" #: apt-pkg/pkgcachegen.cc:198 #, c-format msgid "Error occurred while processing %s (NewPackage)" -msgstr "Ocurri� un error mientras se procesaba %s (NewPackage)" +msgstr "Se produjo un error mientras se procesaba %s (NewPackage)" #: apt-pkg/pkgcachegen.cc:215 #, c-format msgid "Error occurred while processing %s (UsePackage1)" -msgstr "Ocurri� un error mientras se procesaba %s (UsePackage1)" +msgstr "Se produjo un error mientras se procesaba %s (UsePackage1)" #: apt-pkg/pkgcachegen.cc:253 #, c-format msgid "Error occurred while processing %s (NewFileDesc1)" -msgstr "Ocurri� un error mientras se procesaba %s (NewFileDesc1)" +msgstr "Se produjo un error mientras se procesaba %s (NewFileDesc1)" #: apt-pkg/pkgcachegen.cc:285 #, c-format msgid "Error occurred while processing %s (UsePackage2)" -msgstr "Ocurri� un error mientras se procesaba %s (UsePackage2)" +msgstr "Se produjo un error mientras se procesaba %s (UsePackage2)" #: apt-pkg/pkgcachegen.cc:289 #, c-format msgid "Error occurred while processing %s (NewFileVer1)" -msgstr "Ocurri� un error mientras se procesaba %s (NewFileVer1)" +msgstr "Se produjo un error mientras se procesaba %s (NewFileVer1)" #: apt-pkg/pkgcachegen.cc:306 apt-pkg/pkgcachegen.cc:316 #: apt-pkg/pkgcachegen.cc:324 -#, fuzzy, c-format +#, c-format msgid "Error occurred while processing %s (NewVersion%d)" -msgstr "Ocurri� un error mientras se procesaba %s (NewVersion1)" +msgstr "Se produjo un error mientras se procesaba %s (NewVersion%d)" #: apt-pkg/pkgcachegen.cc:320 #, c-format msgid "Error occurred while processing %s (UsePackage3)" -msgstr "Ocurri� un error mientras se procesaba %s (UsePackage3)" +msgstr "Se produjo un error mientras se procesaba %s (UsePackage3)" #: apt-pkg/pkgcachegen.cc:353 #, c-format msgid "Error occurred while processing %s (NewFileDesc2)" -msgstr "Ocurri� un error mientras se procesaba %s (NewFileDesc2)" +msgstr "Se produjo un error mientras se procesaba %s (NewFileDesc2)" #: apt-pkg/pkgcachegen.cc:360 msgid "Wow, you exceeded the number of package names this APT is capable of." msgstr "" -"Vaya, excedi� el n�mero de nombres de paquetes que este APT es capaz de " +"Vaya, excedió el número de nombres de paquetes que este APT es capaz de " "manejar." #: apt-pkg/pkgcachegen.cc:363 msgid "Wow, you exceeded the number of versions this APT is capable of." -msgstr "Vaya, excedi� el n�mero de versiones que este APT es capaz de manejar." +msgstr "Vaya, excedió el número de versiones que este APT es capaz de manejar." #: apt-pkg/pkgcachegen.cc:366 msgid "Wow, you exceeded the number of descriptions this APT is capable of." msgstr "" -"Vaya, excedi� el n�mero de descripciones que este APT es capaz de manejar." +"Vaya, excedió el número de descripciones que este APT es capaz de manejar." #: apt-pkg/pkgcachegen.cc:369 msgid "Wow, you exceeded the number of dependencies this APT is capable of." msgstr "" -"Vaya, excedi� el n�mero de dependencias que este APT es capaz de manejar." +"Vaya, excedió el número de dependencias que este APT es capaz de manejar." #: apt-pkg/pkgcachegen.cc:398 #, c-format msgid "Error occurred while processing %s (FindPkg)" -msgstr "Ocurri� un error mientras procesaba %s (FindPkg)" +msgstr "Se produjo un error mientras se procesaba %s (FindPkg)" #: apt-pkg/pkgcachegen.cc:412 #, c-format msgid "Error occurred while processing %s (CollectFileProvides)" -msgstr "Ocurri� un error mientras procesaba %s (CollectFileProvides)" +msgstr "Se produjo un error mientras se procesaba %s (CollectFileProvides)" #: apt-pkg/pkgcachegen.cc:418 #, c-format msgid "Package %s %s was not found while processing file dependencies" msgstr "" -"Al procesar las dependencias de archivos no se encontr� el\n" +"Al procesar las dependencias de archivos no se encontró el " "paquete %s %s" #: apt-pkg/pkgcachegen.cc:982 @@ -2918,12 +2942,12 @@ msgstr "Recogiendo archivos que proveen" #: apt-pkg/pkgcachegen.cc:1265 apt-pkg/pkgcachegen.cc:1272 msgid "IO Error saving source cache" -msgstr "Error de E/S guardando cach� fuente" +msgstr "Error de E/S guardando caché fuente" #: apt-pkg/acquire-item.cc:136 #, c-format msgid "rename failed, %s (%s -> %s)." -msgstr "fall� el cambio de nombre, %s (%s -> %s)." +msgstr "falló el cambio de nombre, %s (%s -> %s)." #: apt-pkg/acquire-item.cc:484 msgid "MD5Sum mismatch" @@ -2937,7 +2961,7 @@ msgstr "La suma hash difiere" #: apt-pkg/acquire-item.cc:1244 msgid "There is no public key available for the following key IDs:\n" msgstr "" -"No existe ninguna clave p�blica disponible para los siguientes " +"No existe ninguna clave pública disponible para los siguientes " "identificadores de clave:\n" #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is @@ -2946,24 +2970,24 @@ msgstr "" #: apt-pkg/acquire-item.cc:1281 #, c-format msgid "Release file expired, ignoring %s (invalid since %s)" -msgstr "" +msgstr "El archivo «Release» ha expirado, ignorando %s (inválido desde hace %s)" #: apt-pkg/acquire-item.cc:1302 #, c-format msgid "Conflicting distribution: %s (expected %s but got %s)" -msgstr "" +msgstr "Distribución conflictiva: %s (se esperaba %s, pero se obtuvo %s)" #: apt-pkg/acquire-item.cc:1328 #, c-format msgid "" "A error occurred during the signature verification. The repository is not " "updated and the previous index files will be used. GPG error: %s: %s\n" -msgstr "" +msgstr "Se produjo un error durante la verificación de las firmas. El repositorio no está actualizado y se utilizarán los ficheros de índice antiguos. El error GPG es: %s: %s\n" #: apt-pkg/acquire-item.cc:1337 #, c-format msgid "GPG error: %s: %s" -msgstr "" +msgstr "Error de GPG: %s: %s" #: apt-pkg/acquire-item.cc:1365 #, c-format @@ -2988,38 +3012,36 @@ msgstr "" #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." -msgstr "" -"Los archivos de �ndice de paquetes est�n corrompidos. El campo 'Filename:' " -"no existe para para el paquete %s." +msgstr "Los archivos de índice de paquetes están dañados. No existe un campo «Filename:» para el paquete %s." #: apt-pkg/acquire-item.cc:1566 msgid "Size mismatch" -msgstr "El tama�o difiere" +msgstr "El tamaño difiere" #: apt-pkg/indexrecords.cc:53 -#, fuzzy, c-format +#, c-format msgid "Unable to parse Release file %s" -msgstr "No se pudo tratar el archivo de paquetes %s (1)" +msgstr "No se pudo leer el archivo «Release» %s" #: apt-pkg/indexrecords.cc:60 -#, fuzzy, c-format +#, c-format msgid "No sections in Release file %s" -msgstr "Nota, seleccionando %s en lugar de %s\n" +msgstr "No se encontraron secciones en el archivo «Release» %s" #: apt-pkg/indexrecords.cc:94 #, c-format msgid "No Hash entry in Release file %s" -msgstr "" +msgstr "No existe una entrada «Hash» en el archivo «Release» %s" #: apt-pkg/indexrecords.cc:107 -#, fuzzy, c-format +#, c-format msgid "Invalid 'Valid-Until' entry in Release file %s" -msgstr "Linea inv�lida en el archivo de desviaci�n: %s" +msgstr "Entrada «Valid-Until» inválida en el archivo «Release» %s" #: apt-pkg/indexrecords.cc:122 -#, fuzzy, c-format +#, c-format msgid "Invalid 'Date' entry in Release file %s" -msgstr "No se pudo tratar el archivo de paquetes %s (1)" +msgstr "Entrada «Date» inválida en el archivo «Release» %s" #: apt-pkg/vendorlist.cc:66 #, c-format @@ -3068,7 +3090,7 @@ msgstr "Montando el CD-ROM...\n" #: apt-pkg/cdrom.cc:626 msgid "Scanning disc for index files..\n" -msgstr "Buscando en el disco archivos de �ndices...\n" +msgstr "Buscando en el disco archivos de índices...\n" #: apt-pkg/cdrom.cc:666 #, c-format @@ -3076,26 +3098,23 @@ msgid "" "Found %zu package indexes, %zu source indexes, %zu translation indexes and " "%zu signatures\n" msgstr "" -"Se encontraron %zu �ndices de paquetes, %zu �ndices de fuentes, %zu �ndices " -"de traducci�n y %zu firmas\n" +"Se encontraron %zu índices de paquetes, %zu índices de fuentes, %zu índices " +"de traducción y %zu firmas\n" #: apt-pkg/cdrom.cc:677 -#, fuzzy msgid "" "Unable to locate any package files, perhaps this is not a Debian Disc or the " "wrong architecture?" -msgstr "" -"No pude localizar ning�n archivo de paquete, tal vez este no es un disco de " -"Debian" +msgstr "No pude localizar ningún archivo de paquete, ¿quizás este no sea un disco de Debian o sea de otra arquitectura?" #: apt-pkg/cdrom.cc:703 #, c-format msgid "Found label '%s'\n" -msgstr "Se encontr� la etiqueta: '%s'\n" +msgstr "Se encontró la etiqueta: «%s»\n" #: apt-pkg/cdrom.cc:732 msgid "That is not a valid name, try again.\n" -msgstr "Ese no es un nombre v�lido, int�ntelo de nuevo.\n" +msgstr "Ese no es un nombre válido, inténtelo de nuevo.\n" #: apt-pkg/cdrom.cc:748 #, c-format @@ -3104,7 +3123,7 @@ msgid "" "'%s'\n" msgstr "" "Este disco se llama: \n" -"'%s'\n" +"«%s»\n" #: apt-pkg/cdrom.cc:752 msgid "Copying package lists..." @@ -3140,201 +3159,199 @@ msgstr "" "%i registros escritos con %i fichero de menos y %i ficheros mal emparejados\n" #: apt-pkg/indexcopy.cc:537 -#, fuzzy, c-format +#, c-format msgid "Skipping nonexistent file %s" -msgstr "Abriendo fichero de configuraci�n %s" +msgstr "Omitiendo el fichero inexistente %s" #: apt-pkg/indexcopy.cc:543 #, c-format msgid "Can't find authentication record for: %s" -msgstr "" +msgstr "No se pudo encontrar un registro de autenticación para: %s" #: apt-pkg/indexcopy.cc:549 -#, fuzzy, c-format +#, c-format msgid "Hash mismatch for: %s" -msgstr "La suma hash difiere" +msgstr "La suma hash difiere para: %s" #: apt-pkg/cacheset.cc:337 #, c-format msgid "Release '%s' for '%s' was not found" -msgstr "No se encontr� la Distribuci�n '%s' para '%s'" +msgstr "No se encontró la Distribución «%s» para «%s»" #: apt-pkg/cacheset.cc:340 #, c-format msgid "Version '%s' for '%s' was not found" -msgstr "No se encontr� la versi�n '%s' para '%s'" +msgstr "No se encontró la versión «%s» para «%s»" #: apt-pkg/cacheset.cc:447 -#, fuzzy, c-format +#, c-format msgid "Couldn't find task '%s'" -msgstr "No se pudo encontrar la tarea %s" +msgstr "No se pudo encontrar la tarea «%s»" #: apt-pkg/cacheset.cc:454 -#, fuzzy, c-format +#, c-format msgid "Couldn't find any package by regex '%s'" -msgstr "No se pudo encontrar el paquete %s" +msgstr "No se pudo encontrar ningún paquete con la expresión regular «%s»" #: apt-pkg/cacheset.cc:467 #, c-format msgid "Can't select versions from package '%s' as it purely virtual" -msgstr "" +msgstr "No se pueden seleccionar distintas versiones del paquete «%s» porque es puramente virtual" #: apt-pkg/cacheset.cc:475 apt-pkg/cacheset.cc:483 #, c-format msgid "" "Can't select installed nor candidate version from package '%s' as it has " "neither of them" -msgstr "" +msgstr "No se puede seleccionar una versión instalada o candidata para el paquete «%s» dado que éste no tiene ninguna de éstas" #: apt-pkg/cacheset.cc:491 #, c-format msgid "Can't select newest version from package '%s' as it is purely virtual" -msgstr "" +msgstr "No se puede seleccionar la última versión del paquete «%s» dado que es puramente virtual" #: apt-pkg/cacheset.cc:499 #, c-format msgid "Can't select candidate version from package %s as it has no candidate" -msgstr "" +msgstr "No se puede seleccionar una versión candidata del paquete %s dado que no tiene candidatos" #: apt-pkg/cacheset.cc:507 #, c-format msgid "Can't select installed version from package %s as it is not installed" -msgstr "" +msgstr "No se puede seleccionar una versión instalada del paquete «%s» puesto que no está instalado" #: apt-pkg/deb/dpkgpm.cc:52 #, c-format msgid "Installing %s" msgstr "Instalando %s" -#: apt-pkg/deb/dpkgpm.cc:53 apt-pkg/deb/dpkgpm.cc:822 +#: apt-pkg/deb/dpkgpm.cc:53 apt-pkg/deb/dpkgpm.cc:823 #, c-format msgid "Configuring %s" msgstr "Configurando %s" -#: apt-pkg/deb/dpkgpm.cc:54 apt-pkg/deb/dpkgpm.cc:829 +#: apt-pkg/deb/dpkgpm.cc:54 apt-pkg/deb/dpkgpm.cc:830 #, c-format msgid "Removing %s" msgstr "Eliminando %s" #: apt-pkg/deb/dpkgpm.cc:55 -#, fuzzy, c-format +#, c-format msgid "Completely removing %s" -msgstr "Se borr� completamente %s" +msgstr "Borrando completamente %s" #: apt-pkg/deb/dpkgpm.cc:56 #, c-format msgid "Noting disappearance of %s" -msgstr "" +msgstr "Se detectó la desaparición de %s" #: apt-pkg/deb/dpkgpm.cc:57 #, c-format msgid "Running post-installation trigger %s" -msgstr "Ejecutando disparador post-instalaci�n %s" +msgstr "Ejecutando disparador post-instalación %s" #. FIXME: use a better string after freeze #: apt-pkg/deb/dpkgpm.cc:646 #, c-format msgid "Directory '%s' missing" -msgstr "Falta el directorio '%s'." +msgstr "Falta el directorio «%s»." -#: apt-pkg/deb/dpkgpm.cc:661 apt-pkg/deb/dpkgpm.cc:674 -#, fuzzy, c-format +#: apt-pkg/deb/dpkgpm.cc:661 apt-pkg/deb/dpkgpm.cc:675 +#, c-format msgid "Could not open file '%s'" -msgstr "No pude abrir el fichero %s" +msgstr "No pude abrir el fichero «%s»" -#: apt-pkg/deb/dpkgpm.cc:815 +#: apt-pkg/deb/dpkgpm.cc:816 #, c-format msgid "Preparing %s" msgstr "Preparando %s" -#: apt-pkg/deb/dpkgpm.cc:816 +#: apt-pkg/deb/dpkgpm.cc:817 #, c-format msgid "Unpacking %s" msgstr "Desempaquetando %s" -#: apt-pkg/deb/dpkgpm.cc:821 +#: apt-pkg/deb/dpkgpm.cc:822 #, c-format msgid "Preparing to configure %s" -msgstr "Prepar�ndose para configurar %s" +msgstr "Preparándose para configurar %s" -#: apt-pkg/deb/dpkgpm.cc:823 +#: apt-pkg/deb/dpkgpm.cc:824 #, c-format msgid "Installed %s" msgstr "%s instalado" -#: apt-pkg/deb/dpkgpm.cc:828 +#: apt-pkg/deb/dpkgpm.cc:829 #, c-format msgid "Preparing for removal of %s" -msgstr "Prepar�ndose para eliminar %s" +msgstr "Preparándose para eliminar %s" -#: apt-pkg/deb/dpkgpm.cc:830 +#: apt-pkg/deb/dpkgpm.cc:831 #, c-format msgid "Removed %s" msgstr "%s eliminado" -#: apt-pkg/deb/dpkgpm.cc:835 +#: apt-pkg/deb/dpkgpm.cc:836 #, c-format msgid "Preparing to completely remove %s" -msgstr "Prepar�ndose para eliminar completamente %s" +msgstr "Preparándose para eliminar completamente %s" -#: apt-pkg/deb/dpkgpm.cc:836 +#: apt-pkg/deb/dpkgpm.cc:837 #, c-format msgid "Completely removed %s" -msgstr "Se borr� completamente %s" +msgstr "Se borró completamente %s" -#: apt-pkg/deb/dpkgpm.cc:1042 +#: apt-pkg/deb/dpkgpm.cc:1043 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" -msgstr "" -"No se pudo escbribir en el registro, fall� la llamada a �openpty()� (�est� " -"montado /dev/pts?)\n" +msgstr "No pudo escribirse el registro, falló la llamada a openpty() (¿está montado «/dev/pts?)\n" -#: apt-pkg/deb/dpkgpm.cc:1073 +#: apt-pkg/deb/dpkgpm.cc:1074 msgid "Running dpkg" -msgstr "" +msgstr "Ejecutando dpkg" -#: apt-pkg/deb/dpkgpm.cc:1276 +#: apt-pkg/deb/dpkgpm.cc:1277 msgid "No apport report written because MaxReports is reached already" -msgstr "" +msgstr "No se escribió ningún informe «apport» porque ya se ha alcanzado el valor de «MaxReports»" #. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:1281 +#: apt-pkg/deb/dpkgpm.cc:1282 msgid "dependency problems - leaving unconfigured" -msgstr "" +msgstr "problemas de dependencias - dejando sin instalar" -#: apt-pkg/deb/dpkgpm.cc:1283 +#: apt-pkg/deb/dpkgpm.cc:1284 msgid "" "No apport report written because the error message indicates its a followup " "error from a previous failure." -msgstr "" +msgstr "No se escribió un informe «apport» porque el mensaje de error indica que es un mensaje de error asociado a un fallo previo." -#: apt-pkg/deb/dpkgpm.cc:1289 +#: apt-pkg/deb/dpkgpm.cc:1290 msgid "" "No apport report written because the error message indicates a disk full " "error" -msgstr "" +msgstr "No se escribió un informe «apport» porque el mensaje de error indica que el error es de disco lleno" -#: apt-pkg/deb/dpkgpm.cc:1295 +#: apt-pkg/deb/dpkgpm.cc:1296 msgid "" "No apport report written because the error message indicates a out of memory " "error" -msgstr "" +msgstr "No se escribió un informe «apport» porque el mensaje de error indica un error de memoria excedida" -#: apt-pkg/deb/dpkgpm.cc:1302 +#: apt-pkg/deb/dpkgpm.cc:1303 msgid "" "No apport report written because the error message indicates a dpkg I/O error" -msgstr "" +msgstr "No se escribió un informe «apport» porque el mensaje de error indica un error de E/S de dpkg" #: apt-pkg/deb/debsystem.cc:69 #, c-format msgid "" "Unable to lock the administration directory (%s), is another process using " "it?" -msgstr "" +msgstr "No se pudo bloquear el directorio de administración (%s), ¿quizás haya algún otro proceso utilizándolo?" #: apt-pkg/deb/debsystem.cc:72 -#, fuzzy, c-format +#, c-format msgid "Unable to lock the administration directory (%s), are you root?" -msgstr "No se pudo bloquear el directorio de listas" +msgstr "No se encontró un archivo de réplica «%s»" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a @@ -3342,44 +3359,44 @@ msgstr "No se pudo bloquear el directorio de listas" #, c-format msgid "" "dpkg was interrupted, you must manually run '%s' to correct the problem. " -msgstr "" +msgstr "se interrumpió la ejecución de dpkg, debe ejecutar manualmente «%s» para corregir el problema" #: apt-pkg/deb/debsystem.cc:106 msgid "Not locked" -msgstr "" +msgstr "No bloqueado" #. FIXME: fallback to a default mirror here instead #. and provide a config option to define that default #: methods/mirror.cc:200 #, c-format msgid "No mirror file '%s' found " -msgstr "" +msgstr "No se encontró un archivo de réplica «%s»" #: methods/mirror.cc:343 #, c-format msgid "[Mirror: %s]" -msgstr "" +msgstr "[Réplica: %s]" #: methods/rred.cc:465 #, c-format msgid "" "Could not patch %s with mmap and with file operation usage - the patch seems " "to be corrupt." -msgstr "" +msgstr "No se pudo parchear %s con mmap y con el modo de uso de la operación de ficheros - el paquete parece dañado." #: methods/rred.cc:470 #, c-format msgid "" "Could not patch %s with mmap (but no mmap specific fail) - the patch seems " "to be corrupt." -msgstr "" +msgstr "No se pudo parchear %s con mmap (pero no hay un fallo mmap específico) - el parche parece dañado." #: methods/rsh.cc:329 msgid "Connection closed prematurely" -msgstr "La conexi�n se cerr� prematuramente" +msgstr "La conexión se cerró prematuramente" #~ msgid "You must give exactly one pattern" -#~ msgstr "Debe dar exactamente un patr�n" +#~ msgstr "Debe dar exactamente un patrón" #~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting." #~ msgstr "" @@ -3387,13 +3404,13 @@ msgstr "La conexi�n se cerr� prematuramente" #~ "Terminando." #~ msgid "Error occurred while processing %s (NewVersion2)" -#~ msgstr "Ocurri� un error mientras se procesaba %s (NewVersion2)" +#~ msgstr "Se produjo un error mientras se procesaba %s (NewVersion2)" #~ msgid "Malformed line %u in source list %s (vendor id)" -#~ msgstr "L�nea %u mal formada en la lista de fuentes %s (id del fabricante)" +#~ msgstr "Línea %u mal formada en la lista de fuentes %s (id del fabricante)" #~ msgid "Couldn't access keyring: '%s'" -#~ msgstr "No se pudo acceder al anillo de claves: '%s'" +#~ msgstr "No se pudo acceder al anillo de claves: «%s»" #~ msgid "Could not patch file" #~ msgstr "No pude parchear el fichero" @@ -3408,29 +3425,29 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "Procesando disparadores para %s" #~ msgid "Dynamic MMap ran out of room" -#~ msgstr "La funci�n �Dynamic MMap� se qued� sin espacio" +#~ msgstr "La función «Dynamic MMap» se quedó sin espacio" #~ 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 "" -#~ "Como s�lo solicito una �nica operaci�n, es extremadamente posible que el\n" -#~ "paquete simplemente no sea instalable y deber�a de rellenar un informe " +#~ "Como sólo solicito una única operación, es extremadamente posible que el\n" +#~ "paquete simplemente no sea instalable y debería de rellenar un informe " #~ "de\n" #~ "error contra ese paquete." #~ msgid "Line %d too long (max %lu)" -#~ msgstr "L�nea %d demasiado larga (m�x %lu)" +#~ msgstr "Línea %d demasiado larga (máx %lu)" #~ msgid "Line %d too long (max %d)" -#~ msgstr "L�nea %d demasiado larga (m�x %d)" +#~ msgstr "Línea %d demasiado larga (máx %d)" #~ msgid "Error occured while processing %s (NewFileDesc1)" -#~ msgstr "Ocurri� un error mientras se procesaba %s (NewFileDesc1)" +#~ msgstr "Se produjo un error mientras se procesaba %s (NewFileDesc1)" #~ msgid "Error occured while processing %s (NewFileDesc2)" -#~ msgstr "Ocurri� un error mientras se procesaba %s (NewFileDesc2)" +#~ msgstr "Se produjo un error mientras se procesaba %s (NewFileDesc2)" #~ msgid "Stored label: %s \n" #~ msgstr "Etiqueta guardada: %s \n" @@ -3439,14 +3456,14 @@ msgstr "La conexi�n se cerr� prematuramente" #~ "Found %i package indexes, %i source indexes, %i translation indexes and " #~ "%i signatures\n" #~ msgstr "" -#~ "Se encontraron %i �ndices de paquetes, %i �ndices de fuentes, %i �ndices " -#~ "de traducci�n y %i firmas\n" +#~ "Se encontraron %i índices de paquetes, %i índices de fuentes, %i índices " +#~ "de traducción y %i firmas\n" #~ msgid "openpty failed\n" -#~ msgstr "Fall� openpty\n" +#~ msgstr "Falló openpty\n" #~ msgid "File date has changed %s" -#~ msgstr "Cambi� la fecha del archivo %s" +#~ msgstr "Cambió la fecha del archivo %s" #~ msgid "Reading file list" #~ msgstr "Leyendo Lista de Archivos" @@ -3455,14 +3472,14 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "No se pudo ejecutar " #~ msgid "Preparing for remove with config %s" -#~ msgstr "Prepar�ndose para eliminar con su configuraci�n %s" +#~ msgstr "Preparándose para eliminar con su configuración %s" #~ msgid "Removed with config %s" -#~ msgstr "Eliminado con su configuraci�n %s" +#~ msgstr "Eliminado con su configuración %s" #~ msgid "Unknown vendor ID '%s' in line %u of source list %s" #~ msgstr "" -#~ "ID del fabricante '%s' desconocido en la l�nea %u de la lista de\n" +#~ "ID del fabricante «%s» desconocido en la línea %u de la lista de\n" #~ "fuentes %s" #~ msgid "" @@ -3471,7 +3488,7 @@ msgstr "La conexi�n se cerr� prematuramente" #~ "You might want to run 'apt-get -f install' to correct these." #~ msgstr "" #~ "Se encontraron algunos paquetes rotos mientras se intentaba procesar\n" -#~ "las dependencies de construcci�n. Tal vez quiera ejecutar \n" +#~ "las dependencies de construcción. Tal vez quiera ejecutar \n" #~ "'apt-get -f install' para corregirlos." #~ msgid "" @@ -3514,39 +3531,39 @@ msgstr "La conexi�n se cerr� prematuramente" #~ " apt-cache [opciones] showpkg paq1 [paq2 ...]\n" #~ "\n" #~ "apt-cache es una herramienta usada para manipular los archivos binarios\n" -#~ "de cach� de APT, y consultar informaci�n de �stos.\n" +#~ "de caché de APT, y consultar información de éstos.\n" #~ "\n" #~ "Comandos:\n" -#~ " add - A�ade un archivo de paquete a la cach� fuente\n" -#~ " gencaches - Crea el cach� de ambos, del paquete y del fuente\n" -#~ " showpkg - Muestra alguna informaci�n general para un solo paquete\n" -#~ " showsrc - Muestra la informaci�n de las fuentes\n" -#~ " stats - Muestra algunas estad�sticas b�sicas\n" +#~ " add - Añade un archivo de paquete a la caché fuente\n" +#~ " gencaches - Crea el caché de ambos, del paquete y del fuente\n" +#~ " showpkg - Muestra alguna información general para un solo paquete\n" +#~ " showsrc - Muestra la información de las fuentes\n" +#~ " stats - Muestra algunas estadísticas básicas\n" #~ " dump - Muestra el archivo entero en formato detallado\n" #~ " dumpavail - Imprime un archivo de paquetes disponibles a salida\n" -#~ "est�ndar\n" +#~ "estándar\n" #~ " unmet - Muestra dependencias incumplidas\n" -#~ " search - Busca en la lista de paquetes por un patr�n de expresi�n\n" +#~ " search - Busca en la lista de paquetes por un patrón de expresión\n" #~ "regular\n" #~ " show - Muestra un registro del paquete\n" -#~ " depends - Muestra informaci�n de dependencias en bruto para el\n" +#~ " depends - Muestra información de dependencias en bruto para el\n" #~ "paquete\n" #~ " pkgnames - Lista los nombres de todos los paquetes\n" -#~ " dotty - Genera gr�ficas del paquete para GraphVis\n" -#~ " policy - Muestra los par�metros de las normas\n" +#~ " dotty - Genera gráficas del paquete para GraphVis\n" +#~ " policy - Muestra los parámetros de las normas\n" #~ "\n" #~ "Opciones:\n" #~ " -h Este texto de ayuda.\n" -#~ " -p=? El cach� del paquete.\n" -#~ " -s=? El cach� de la fuente.\n" +#~ " -p=? El caché del paquete.\n" +#~ " -s=? El caché de la fuente.\n" #~ " -q Deshabilita el indicador de progreso.\n" -#~ " -i Muestra s�lo dependencias importantes para el comando de\n" +#~ " -i Muestra sólo dependencias importantes para el comando de\n" #~ "incumplido.\n" -#~ " -c=? Lee este archivo de configuraci�n\n" -#~ " -o=? Establece una opci�n de configuraci�n arbitraria, p. ej. -o dir::\n" +#~ " -c=? Lee este archivo de configuración\n" +#~ " -o=? Establece una opción de configuración arbitraria, p. ej. -o dir::\n" #~ "cache=/tmp\n" -#~ "Consulte las p�ginas del manual apt-cache(8) y apt.conf(5) para m�s\n" -#~ "informaci�n.\n" +#~ "Consulte las páginas del manual apt-cache(8) y apt.conf(5) para más\n" +#~ "información.\n" #~ msgid "" #~ "%s dependency on %s cannot be satisfied because the package %s cannot be " @@ -3556,7 +3573,7 @@ msgstr "La conexi�n se cerr� prematuramente" #~ "no se puede encontrar" #~ msgid "The package cache was build for a different architecture" -#~ msgstr "La cach� de archivos fue creado para una arquitectura diferente" +#~ msgstr "La caché de archivos fue creado para una arquitectura diferente" #~ msgid "Sorry, you don't have enough free space in %s to hold all the .debs." #~ msgstr "" @@ -3574,19 +3591,19 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "Necesito descargar %sB de ficheros. " #~ msgid "After unpacking %sB will be used.\n" -#~ msgstr "Se usar�n %sB despu�s de desempaquetar.\n" +#~ msgstr "Se usarán %sB después de desempaquetar.\n" #~ msgid "After unpacking %sB will be freed.\n" -#~ msgstr "Se liberar�n %sB despu�s de desempaquetar.\n" +#~ msgstr "Se liberarán %sB después de desempaquetar.\n" #~ msgid "" #~ "Sorry, re-installation of %s is not possible, it cannot be downloaded.\n" #~ msgstr "" -#~ "Lo siento, no es posible la reinstalaci�n del paquete %s, no puede ser " +#~ "Lo siento, no es posible la reinstalación del paquete %s, no puede ser " #~ "descargado.\n" #~ msgid "Sorry, %s is already the newest version.\n" -#~ msgstr "Lo siento, %s ya est� en su versi�n m�s reciente.\n" +#~ msgstr "Lo siento, %s ya está en su versión más reciente.\n" #~ msgid "Sorry, broken packages" #~ msgstr "Lo siento, paquetes rotos" @@ -3607,7 +3624,7 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "-> '" #~ msgid "Followed conf file from " -#~ msgstr "Archivo de configuraci�n seguido por" +#~ msgstr "Archivo de configuración seguido por" #~ msgid " to " #~ msgstr " a " @@ -3616,7 +3633,7 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "Extraer" #~ msgid "Aborted, backing out" -#~ msgstr "Abortado, retract�ndome" +#~ msgstr "Abortado, retractándome" #~ msgid "De-replaced " #~ msgstr "De-reemplazado" @@ -3634,25 +3651,25 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "Fichero reemplazado" #~ msgid "Unimplemented" -#~ msgstr "No est� implementado" +#~ msgstr "No está implementado" #~ msgid "Generating cache" -#~ msgstr "Generando el cach�" +#~ msgstr "Generando el caché" #~ msgid "Problem with SelectFile" -#~ msgstr "Hay problemas con SelectFile" +#~ msgstr "Se produjo un problema con «SelectFile»" #~ msgid "Problem with MergeList" -#~ msgstr "Hay problemas con MergeList" +#~ msgstr "Se produjo un problema con «MergeList»" #~ msgid "Regex compilation error" -#~ msgstr "Error de compilaci�n de Regex" +#~ msgstr "Error de compilación de Regex" #~ msgid "Write to stdout failed" -#~ msgstr "No pude escribir a la salida est�ndar" +#~ msgstr "No pude escribir a la salida estándar" #~ msgid "Generate must be enabled for this function" -#~ msgstr "Generate debe de estar habilitado para esta funci�n" +#~ msgstr "Generate debe de estar habilitado para esta función" #~ msgid "Failed to stat %s%s" #~ msgstr "No pude leer %s%s" @@ -3661,22 +3678,22 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "No pude abrir %s.new" #~ msgid "Failed to rename %s.new to %s" -#~ msgstr "No pude renombrar %s.new a %s" +#~ msgstr "No se pudo renombrar %s.new a %s" #~ msgid "I found (binary):" -#~ msgstr "Encontr� (binario):" +#~ msgstr "Encontré (binario):" #~ msgid "I found (source):" -#~ msgstr "Encontr� (fuente):" +#~ msgstr "Encontré (fuente):" #~ msgid "Found " -#~ msgstr "Encontr� " +#~ msgstr "Encontré " #~ msgid " source indexes." -#~ msgstr " �ndice de fuentes." +#~ msgstr " índice de fuentes." #~ msgid " '" -#~ msgstr " '" +#~ msgstr " »" #~ msgid "" #~ "Usage: apt-cdrom [options] command\n" @@ -3703,22 +3720,22 @@ msgstr "La conexi�n se cerr� prematuramente" #~ "Uso: apt-cdrom [opciones] orden\n" #~ "\n" #~ "apt-cdrom es una herramienta para agregar CDROM para las fuentes de\n" -#~ "APT. El punto de montaje del CDROM y la informaci�n del dispositivo\n" +#~ "APT. El punto de montaje del CDROM y la información del dispositivo\n" #~ "se extrae de apt.conf y /etc/fstab.\n" #~ "\n" #~ "Comandos:\n" #~ " add - Agrega un CDROM\n" -#~ " ident - Reporta la identificaci�n del CDROM\n" +#~ " ident - Reporta la identificación del CDROM\n" #~ "\n" #~ "Opciones:\n" #~ " -h Este texto de ayuda\n" #~ " -d Punto de montaje del CD-ROM\n" #~ " -r Renombra un CD-ROM reconocido\n" #~ " -m No monta\n" -#~ " -f Modo r�pido, no comprueba archivos de paquetes\n" -#~ " -a A trav�s de modo de b�squeda\n" -#~ " -c=? Lee esto archivo de configuraci�n\n" -#~ " -o=? Establece una opci�n de configuraci�n arbitraria, ej -o dir::\n" +#~ " -f Modo rápido, no comprueba archivos de paquetes\n" +#~ " -a A través de modo de búsqueda\n" +#~ " -c=? Lee esto archivo de configuración\n" +#~ " -o=? Establece una opción de configuración arbitraria, ej -o dir::\n" #~ "cache=/tmp\n" #~ "Ver fstab(5)\n" @@ -3729,7 +3746,7 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "No pude esperar al subproceso" #~ msgid "....\"Have you mooed today?\"..." -#~ msgstr "....\"�Has mugido hoy?\"..." +#~ msgstr "....\"¿Has mugido hoy?\"..." #~ msgid " New " #~ msgstr " Nuevo " @@ -3774,20 +3791,20 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "" #~ "Opciones:\n" #~ " -h Este texto de ayuda\n" -#~ " --md5 Generaci�n de control MD5 \n" +#~ " --md5 Generación de control MD5 \n" #~ " -s=? Archivo fuente de predominio\n" #~ " -q Callado\n" #~ " -d=? Selecciona la base de datos opcional de cache\n" -#~ " --no-delink Habilita modo de depuraci�n delink\n" -#~ " --contents Generaci�n del contenido del archivo 'Control'\n" -#~ " -c=? Lee este archivo de configuraci�n\n" -#~ " -o=? Establece una opci�n de configuraci�n arbitraria\n" +#~ " --no-delink Habilita modo de depuración delink\n" +#~ " --contents Generación del contenido del archivo 'Control'\n" +#~ " -c=? Lee este archivo de configuración\n" +#~ " -o=? Establece una opción de configuración arbitraria\n" #~ msgid "Done Packages, Starting contents." #~ msgstr "Paquetes terminados, empezando contenidos." #~ msgid "Hit contents update byte limit" -#~ msgstr "Se encontr� el l�mite de bytes de actualizaci�n de contenidos" +#~ msgstr "Se encontró el límite de bytes de actualización de contenidos" #~ msgid "Done. " #~ msgstr "Listo." @@ -3805,10 +3822,10 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr " no " #~ msgid "DSC file '%s' is too large!" -#~ msgstr "�El Archivo DSC '%s' es demasiado grande!" +#~ msgstr "¡El archivo DSC «%s» es demasiado grande!" #~ msgid "Could not find a record in the DSC '%s'" -#~ msgstr "No se pudo encontrar un registro en el archive DSC '%s'" +#~ msgstr "No se pudo encontrar un registro en el archive DSC «%s»" #~ msgid "Error parsing file record" #~ msgstr "Error leyendo archivo de registros" @@ -3817,10 +3834,10 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "No pude leer %s" #~ msgid "Errors apply to file '%s'" -#~ msgstr "Errores aplicables al fichero '%s'" +#~ msgstr "Los errores aplican al fichero «%s»" #~ msgid "Unkonwn address family %u (AF_*)" -#~ msgstr "Direcci�n de familia %u desconocida (AF_*)" +#~ msgstr "Dirección de familia %u desconocida (AF_*)" #~ msgid "Failed to mount the cdrom." #~ msgstr "No pude montar el cdrom" @@ -3847,25 +3864,25 @@ msgstr "La conexi�n se cerr� prematuramente" #~ " apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n" #~ " dists/potato/main/binary-i386/Packages\n" #~ msgstr "" -#~ "apt-ftparchive genera archivos de �ndice para archivos de Debian.\n" -#~ "Soporta varios estilos de generaci�n de reemplazos completamente\n" +#~ "apt-ftparchive genera archivos de índice para archivos de Debian.\n" +#~ "Soporta varios estilos de generación de reemplazos completamente\n" #~ "automatizados a funcionales para dpkg-scanpackages y dpkg-scansources\n" #~ "\n" -#~ "apt-ftparchive genera archivos Package de un �rbol de .debs. El Archivo\n" +#~ "apt-ftparchive genera archivos Package de un árbol de .debs. El Archivo\n" #~ "Package contiene los contenidos de todos los campos de control de cada\n" -#~ "paquete al igual que el enlace MD5 y el tama�o del archivo. Se\n" +#~ "paquete al igual que el enlace MD5 y el tamaño del archivo. Se\n" #~ "soporta el uso de un archivo de predominio para forzar el valor de\n" #~ "Priority y Section.\n" #~ "\n" -#~ "Igualmente, apt-ftparchive genera archivos de Fuentes para el �rbol de\n" -#~ ".dscs. Puede usarse la opci�n --source-override para especificar un\n" +#~ "Igualmente, apt-ftparchive genera archivos de Fuentes para el árbol de\n" +#~ ".dscs. Puede usarse la opción --source-override para especificar un\n" #~ "fichero de predominio fuente.\n" #~ "\n" -#~ "Las �rdenes 'packages' y 'sources' se deben de ejecutar en la ra�z del\n" -#~ "�rbol. BinaryPath debe de apuntar a la base del archivo de b�squeda\n" +#~ "Las órdenes 'packages' y 'sources' se deben de ejecutar en la raíz del\n" +#~ "árbol. BinaryPath debe de apuntar a la base del archivo de búsqueda\n" #~ "recursiva, y el archivo de predominio debe contener banderas de\n" #~ "predominio. Pathprefix se agregado a los campos del nombre del archivo\n" -#~ "si est�n presentes. Ejemplo de uso tomado de los archivos de Debian:\n" +#~ "si están presentes. Ejemplo de uso tomado de los archivos de Debian:\n" #~ " apt-ftparchive packages dists/potato/main/binary-i386/ > \\\\\n" #~ " dists/potato/main/binary-i386/Packages\n" @@ -3876,10 +3893,10 @@ msgstr "La conexi�n se cerr� prematuramente" #~ msgstr "A: No se pudo leer " #~ msgid "E: Errors apply to file '" -#~ msgstr "E: Errores aplicables al archivo '" +#~ msgstr "E: Errores aplicables al archivo «" #~ msgid " DeLink limit of " -#~ msgstr " DeLink l�mite de" +#~ msgstr " DeLink límite de" #~ msgid " has no override entry" #~ msgstr " no tiene entrada de predominio" @@ -6,11 +6,11 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-09-28 17:23+0200\n" "PO-Revision-Date: 2010-09-05 20:35+0100\n" -"Last-Translator: Andrej ®nidarąič <andrej.znidarsic@gmail.com>\n" +"Last-Translator: Andrej Znidarąič <andrej.znidarsic@gmail.com>\n" "Language-Team: Slovenian <sl@li.org>\n" "Language: sl\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" @@ -280,8 +280,7 @@ msgstr "" "Moľnosti:\n" " -h To besedilo pomoči.\n" " -c=? Prebere podano datoteko z nastavitvami\n" -" -o=? Nastavi poljubno nastavitveno moľnost, na primer. -o dir::cache=/" -"tmp\n" +" -o=? Nastavi poljubno nastavitveno moľnost, na primer. -o dir::cache=/tmp\n" #: cmdline/apt-extracttemplates.cc:98 #, c-format @@ -310,8 +309,7 @@ msgstr "" " -h To besedilo pomoči\n" " -t Nastavi začasno mapo\n" " -c=? Prebere podano datoteko z nastavitvami\n" -" -o=? Nastavi poljubno nastavitveno moľnost, na primer. -o dir::cache=/" -"tmp\n" +" -o=? Nastavi poljubno nastavitveno moľnost, na primer. -o dir::cache=/tmp\n" #: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1171 #, c-format @@ -450,7 +448,8 @@ msgid "" "DB format is invalid. If you upgraded from an older version of apt, please " "remove and re-create the database." msgstr "" -"Oblika podatkovne zbirke je neveljavna. V kolikor ste nadgradili s starejąe različice apt, podatkovno zbirko odstranite in jo znova ustvarite." +"Oblika podatkovne zbirke je neveljavna. V kolikor ste nadgradili s starejąe " +"različice apt, podatkovno zbirko odstranite in jo znova ustvarite." #: ftparchive/cachedb.cc:77 #, c-format @@ -910,7 +909,9 @@ msgstr "Notranja napaka, Urejanje se ni končalo" #: cmdline/apt-get.cc:1104 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" -msgstr "Kako čudno .. Velikosti se ne ujemata, poąljite sporočilo na apt@packages.debian.org" +msgstr "" +"Kako čudno .. Velikosti se ne ujemata, poąljite sporočilo na apt@packages." +"debian.org" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB @@ -1069,7 +1070,8 @@ msgid_plural "" "required:" msgstr[0] "Naslednji paketi so bili samodejno nameąčeni in niso več zahtevani:" msgstr[1] "Naslednji paket je bil samodejno nameąčen in ni več zahtevan:" -msgstr[2] "Naslednja paketa sta bila samodejno nameąčena in nista več zahtevana:" +msgstr[2] "" +"Naslednja paketa sta bila samodejno nameąčena in nista več zahtevana:" msgstr[3] "Naslednji paketi so bili samodejno nameąčeni in niso več zahtevani:" #: cmdline/apt-get.cc:1670 @@ -1119,14 +1121,15 @@ msgstr "Notranja napaka zaradi AllUpgrade." #: cmdline/apt-get.cc:1792 msgid "You might want to run 'apt-get -f install' to correct these:" -msgstr "" -"Poskusite zagnati 'apt-get -f install', če ľelite popraviti naslednje:" +msgstr "Poskusite zagnati 'apt-get -f install', če ľelite popraviti naslednje:" #: cmdline/apt-get.cc:1795 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." -msgstr "Nereąene odvisnosti. Poskusite 'apt-get -f install' brez paketov (ali navedite reąitev)." +msgstr "" +"Nereąene odvisnosti. Poskusite 'apt-get -f install' brez paketov (ali " +"navedite reąitev)." #: cmdline/apt-get.cc:1807 msgid "" @@ -1308,7 +1311,8 @@ msgstr "" #: cmdline/apt-get.cc:2684 #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" -msgstr "Ni mogoče zadostiti %s odvisnosti za %s. Nameąčen paket %s je preveč nov" +msgstr "" +"Ni mogoče zadostiti %s odvisnosti za %s. Nameąčen paket %s je preveč nov" #: cmdline/apt-get.cc:2711 #, c-format @@ -1482,7 +1486,8 @@ msgid "" msgstr "" "Uporaba: apt-sortpkgs [moľnosti] dat1 [dat2 ...]\n" "\n" -"apt-sortpkgs je preprosto orodje za razvrąčanje paketnih datotek. Moľnost -s\n" +"apt-sortpkgs je preprosto orodje za razvrąčanje paketnih datotek. Moľnost -" +"s\n" "določa vrsto datoteke.\n" "\n" "Moľnosti:\n" @@ -1506,7 +1511,8 @@ msgstr "Ali ľelite izbrisati vse predhodno prejete datoteke .deb?" #: dselect/install:101 msgid "Some errors occurred while unpacking. Packages that were installed" -msgstr "Med raząirajanjem je priąlo do nekaterih napak. Paketi, ki so bili nameąčeni" +msgstr "" +"Med raząirajanjem je priąlo do nekaterih napak. Paketi, ki so bili nameąčeni" #: dselect/install:102 msgid "will be configured. This may result in duplicate errors" @@ -1887,7 +1893,9 @@ msgstr "PASS je spodletel, streľnik je odgovoril: %s" msgid "" "A proxy server was specified but no login script, Acquire::ftp::ProxyLogin " "is empty." -msgstr "Naveden je bil posredniąki streľnik, ne pa tudi prijavni skript. Acquire::ftp::ProxyLogin je prazen." +msgstr "" +"Naveden je bil posredniąki streľnik, ne pa tudi prijavni skript. Acquire::" +"ftp::ProxyLogin je prazen." #: methods/ftp.cc:271 #, c-format @@ -2589,8 +2597,7 @@ msgstr "" #: apt-pkg/sourcelist.cc:95 #, c-format msgid "Malformed line %lu in source list %s ([option] too short)" -msgstr "" -"Slabo oblikovana vrstica %lu na seznamu virov %s ([moľnost] prekratka)" +msgstr "Slabo oblikovana vrstica %lu na seznamu virov %s ([moľnost] prekratka)" #: apt-pkg/sourcelist.cc:106 #, c-format @@ -2660,7 +2667,9 @@ msgstr "Vrsta '%s' v vrstici %u na seznamu virov %s ni znana " msgid "" "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf " "under APT::Immediate-Configure for details. (%d)" -msgstr "Ni mogoče izvesti takojąnje nastavitve na '%s'. Oglejte si man5 apt.conf pod APT::Takojąnja-nastavitev za podrobnosti. (%d)" +msgstr "" +"Ni mogoče izvesti takojąnje nastavitve na '%s'. Oglejte si man5 apt.conf pod " +"APT::Takojąnja-nastavitev za podrobnosti. (%d)" #: apt-pkg/packagemanager.cc:452 #, c-format @@ -2678,8 +2687,8 @@ msgid "" "Could not perform immediate configuration on already unpacked '%s'. Please " "see man 5 apt.conf under APT::Immediate-Configure for details." msgstr "" -"Ni mogoče izvesti takojąnje nastavitve ľe razpakiranega '%s'. Oglejte si man 5 apt.conf pod APT::" -"Takojąnja-Nastavitev za podrobnosti" +"Ni mogoče izvesti takojąnje nastavitve ľe razpakiranega '%s'. Oglejte si man " +"5 apt.conf pod APT::Takojąnja-Nastavitev za podrobnosti" #: apt-pkg/pkgrecords.cc:32 #, c-format @@ -2696,7 +2705,9 @@ msgstr "Paket %s mora biti znova nameąčen, vendar ni mogoče najti arhiva zanj msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." -msgstr "Napaka. pkgProblemResolver::Napake pri razreąitvi, ki so jih morda povzročili zadrľani paketi." +msgstr "" +"Napaka. pkgProblemResolver::Napake pri razreąitvi, ki so jih morda " +"povzročili zadrľani paketi." #: apt-pkg/algorithms.cc:1212 msgid "Unable to correct problems, you have held broken packages." @@ -2921,8 +2932,8 @@ msgid "" "A error occurred during the signature verification. The repository is not " "updated and the previous index files will be used. GPG error: %s: %s\n" msgstr "" -"Med preverjanjem podpisa je priąlo do napake. Skladiąče ni posodobljeno. Uporabljene bodo predhodne datoteke kazala . Napaka GPG: " -"%s: %s\n" +"Med preverjanjem podpisa je priąlo do napake. Skladiąče ni posodobljeno. " +"Uporabljene bodo predhodne datoteke kazala . Napaka GPG: %s: %s\n" #: apt-pkg/acquire-item.cc:1337 #, c-format @@ -3148,13 +3159,15 @@ msgid "" "Can't select installed nor candidate version from package '%s' as it has " "neither of them" msgstr "" -"Ni mogoče izbrati nameąčene različice ali različice kandidata iz paketa '%s', saj nima nobenega od " -"njiju" +"Ni mogoče izbrati nameąčene različice ali različice kandidata iz paketa " +"'%s', saj nima nobenega od njiju" #: apt-pkg/cacheset.cc:491 #, c-format msgid "Can't select newest version from package '%s' as it is purely virtual" -msgstr "Ni mogoče izbrati najnovejąe različice iz paketa '%s', saj je popolnoma navidezen " +msgstr "" +"Ni mogoče izbrati najnovejąe različice iz paketa '%s', saj je popolnoma " +"navidezen " #: apt-pkg/cacheset.cc:499 #, c-format @@ -3259,7 +3272,8 @@ msgstr "Poganjanje dpkg" #: apt-pkg/deb/dpkgpm.cc:1276 msgid "No apport report written because MaxReports is reached already" -msgstr "Poročilo apport ni bilo napisano, ker je bilo ątevilo MaxReports ľe doseľeno" +msgstr "" +"Poročilo apport ni bilo napisano, ker je bilo ątevilo MaxReports ľe doseľeno" #. check if its not a follow up error #: apt-pkg/deb/dpkgpm.cc:1281 @@ -3302,7 +3316,8 @@ msgstr "" msgid "" "Unable to lock the administration directory (%s), is another process using " "it?" -msgstr "Skrbniąke mape (%s) ni mogoče zakleniti. Jo morda uporablja drugo opravilo?" +msgstr "" +"Skrbniąke mape (%s) ni mogoče zakleniti. Jo morda uporablja drugo opravilo?" #: apt-pkg/deb/debsystem.cc:72 #, c-format diff --git a/pre-build.sh b/pre-build.sh deleted file mode 100755 index 2c7d28c2c..000000000 --- a/pre-build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -make -f Makefile startup doc diff --git a/test/integration/Packages-bug-593360-modifiers-in-names b/test/integration/Packages-bug-593360-modifiers-in-names new file mode 100644 index 000000000..d2ac8d4e1 --- /dev/null +++ b/test/integration/Packages-bug-593360-modifiers-in-names @@ -0,0 +1,42 @@ +Package: g++ +Priority: optional +Section: devel +Installed-Size: 40 +Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org> +Architecture: i386 +Source: gcc-defaults (1.96) +Version: 4:4.4.5-1 +Filename: pool/main/g/gcc-defaults/g++_4.4.5-1_i386.deb +Size: 1372 +MD5sum: 37e129a4b130e8b96a9b9d5b26a3fffa +SHA1: d98768d1547389a563e60433268143f42578c3e6 +SHA256: 18d933972392d233127bdd766cfcaaaa2e35f57de47c7af678d599be9613d562 +Description: The GNU C++ compiler + +Package: apt +Priority: important +Section: admin +Installed-Size: 5984 +Maintainer: APT Development Team <deity@lists.debian.org> +Architecture: all +Version: 0.8.8 +Filename: pool/main/a/apt/apt_0.8.8_i386.deb +Size: 2140632 +MD5sum: 4283aa3bb751253faf1b2204e0229e4f +SHA1: 59d432f56901faa86e814a436b8da010ee1c7b8a +SHA256: 072dcf4359dce9698aeaa54366eb20513f860c2bb6d44a95973c0b2ad413bfab +Description: Advanced front-end for dpkg + +Package: apt+ +Priority: important +Section: admin +Installed-Size: 5984 +Maintainer: APT Development Team <deity@lists.debian.org> +Architecture: all +Version: 0.8.8 +Filename: pool/main/a/apt/apt_0.8.8_i386.deb +Size: 2140632 +MD5sum: 4283aa3bb751253faf1b2204e0229e4f +SHA1: 59d432f56901faa86e814a436b8da010ee1c7b8a +SHA256: 072dcf4359dce9698aeaa54366eb20513f860c2bb6d44a95973c0b2ad413bfab +Description: Advanced front-end for dpkg diff --git a/test/integration/Packages-bug-604222-new-and-autoremove b/test/integration/Packages-bug-604222-new-and-autoremove new file mode 100644 index 000000000..fdff9d702 --- /dev/null +++ b/test/integration/Packages-bug-604222-new-and-autoremove @@ -0,0 +1,68 @@ +Package: dummy-archive +Priority: extra +Section: admin +Installed-Size: 5984 +Maintainer: APT Development Team <deity@lists.debian.org> +Architecture: i386 +Version: 0.invalid.0 +Source: dummy-archive +Depends: libavcodec52, libvtk5-dev | libopenal-dev +Filename: pool/main/d/dummy/dummy_5.4.2-8_i386.deb +Size: 2280898 +MD5sum: 569719746f7ec4b96209a6152af20c00 +Description: some dummy package + +Package: libvtk5-dev +Priority: optional +Section: libdevel +Installed-Size: 13812 +Maintainer: A. Maitland Bottoms <bottoms@debian.org> +Architecture: i386 +Source: vtk +Version: 5.4.2-8 +Depends: libvtk5.4 (= 5.4.2-8) +Filename: pool/main/v/vtk/libvtk5-dev_5.4.2-8_i386.deb +Size: 2280898 +MD5sum: 569719746f7ec4b96209a6152af20c00 +Description: VTK header files for building C++ code + +Package: libvtk5.4 +Priority: optional +Section: libs +Installed-Size: 39372 +Maintainer: A. Maitland Bottoms <bottoms@debian.org> +Architecture: i386 +Source: vtk +Version: 5.4.2-8 +Depends: libavcodec52 (>= 4:0.5.1-1) +Filename: pool/main/v/vtk/libvtk5.4_5.4.2-8_i386.deb +Size: 13070848 +MD5sum: 3ba7abc3d58ec44e35ae71879406563d +Description: Visualization Toolkit - A high level 3D visualization library + +Package: libopenal-dev +Priority: optional +Section: libdevel +Installed-Size: 140 +Maintainer: Debian Games Team <pkg-games-devel@lists.alioth.debian.org> +Architecture: i386 +Source: openal-soft +Version: 1:1.12.854-2 +Filename: pool/main/o/openal-soft/libopenal-dev_1.12.854-2_i386.deb +Size: 21014 +MD5sum: e0bda4fbf5a3d38ef510a23a1642587f +Description-de: Software-Implementierung der OpenAL-API (Entwicklungsdateien) + +Package: libavcodec52 +Priority: optional +Section: libs +Installed-Size: 10772 +Maintainer: Debian multimedia packages maintainers <pkg-multimedia-maintainers@lists.alioth.debian.org> +Architecture: i386 +Source: ffmpeg +Version: 4:0.5.2-6 +Conflicts: libvtk5-dev +Filename: pool/main/f/ffmpeg/libavcodec52_0.5.2-6_i386.deb +Size: 4001600 +MD5sum: a50aae4c8e8b9dd29612407e61bedc22 +Description-de: Ffmpeg-Codec-Bibliothek diff --git a/test/integration/Packages-bug-64141-install-dependencies-for-on-hold b/test/integration/Packages-bug-64141-install-dependencies-for-on-hold new file mode 100644 index 000000000..7005fa4f4 --- /dev/null +++ b/test/integration/Packages-bug-64141-install-dependencies-for-on-hold @@ -0,0 +1,42 @@ +Package: apt +Priority: important +Section: admin +Installed-Size: 6048 +Maintainer: APT Development Team <deity@lists.debian.org> +Architecture: i386 +Version: 0.8.10 +Provides: libapt-pkg4.10 +Depends: libc6 (>= 2.10), libdb4.8 +Breaks: oldcrap +Filename: pool/main/a/apt/apt_0.8.10_i386.deb +Size: 2160758 +MD5sum: 5aa2234f7b91056d430669cddf6e6e50 +Description: Advanced front-end for dpkg + +Package: libc6 +Priority: required +Section: libs +Installed-Size: 9356 +Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org> +Architecture: i386 +Source: eglibc +Version: 2.11.2-7 +Provides: glibc-2.11-1 +Filename: pool/main/e/eglibc/libc6_2.11.2-7_i386.deb +Size: 3880868 +MD5sum: c48fd2854fc62125824267d086600793 +Description: Embedded GNU C Library: Shared libraries + +Package: libdb4.8 +Priority: standard +Section: libs +Installed-Size: 1488 +Maintainer: Clint Adams <clint@gnu.org> +Architecture: i386 +Source: db4.8 +Version: 4.8.30-3 +Depends: libc6 (>= 2.3.6-6~) +Filename: pool/main/d/db4.8/libdb4.8_4.8.30-3_i386.deb +Size: 681988 +MD5sum: 0d58c15898a95436d2ec480aa22693ff +Description: Berkeley v4.8 Database Libraries [runtime] diff --git a/test/integration/Packages-releasefile-verification b/test/integration/Packages-releasefile-verification new file mode 100644 index 000000000..29a385f4f --- /dev/null +++ b/test/integration/Packages-releasefile-verification @@ -0,0 +1,18 @@ +Package: apt +Version: 0.7.25.3 +Architecture: i386 +Maintainer: APT Development Team <deity@lists.debian.org> +Installed-Size: 5244 +Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7) +Provides: libapt-pkg-libc6.9-6-4.8 +Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt +Filename: apt.deb +Size: 0 +MD5sum: d41d8cd98f00b204e9800998ecf8427e +Description: Advanced front-end for dpkg + This is Debian's next generation front-end for the dpkg package manager. + It provides the apt-get utility and APT dselect method that provides a + simpler, safer way to install and upgrade packages. + . + APT features complete installation ordering, multiple source capability + and several other unique features, see the Users Guide in apt-doc. diff --git a/test/integration/Packages-releasefile-verification-new b/test/integration/Packages-releasefile-verification-new new file mode 100644 index 000000000..e3b2edf1f --- /dev/null +++ b/test/integration/Packages-releasefile-verification-new @@ -0,0 +1,21 @@ +Package: apt +Priority: important +Section: admin +Installed-Size: 5672 +Maintainer: APT Development Team <deity@lists.debian.org> +Architecture: i386 +Version: 0.8.0~pre1 +Replaces: manpages-pl (<< 20060617-3~) +Provides: libapt-pkg4.10 +Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt +Conflicts: python-apt (<< 0.7.93.2~) +Filename: apt.deb +Size: 0 +MD5sum: d41d8cd98f00b204e9800998ecf8427e +Description: Advanced front-end for dpkg + This is Debian's next generation front-end for the dpkg package manager. + It provides the apt-get utility and APT dselect method that provides a + simpler, safer way to install and upgrade packages. + . + APT features complete installation ordering, multiple source capability + and several other unique features, see the Users Guide in apt-doc. diff --git a/test/integration/create-test-data b/test/integration/create-test-data index ff9405502..581b62910 100755 --- a/test/integration/create-test-data +++ b/test/integration/create-test-data @@ -1,6 +1,11 @@ #!/bin/sh set +e # its okay to fail in these script, most of the time the apt* stuff will generate errors +if [ -z "$1" -o -z "$2" ]; then + echo "Usage: $0 file codename pkg…" + exit 1 +fi + local TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework BUILDDIRECTORY="${TESTDIR}/../../build/bin" @@ -16,7 +21,12 @@ TMPGEN=$WORKDIR/Packages export LANG=C LISTOFPKGS=$(aptget install $* -t $CODENAME -so Dir::state::status=$WORKDIR/status -o Dir::Cache::archives=$WORKDIR -o pkgCacheGen::Essential=none -o APT::Immediate-Configure=0 2> /dev/null | awk '/^Inst/ {print $2}' | sed -e "s#\$#/$CODENAME#") -aptcache show $LISTOFPKGS --no-all-versions 2> /dev/null > $TMPGEN +if [ -z "$LISTOFPKGS" ]; then + echo "List of packages is empty: run apt-get install command again for you now" + aptget install $* -t $CODENAME -so Dir::state::status=$WORKDIR/status -o Dir::Cache::archives=$WORKDIR -o pkgCacheGen::Essential=none -o APT::Immediate-Configure=0 + exit 1 +fi +aptcache show $LISTOFPKGS --no-all-versions 2> $WORKDIR/error.lst > $TMPGEN sed -i $TMPGEN \ -e '/^ / d' \ -e '/^SHA1: / d' -e '/^SHA256: / d' \ @@ -24,6 +34,10 @@ sed -i $TMPGEN \ -e '/^Xul-Appid: / d' \ -e '/^Status: / d' +if [ "$CODENAME" = "experimental" ]; then + aptcache show $(cat $WORKDIR/error.lst | cut -d"'" -f 4 | sed -e 's#$#/sid#') --no-all-versions 2> /dev/null >> $TMPGEN +fi + if echo "$GENERATE" | grep '^status-' > /dev/null; then sed -i $TMPGEN -e '/^Package: / a\ Status: install ok installed' \ diff --git a/test/integration/deb-bug-330162-encoded-tar-header.deb b/test/integration/deb-bug-330162-encoded-tar-header.deb Binary files differnew file mode 100644 index 000000000..f38b1aa70 --- /dev/null +++ b/test/integration/deb-bug-330162-encoded-tar-header.deb diff --git a/test/integration/framework b/test/integration/framework index f78ae2ee1..e10709079 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -39,6 +39,10 @@ fi if [ $MSGLEVEL -le 2 ]; then msgmsg() { true; } msgnmsg() { true; } + msgtest() { true; } + msgpass() { echo -n " ${CPASS}P${CNORMAL}" >&2; } + msgskip() { echo -n " ${CWARNING}S${CNORMAL}" >&2; } + msgfail() { echo -n " ${CFAIL}FAIL${CNORMAL}" >&2; } fi if [ $MSGLEVEL -le 3 ]; then msginfo() { true; } @@ -78,6 +82,20 @@ aptkey() { runapt apt-key $*; } dpkg() { $(which dpkg) --root=${TMPWORKINGDIRECTORY}/rootdir --force-not-root --force-bad-path --log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log $* } +aptitude() { + if [ -f ./aptconfig.conf ]; then + APT_CONFIG=aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which aptitude) $* + elif [ -f ../aptconfig.conf ]; then + APT_CONFIG=../aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which aptitude) $* + else + LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which aptitude) $* + fi +} + +addtrap() { + CURRENTTRAP="$CURRENTTRAP $1" + trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM +} setupenvironment() { TMPWORKINGDIRECTORY=$(mktemp -d) @@ -86,8 +104,7 @@ setupenvironment() { BUILDDIRECTORY="${TESTDIR}/../../build/bin" test -x "${BUILDDIRECTORY}/apt-get" || msgdie "You need to build tree first" local OLDWORKINGDIRECTORY=$(pwd) - CURRENTTRAP="cd /; rm -rf $TMPWORKINGDIRECTORY; cd $OLDWORKINGDIRECTORY" - trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM + addtrap "cd /; rm -rf $TMPWORKINGDIRECTORY; cd $OLDWORKINGDIRECTORY;" cd $TMPWORKINGDIRECTORY mkdir rootdir aptarchive keys cd rootdir @@ -107,8 +124,10 @@ setupenvironment() { local PACKAGESFILE=$(echo "$(basename $0)" | sed -e 's/^test-/Packages-/' -e 's/^skip-/Packages-/') if [ -f "${TESTDIR}/${PACKAGESFILE}" ]; then cp "${TESTDIR}/${PACKAGESFILE}" aptarchive/Packages - else - touch aptarchive/Packages + fi + local SOURCESSFILE=$(echo "$(basename $0)" | sed -e 's/^test-/Sources-/' -e 's/^skip-/Sources-/') + if [ -f "${TESTDIR}/${SOURCESSFILE}" ]; then + cp "${TESTDIR}/${SOURCESSFILE}" aptarchive/Sources fi cp $(find $TESTDIR -name '*.pub' -o -name '*.sec') keys/ ln -s ${TMPWORKINGDIRECTORY}/keys/joesixpack.pub rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg @@ -116,13 +135,14 @@ setupenvironment() { echo "Dir::state::status \"${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status\";" >> aptconfig.conf echo "Debug::NoLocking \"true\";" >> aptconfig.conf echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf + echo "Dir::Bin::Methods \"${BUILDDIRECTORY}/methods\";" >> aptconfig.conf echo "Dir::Bin::dpkg \"fakeroot\";" >> aptconfig.conf - echo "Dir::Bin::methods \"${BUILDDIRECTORY}/methods\";" >> aptconfig.conf echo "DPKG::options:: \"dpkg\";" >> aptconfig.conf echo "DPKG::options:: \"--root=${TMPWORKINGDIRECTORY}/rootdir\";" >> aptconfig.conf echo "DPKG::options:: \"--force-not-root\";" >> aptconfig.conf echo "DPKG::options:: \"--force-bad-path\";" >> aptconfig.conf echo "DPKG::options:: \"--log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log\";" >> aptconfig.conf + echo 'quiet::NoUpdate "true";' >> aptconfig.conf export LC_ALL=C msgdone "info" } @@ -168,8 +188,12 @@ Maintainer: Joe Sixpack <joe@example.org> Build-Depends: debhelper (>= 7) Standards-Version: 3.9.1 -Package: $NAME -Architecture: $ARCH" > debian/control +Package: $NAME" > debian/control + if [ "$ARCH" = 'all' ]; then + echo "Architecture: all" >> debian/control + else + echo "Architecture: any" >> debian/control + fi test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> debian/control if [ -z "$DESCRIPTION" ]; then echo "Description: an autogenerated dummy ${NAME}=${VERSION}/${RELEASE} @@ -199,9 +223,60 @@ buildsimplenativepackage() { else DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)" fi - setupsimplenativepackage "$NAME" "$ARCH" "$VERSION" "$RELEASE" "$DEPENDENCIES" "$DESCRIPTION" "$SECTION" - buildpackage "incoming/${NAME}-${VERSION}" "$RELEASE" "$DISTSECTION" - rm -rf "incoming/${NAME}-${VERSION}" + local BUILDDIR=${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION} + + msgninfo "Build package ${NAME} in ${VERSION} for ${RELEASE} in ${DISTSECTION}… " + mkdir -p $BUILDDIR/debian/source + echo "* most suckless software product ever" > ${BUILDDIR}/FEATURES + echo "#!/bin/sh +echo '$NAME says \"Hello!\"'" > ${BUILDDIR}/${NAME} + + echo "Copyleft by Joe Sixpack $(date +%Y)" > ${BUILDDIR}/debian/copyright + echo "$NAME ($VERSION) $RELEASE; urgency=low + + * Initial release + + -- Joe Sixpack <joe@example.org> $(date -R)" > ${BUILDDIR}/debian/changelog + echo "Source: $NAME +Section: $SECTION +Priority: optional +Maintainer: Joe Sixpack <joe@example.org> +Standards-Version: 3.9.1 + +Package: $NAME" > ${BUILDDIR}/debian/control + if [ "$ARCH" = 'all' ]; then + echo "Architecture: all" >> ${BUILDDIR}/debian/control + else + echo "Architecture: any" >> ${BUILDDIR}/debian/control + fi + test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> ${BUILDDIR}/debian/control + if [ -z "$DESCRIPTION" ]; then + echo "Description: an autogenerated dummy ${NAME}=${VERSION}/${RELEASE} + If you find such a package installed on your system, + YOU did something horribly wrong! They are autogenerated + und used only by testcases for APT and surf no other propose…" >> ${BUILDDIR}/debian/control + else + echo "Description: $DESCRIPTION" >> ${BUILDIR}/debian/control + fi + echo '3.0 (native)' > ${BUILDDIR}/debian/source/format + local SRCS="$( (cd ${BUILDDIR}/..; dpkg-source -b ${NAME}-${VERSION} 2>&1) | grep '^dpkg-source: info: building' | grep -o '[a-z0-9._+~-]*$')" + + mkdir -p ${BUILDDIR}/debian/tmp/DEBIAN ${BUILDDIR}/debian/tmp/usr/share/doc/${NAME} ${BUILDDIR}/debian/tmp/usr/bin + cp ${BUILDDIR}/debian/copyright ${BUILDDIR}/debian/changelog ${BUILDDIR}/FEATURES ${BUILDDIR}/debian/tmp/usr/share/doc/${NAME} + cp ${BUILDDIR}/${NAME} ${BUILDDIR}/debian/tmp/usr/bin + (cd ${BUILDDIR}; dpkg-gencontrol -DArchitecture=$ARCH) + (cd ${BUILDDIR}/debian/tmp; md5sum $(find usr/ -type f) > DEBIAN/md5sums) + + dpkg-deb --build ${BUILDDIR}/debian/tmp ${BUILDDIR}/.. 2> /dev/null > /dev/null + echo "pool/${NAME}_${VERSION}_${ARCH}.deb" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.pkglist + for SRC in $SRCS; do + echo "pool/${SRC}" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist + done + mkdir -p ${BUILDDIR}/../${NAME}_${VERSION} + cp ${BUILDDIR}/debian/changelog ${BUILDDIR}/../${NAME}_${VERSION}/ + cp ${BUILDDIR}/debian/changelog ${BUILDDIR}/../${NAME}_${VERSION}.changelog + rm -rf "${BUILDDIR}" + msgdone "info" } buildpackage() { @@ -255,6 +330,8 @@ Default { Packages::Compress ". gzip bzip2 lzma"; Sources::Compress ". gzip bzip2 lzma"; Contents::Compress ". gzip bzip2 lzma"; + Translation::Compress ". gzip bzip2 lzma"; + LongDescription "false"; }; TreeDefault { Directory "pool/"; @@ -308,6 +385,38 @@ buildaptftparchivedirectorystructure() { done } +insertpackage() { + local RELEASE="$1" + local NAME="$2" + local ARCH="$3" + local VERSION="$4" + local DEPENDENCIES="$5" + local ARCHS="$ARCH" + if [ "$ARCHS" = "all" ]; then + ARCHS="$(aptconfig dump | grep APT::Architecture | cut -d'"' -f 2 | sed '/^$/ d' | sort | uniq | tr '\n' ' ')" + fi + for BUILDARCH in $ARCHS; do + local PPATH="aptarchive/dists/${RELEASE}/main/binary-${BUILDARCH}" + mkdir -p $PPATH aptarchive/dists/${RELEASE}/main/source + touch aptarchive/dists/${RELEASE}/main/source/Sources + local FILE="${PPATH}/Packages" + echo "Package: $NAME +Priority: optional +Section: other +Installed-Size: 42 +Maintainer: Joe Sixpack <joe@example.org> +Architecture: $ARCH +Version: $VERSION +Filename: pool/main/${NAME}/${NAME}_${VERSION}_${ARCH}.deb" >> $FILE + test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> $FILE + echo "Description: an autogenerated dummy ${NAME}=${VERSION}/${RELEASE} + If you find such a package installed on your system, + YOU did something horribly wrong! They are autogenerated + und used only by testcases for APT and surf no other propose… +" >> $FILE + done +} + buildaptarchivefromincoming() { msginfo "Build APT archive for ${CCMD}$(basename $0)${CINFO} based on incoming packages…" cd aptarchive @@ -316,36 +425,47 @@ buildaptarchivefromincoming() { [ -e dists ] || buildaptftparchivedirectorystructure msgninfo "\tGenerate Packages, Sources and Contents files… " aptftparchive -qq generate ftparchive.conf - msgdone "info" - msgninfo "\tGenerate Release files… " - for dir in $(find ./dists -mindepth 1 -maxdepth 1 -type d); do - aptftparchive -qq release $dir -o APT::FTPArchive::Release::Codename="$(echo "$dir" | cut -d'/' -f 3)" | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference - done cd - > /dev/null msgdone "info" + generatereleasefiles } buildaptarchivefromfiles() { msginfo "Build APT archive for ${CCMD}$(basename $0)${CINFO} based on prebuild files…" - cd aptarchive - if [ -f Packages ]; then - msgninfo "\tPackages file… " - cat Packages | gzip > Packages.gz - cat Packages | bzip2 > Packages.bz2 - cat Packages | lzma > Packages.lzma + find aptarchive -name 'Packages' -o -name 'Sources' | while read line; do + msgninfo "\t${line} file… " + cat ${line} | gzip > ${line}.gz + cat ${line} | bzip2 > ${line}.bz2 + cat ${line} | lzma > ${line}.lzma msgdone "info" + done + generatereleasefiles +} + +generatereleasefiles() { + msgninfo "\tGenerate Release files… " + local DATE="${1:-now}" + if [ -e aptarchive/dists ]; then + for dir in $(find ./aptarchive/dists -mindepth 3 -maxdepth 3 -type d -name 'i18n'); do + aptftparchive -qq release $dir -o APT::FTPArchive::Release::Patterns::='Translation-*' > $dir/Index + done + for dir in $(find ./aptarchive/dists -mindepth 1 -maxdepth 1 -type d); do + local CODENAME="$(echo "$dir" | cut -d'/' -f 4)" + aptftparchive -qq release $dir -o APT::FTPArchive::Release::Suite="${CODENAME}" -o APT::FTPArchive::Release::Codename="${CODENAME}" | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference + if [ "$CODENAME" = "experimental" -o "$CODENAME" = "experimental2" ]; then + sed -i '/^Date: / a\ +NotAutomatic: yes' $dir/Release + fi + done + else + aptftparchive -qq release ./aptarchive | sed -e '/0 Release$/ d' > aptarchive/Release # remove the self reference fi - if [ -f Sources ]; then - msgninfo "\tSources file… " - cat Sources | gzip > Sources.gz - cat Sources | bzip2 > Sources.bz2 - cat Sources | lzma > Sources.lzma - msgdone "info" + if [ "$DATE" != "now" ]; then + for release in $(find ./aptarchive -name 'Release'); do + touch -d "$1" $release + done fi - msgninfo "\tRelease file… " - aptftparchive -qq release . | sed -e '/0 Release$/ d' > Release # remove the self reference msgdone "info" - cd .. } setupdistsaptarchive() { @@ -405,6 +525,7 @@ signreleasefiles() { done for RELEASE in $(find aptarchive/ -name Release); do gpg --yes --no-default-keyring $SECKEYS $PUBKEYS --default-key "$SIGNER" -abs -o ${RELEASE}.gpg ${RELEASE} + gpg --yes --no-default-keyring $SECKEYS $PUBKEYS --default-key "$SIGNER" --clearsign -o "$(echo "${RELEASE}" | sed 's#/Release$#/InRelease#')" $RELEASE done msgdone "info" } @@ -412,8 +533,7 @@ signreleasefiles() { changetowebserver() { if which weborf > /dev/null; then weborf -xb aptarchive/ 2>&1 > /dev/null & - CURRENTTRAP="kill $(ps | grep weborf | sed -e 's#^[ ]*##' | cut -d' ' -f 1); $CURRENTTRAP" - trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM + addtrap "kill $!;" local APTARCHIVE="file://$(readlink -f ./aptarchive)" for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do sed -i $LIST -e "s#$APTARCHIVE#http://localhost:8080/#" @@ -447,17 +567,18 @@ testfileequal() { testequal() { local COMPAREFILE=$(mktemp) + addtrap "rm $COMPAREFILE;" echo "$1" > $COMPAREFILE shift msgtest "Test for equality of" "$*" $* 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail - rm $COMPAREFILE } testequalor2() { local COMPAREFILE1=$(mktemp) local COMPAREFILE2=$(mktemp) local COMPAREAGAINST=$(mktemp) + addtrap "rm $COMPAREFILE1 $COMPAREFILE2 $COMPAREAGAINST;" echo "$1" > $COMPAREFILE1 echo "$2" > $COMPAREFILE2 shift 2 @@ -468,7 +589,6 @@ testequalor2() { ( echo "\n${CINFO}Diff against OR 1${CNORMAL}" "$(checkdiff $COMPAREFILE1 $COMPAREAGAINST)" \ "\n${CINFO}Diff against OR 2${CNORMAL}" "$(checkdiff $COMPAREFILE2 $COMPAREAGAINST)" && msgfail ) - rm $COMPAREFILE1 $COMPAREFILE2 $COMPAREAGAINST } testshowvirtual() { @@ -485,11 +605,11 @@ N: Can't select versions from package '$1' as it purely virtual" VIRTUAL="${VIRTUAL} N: No packages found" local COMPAREFILE=$(mktemp) + addtrap "rm $COMPAREFILE;" local ARCH=$(dpkg-architecture -qDEB_HOST_ARCH_CPU) eval `apt-config shell ARCH APT::Architecture` echo "$VIRTUAL" | sed -e "s/:$ARCH//" -e 's/:all//' > $COMPAREFILE aptcache show -q=0 $PACKAGE 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail - rm $COMPAREFILE } testnopackage() { @@ -506,8 +626,8 @@ testnopackage() { testdpkginstalled() { msgtest "Test for correctly installed package(s) with" "dpkg -l $*" - local PKGS="$(dpkg -l $* | grep '^[a-z]' | grep '^[^i]' | wc -l)" - if [ "$PKGS" != 0 ]; then + local PKGS="$(dpkg -l $* | grep '^i' | wc -l)" + if [ "$PKGS" != $# ]; then echo $PKGS dpkg -l $* | grep '^[a-z]' msgfail @@ -516,9 +636,9 @@ testdpkginstalled() { msgpass } -testdpkgnoninstalled() { - msgtest "Test for correctly non-installed package(s) with" "dpkg -l $*" - local PKGS="$(dpkg -l $* | grep '^[a-z]' | grep '^[^u]' | wc -l)" +testdpkgnotinstalled() { + msgtest "Test for correctly not-installed package(s) with" "dpkg -l $*" + local PKGS="$(dpkg -l $* 2> /dev/null | grep '^i' | wc -l)" if [ "$PKGS" != 0 ]; then echo dpkg -l $* | grep '^[a-z]' diff --git a/test/integration/marvinparanoid.pub b/test/integration/marvinparanoid.pub Binary files differnew file mode 100644 index 000000000..9a59c2e40 --- /dev/null +++ b/test/integration/marvinparanoid.pub diff --git a/test/integration/marvinparanoid.sec b/test/integration/marvinparanoid.sec Binary files differnew file mode 100644 index 000000000..ff54e8680 --- /dev/null +++ b/test/integration/marvinparanoid.sec diff --git a/test/integration/run-tests b/test/integration/run-tests index c7ea0a61a..7314e6b61 100755 --- a/test/integration/run-tests +++ b/test/integration/run-tests @@ -2,7 +2,19 @@ set -e DIR=$(readlink -f $(dirname $0)) +if [ "$1" = "-q" ]; then + export MSGLEVEL=2 +elif [ "$1" = "-v" ]; then + export MSGLEVEL=4 +fi for testcase in $(run-parts --list $DIR | grep '/test-'); do - echo "\033[1;32mRun Testcase \033[1;35m$(basename ${testcase})\033[0m" + if [ "$1" = "-q" ]; then + echo -n "\033[1;32mRun Testcase \033[1;35m$(basename ${testcase})\033[0m" + else + echo "\033[1;32mRun Testcase \033[1;35m$(basename ${testcase})\033[0m" + fi ${testcase} + if [ "$1" = "-q" ]; then + echo + fi done diff --git a/test/integration/status-bug-601961-install-info b/test/integration/status-bug-601961-install-info new file mode 100644 index 000000000..c43cffab7 --- /dev/null +++ b/test/integration/status-bug-601961-install-info @@ -0,0 +1,42 @@ +Package: dpkg +Status: install ok installed +Essential: yes +Priority: required +Section: admin +Installed-Size: 6432 +Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org> +Architecture: i386 +Version: 1.15.8.5 +Description: Debian package management system + +Package: findutils +Status: install ok installed +Essential: yes +Priority: required +Section: utils +Installed-Size: 1704 +Maintainer: Andreas Metzler <ametzler@debian.org> +Architecture: i386 +Version: 4.4.2-1+b1 +Depends: dpkg (>= 1.15.4) | install-info, essentialpkg +Description: utilities for finding files--find, xargs + +Package: install-info +Status: install ok installed +Priority: important +Section: doc +Installed-Size: 256 +Maintainer: Debian TeX maintainers <debian-tex-maint@lists.debian.org> +Architecture: i386 +Version: 4.13a.dfsg.1-6 +Description: Manage installed documentation in info format + +Package: essentialpkg +Status: install ok installed +Priority: important +Section: other +Installed-Size: 256 +Maintainer: Joe Sixpack <joe@example.org> +Architecture: i386 +Version: 4.13a.dfsg.1-6 +Description: ultra hypercool important package diff --git a/test/integration/status-bug-604222-new-and-autoremove b/test/integration/status-bug-604222-new-and-autoremove new file mode 100644 index 000000000..03cf4d307 --- /dev/null +++ b/test/integration/status-bug-604222-new-and-autoremove @@ -0,0 +1,10 @@ +Package: libvtk5.4 +Status: install ok installed +Priority: optional +Section: libs +Installed-Size: 39372 +Maintainer: A. Maitland Bottoms <bottoms@debian.org> +Architecture: i386 +Source: vtk +Version: 5.4.2-7 +Description: Visualization Toolkit - A high level 3D visualization library diff --git a/test/integration/status-bug-64141-install-dependencies-for-on-hold b/test/integration/status-bug-64141-install-dependencies-for-on-hold new file mode 100644 index 000000000..c82ebd19c --- /dev/null +++ b/test/integration/status-bug-64141-install-dependencies-for-on-hold @@ -0,0 +1,33 @@ +Package: apt +Status: install ok installed +Priority: important +Section: admin +Installed-Size: 6048 +Maintainer: APT Development Team <deity@lists.debian.org> +Architecture: i386 +Version: 0.8.9 +Provides: libapt-pkg4.10 +Depends: libc6 (>= 2.3.4) +Description: Advanced front-end for dpkg + +Package: libc6 +Status: install ok installed +Priority: required +Section: libs +Installed-Size: 9356 +Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org> +Architecture: i386 +Source: eglibc +Version: 2.3.5-7 +Provides: glibc-2.11-1 +Description: Embedded GNU C Library: Shared libraries + +Package: oldcrap +Status: install ok installed +Priority: extra +Section: oldlibs +Installed-Size: 1 +Maintainer: Joe Sixpack <joe@example.org> +Architecture: all +Version: 1-1 +Description: Old crappy nothing package diff --git a/test/integration/test-autoremove b/test/integration/test-apt-get-autoremove index 1ca325b29..9dfab19f5 100755 --- a/test/integration/test-autoremove +++ b/test/integration/test-apt-get-autoremove @@ -19,8 +19,8 @@ Architecture: i386 Auto-Installed: 1 ' aptget remove debhelper -y -qq 2>&1 > /dev/null -testdpkgnoninstalled 'debhelper' -testdpkginstalled 'po-debconf unrelated' +testdpkgnotinstalled 'debhelper' +testdpkginstalled 'po-debconf' 'unrelated' echo 'APT::NeverAutoRemove { "^debc.*nf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove testequal 'Reading package lists... @@ -42,7 +42,7 @@ testdpkginstalled "po-debconf" rm rootdir/etc/apt/apt.conf.d/00autoremove aptget autoremove -y -qq 2>&1 > /dev/null -testdpkgnoninstalled 'po-debconf' +testdpkgnotinstalled 'po-debconf' testfileequal 'rootdir/var/lib/apt/extended_states' '' diff --git a/test/integration/test-apt-get-changelog b/test/integration/test-apt-get-changelog new file mode 100755 index 000000000..0a80cc08c --- /dev/null +++ b/test/integration/test-apt-get-changelog @@ -0,0 +1,36 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture "i386" + +buildsimplenativepackage 'apt' 'all' '1.0' 'stable' + +setupaptarchive +changetowebserver +aptget update -qq + +echo 'Apt::Changelogs::Server "http://localhost:8080/";' >> ./aptconfig.conf + +testequal "'http://localhost:8080//pool/apt_1.0/changelog'" aptget changelog apt --print-uris + +aptget changelog apt -qq > apt.changelog +testfileequal 'apt.changelog' "$(cat aptarchive/pool/apt_1.0/changelog)" +rm apt.changelog + +aptget changelog apt -d -qq +testfileequal 'apt.changelog' "$(cat aptarchive/pool/apt_1.0/changelog)" +rm apt.changelog aptarchive/pool/apt_1.0/changelog + +aptget changelog apt -qq -o APT::Changelogs::Server='http://not-on-the-main-server:8080/' > apt.changelog +testfileequal 'apt.changelog' "$(cat aptarchive/pool/apt_1.0.changelog)" +rm apt.changelog + +aptget changelog apt -d -qq +testfileequal 'apt.changelog' "$(cat aptarchive/pool/apt_1.0.changelog)" +rm apt.changelog aptarchive/pool/apt_1.0.changelog + +testequal 'E: changelog download failed' aptget changelog apt -qq -o APT::Changelogs::Server='http://not-on-the-main-server:8080/' diff --git a/test/integration/test-apt-get-download b/test/integration/test-apt-get-download new file mode 100755 index 000000000..7db93c32f --- /dev/null +++ b/test/integration/test-apt-get-download @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture "i386" + +buildsimplenativepackage 'apt' 'all' '1.0' 'stable' +buildsimplenativepackage 'apt' 'all' '2.0' 'unstable' + +setupaptarchive + +testdownload() { + msgtest 'Test download of package file' $1 + if [ -z "$3" ]; then + aptget download ${2} + else + aptget download ${2}/${3} + fi + test -f $1 && msgpass || msgfail +} + +testdownload apt_1.0_all.deb apt stable +testdownload apt_2.0_all.deb apt + +DEBFILE="$(readlink -f aptarchive)/pool/apt_2.0_all.deb" +testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s $DEBFILE) sha256:$(sha256sum $DEBFILE | cut -d' ' -f 1)" aptget download apt --print-uris diff --git a/test/integration/test-bug-254770-segfault-if-cache-not-buildable b/test/integration/test-bug-254770-segfault-if-cache-not-buildable new file mode 100755 index 000000000..25c564daa --- /dev/null +++ b/test/integration/test-bug-254770-segfault-if-cache-not-buildable @@ -0,0 +1,57 @@ +#!/bin/sh +set -e + +local TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" +setupaptarchive + +CURRENTTRAP="chmod a+x rootdir/var/lib/dpkg; $CURRENTTRAP" +trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM +chmod a-x rootdir/var/lib/dpkg + +testsegfault() { + rm -f rootdir/var/cache/apt/*.bin + msgtest "No segfault in" "$*" + local TEST="$($* 2>&1 | grep -v 'E:')" + if [ -z "$TEST" ]; then + msgpass + else + echo + echo $TEST + msgfail + fi +} + +echo 'quiet 2;' > rootdir/etc/apt/apt.conf.d/00be-quiet + +testsegfault aptcache gencaches +testsegfault aptcache showpkg +testsegfault aptcache showsrc +testsegfault aptcache stats +testsegfault aptcache dump +testsegfault aptcache dumpavail +testsegfault aptcache unmet +testsegfault aptcache search +testsegfault aptcache show apt +testsegfault aptcache depends apt +testsegfault aptcache rdepends apt +testsegfault aptcache pkgnames apt +testsegfault aptcache dotty apt +testsegfault aptcache xvcg apt +testsegfault aptcache policy apt + +testsegfault aptget update +testsegfault aptget upgrade +testsegfault aptget dselect-upgrade +testsegfault aptget dist-upgrade +testsegfault aptget install apt +testsegfault aptget remove apt +testsegfault aptget purge apt +testsegfault aptget source apt +testsegfault aptget build-dep apt +testsegfault aptget check +testsegfault aptget clean +testsegfault aptget autoclean +testsegfault aptget autoremove diff --git a/test/integration/test-bug-330162-encoded-tar-header b/test/integration/test-bug-330162-encoded-tar-header new file mode 100755 index 000000000..fa01e0379 --- /dev/null +++ b/test/integration/test-bug-330162-encoded-tar-header @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +local TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +msgtest 'Test apt-ftparchive with encoded tar header package' +cp $TESTDIR/deb-bug-330162-encoded-tar-header.deb aptarchive/ +test -z "$(aptftparchive packages aptarchive/ 2>&1 | grep 'E:')" && msgpass || msgfail diff --git a/test/integration/test-bug-549968-install-depends-of-not-installed b/test/integration/test-bug-549968-install-depends-of-not-installed new file mode 100755 index 000000000..864dd340a --- /dev/null +++ b/test/integration/test-bug-549968-install-depends-of-not-installed @@ -0,0 +1,26 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertpackage 'unstable' 'libc6' 'all' '1.0' +insertpackage 'unstable' 'coolstuff' 'all' '1.0' 'Recommends: extracoolstuff' +insertpackage 'unstable' 'extracoolstuff' 'all' '1.0' 'Depends: libc6' + +setupaptarchive + +# We check the Markers here as the autoremove nuker will also +# prevent it, but to late - its better to fail earlier +testequal 'Reading package lists... +Building dependency tree... + MarkInstall coolstuff [ i386 ] < none -> 1.0 > ( other ) FU=1 + Hold prevents MarkInstall of extracoolstuff [ i386 ] < none -> 1.0 > ( other ) FU=0 +Package extracoolstuff is not installed, so not removed +The following NEW packages will be installed: + coolstuff +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst coolstuff (1.0 unstable [all]) +Conf coolstuff (1.0 unstable [all])' aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s diff --git a/test/integration/test-bug-593360-modifiers-in-names b/test/integration/test-bug-593360-modifiers-in-names new file mode 100755 index 000000000..c12503b0d --- /dev/null +++ b/test/integration/test-bug-593360-modifiers-in-names @@ -0,0 +1,64 @@ +#!/bin/sh +set -e + +local TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + g++ +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst g++ (4:4.4.5-1 localhost [i386]) +Conf g++ (4:4.4.5-1 localhost [i386])' aptget install g++ -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + g++ +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst g++ (4:4.4.5-1 localhost [i386]) +Conf g++ (4:4.4.5-1 localhost [i386])' aptget install g+++ -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + g++ +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst g++ (4:4.4.5-1 localhost [i386]) +Conf g++ (4:4.4.5-1 localhost [i386])' aptget purge g+++ -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + apt +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst apt (0.8.8 localhost [all]) +Conf apt (0.8.8 localhost [all])' aptget install apt -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + apt+ +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst apt+ (0.8.8 localhost [all]) +Conf apt+ (0.8.8 localhost [all])' aptget install apt+ -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + apt+ +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst apt+ (0.8.8 localhost [all]) +Conf apt+ (0.8.8 localhost [all])' aptget install apt++ -s + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + apt+ +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst apt+ (0.8.8 localhost [all]) +Conf apt+ (0.8.8 localhost [all])' aptget purge apt++ -s diff --git a/test/integration/test-bug-595691-empty-and-broken-archive-files b/test/integration/test-bug-595691-empty-and-broken-archive-files index 11a5025d2..684559aa7 100755 --- a/test/integration/test-bug-595691-empty-and-broken-archive-files +++ b/test/integration/test-bug-595691-empty-and-broken-archive-files @@ -7,6 +7,7 @@ setupenvironment configarchitecture "i386" buildaptarchive +touch aptarchive/Packages setupflataptarchive testaptgetupdate() { @@ -31,7 +32,7 @@ createemptyarchive() { fi touch aptarchive/Packages echo -n "" | $COMPRESSOR > aptarchive/${1}.$COMPRESS - aptftparchive release aptarchive/ > aptarchive/Release + generatereleasefiles signreleasefiles rm -f aptarchive/Packages } @@ -42,7 +43,7 @@ createemptyfile() { echo -n "" | $COMPRESSOR > aptarchive/Packages.$COMPRESS fi touch aptarchive/Packages aptarchive/${1}.$COMPRESS - aptftparchive release aptarchive/ > aptarchive/Release + generatereleasefiles signreleasefiles rm -f aptarchive/Packages } @@ -55,6 +56,7 @@ setupcompressor() { lzma) COMPRESS="lzma";; esac echo "Acquire::CompressionTypes::Order { \"${COMPRESS}\"; }; +Dir::Bin::uncompressed \"/does/not/exist\"; Dir::Bin::gzip \"/does/not/exist\"; Dir::Bin::bzip2 \"/does/not/exist\"; Dir::Bin::lzma \"/does/not/exist\";" > rootdir/etc/apt/apt.conf.d/00compressor @@ -73,31 +75,27 @@ testoverfile() { setupcompressor "$1" createemptyfile 'en' - testaptgetupdate "Get:1 file: Release.gpg [] -Get:2 file: Release [] -Ign file:$(readlink -f aptarchive)/ Translation-en + testaptgetupdate "Get:1 file: InRelease [] +Ign file: Translation-en Reading package lists..." "empty file en.$COMPRESS over file" createemptyarchive 'en' - testaptgetupdate "Get:1 file: Release.gpg [] -Get:2 file: Release [] + testaptgetupdate "Get:1 file: InRelease [] Reading package lists..." "empty archive en.$COMPRESS over file" createemptyarchive 'Packages' # FIXME: Why omits the file transport the Packages Get line? #Get:3 file: Packages [] - testaptgetupdate "Ign file:$(readlink -f aptarchive)/ Translation-en -Get:1 file: Release.gpg [] -Get:2 file: Release [] + testaptgetupdate "Get:1 file: InRelease [] +Ign file: Translation-en Reading package lists..." "empty archive Packages.$COMPRESS over file" createemptyfile 'Packages' - testaptgetupdate "Ign file:$(readlink -f aptarchive)/ Translation-en -Get:1 file: Release.gpg [] -Get:2 file: Release [] + testaptgetupdate "Get:1 file: InRelease [] +Ign file: Translation-en Err file: Packages - Undetermined Error -W: Failed to fetch file:$(readlink -f aptarchive/Packages.$COMPRESS) Undetermined Error + Empty files can't be valid archives +W: Failed to fetch ${COMPRESSOR}:$(readlink -f aptarchive/Packages.$COMPRESS) Empty files can't be valid archives E: Some index files failed to download, they have been ignored, or old ones used instead." "empty file Packages.$COMPRESS over file" } @@ -106,36 +104,32 @@ testoverhttp() { setupcompressor "$1" createemptyfile 'en' - testaptgetupdate "Get:1 http://localhost Release.gpg [] -Get:2 http://localhost/ Translation-en -Get:3 http://localhost Release [] -Ign http://localhost/ Translation-en -Get:4 http://localhost Packages [] + testaptgetupdate "Get:1 http://localhost InRelease [] +Get:2 http://localhost Packages [] +Get:3 http://localhost Translation-en +Ign http://localhost Translation-en Reading package lists..." "empty file en.$COMPRESS over http" createemptyarchive 'en' - testaptgetupdate "Get:1 http://localhost Release.gpg [] -Get:2 http://localhost/ Translation-en [] -Get:3 http://localhost Release [] -Get:4 http://localhost Packages [] + testaptgetupdate "Get:1 http://localhost InRelease [] +Get:2 http://localhost Packages [] +Get:3 http://localhost Translation-en [] Reading package lists..." "empty archive en.$COMPRESS over http" createemptyarchive 'Packages' - testaptgetupdate "Get:1 http://localhost Release.gpg [] -Ign http://localhost/ Translation-en -Get:2 http://localhost Release [] -Get:3 http://localhost Packages [] + testaptgetupdate "Get:1 http://localhost InRelease [] +Get:2 http://localhost Packages [] +Ign http://localhost Translation-en Reading package lists..." "empty archive Packages.$COMPRESS over http" createemptyfile 'Packages' #FIXME: we should response with a good error message instead - testaptgetupdate "Get:1 http://localhost Release.gpg [] -Ign http://localhost/ Translation-en -Get:2 http://localhost Release [] -Get:3 http://localhost Packages + testaptgetupdate "Get:1 http://localhost InRelease [] +Get:2 http://localhost Packages +Ign http://localhost Translation-en Err http://localhost Packages - Undetermined Error -W: Failed to fetch http://localhost:8080/Packages.$COMPRESS Undetermined Error + Empty files can't be valid archives +W: Failed to fetch ${COMPRESSOR}:$(readlink -f rootdir/var/lib/apt/lists/partial/localhost:8080_Packages) Empty files can't be valid archives E: Some index files failed to download, they have been ignored, or old ones used instead." "empty file Packages.$COMPRESS over http" } diff --git a/test/integration/test-bug-601016-description-translation b/test/integration/test-bug-601016-description-translation index a31e42ee1..2a323a201 100755 --- a/test/integration/test-bug-601016-description-translation +++ b/test/integration/test-bug-601016-description-translation @@ -57,6 +57,7 @@ Description-${LOCALE}: Mächtige Oberfläche für dpkg testrun() { echo "Acquire::Languages { \"${LOCALE}\"; \"en\"; };" > rootdir/etc/apt/apt.conf.d/00languages export LC_ALL="" + rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/ setupaptarchive testequal "$LOCALESTANZA" aptcache show apt -o Test=File-${LOCALE} testequal "$NOLONGSTANZA" aptcache show apt -o Acquire::Languages="ww" -o Test=File-${LOCALE} diff --git a/test/integration/test-bug-601961-install-info b/test/integration/test-bug-601961-install-info new file mode 100755 index 000000000..b91bf3615 --- /dev/null +++ b/test/integration/test-bug-601961-install-info @@ -0,0 +1,38 @@ +#!/bin/sh +set -e + +local TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + findutils +WARNING: The following essential packages will be removed. +This should NOT be done unless you know exactly what you are doing! + findutils +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +After this operation, 1745 kB disk space will be freed. +E: Trivial Only specified but this is not a trivial operation.' aptget remove findutils --trivial-only + +testequal 'Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + install-info +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +After this operation, 262 kB disk space will be freed. +E: Trivial Only specified but this is not a trivial operation.' aptget remove install-info --trivial-only + +testequal 'Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + essentialpkg findutils +WARNING: The following essential packages will be removed. +This should NOT be done unless you know exactly what you are doing! + findutils essentialpkg (due to findutils) +0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. +After this operation, 2007 kB disk space will be freed. +E: Trivial Only specified but this is not a trivial operation.' aptget remove essentialpkg --trivial-only diff --git a/test/integration/test-bug-604222-new-and-autoremove b/test/integration/test-bug-604222-new-and-autoremove new file mode 100755 index 000000000..fa6dcdc70 --- /dev/null +++ b/test/integration/test-bug-604222-new-and-autoremove @@ -0,0 +1,66 @@ +#!/bin/sh +set -e + +local TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" +setupaptarchive + +echo 'Package: libvtk5.4 +Auto-Installed: 1 +Architecture: i386' > rootdir/var/lib/apt/extended_states + +testequal "Reading package lists... +Building dependency tree... +Reading state information... +The following package was automatically installed and is no longer required: + libvtk5.4 +Use 'apt-get autoremove' to remove them. +The following NEW packages will be installed: + libavcodec52 +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst libavcodec52 (4:0.5.2-6 localhost [i386]) +Conf libavcodec52 (4:0.5.2-6 localhost [i386])" aptget install libavcodec52 -s + +testequal "Reading package lists... +Building dependency tree... +Reading state information... +The following package was automatically installed and is no longer required: + libvtk5.4 +Use 'apt-get autoremove' to remove them. +The following extra packages will be installed: + libavcodec52 libopenal-dev libvtk5.4 +The following NEW packages will be installed: + dummy-archive libavcodec52 libopenal-dev +The following packages will be upgraded: + libvtk5.4 +1 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. +Need to get 0 B/19.4 MB of archives. +After this operation, 17.3 MB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install dummy-archive --trivial-only + +echo -n > rootdir/var/lib/dpkg/status +rm rootdir/var/lib/apt/extended_states + +CONFLICTING='Reading package lists... +Building dependency tree... + MarkInstall dummy-archive [ i386 ] < none -> 0.invalid.0 > ( admin ) FU=1 + MarkInstall libavcodec52 [ i386 ] < none -> 4:0.5.2-6 > ( libs ) FU=0 + MarkInstall libvtk5-dev [ i386 ] < none -> 5.4.2-8 > ( libdevel ) FU=0 + MarkInstall libvtk5.4 [ i386 ] < none -> 5.4.2-8 > ( libs ) FU=0 + MarkKeep libvtk5-dev [ i386 ] < none -> 5.4.2-8 > ( libdevel ) FU=0 + MarkKeep libvtk5-dev [ i386 ] < none -> 5.4.2-8 > ( libdevel ) FU=0 + MarkDelete libvtk5.4 [ i386 ] < none -> 5.4.2-8 > ( libs ) FU=1 +The following extra packages will be installed: + libavcodec52 libopenal-dev +The following NEW packages will be installed: + dummy-archive libavcodec52 libopenal-dev +0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. +Need to get 0 B/6304 kB of archives. +After this operation, 17.3 MB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation.' + +testequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=0 +testequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=1 +testequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=small diff --git a/test/integration/test-bug-604401-files-are-directories b/test/integration/test-bug-604401-files-are-directories new file mode 100755 index 000000000..917fb106f --- /dev/null +++ b/test/integration/test-bug-604401-files-are-directories @@ -0,0 +1,66 @@ +#!/bin/sh +set -e + +local TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" +setupaptarchive + +test ! -e rootdir/etc/apt/apt.conf || mv rootdir/etc/apt/apt.conf rootdir/etc/apt/apt.conf.d/000move-away-apt.conf + +msgtest "Directory instead of a file as apt.conf ignored" +mkdir -p rootdir/etc/apt/apt.conf +aptconfig dump > /dev/null && msgpass || msgfail +rmdir rootdir/etc/apt/apt.conf + +msgtest "Good link instead of a file as apt.conf ignored" +echo 'Test::APT::Link "good";' > rootdir/etc/apt/good-link.conf +ln -s rootdir/etc/apt/good-link.conf rootdir/etc/apt/apt.conf +test -n "$(aptconfig shell TestLink 'Test::APT::Link')" && msgfail || msgpass +rm rootdir/etc/apt/apt.conf + +msgtest "Broken link instead of a file as apt.conf ignored" +ln -s /tmp/doesnt-exist rootdir/etc/apt/apt.conf +aptconfig dump > /dev/null && msgpass || msgfail +rm rootdir/etc/apt/apt.conf + + +test ! -e rootdir/etc/apt/sources.list || mv rootdir/etc/apt/sources.list rootdir/etc/apt/sources.list.d/000move-away-sources.list + +msgtest "Directory instead of a file as sources.list ignored" +mkdir -p rootdir/etc/apt/sources.list +aptget update --print-uris 2> /dev/null && msgpass || msgfail +rmdir rootdir/etc/apt/sources.list + +msgtest "Good link instead of a file as sources.list ignored" +echo 'deb file:///tmp/debian sid main' > rootdir/etc/apt/good-link.list +ln -s rootdir/etc/apt/good-link.list rootdir/etc/apt/sources.list +test -n "$(aptget update --print-uris)" && msgfail || msgpass +rm rootdir/etc/apt/sources.list + +msgtest "Broken link instead of a file as sources.list ignored" +ln -s /tmp/doesnt-exist rootdir/etc/apt/sources.list +test -n "$(aptget update --print-uris)" && msgfail || msgpass +rm rootdir/etc/apt/sources.list + + +test ! -e rootdir/etc/apt/preferences || mv rootdir/etc/apt/preferences rootdir/etc/apt/preferences.d/000move-away-preferences + +msgtest "Directory instead of a file as preferences ignored" +mkdir -p rootdir/etc/apt/preferences +aptcache policy > /dev/null 2> /dev/null && msgpass || msgfail +rmdir rootdir/etc/apt/preferences + +msgtest "Good link instead of a file as preferences ignored" +echo 'Package: apt +Pin: release a=now +Pin-Value: 1000' > rootdir/etc/apt/good-link.pref +ln -s rootdir/etc/apt/good-link.pref rootdir/etc/apt/preferences +test -n "$(aptcache policy | grep 1000)" && msgfail || msgpass +rm rootdir/etc/apt/preferences + +msgtest "Broken link instead of a file as preferences ignored" +ln -s /tmp/doesnt-exist rootdir/etc/apt/preferences +aptcache policy > /dev/null 2> /dev/null && msgpass || msgfail +rm rootdir/etc/apt/preferences diff --git a/test/integration/test-bug-611729-mark-as-manual b/test/integration/test-bug-611729-mark-as-manual new file mode 100755 index 000000000..9c1cd3d1b --- /dev/null +++ b/test/integration/test-bug-611729-mark-as-manual @@ -0,0 +1,105 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +buildsimplenativepackage "peace-dpkg" "all" "1.0" "stable" + +buildsimplenativepackage "a" "all" "1.0" "stable" "Depends: b" +buildsimplenativepackage "b" "all" "1.0" "stable" +buildsimplenativepackage "c" "all" "1.0" "stable" "Depends: b" + +setupaptarchive + +# dpkg freaks out if the last package is removed so keep one around +aptget install peace-dpkg -y -qq 2>&1 > /dev/null +testdpkginstalled peace-dpkg +testfileequal 'rootdir/var/lib/apt/extended_states' '' + +aptget install a -y -qq 2>&1 > /dev/null +testdpkginstalled a b +testdpkgnotinstalled c +testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b +Architecture: i386 +Auto-Installed: 1 +' + +aptget remove a -y -qq 2>&1 > /dev/null +testdpkgnotinstalled a c +testdpkginstalled b +testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b +Architecture: i386 +Auto-Installed: 1 +' + +aptget install c -y -qq 2>&1 > /dev/null +testdpkgnotinstalled a +testdpkginstalled b c +testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b +Architecture: i386 +Auto-Installed: 1 +' + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +b is already the newest version. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b --only-upgrade +testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b +Architecture: i386 +Auto-Installed: 1 +' + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +b is already the newest version. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b -d +testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b +Architecture: i386 +Auto-Installed: 1 +' + +aptget install b --reinstall -y -qq 2>&1 > /dev/null +testdpkgnotinstalled a +testdpkginstalled b c +testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b +Architecture: i386 +Auto-Installed: 1 +' + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +b is already the newest version. +b set to manually installed. +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b +testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b +Architecture: i386 +Auto-Installed: 0 +' + +aptget remove b -y -qq 2>&1 > /dev/null +testdpkgnotinstalled a b c +testfileequal 'rootdir/var/lib/apt/extended_states' '' + +aptget install a b -y -qq 2>&1 > /dev/null +testdpkginstalled a b +testdpkgnotinstalled c +testfileequal 'rootdir/var/lib/apt/extended_states' '' + +aptget purge a b -y -qq 2>&1 > /dev/null +testdpkgnotinstalled a b c +testfileequal 'rootdir/var/lib/apt/extended_states' '' + +aptget install b c -y -qq 2>&1 > /dev/null +testdpkgnotinstalled a +testdpkginstalled b c +testfileequal 'rootdir/var/lib/apt/extended_states' '' + +aptget install a -y -qq 2>&1 > /dev/null +testdpkginstalled a b c +testfileequal 'rootdir/var/lib/apt/extended_states' '' diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts new file mode 100755 index 000000000..caac75db4 --- /dev/null +++ b/test/integration/test-bug-612099-multiarch-conflicts @@ -0,0 +1,209 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" "amd64" + +buildsimplenativepackage 'peace-dpkg' 'all' '1.0' 'stable' + +buildsimplenativepackage 'libc6' 'i386' '1.0' 'stable' +buildsimplenativepackage 'libc6' 'amd64' '1.0' 'stable' +buildsimplenativepackage 'libc6' 'all' '2.0' 'testing' + +buildsimplenativepackage 'foobar' 'i386' '1.0' 'stable' 'Depends: libc6' +buildsimplenativepackage 'foobar' 'amd64' '1.0' 'stable' 'Depends: libc6' + +setupaptarchive + +aptget install peace-dpkg:i386 -y -qq 2>&1 > /dev/null +testdpkginstalled peace-dpkg + +aptget install libc6:i386 -t stable -y -qq 2>&1 > /dev/null +testdpkginstalled libc6 +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + libc6 +The following NEW packages will be installed: + libc6:amd64 +0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. +Remv libc6 [1.0] +Inst libc6:amd64 (1.0 stable [amd64]) +Conf libc6:amd64 (1.0 stable [amd64])' aptget install libc6:amd64 -s -t stable + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar (1.0 stable [i386]) +Conf foobar (1.0 stable [i386])' aptget install foobar -st stable + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following extra packages will be installed: + libc6:amd64 +The following packages will be REMOVED: + libc6 +The following NEW packages will be installed: + foobar:amd64 libc6:amd64 +0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded. +Remv libc6 [1.0] +Inst libc6:amd64 (1.0 stable [amd64]) +Inst foobar:amd64 (1.0 stable [amd64]) +Conf libc6:amd64 (1.0 stable [amd64]) +Conf foobar:amd64 (1.0 stable [amd64])' aptget install foobar:amd64 -st stable + +# FIXME: libc6:i386 is installed, we are switching to libc6:all +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following extra packages will be installed: + libc6 +The following NEW packages will be installed: + foobar libc6 +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst libc6 (2.0 testing, testing [all]) +Inst foobar (1.0 stable [i386]) +Conf libc6 (2.0 testing, testing [all]) +Conf foobar (1.0 stable [i386])' aptget install foobar/stable libc6 -st testing + +# FIXME: libc6:i386 is installed, we are switching to libc6:all +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + libc6 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst libc6 (2.0 testing, testing [all]) +Conf libc6 (2.0 testing, testing [all])' aptget upgrade -t testing -s +aptget upgrade -y -qq 2>&1 > /dev/null +testdpkginstalled libc6 + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar (1.0 stable [i386]) [] +Conf foobar (1.0 stable [i386])' aptget install foobar/stable -st testing + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar:amd64 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar:amd64 (1.0 stable [amd64]) +Conf foobar:amd64 (1.0 stable [amd64])' aptget install foobar:amd64/stable -st testing + + +# FIXME: the display is a strange (its a downgrade), but the handling itself correct +testequal "Reading package lists... +Building dependency tree... +Reading state information... +Selected version '1.0' (stable [i386]) for 'libc6' +The following packages will be REMOVED: + libc6 +The following NEW packages will be installed: + libc6 +0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded. +Remv libc6 [2.0] +Inst libc6 (1.0 stable [i386]) +Conf libc6 (1.0 stable [i386])" aptget install libc6/stable -s -q=0 + + +buildsimplenativepackage 'libc6-same' 'i386' '1.0' 'stable' 'Multi-Arch: same' +buildsimplenativepackage 'libc6-same' 'amd64' '1.0' 'stable' 'Multi-Arch: same' +buildsimplenativepackage 'libc6-same' 'all' '2.0' 'testing' + +buildsimplenativepackage 'foobar-same' 'i386' '1.0' 'stable' 'Depends: libc6-same' +buildsimplenativepackage 'foobar-same' 'amd64' '1.0' 'stable' 'Depends: libc6-same' + +setupaptarchive + +aptget install libc6-same:i386 -t stable -y -qq 2>&1 > /dev/null +testdpkginstalled libc6-same + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar-same +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar-same (1.0 stable [i386]) +Conf foobar-same (1.0 stable [i386])' aptget install foobar-same -st stable + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following extra packages will be installed: + libc6-same:amd64 +The following NEW packages will be installed: + foobar-same:amd64 libc6-same:amd64 +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst libc6-same:amd64 (1.0 stable [amd64]) +Inst foobar-same:amd64 (1.0 stable [amd64]) +Conf libc6-same:amd64 (1.0 stable [amd64]) +Conf foobar-same:amd64 (1.0 stable [amd64])' aptget install foobar-same:amd64 -st stable + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + libc6-same:amd64 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst libc6-same:amd64 (1.0 stable [amd64]) +Conf libc6-same:amd64 (1.0 stable [amd64])' aptget install libc6-same:amd64 -s -t stable + +# FIXME: We should test installing libc6-same:amd64 here, but dpkg doesn't allow it currently + +# FIXME: upgrade any to all as above +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + libc6-same +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst libc6-same (2.0 testing, testing [all]) +Conf libc6-same (2.0 testing, testing [all])' aptget upgrade -t testing -s +aptget upgrade -y -qq 2>&1 > /dev/null +testdpkginstalled libc6-same + +# FIXME: the display is a strange (its a downgrade), but the handling itself correct +testequal "Reading package lists... +Building dependency tree... +Reading state information... +Selected version '1.0' (stable [i386]) for 'libc6-same' +The following packages will be REMOVED: + libc6-same +The following NEW packages will be installed: + libc6-same +0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded. +Remv libc6-same [2.0] +Inst libc6-same (1.0 stable [i386]) +Conf libc6-same (1.0 stable [i386])" aptget install libc6-same/stable -s -q=0 + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar-same +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar-same (1.0 stable [i386]) [] +Conf foobar-same (1.0 stable [i386])' aptget install foobar-same/stable -st testing + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar-same:amd64 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar-same:amd64 (1.0 stable [amd64]) +Conf foobar-same:amd64 (1.0 stable [amd64])' aptget install foobar-same:amd64/stable -st testing diff --git a/test/integration/test-bug-64141-install-dependencies-for-on-hold b/test/integration/test-bug-64141-install-dependencies-for-on-hold new file mode 100755 index 000000000..4633ffcc3 --- /dev/null +++ b/test/integration/test-bug-64141-install-dependencies-for-on-hold @@ -0,0 +1,34 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + oldcrap +The following NEW packages will be installed: + libdb4.8 +The following packages will be upgraded: + apt libc6 +2 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. +Need to get 0 B/6724 kB of archives. +After this operation, 1523 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only + +echo 'apt hold' | dpkg --set-selections + +testequal 'Reading package lists... +Building dependency tree... +The following packages have been kept back: + apt +The following packages will be upgraded: + libc6 +1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. +Need to get 0 B/3881 kB of archives. +After this operation, 0 B of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only -o Test='hold-back-apt' diff --git a/test/integration/test-changelog b/test/integration/test-changelog deleted file mode 100755 index 292df6e32..000000000 --- a/test/integration/test-changelog +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -set -e - -TESTDIR=$(readlink -f $(dirname $0)) -. $TESTDIR/framework - -setupenvironment -configarchitecture "i386" - -# this will be valid until ubuntu lucid is EOL (04/2015) -pkgchangelogtest="Package: apt -Architecture: i386 -Version: 0.7.25.3ubuntu7 -Filename: pool/main/a/apt/apt_0.7.25.3ubuntu7_i386.deb -Section: admin -" -cat <<-EOF >aptarchive/Packages -$pkgchangelogtest -EOF - -setupaptarchive - -echo "Apt::Changelogs::Server \"http://changelogs.ubuntu.com/\";" >> ./aptconfig.conf -msgnmsg "apt-get changelog: " -aptget changelog apt -qq > downloaded-changelog -expected="apt (0.7.25.3ubuntu7) lucid; urgency=low" -got="$(head -n1 downloaded-changelog)" -if [ -s downloaded-changelog ] && [ "$got" = "$expected" ]; then - msgpass -else - msgfail - msgwarn "$got != $expected" -fi - diff --git a/test/integration/test-compressed-indexes b/test/integration/test-compressed-indexes index be33edbb7..99943574e 100755 --- a/test/integration/test-compressed-indexes +++ b/test/integration/test-compressed-indexes @@ -16,11 +16,11 @@ local GOODPOLICY="$(aptcache policy testpkg)" local GOODSHOWSRC="$(aptcache showsrc testpkg) " -test $(echo "$GOODSHOW" | grep -e '^Package: testpkg' -e '^Version: 1.0' -e '^Architecture: i386' | wc -l) -eq 3 +test $(echo "$GOODSHOW" | grep -e '^Package: testpkg' -e '^Version: 1.0' -e '^Architecture: i386' | wc -l) -eq 3 || msgdie 'show is broken' testequal "$GOODSHOW" aptcache show testpkg -test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 file:/' | wc -l) -eq 4 +test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 file:/' | wc -l) -eq 4 || msgdie 'policy is broken' testequal "$GOODPOLICY" aptcache policy testpkg -test $(echo "$GOODSHOWSRC" | grep -e '^Package: testpkg' -e '^Format: 3.0 (native)' -e '^Files:' -e '^Checksums-Sha256:' | wc -l) -eq 4 +test $(echo "$GOODSHOWSRC" | grep -e '^Package: testpkg' -e '^Format: 3.0 (native)' -e '^Files:' -e '^Checksums-Sha256:' | wc -l) -eq 4 || msgdie 'showsrc is broken' testequal "$GOODSHOWSRC" aptcache showsrc testpkg diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage index a70b6122c..0a8293018 100755 --- a/test/integration/test-pdiff-usage +++ b/test/integration/test-pdiff-usage @@ -23,7 +23,6 @@ cat aptarchive/Packages | gzip > aptarchive/Packages.gz cat aptarchive/Packages | bzip2 > aptarchive/Packages.bz2 cat aptarchive/Packages | lzma > aptarchive/Packages.lzma rm -rf aptarchive/Packages.diff -aptftparchive release aptarchive/ > aptarchive/Release mkdir -p aptarchive/Packages.diff PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)" diff -e ${PKGFILE} ${PKGFILE}-new > ${PATCHFILE} || true @@ -36,14 +35,9 @@ SHA1-History: SHA1-Patches: 7651fc0ac57cd83d41c63195a9342e2db5650257 19722 2010-08-18-0814.28 $(sha1sum $PATCHFILE | cut -d' ' -f 1) $(stat -c%s $PATCHFILE) $(basename $PATCHFILE)" > $PATCHINDEX -sed -i aptarchive/Release \ - -e "/^MD5Sum:/ a\ - \ $(md5sum $PATCHINDEX | cut -d' ' -f 1) $(stat -c%s $PATCHINDEX) Packages.diff/Index" \ - -e "/^SHA1:/ a\ - \ $(sha1sum $PATCHINDEX | cut -d' ' -f 1) $(stat -c%s $PATCHINDEX) Packages.diff/Index" \ - -e "/^SHA256:/ a\ - \ $(sha256sum $PATCHINDEX | cut -d' ' -f 1) $(stat -c%s $PATCHINDEX) Packages.diff/Index" +generatereleasefiles signreleasefiles +find aptarchive -name 'Packages*' -type f -delete aptget update -qq testnopackage oldstuff diff --git a/test/integration/test-release-candidate-switching b/test/integration/test-release-candidate-switching new file mode 100755 index 000000000..5736945ab --- /dev/null +++ b/test/integration/test-release-candidate-switching @@ -0,0 +1,419 @@ +#!/bin/sh +set -e + +local TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertpackage 'unstable' 'libc6' 'i386' '2.11.2-7+sid' +insertpackage 'unstable' 'phonon-backend-xine' 'i386' '4:4.6.0really4.4.2-1+sid' 'Provides: phonon-backend' +insertpackage 'unstable' 'phonon-backend-xine2' 'i386' '4:4.6.0really4.4.2-1+sid' +insertpackage 'unstable' 'phonon-backend-xine3' 'i386' '4:4.6.0really4.4.2-1+sid' +insertpackage 'unstable' 'phonon-backend-xine4' 'i386' '4:4.6.0really4.4.2-1+sid' +insertpackage 'unstable' 'phonon-backend-null' 'i386' '4:4.20.0+sid' 'Provides: phonon-backend' +insertpackage 'unstable' 'intermediatepkg' 'all' '1.0' + +insertpackage 'unstable' 'amarok-common' 'all' '2.3.1-1+sid' +insertpackage 'unstable' 'amarok-utils' 'i386' '2.3.1-1+sid' +insertpackage 'unstable' 'libmtp8' 'i386' '0.3.1+sid' +insertpackage 'unstable' 'amarok' 'i386' '2.3.1-1+sid' 'Depends: amarok-common (= 2.3.1-1+sid), amarok-utils (= 2.3.1-1+sid), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6' + +insertpackage 'experimental' 'amarok-common' 'all' '2.3.2-2+exp' +insertpackage 'experimental' 'amarok-utils' 'i386' '2.3.2-2+exp' +insertpackage 'experimental' 'libmtp8' 'i386' '0.3.3+exp' +insertpackage 'experimental' 'phonon-backend-xine' 'i386' '5:4.6.0+exp' 'Provides: phonon-backend' +insertpackage 'experimental' 'phonon-backend-xine2' 'i386' '5:4.6.0+exp' 'Depends: uninstallablepkg +Provides: phonon-backend-broken' +insertpackage 'experimental' 'phonon-backend-xine3' 'i386' '5:4.6.0+exp' 'Depends: intermediatepkg (>= 1.5)' +insertpackage 'experimental' 'phonon-backend-xine4' 'i386' '5:4.6.0+exp' 'Depends: intermediateuninstallablepkg (= 2.0) +Provides: phonon-backend-broken' +insertpackage 'experimental' 'intermediatepkg' 'all' '2.0' 'Depends: libc6' +insertpackage 'experimental' 'intermediateuninstallablepkg' 'all' '2.0' 'Depends: uninstallablepkg' +insertpackage 'experimental' 'phonon-backend-null' 'i386' '5:4.20.0+exp' 'Provides: phonon-backend' +insertpackage 'experimental' 'amarok' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), amarok-utils (= 2.3.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6' + +insertpackage 'experimental2' 'phonon-backend-xine' 'i386' '5:4.00.0+exp' 'Provides: phonon-backend' +insertpackage 'experimental2' 'amarok-less' 'i386' '2.3.2-2+exp' 'Depends: amarok-common, phonon-backend-xine (>= 5:4.00.0+exp), libmtp8, libc6, amarok-utils' +insertpackage 'experimental' 'amarok-higher' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (>= 5:4.6.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)' + +insertpackage 'experimental' 'amarok-null' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (= 1:1.0-1) | phonon-backend, libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)' +insertpackage 'experimental' 'amarok-null2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-null (= 1:1.0-1) | phonon-backend, libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)' +insertpackage 'experimental' 'amarok-xine' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)' +insertpackage 'experimental' 'amarok-xine2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine2 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)' +insertpackage 'experimental' 'amarok-xine3' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine3 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)' +insertpackage 'experimental' 'amarok-xine4' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine4 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)' +insertpackage 'experimental' 'amarok-broken' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-broken | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)' + +insertpackage 'experimental' 'amarok-recommends' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp) +Recommends: amarok-utils (= 2.3.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6' +insertpackage 'experimental' 'amarok-recommends2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp) +Recommends: amarok-utils (= 2.30.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6' + +insertpackage 'experimental' 'uninstallablepkg' 'all' '1.0' 'Depends: libmtp8 (>= 10:0.20.1), amarok-utils (= 2.3.2-2+exp)' + +setupaptarchive + +testequal "Reading package lists... +Building dependency tree... +The following extra packages will be installed: + amarok-common (2.3.1-1+sid) + amarok-utils (2.3.1-1+sid) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +The following NEW packages will be installed: + amarok (2.3.1-1+sid) + amarok-common (2.3.1-1+sid) + amarok-utils (2.3.1-1+sid) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok --trivial-only -V -q=0 + +testequal "Reading package lists... +Building dependency tree... +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.3+exp) + phonon-backend-xine (4.6.0+exp) +The following NEW packages will be installed: + amarok (2.3.2-2+exp) + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.3+exp) + phonon-backend-xine (4.6.0+exp) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok -t experimental --trivial-only -V -q=0 + +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +The following NEW packages will be installed: + amarok (2.3.2-2+exp) + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok/experimental --trivial-only -V -q=0 + +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+sid) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-null (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+sid) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-null/experimental --trivial-only -V -q=0 + +# do not select the same version multiple times +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +The following NEW packages will be installed: + amarok (2.3.2-2+exp) + amarok-common (2.3.2-2+exp) + amarok-null (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded. +After this operation, 301 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok/experimental amarok-null/experimental --trivial-only -V -q=0 + +# … but thighten the version if needed +# in theory, the second line is wrong, but printing the right version is too much of a hassle +# (we have to check if later in the Changed list is another change and if so use this version +# instead of the current candidate) - and it wouldn't be (really) useful anyway… +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental2 [i386]) for 'amarok-less' +Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-less' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-higher' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-higher' +Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-higher' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-higher' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0+exp) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-higher (2.3.2-2+exp) + amarok-less (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0+exp) +0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded. +After this operation, 301 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-less/experimental2 amarok-higher/experimental --trivial-only -V -q=0 + +# phonon-backend-null can't be used directly, but as it provides it is still fine… +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null2' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null2' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null2' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+sid) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-null2 (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+sid) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-null2/experimental --trivial-only -V -q=0 + +# if an or-group satisfier is already found, do not set others +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine' +Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-xine' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0+exp) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + amarok-xine (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0+exp) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine/experimental --trivial-only -V -q=0 + +# … but proceed testing if the first doesn't work out +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine2' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine2' +Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine2' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine2' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+exp) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + amarok-xine2 (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+exp) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine2/experimental --trivial-only -V -q=0 + +# sometimes, the second level need to be corrected, too +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine3' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine3' +Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine3' because of 'amarok-xine3' +Selected version '2.0' (experimental [all]) for 'intermediatepkg' because of 'phonon-backend-xine3' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine3' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + intermediatepkg (2.0) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine3 (4.6.0+exp) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + amarok-xine3 (2.3.2-2+exp) + intermediatepkg (2.0) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine3 (4.6.0+exp) +0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded. +After this operation, 301 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine3/experimental --trivial-only -V -q=0 + +# … but proceed testing if the first doesn't work out even in second deep +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine4' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine4' +Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine4' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine4' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+exp) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + amarok-xine4 (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+exp) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine4/experimental --trivial-only -V -q=0 + +# providers can be broken, too +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-broken' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-broken' +Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-broken' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-broken' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+exp) +The following NEW packages will be installed: + amarok-broken (2.3.2-2+exp) + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-null (4.20.0+exp) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-broken/experimental --trivial-only -V -q=0 + +# switch the candidate for recommends too if they should be installed +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-recommends' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-recommends (2.3.2-2+exp) + amarok-utils (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. +After this operation, 258 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends/experimental --trivial-only -V -q=0 -o APT::Install-Recommends=1 + +# … or not if not +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) +Recommended packages: + amarok-utils (2.3.1-1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) + phonon-backend () + libmtp8 (0.3.1+sid) + libc6 (2.11.2-7+sid) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-recommends (2.3.2-2+exp) +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +After this operation, 86.0 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends/experimental --trivial-only -V -q=0 -o APT::Install-Recommends=0 + +# but broken recommends are not the end of the world +# FIXME: the version output for recommend packages is a bit strange… but what would be better? +testequal "Reading package lists... +Building dependency tree... +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends2' +Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends2' +The following extra packages will be installed: + amarok-common (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +Recommended packages: + amarok-utils (2.3.1-1+sid) +The following NEW packages will be installed: + amarok-common (2.3.2-2+exp) + amarok-recommends2 (2.3.2-2+exp) + libc6 (2.11.2-7+sid) + libmtp8 (0.3.1+sid) + phonon-backend-xine (4.6.0really4.4.2-1+sid) +0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. +After this operation, 215 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends2/experimental --trivial-only -V -q=0 -o APT::Install-Recommends=1 + +# if one depends doesn't work, we don't need to look deeper… +testequal "Reading package lists... +Building dependency tree... +Selected version '1.0' (experimental [all]) for 'uninstallablepkg' +Some packages could not be installed. This may mean that you have +requested an impossible situation or if you are using the unstable +distribution that some required packages have not yet been created +or been moved out of Incoming. +The following information may help to resolve the situation: + +The following packages have unmet dependencies: + uninstallablepkg : Depends: libmtp8 (>= 10:0.20.1) but it is not going to be installed + Depends: amarok-utils (= 2.3.2-2+exp) but 2.3.1-1+sid is to be installed +E: Broken packages" aptget install uninstallablepkg/experimental --trivial-only -V -q=0 diff --git a/test/integration/test-releasefile-verification b/test/integration/test-releasefile-verification new file mode 100755 index 000000000..961c49895 --- /dev/null +++ b/test/integration/test-releasefile-verification @@ -0,0 +1,160 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture "i386" + +buildaptarchive +setupflataptarchive +changetowebserver + +prepare() { + local DATE="${2:-now}" + if [ "$DATE" = 'now' -a "$1" = "${PKGFILE}-new" ]; then + DATE='now + 6 days' + fi + for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do + touch -d 'now - 6 hours' $release + done + rm -rf rootdir/var/cache/apt/archives + rm -f rootdir/var/cache/apt/*.bin + cp $1 aptarchive/Packages + find aptarchive -name 'Release' -delete + cat aptarchive/Packages | gzip > aptarchive/Packages.gz + cat aptarchive/Packages | bzip2 > aptarchive/Packages.bz2 + cat aptarchive/Packages | lzma > aptarchive/Packages.lzma + generatereleasefiles "$DATE" +} + +installaptold() { + testequal 'Reading package lists... +Building dependency tree... +Suggested packages: + aptitude synaptic wajig dpkg-dev apt-doc bzip2 lzma python-apt +The following NEW packages will be installed: + apt +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +After this operation, 5370 kB of additional disk space will be used. +Get:1 http://localhost/ apt 0.7.25.3 +Download complete and in download only mode' aptget install apt -dy +} + +installaptnew() { + testequal 'Reading package lists... +Building dependency tree... +Suggested packages: + aptitude synaptic wajig dpkg-dev apt-doc bzip2 lzma python-apt +The following NEW packages will be installed: + apt +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +After this operation, 5808 kB of additional disk space will be used. +Get:1 http://localhost/ apt 0.8.0~pre1 +Download complete and in download only mode' aptget install apt -dy +} + +failaptold() { + testequal 'Reading package lists... +Building dependency tree... +Suggested packages: + aptitude synaptic wajig dpkg-dev apt-doc bzip2 lzma python-apt +The following NEW packages will be installed: + apt +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +After this operation, 5370 kB of additional disk space will be used. +WARNING: The following packages cannot be authenticated! + apt +E: There are problems and -y was used without --force-yes' aptget install apt -dy +} + +failaptnew() { + testequal 'Reading package lists... +Building dependency tree... +Suggested packages: + aptitude synaptic wajig dpkg-dev apt-doc bzip2 lzma python-apt +The following NEW packages will be installed: + apt +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +After this operation, 5808 kB of additional disk space will be used. +WARNING: The following packages cannot be authenticated! + apt +E: There are problems and -y was used without --force-yes' aptget install apt -dy +} + +# fake our downloadable file +touch aptarchive/apt.deb + +PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')" + +runtest() { + prepare ${PKGFILE} + rm -rf rootdir/var/lib/apt/lists + signreleasefiles 'Joe Sixpack' + find aptarchive/ -name "$DELETEFILE" -delete + msgtest 'Cold archive signed by' 'Joe Sixpack' + aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass + testequal "$(cat ${PKGFILE}) +" aptcache show apt + installaptold + + prepare ${PKGFILE}-new + signreleasefiles 'Joe Sixpack' + find aptarchive/ -name "$DELETEFILE" -delete + msgtest 'Good warm archive signed by' 'Joe Sixpack' + aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass + testequal "$(cat ${PKGFILE}-new) +" aptcache show apt + installaptnew + + + prepare ${PKGFILE} + rm -rf rootdir/var/lib/apt/lists + signreleasefiles 'Marvin Paranoid' + find aptarchive/ -name "$DELETEFILE" -delete + msgtest 'Cold archive signed by' 'Marvin Paranoid' + aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgpass || msgfail + testequal "$(cat ${PKGFILE}) +" aptcache show apt + failaptold + + prepare ${PKGFILE}-new + # weborf doesn't support If-Range + for release in $(find rootdir/var/lib/apt/lists/partial/ -name '*Release'); do + rm $release + touch $release + done + signreleasefiles 'Joe Sixpack' + find aptarchive/ -name "$DELETEFILE" -delete + msgtest 'Bad warm archive signed by' 'Joe Sixpack' + aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass + testequal "$(cat ${PKGFILE}-new) +" aptcache show apt + installaptnew + + + prepare ${PKGFILE} + rm -rf rootdir/var/lib/apt/lists + signreleasefiles 'Joe Sixpack' + find aptarchive/ -name "$DELETEFILE" -delete + msgtest 'Cold archive signed by' 'Joe Sixpack' + aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass + testequal "$(cat ${PKGFILE}) +" aptcache show apt + installaptold + + prepare ${PKGFILE}-new + signreleasefiles 'Marvin Paranoid' + find aptarchive/ -name "$DELETEFILE" -delete + msgtest 'Good warm archive signed by' 'Marvin Paranoid' + aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgpass || msgfail + testequal "$(cat ${PKGFILE}) +" aptcache show apt + installaptold +} + +DELETEFILE="InRelease" +runtest +DELETEFILE="Release.gpg" +runtest diff --git a/test/integration/test-ubuntu-bug-365611-long-package-names b/test/integration/test-ubuntu-bug-365611-long-package-names new file mode 100755 index 000000000..28b55df3b --- /dev/null +++ b/test/integration/test-ubuntu-bug-365611-long-package-names @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +local TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" +setupaptarchive + +aptget install $(for i in $(seq 0 1000); do echo -n 'a'; done) 2> longpackagename.log > /dev/null || true +testfileequal 'longpackagename.log' "E: Unable to locate package $(for i in $(seq 0 1000); do echo -n 'a'; done)" diff --git a/test/libapt/getlanguages_test.cc b/test/libapt/getlanguages_test.cc index 3559aae0c..707142aef 100644 --- a/test/libapt/getlanguages_test.cc +++ b/test/libapt/getlanguages_test.cc @@ -26,16 +26,18 @@ int main(int argc,char *argv[]) env[1] = ""; std::vector<std::string> vec = APT::Configuration::getLanguages(false, false, env); - equals(vec.size(), 2); - equals(vec[0], "de"); - equals(vec[1], "en"); + equals(vec.size(), 3); + equals(vec[0], "de_DE"); + equals(vec[1], "de"); + equals(vec[2], "en"); // Special: Check if the cache is actually in use env[0] = "en_GB.UTF-8"; vec = APT::Configuration::getLanguages(false, true, env); - equals(vec.size(), 2); - equals(vec[0], "de"); - equals(vec[1], "en"); + equals(vec.size(), 3); + equals(vec[0], "de_DE"); + equals(vec[1], "de"); + equals(vec[2], "en"); env[0] = "en_GB.UTF-8"; vec = APT::Configuration::getLanguages(false, false, env); @@ -52,19 +54,21 @@ int main(int argc,char *argv[]) env[0] = "tr_DE@euro"; vec = APT::Configuration::getLanguages(false, false, env); - equals(vec.size(), 2); - equals(vec[0], "tr"); - equals(vec[1], "en"); + equals(vec.size(), 3); + equals(vec[0], "tr_DE"); + equals(vec[1], "tr"); + equals(vec[2], "en"); env[0] = "de_NO"; - env[1] = "se_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en"; + env[1] = "de_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en"; vec = APT::Configuration::getLanguages(false, false, env); - equals(vec.size(), 5); - equals(vec[0], "de"); - equals(vec[1], "en_GB"); - equals(vec[2], "nb"); - equals(vec[3], "no"); - equals(vec[4], "en"); + equals(vec.size(), 6); + equals(vec[0], "de_NO"); + equals(vec[1], "de"); + equals(vec[2], "en_GB"); + equals(vec[3], "nb_NO"); + equals(vec[4], "nb"); + equals(vec[5], "en"); env[0] = "pt_PR.UTF-8"; env[1] = ""; @@ -76,9 +80,10 @@ int main(int argc,char *argv[]) env[0] = "ast_DE.UTF-8"; vec = APT::Configuration::getLanguages(false, false, env); // bogus, but syntactical correct - equals(vec.size(), 2); - equals(vec[0], "ast"); - equals(vec[1], "en"); + equals(vec.size(), 3); + equals(vec[0], "ast_DE"); + equals(vec[1], "ast"); + equals(vec[2], "en"); env[0] = "C"; vec = APT::Configuration::getLanguages(false, false, env); @@ -113,25 +118,28 @@ int main(int argc,char *argv[]) _config->Set("Acquire::Languages::2", "en"); env[0] = "de_DE.UTF-8"; vec = APT::Configuration::getLanguages(false, false, env); - equals(vec.size(), 2); - equals(vec[0], "de"); - equals(vec[1], "en"); + equals(vec.size(), 3); + equals(vec[0], "de_DE"); + equals(vec[1], "de"); + equals(vec[2], "en"); _config->Set("Acquire::Languages::3", "de"); env[0] = "de_DE.UTF-8"; vec = APT::Configuration::getLanguages(false, false, env); - equals(vec.size(), 2); - equals(vec[0], "de"); - equals(vec[1], "en"); + equals(vec.size(), 3); + equals(vec[0], "de_DE"); + equals(vec[1], "de"); + equals(vec[2], "en"); _config->Set("Dir::State::lists", argv[1]); vec = APT::Configuration::getLanguages(true, false, env); - equals(vec.size(), 5); - equals(vec[0], "de"); - equals(vec[1], "en"); - equals(vec[2], "none"); - equals(vec[3], "pt"); - equals(vec[4], "tr"); + equals(vec.size(), 6); + equals(vec[0], "de_DE"); + equals(vec[1], "de"); + equals(vec[2], "en"); + equals(vec[3], "none"); + equals(vec[4], "pt"); + equals(vec[5], "tr"); _config->Set("Dir::State::lists", "/non-existing-dir"); _config->Set("Acquire::Languages::1", "none"); @@ -140,6 +148,7 @@ int main(int argc,char *argv[]) equals(vec.size(), 0); env[0] = "de_DE.UTF-8"; vec = APT::Configuration::getLanguages(true, false, env); + equals(vec.size(), 2); equals(vec[0], "en"); equals(vec[1], "de"); diff --git a/test/libapt/run-tests b/test/libapt/run-tests index f5fc03446..a66de386d 100755 --- a/test/libapt/run-tests +++ b/test/libapt/run-tests @@ -39,6 +39,11 @@ do "${tmppath}/invälid.conf" \ "${tmppath}/invalíd" \ "${tmppath}/01invalíd" + mkdir "${tmppath}/invaliddir" \ + "${tmppath}/directory.conf" \ + "${tmppath}/directory.list" \ + "${tmppath}/directory.wron" \ + "${tmppath}/directory.list.disabled" ln -s "${tmppath}/anormalfile" "${tmppath}/linkedfile.list" ln -s "${tmppath}/non-existing-file" "${tmppath}/brokenlink.list" elif [ $name = "getLanguages${EXT}" ]; then |