summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzr-builddeb/default.conf3
-rw-r--r--apt-inst/contrib/extracttar.cc12
-rw-r--r--apt-inst/extract.cc4
-rw-r--r--apt-pkg/acquire-item.cc403
-rw-r--r--apt-pkg/acquire-item.h100
-rw-r--r--apt-pkg/algorithms.cc23
-rw-r--r--apt-pkg/aptconfiguration.cc59
-rw-r--r--apt-pkg/cacheiterators.h18
-rw-r--r--apt-pkg/cdrom.cc6
-rw-r--r--apt-pkg/contrib/error.cc31
-rw-r--r--apt-pkg/contrib/fileutl.cc48
-rw-r--r--apt-pkg/contrib/fileutl.h2
-rw-r--r--apt-pkg/contrib/progress.cc2
-rw-r--r--apt-pkg/contrib/strutl.cc17
-rw-r--r--apt-pkg/contrib/strutl.h1
-rw-r--r--apt-pkg/contrib/weakptr.h2
-rw-r--r--apt-pkg/deb/debindexfile.cc8
-rw-r--r--apt-pkg/deb/deblistparser.cc114
-rw-r--r--apt-pkg/deb/debmetaindex.cc109
-rw-r--r--apt-pkg/deb/debmetaindex.h2
-rw-r--r--apt-pkg/deb/dpkgpm.cc12
-rw-r--r--apt-pkg/depcache.cc184
-rw-r--r--apt-pkg/depcache.h19
-rw-r--r--apt-pkg/indexcopy.cc3
-rw-r--r--apt-pkg/indexrecords.cc17
-rw-r--r--apt-pkg/init.cc11
-rw-r--r--apt-pkg/pkgcachegen.cc18
-rw-r--r--apt-pkg/policy.cc4
-rw-r--r--apt-pkg/sourcelist.cc6
-rw-r--r--apt-pkg/tagfile.cc10
-rw-r--r--apt-pkg/tagfile.h2
-rw-r--r--apt-pkg/vendorlist.cc4
-rw-r--r--cmdline/apt-cache.cc59
-rw-r--r--cmdline/apt-get.cc197
-rwxr-xr-xcmdline/apt-key7
-rw-r--r--debian/NEWS9
-rw-r--r--debian/apt-transport-https.dirs1
-rw-r--r--debian/apt-transport-https.install1
-rw-r--r--debian/apt-utils.install1
-rw-r--r--debian/apt-utils.symbols119
-rwxr-xr-xdebian/apt.bug-script (renamed from debian/bugscript)0
-rw-r--r--debian/apt.conf.autoremove1
-rw-r--r--debian/apt.dirs1
-rw-r--r--debian/apt.install5
-rw-r--r--debian/apt.lintian-overrides (renamed from share/lintian-overrides)0
-rw-r--r--debian/apt.symbols1263
-rw-r--r--debian/changelog143
-rw-r--r--debian/compat2
-rw-r--r--debian/control3
-rw-r--r--debian/libapt-pkg-dev.install3
-rwxr-xr-xdebian/rules120
-rw-r--r--doc/apt-cache.8.xml10
-rw-r--r--doc/apt-ftparchive.1.xml11
-rw-r--r--doc/apt-get.8.xml8
-rw-r--r--doc/apt-secure.8.xml5
-rw-r--r--doc/apt.conf.5.xml17
-rw-r--r--doc/apt_preferences.5.xml6
-rw-r--r--doc/examples/configure-index3
-rw-r--r--doc/files.sgml80
-rw-r--r--doc/po/fr.po4
-rw-r--r--doc/sources.list.5.xml34
-rw-r--r--ftparchive/apt-ftparchive.cc2
-rw-r--r--ftparchive/writer.cc27
-rw-r--r--ftparchive/writer.h2
-rw-r--r--methods/bzip2.cc3
-rw-r--r--methods/cdrom.cc2
-rw-r--r--methods/gzip.cc3
-rw-r--r--methods/https.cc6
-rw-r--r--methods/makefile2
-rw-r--r--methods/rred.cc49
-rw-r--r--po/es.po1373
-rw-r--r--po/sl.po73
-rwxr-xr-xpre-build.sh3
-rw-r--r--test/integration/Packages-bug-593360-modifiers-in-names42
-rw-r--r--test/integration/Packages-bug-604222-new-and-autoremove68
-rw-r--r--test/integration/Packages-bug-64141-install-dependencies-for-on-hold42
-rw-r--r--test/integration/Packages-releasefile-verification18
-rw-r--r--test/integration/Packages-releasefile-verification-new21
-rwxr-xr-xtest/integration/create-test-data16
-rw-r--r--test/integration/deb-bug-330162-encoded-tar-header.debbin0 -> 544 bytes
-rw-r--r--test/integration/framework200
-rw-r--r--test/integration/marvinparanoid.pubbin0 -> 629 bytes
-rw-r--r--test/integration/marvinparanoid.secbin0 -> 1280 bytes
-rwxr-xr-xtest/integration/run-tests14
-rw-r--r--test/integration/status-bug-601961-install-info42
-rw-r--r--test/integration/status-bug-604222-new-and-autoremove10
-rw-r--r--test/integration/status-bug-64141-install-dependencies-for-on-hold33
-rwxr-xr-xtest/integration/test-apt-get-autoremove (renamed from test/integration/test-autoremove)6
-rwxr-xr-xtest/integration/test-apt-get-changelog36
-rwxr-xr-xtest/integration/test-apt-get-download29
-rwxr-xr-xtest/integration/test-bug-254770-segfault-if-cache-not-buildable57
-rwxr-xr-xtest/integration/test-bug-330162-encoded-tar-header11
-rwxr-xr-xtest/integration/test-bug-549968-install-depends-of-not-installed26
-rwxr-xr-xtest/integration/test-bug-593360-modifiers-in-names64
-rwxr-xr-xtest/integration/test-bug-595691-empty-and-broken-archive-files62
-rwxr-xr-xtest/integration/test-bug-601016-description-translation1
-rwxr-xr-xtest/integration/test-bug-601961-install-info38
-rwxr-xr-xtest/integration/test-bug-604222-new-and-autoremove66
-rwxr-xr-xtest/integration/test-bug-604401-files-are-directories66
-rwxr-xr-xtest/integration/test-bug-611729-mark-as-manual105
-rwxr-xr-xtest/integration/test-bug-612099-multiarch-conflicts209
-rwxr-xr-xtest/integration/test-bug-64141-install-dependencies-for-on-hold34
-rwxr-xr-xtest/integration/test-changelog34
-rwxr-xr-xtest/integration/test-compressed-indexes6
-rwxr-xr-xtest/integration/test-pdiff-usage10
-rwxr-xr-xtest/integration/test-release-candidate-switching419
-rwxr-xr-xtest/integration/test-releasefile-verification160
-rwxr-xr-xtest/integration/test-ubuntu-bug-365611-long-package-names11
-rw-r--r--test/libapt/getlanguages_test.cc71
-rwxr-xr-xtest/libapt/run-tests5
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;
diff --git a/po/es.po b/po/es.po
index f5cd13893..a92ed128c 100644
--- a/po/es.po
+++ b/po/es.po
@@ -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 versin %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 versin/archivo totales: "
+msgstr "Relaciones versión/archivo totales: "
#: cmdline/apt-cache.cc:341
msgid "Total Desc/File relations: "
-msgstr "Relaciones descripcin/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 versin 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 ningn 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 versin:"
+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 informacin 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 cachs, la de paquetes y la de fuentes\n"
-" showpkg - Muestra alguna informacin general para un slo paquete\n"
-" showsrc - Muestra la informacin de fuente\n"
-" stats - Muestra algunas estadsticas bsicas\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 estndar\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 patrn de expresin "
-"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 informacin de dependencias en bruto para el "
-"paquete\n"
-" rdepends - Muestra la informacin 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 grficas del paquete para GraphViz\n"
-" xvcg - Genera grficas del paquete para xvcg\n"
-" policy - Muestra parmetros 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 slo dependencias importantes para la orden incumplida.\n"
-" -c=? Lee este archivo de configuracin\n"
-" -o=? Establece una opcin de configuracin arbitraria, ej -o dir::\n"
-"cache=/tmp\n"
-"Vea las pginas del manual apt-cache(8) y apt.conf(5) para ms informacin.\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 configuracin 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 configuracin\n"
+" dump - Muestra la configuración\n"
"\n"
"Opciones:\n"
" -h Este texto de ayuda.\n"
-" -c=? Lee este archivo de configuracin\n"
-" -o=? Establece una opcin de configuracin 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 vlido."
+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 informacin de\n"
-"configuracin 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 configuracin\n"
-" -o=? Establece una opcin de configuracin 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 versin 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 extensin 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 extensin 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 generacin 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 tamao 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 opcin --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 raz del\n"
-"rbol. BinaryPath debe apuntar a la base de la bsqueda\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 aade Pathprefix a los campos de nombre de fichero\n"
-"si existen. A continuacin 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 Generacin 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 depuracin delink\n"
-" --contents Generacin del contenido del archivo Control\n"
-" -c=? Lee este archivo de configuracin\n"
-" -o=? Establece una opcin de configuracin 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 seleccin 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 vlido. Debe eliminar y recrear la base "
-"de datos si ha actualizado de una versin 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 lmite 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 lnea %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 lnea %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 lnea %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 compresin '%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 compresin"
+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 creacin de una tubera 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 compresin"
+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 compilacin 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 instalarn 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 ELIMINARN:"
+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 actualizarn los siguientes paquetes:"
+msgstr "Se actualizarán los siguientes paquetes:"
#: cmdline/apt-get.cc:488
msgid "The following packages will be DOWNGRADED:"
-msgstr "Se DESACTUALIZARN 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 cambiarn 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 instalarn, "
+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 expresin 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 expresin 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 "Versin 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 explcitamente 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 algn otro paquete hace referencia\n"
-"a l. Esto puede significar que el paquete falta, est obsoleto o slo 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 instalacin"
+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 actualizacin 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 actualizacin 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 versin ms 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 actualizacin"
+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 autenticacin 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 verificacin [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 tamaos 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 utilizarn %sB de espacio de disco adicional despus de esta operacin.\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 liberarn %sB despus de esta operacin.\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 operacin 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 daino\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 slo 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, quizs 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 estn 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 instalacin."
+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 actualizacin 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 automtica los siguientes paquetes y ya no son "
-"necesarios."
-msgstr[1] ""
-"Se instalaron de forma automtica 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 automtica los siguientes paquetes y ya no son "
-"necesarios."
-msgstr[1] ""
-"Se instalaron de forma automtica 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 debera haber pasado. "
-"Por favor, enve 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 informacin puede ayudar a resolver la situacin:"
+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 solucin)."
+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 situacin imposible o, si est usando la distribucin\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 instalarn 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 actualizacin... "
+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 solucin 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 cdigo 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 construccin '%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 construccin"
+"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 informacin de dependencias de construccin 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 construccin.\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 versin\n"
-"disponible del paquete %s satisface los requisitos de versin"
+"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 construccin 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 construccin"
+msgstr "No se pudieron procesar las dependencias de construcción"
#: cmdline/apt-get.cc:2763
msgid "Supported modules:"
-msgstr "Mdulos 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 lnea de rdenes para descargar e\n"
-"instalar paquetes. Las rdenes ms 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 actualizacin\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 construccin para paquetes "
-"fuente\n"
-" dist-upgrade - Actualiza la distribucin, 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 Slo descarga - NO instala o desempaqueta los archivos\n"
-" -s No acta. Realiza una simulacin\n"
-" -y Asume S para todas las consultas\n"
-" -f Intenta continuar si la comprobacin 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 tambin una lista de paquetes actualizados\n"
-" -b Construye el paquete fuente despus de obtenerlo\n"
-" -V Muesta nmeros de versin detallados\n"
-" -c=? Lee este archivo de configuracin\n"
-" -o=? Establece una opcin de configuracin 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 pginas del manual de apt-get(8), sources.list(5) y apt.conf"
-"(5)\n"
-"para ms informacin 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 opcin -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 configuracin\n"
-" -o=? Establece una opcin de configuracin 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 "Parmetro por omisin 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, slo 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 informacin disponible"
+msgstr "Fusionando información disponible"
#: apt-inst/contrib/extracttar.cc:114
msgid "Failed to create pipes"
-msgstr "No pude crear las tuberas"
+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 invlida"
+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 invlida"
+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 invlida"
+msgstr "Cabecera de miembro del archivo inválida"
#: apt-inst/contrib/arfile.cc:128
msgid "Archive is too short"
-msgstr "El archivo es muy pequeo"
+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 todava 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 desviacin"
+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 desviacin, %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 desviacin %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 configuracin 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 ms 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 desviacin 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 versin 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 administracin %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 vaco e inmediatamente reinstale la misma versin "
-"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 desviacin %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 desviacin 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 invlida en el archivo de desviacin: %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 desviacin"
+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 seccin 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 vlido, 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 vlido, 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 vlido"
+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 tubera 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 modificacin"
+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 todava 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 invlido, 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 conexin 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 vaco."
+"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 conexin expir"
+msgstr "La conexión expiró"
#: methods/ftp.cc:341
msgid "Server closed the connection"
-msgstr "El servidor cerr la conexin"
+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 "Corrupcin 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 conexin"
+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 "Direccin 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 conexin 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 conexin"
+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 conexin 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 conexin"
+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 instalacin."
+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 invlida."
+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 invlidas:\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 pblica 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 lnea 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 lnea 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 invlida"
+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 invlida"
+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 invlida"
+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 seleccin"
+msgstr "Falló la selección"
#: methods/http.cc:804
msgid "Connection timed out"
-msgstr "Expir la conexin"
+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 conexin."
+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 conexin"
+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 vaco"
+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 tubera 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 "Seleccin %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 abreviacin 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 configuracin %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 despus 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 slo 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 slo 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 opcin de lnea 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 opcin de lnea 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 opcin de lnea 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 opcin %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 ""
-"Opcin %s: La especificacin del elemento de configuracin 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 opcin %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 "Opcin '%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 "Operacin invlida: %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 informacin 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 slo 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 segmentacin."
+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 segmentacin."
+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 cdigo 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 tubera 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 "ledos, todava deba 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, todava tena 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 vaca."
+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 versin 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 haba 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 "estndar"
+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 "Generacin 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 informacin 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 rcord 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 "Lnea %lu mal formada en lista de fuentes %s (anlisis 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 "Lnea %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 "Lnea %lu mal formada en lista de fuentes %s (anlisis 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 "Lnea %lu mal formada en lista de fuentes %s (anlisis 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 "Lnea %lu mal formada en lista de fuentes %s (anlisis 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 "Lnea %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 "Lnea %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 "Lnea %lu mal formada en lista de fuentes %s (anlisis 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 "Lnea %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 "Lnea %lu mal formada en lista de fuentes %s (anlisis 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 "Lnea %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 "Lnea %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 lnea %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 ejecucin de la instalacin 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 opcin 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 mtodo %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 mtodo %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 invlido 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 versin 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 nmero 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 nmero 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 nmero 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 nmero 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 pblica 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 estn 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 tamao 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 invlida en el archivo de desviacin: %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 traduccin 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 ningn 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 vlido, intntelo 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 configuracin %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 Distribucin '%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 versin '%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-instalacin %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 "Preparndose 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 "Preparndose 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 "Preparndose 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 conexin se cerr prematuramente"
+msgstr "La conexión se cerró prematuramente"
#~ msgid "You must give exactly one pattern"
-#~ msgstr "Debe dar exactamente un patrn"
+#~ 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 conexin 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 "Lnea %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 conexin se cerr prematuramente"
#~ msgstr "Procesando disparadores para %s"
#~ msgid "Dynamic MMap ran out of room"
-#~ msgstr "La funcin 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 slo solicito una nica operacin, es extremadamente posible que el\n"
-#~ "paquete simplemente no sea instalable y debera 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 "Lnea %d demasiado larga (mx %lu)"
+#~ msgstr "Línea %d demasiado larga (máx %lu)"
#~ msgid "Line %d too long (max %d)"
-#~ msgstr "Lnea %d demasiado larga (mx %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 conexin 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 traduccin 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 conexin se cerr prematuramente"
#~ msgstr "No se pudo ejecutar "
#~ msgid "Preparing for remove with config %s"
-#~ msgstr "Preparndose para eliminar con su configuracin %s"
+#~ msgstr "Preparándose para eliminar con su configuración %s"
#~ msgid "Removed with config %s"
-#~ msgstr "Eliminado con su configuracin %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 lnea %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 conexin 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 construccin. 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 conexin 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 informacin de stos.\n"
+#~ "de caché de APT, y consultar información de éstos.\n"
#~ "\n"
#~ "Comandos:\n"
-#~ " add - Aade un archivo de paquete a la cach fuente\n"
-#~ " gencaches - Crea el cach de ambos, del paquete y del fuente\n"
-#~ " showpkg - Muestra alguna informacin general para un solo paquete\n"
-#~ " showsrc - Muestra la informacin de las fuentes\n"
-#~ " stats - Muestra algunas estadsticas bsicas\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"
-#~ "estndar\n"
+#~ "estándar\n"
#~ " unmet - Muestra dependencias incumplidas\n"
-#~ " search - Busca en la lista de paquetes por un patrn de expresin\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 informacin 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 grficas del paquete para GraphVis\n"
-#~ " policy - Muestra los parmetros 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 slo 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 configuracin\n"
-#~ " -o=? Establece una opcin de configuracin 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 pginas del manual apt-cache(8) y apt.conf(5) para ms\n"
-#~ "informacin.\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 conexin 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 conexin se cerr prematuramente"
#~ msgstr "Necesito descargar %sB de ficheros. "
#~ msgid "After unpacking %sB will be used.\n"
-#~ msgstr "Se usarn %sB despus de desempaquetar.\n"
+#~ msgstr "Se usarán %sB después de desempaquetar.\n"
#~ msgid "After unpacking %sB will be freed.\n"
-#~ msgstr "Se liberarn %sB despus 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 reinstalacin 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 versin ms 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 conexin se cerr prematuramente"
#~ msgstr "-> '"
#~ msgid "Followed conf file from "
-#~ msgstr "Archivo de configuracin seguido por"
+#~ msgstr "Archivo de configuración seguido por"
#~ msgid " to "
#~ msgstr " a "
@@ -3616,7 +3633,7 @@ msgstr "La conexin se cerr prematuramente"
#~ msgstr "Extraer"
#~ msgid "Aborted, backing out"
-#~ msgstr "Abortado, retractndome"
+#~ msgstr "Abortado, retractándome"
#~ msgid "De-replaced "
#~ msgstr "De-reemplazado"
@@ -3634,25 +3651,25 @@ msgstr "La conexin 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 compilacin de Regex"
+#~ msgstr "Error de compilación de Regex"
#~ msgid "Write to stdout failed"
-#~ msgstr "No pude escribir a la salida estndar"
+#~ 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 funcin"
+#~ 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 conexin 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 conexin 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 informacin 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 identificacin 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 rpido, no comprueba archivos de paquetes\n"
-#~ " -a A travs de modo de bsqueda\n"
-#~ " -c=? Lee esto archivo de configuracin\n"
-#~ " -o=? Establece una opcin de configuracin 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 conexin 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 conexin se cerr prematuramente"
#~ msgstr ""
#~ "Opciones:\n"
#~ " -h Este texto de ayuda\n"
-#~ " --md5 Generacin 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 depuracin delink\n"
-#~ " --contents Generacin del contenido del archivo 'Control'\n"
-#~ " -c=? Lee este archivo de configuracin\n"
-#~ " -o=? Establece una opcin de configuracin 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 lmite de bytes de actualizacin 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 conexin 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 conexin 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 "Direccin 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 conexin 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 generacin 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 tamao 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 opcin --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 raz del\n"
-#~ "rbol. BinaryPath debe de apuntar a la base del archivo de bsqueda\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 estn 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 conexin 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 lmite de"
+#~ msgstr " DeLink límite de"
#~ msgid " has no override entry"
#~ msgstr " no tiene entrada de predominio"
diff --git a/po/sl.po b/po/sl.po
index 8fcad1f86..d46cab3ea 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -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
new file mode 100644
index 000000000..f38b1aa70
--- /dev/null
+++ b/test/integration/deb-bug-330162-encoded-tar-header.deb
Binary files differ
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
new file mode 100644
index 000000000..9a59c2e40
--- /dev/null
+++ b/test/integration/marvinparanoid.pub
Binary files differ
diff --git a/test/integration/marvinparanoid.sec b/test/integration/marvinparanoid.sec
new file mode 100644
index 000000000..ff54e8680
--- /dev/null
+++ b/test/integration/marvinparanoid.sec
Binary files differ
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