From b8f90d97faa461380f7aa2d2368f66b8b25b2356 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 27 Jan 2011 21:37:15 +0100 Subject: apt-pkg/deb/debsystem.{cc,h}: add dpointer --- apt-pkg/deb/debsystem.cc | 62 ++++++++++++++++++++++++++++-------------------- apt-pkg/deb/debsystem.h | 11 ++++----- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc index 8619822df..7644bc66b 100644 --- a/apt-pkg/deb/debsystem.cc +++ b/apt-pkg/deb/debsystem.cc @@ -26,15 +26,24 @@ debSystem debSys; +class debSystemPrivate { +public: + debSystemPrivate() : LockFD(-1), LockCount(0), StatusFile(0) + { + } + // For locking support + int LockFD; + unsigned LockCount; + + debStatusIndex *StatusFile; +}; + // System::debSystem - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ debSystem::debSystem() { - LockFD = -1; - LockCount = 0; - StatusFile = 0; - + d = new debSystemPrivate(); Label = "Debian dpkg interface"; VS = &debVS; } @@ -44,7 +53,8 @@ debSystem::debSystem() /* */ debSystem::~debSystem() { - delete StatusFile; + delete d->StatusFile; + delete d; } /*}}}*/ // System::Lock - Get the lock /*{{{*/ @@ -54,16 +64,16 @@ debSystem::~debSystem() bool debSystem::Lock() { // Disable file locking - if (_config->FindB("Debug::NoLocking",false) == true || LockCount > 1) + if (_config->FindB("Debug::NoLocking",false) == true || d->LockCount > 1) { - LockCount++; + d->LockCount++; return true; } // Create the lockfile string AdminDir = flNotFile(_config->Find("Dir::State::status")); - LockFD = GetLock(AdminDir + "lock"); - if (LockFD == -1) + d->LockFD = GetLock(AdminDir + "lock"); + if (d->LockFD == -1) { if (errno == EACCES || errno == EAGAIN) return _error->Error(_("Unable to lock the administration directory (%s), " @@ -76,8 +86,8 @@ bool debSystem::Lock() // See if we need to abort with a dirty journal if (CheckUpdates() == true) { - close(LockFD); - LockFD = -1; + close(d->LockFD); + d->LockFD = -1; const char *cmd; if (getenv("SUDO_USER") != NULL) cmd = "sudo dpkg --configure -a"; @@ -89,7 +99,7 @@ bool debSystem::Lock() "run '%s' to correct the problem. "), cmd); } - LockCount++; + d->LockCount++; return true; } @@ -99,15 +109,15 @@ bool debSystem::Lock() /* */ bool debSystem::UnLock(bool NoErrors) { - if (LockCount == 0 && NoErrors == true) + if (d->LockCount == 0 && NoErrors == true) return false; - if (LockCount < 1) + if (d->LockCount < 1) return _error->Error(_("Not locked")); - if (--LockCount == 0) + if (--d->LockCount == 0) { - close(LockFD); - LockCount = 0; + close(d->LockFD); + d->LockCount = 0; } return true; @@ -168,9 +178,9 @@ bool debSystem::Initialize(Configuration &Cnf) Cnf.CndSet("Dir::State::status","/var/lib/dpkg/status"); Cnf.CndSet("Dir::Bin::dpkg","/usr/bin/dpkg"); - if (StatusFile) { - delete StatusFile; - StatusFile = 0; + if (d->StatusFile) { + delete d->StatusFile; + d->StatusFile = 0; } return true; @@ -208,9 +218,9 @@ signed debSystem::Score(Configuration const &Cnf) /* */ bool debSystem::AddStatusFiles(vector &List) { - if (StatusFile == 0) - StatusFile = new debStatusIndex(_config->FindFile("Dir::State::status")); - List.push_back(StatusFile); + if (d->StatusFile == 0) + d->StatusFile = new debStatusIndex(_config->FindFile("Dir::State::status")); + List.push_back(d->StatusFile); return true; } /*}}}*/ @@ -220,11 +230,11 @@ bool debSystem::AddStatusFiles(vector &List) bool debSystem::FindIndex(pkgCache::PkgFileIterator File, pkgIndexFile *&Found) const { - if (StatusFile == 0) + if (d->StatusFile == 0) return false; - if (StatusFile->FindInCache(*File.Cache()) == File) + if (d->StatusFile->FindInCache(*File.Cache()) == File) { - Found = StatusFile; + Found = d->StatusFile; return true; } diff --git a/apt-pkg/deb/debsystem.h b/apt-pkg/deb/debsystem.h index 5f9995e5d..7c53e1829 100644 --- a/apt-pkg/deb/debsystem.h +++ b/apt-pkg/deb/debsystem.h @@ -12,16 +12,15 @@ #include +class debSystemPrivate; + class debStatusIndex; class debSystem : public pkgSystem { - // For locking support - int LockFD; - unsigned LockCount; + // private d-pointer + debSystemPrivate *d; bool CheckUpdates(); - - debStatusIndex *StatusFile; - + public: virtual bool Lock(); -- cgit v1.2.3-70-g09d2 From 697a1d8ab6744181355cda92b4de01b996c1bc1d Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 27 Jan 2011 21:59:23 +0100 Subject: apt-pkg/deb/dpkgpm.{cc,h}: convert to use dpointers --- apt-pkg/deb/dpkgpm.cc | 108 +++++++++++++++++++++++++++++--------------------- apt-pkg/deb/dpkgpm.h | 11 +---- 2 files changed, 64 insertions(+), 55 deletions(-) diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 9f0da3be6..55525db85 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -44,6 +44,21 @@ using namespace std; +class pkgDPkgPMPrivate +{ +public: + pkgDPkgPMPrivate() : dpkgbuf_pos(0), term_out(NULL), history_out(NULL) + { + } + bool stdin_is_dev_null; + // the buffer we use for the dpkg status-fd reading + char dpkgbuf[1024]; + int dpkgbuf_pos; + FILE *term_out; + FILE *history_out; + string dpkg_error; +}; + namespace { // Maps the dpkg "processing" info to human readable names. Entry 0 @@ -108,9 +123,9 @@ ionice(int PID) // --------------------------------------------------------------------- /* */ pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache) - : pkgPackageManager(Cache), dpkgbuf_pos(0), - term_out(NULL), history_out(NULL), PackagesDone(0), PackagesTotal(0) + : pkgPackageManager(Cache), PackagesDone(0), PackagesTotal(0) { + d = new pkgDPkgPMPrivate(); } /*}}}*/ // DPkgPM::pkgDPkgPM - Destructor /*{{{*/ @@ -118,6 +133,7 @@ pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache) /* */ pkgDPkgPM::~pkgDPkgPM() { + delete d; } /*}}}*/ // DPkgPM::Install - Install a package /*{{{*/ @@ -369,7 +385,7 @@ void pkgDPkgPM::DoStdin(int master) if (len) write(master, input_buf, len); else - stdin_is_dev_null = true; + d->stdin_is_dev_null = true; } /*}}}*/ // DPkgPM::DoTerminalPty - Read the terminal pty and write log /*{{{*/ @@ -393,8 +409,8 @@ void pkgDPkgPM::DoTerminalPty(int master) if(len <= 0) return; write(1, term_buf, len); - if(term_out) - fwrite(term_buf, len, sizeof(char), term_out); + if(d->term_out) + fwrite(term_buf, len, sizeof(char), d->term_out); } /*}}}*/ // DPkgPM::ProcessDpkgStatusBuf /*{{{*/ @@ -598,14 +614,14 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd, int OutStatusFd) char *p, *q; int len; - len=read(statusfd, &dpkgbuf[dpkgbuf_pos], sizeof(dpkgbuf)-dpkgbuf_pos); - dpkgbuf_pos += len; + len=read(statusfd, &d->dpkgbuf[d->dpkgbuf_pos], sizeof(d->dpkgbuf)-d->dpkgbuf_pos); + d->dpkgbuf_pos += len; if(len <= 0) return; // process line by line if we have a buffer - p = q = dpkgbuf; - while((q=(char*)memchr(p, '\n', dpkgbuf+dpkgbuf_pos-p)) != NULL) + p = q = d->dpkgbuf; + while((q=(char*)memchr(p, '\n', d->dpkgbuf+d->dpkgbuf_pos-p)) != NULL) { *q = 0; ProcessDpkgStatusLine(OutStatusFd, p); @@ -613,8 +629,8 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd, int OutStatusFd) } // now move the unprocessed bits (after the final \n that is now a 0x0) - // to the start and update dpkgbuf_pos - p = (char*)memrchr(dpkgbuf, 0, dpkgbuf_pos); + // to the start and update d->dpkgbuf_pos + p = (char*)memrchr(d->dpkgbuf, 0, d->dpkgbuf_pos); if(p == NULL) return; @@ -622,8 +638,8 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd, int OutStatusFd) p++; // move the unprocessed tail to the start and update pos - memmove(dpkgbuf, p, p-dpkgbuf); - dpkgbuf_pos = dpkgbuf+dpkgbuf_pos-p; + memmove(d->dpkgbuf, p, p-d->dpkgbuf); + d->dpkgbuf_pos = d->dpkgbuf+d->dpkgbuf_pos-p; } /*}}}*/ // DPkgPM::WriteHistoryTag /*{{{*/ @@ -635,7 +651,7 @@ void pkgDPkgPM::WriteHistoryTag(string const &tag, string value) // poor mans rstrip(", ") if (value[length-2] == ',' && value[length-1] == ' ') value.erase(length - 2, 2); - fprintf(history_out, "%s: %s\n", tag.c_str(), value.c_str()); + fprintf(d->history_out, "%s: %s\n", tag.c_str(), value.c_str()); } /*}}}*/ // DPkgPM::OpenLog /*{{{*/ bool pkgDPkgPM::OpenLog() @@ -656,13 +672,13 @@ bool pkgDPkgPM::OpenLog() _config->Find("Dir::Log::Terminal")); if (!logfile_name.empty()) { - term_out = fopen(logfile_name.c_str(),"a"); - if (term_out == NULL) + d->term_out = fopen(logfile_name.c_str(),"a"); + if (d->term_out == NULL) return _error->WarningE("OpenLog", _("Could not open file '%s'"), logfile_name.c_str()); - setvbuf(term_out, NULL, _IONBF, 0); - SetCloseExec(fileno(term_out), true); + setvbuf(d->term_out, NULL, _IONBF, 0); + SetCloseExec(fileno(d->term_out), true); chmod(logfile_name.c_str(), 0600); - fprintf(term_out, "\nLog started: %s\n", timestr); + fprintf(d->term_out, "\nLog started: %s\n", timestr); } // write your history @@ -670,11 +686,11 @@ bool pkgDPkgPM::OpenLog() _config->Find("Dir::Log::History")); if (!history_name.empty()) { - history_out = fopen(history_name.c_str(),"a"); - if (history_out == NULL) + d->history_out = fopen(history_name.c_str(),"a"); + if (d->history_out == NULL) return _error->WarningE("OpenLog", _("Could not open file '%s'"), history_name.c_str()); chmod(history_name.c_str(), 0644); - fprintf(history_out, "\nStart-Date: %s\n", timestr); + fprintf(d->history_out, "\nStart-Date: %s\n", timestr); string remove, purge, install, upgrade, downgrade; for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++) { @@ -704,7 +720,7 @@ bool pkgDPkgPM::OpenLog() WriteHistoryTag("Downgrade",downgrade); WriteHistoryTag("Remove",remove); WriteHistoryTag("Purge",purge); - fflush(history_out); + fflush(d->history_out); } return true; @@ -718,16 +734,16 @@ bool pkgDPkgPM::CloseLog() struct tm *tmp = localtime(&t); strftime(timestr, sizeof(timestr), "%F %T", tmp); - if(term_out) + if(d->term_out) { - fprintf(term_out, "Log ended: "); - fprintf(term_out, "%s", timestr); - fprintf(term_out, "\n"); - fclose(term_out); + fprintf(d->term_out, "Log ended: "); + fprintf(d->term_out, "%s", timestr); + fprintf(d->term_out, "\n"); + fclose(d->term_out); } - term_out = NULL; + d->term_out = NULL; - if(history_out) + if(d->history_out) { if (disappearedPkgs.empty() == false) { @@ -744,12 +760,12 @@ bool pkgDPkgPM::CloseLog() } WriteHistoryTag("Disappeared", disappear); } - if (dpkg_error.empty() == false) - fprintf(history_out, "Error: %s\n", dpkg_error.c_str()); - fprintf(history_out, "End-Date: %s\n", timestr); - fclose(history_out); + if (d->dpkg_error.empty() == false) + fprintf(d->history_out, "Error: %s\n", d->dpkg_error.c_str()); + fprintf(d->history_out, "End-Date: %s\n", timestr); + fclose(d->history_out); } - history_out = NULL; + d->history_out = NULL; return true; } @@ -857,7 +873,7 @@ bool pkgDPkgPM::Go(int OutStatusFd) } } - stdin_is_dev_null = false; + d->stdin_is_dev_null = false; // create log OpenLog(); @@ -1043,8 +1059,8 @@ bool pkgDPkgPM::Go(int OutStatusFd) const char *s = _("Can not write log, openpty() " "failed (/dev/pts not mounted?)\n"); fprintf(stderr, "%s",s); - if(term_out) - fprintf(term_out, "%s",s); + if(d->term_out) + fprintf(d->term_out, "%s",s); master = slave = -1; } else { struct termios rtt; @@ -1169,7 +1185,7 @@ bool pkgDPkgPM::Go(int OutStatusFd) // wait for input or output here FD_ZERO(&rfds); - if (master >= 0 && !stdin_is_dev_null) + if (master >= 0 && !d->stdin_is_dev_null) FD_SET(0, &rfds); FD_SET(_dpkgin, &rfds); if(master >= 0) @@ -1223,14 +1239,14 @@ bool pkgDPkgPM::Go(int OutStatusFd) RunScripts("DPkg::Post-Invoke"); if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV) - strprintf(dpkg_error, "Sub-process %s received a segmentation fault.",Args[0]); + strprintf(d->dpkg_error, "Sub-process %s received a segmentation fault.",Args[0]); else if (WIFEXITED(Status) != 0) - strprintf(dpkg_error, "Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status)); + strprintf(d->dpkg_error, "Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status)); else - strprintf(dpkg_error, "Sub-process %s exited unexpectedly",Args[0]); + strprintf(d->dpkg_error, "Sub-process %s exited unexpectedly",Args[0]); - if(dpkg_error.size() > 0) - _error->Error(dpkg_error.c_str()); + if(d->dpkg_error.size() > 0) + _error->Error(d->dpkg_error.c_str()); if(stopOnError) { @@ -1377,8 +1393,8 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) fprintf(report, "ErrorMessage:\n %s\n", errormsg); // ensure that the log is flushed - if(term_out) - fflush(term_out); + if(d->term_out) + fflush(d->term_out); // attach terminal log it if we have it string logfile_name = _config->FindFile("Dir::Log::Terminal"); diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h index b7b5a6def..ddf9485c7 100644 --- a/apt-pkg/deb/dpkgpm.h +++ b/apt-pkg/deb/dpkgpm.h @@ -18,19 +18,12 @@ using std::vector; using std::map; +class pkgDPkgPMPrivate; class pkgDPkgPM : public pkgPackageManager { private: - - bool stdin_is_dev_null; - - // the buffer we use for the dpkg status-fd reading - char dpkgbuf[1024]; - int dpkgbuf_pos; - FILE *term_out; - FILE *history_out; - string dpkg_error; + pkgDPkgPMPrivate *d; /** \brief record the disappear action and handle accordingly -- cgit v1.2.3-70-g09d2 From 1abbce9eafbba7a6fd22bd6ddd9287e97113fc87 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 27 Jan 2011 22:22:51 +0100 Subject: apt-pkg/tagfile.{cc,h}: add dpointer to pkgTagFile --- apt-pkg/tagfile.cc | 123 +++++++++++++++++++++++++++++++---------------------- apt-pkg/tagfile.h | 19 +++------ 2 files changed, 79 insertions(+), 63 deletions(-) diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc index 96a681bec..ff6593e26 100644 --- a/apt-pkg/tagfile.cc +++ b/apt-pkg/tagfile.cc @@ -24,26 +24,40 @@ using std::string; +class pkgTagFilePrivate +{ +public: + pkgTagFilePrivate(FileFd *pFd, unsigned long Size) : Fd(*pFd), Size(Size) + { + } + FileFd &Fd; + char *Buffer; + char *Start; + char *End; + bool Done; + unsigned long iOffset; + unsigned long Size; +}; + // TagFile::pkgTagFile - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) : - Fd(*pFd), - Size(Size) +pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) { - if (Fd.IsOpen() == false) + d = new pkgTagFilePrivate(pFd, Size); + + if (d->Fd.IsOpen() == false) { - Buffer = 0; - Start = End = Buffer = 0; - Done = true; - iOffset = 0; + d->Start = d->End = d->Buffer = 0; + d->Done = true; + d->iOffset = 0; return; } - Buffer = new char[Size]; - Start = End = Buffer; - Done = false; - iOffset = 0; + d->Buffer = new char[Size]; + d->Start = d->End = d->Buffer; + d->Done = false; + d->iOffset = 0; Fill(); } /*}}}*/ @@ -52,7 +66,14 @@ pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) : /* */ pkgTagFile::~pkgTagFile() { - delete [] Buffer; + delete [] d->Buffer; + delete d; +} + /*}}}*/ +// TagFile::Offset - Return the current offset in the buffer /*{{{*/ +unsigned long pkgTagFile::Offset() +{ + return d->iOffset; } /*}}}*/ // TagFile::Resize - Resize the internal buffer /*{{{*/ @@ -63,22 +84,22 @@ pkgTagFile::~pkgTagFile() bool pkgTagFile::Resize() { char *tmp; - unsigned long EndSize = End - Start; + unsigned long EndSize = d->End - d->Start; // fail is the buffer grows too big - if(Size > 1024*1024+1) + if(d->Size > 1024*1024+1) return false; // get new buffer and use it - tmp = new char[2*Size]; - memcpy(tmp, Buffer, Size); - Size = Size*2; - delete [] Buffer; - Buffer = tmp; + tmp = new char[2*d->Size]; + memcpy(tmp, d->Buffer, d->Size); + d->Size = d->Size*2; + delete [] d->Buffer; + d->Buffer = tmp; // update the start/end pointers to the new buffer - Start = Buffer; - End = Start + EndSize; + d->Start = d->Buffer; + d->End = d->Start + EndSize; return true; } /*}}}*/ @@ -90,20 +111,20 @@ bool pkgTagFile::Resize() */ bool pkgTagFile::Step(pkgTagSection &Tag) { - while (Tag.Scan(Start,End - Start) == false) + while (Tag.Scan(d->Start,d->End - d->Start) == false) { if (Fill() == false) return false; - if(Tag.Scan(Start,End - Start)) + if(Tag.Scan(d->Start,d->End - d->Start)) break; if (Resize() == false) return _error->Error(_("Unable to parse package file %s (1)"), - Fd.Name().c_str()); + d->Fd.Name().c_str()); } - Start += Tag.size(); - iOffset += Tag.size(); + d->Start += Tag.size(); + d->iOffset += Tag.size(); Tag.Trim(); return true; @@ -115,37 +136,37 @@ bool pkgTagFile::Step(pkgTagSection &Tag) then fills the rest from the file */ bool pkgTagFile::Fill() { - unsigned long EndSize = End - Start; + unsigned long EndSize = d->End - d->Start; unsigned long Actual = 0; - memmove(Buffer,Start,EndSize); - Start = Buffer; - End = Buffer + EndSize; + memmove(d->Buffer,d->Start,EndSize); + d->Start = d->Buffer; + d->End = d->Buffer + EndSize; - if (Done == false) + if (d->Done == false) { // See if only a bit of the file is left - if (Fd.Read(End,Size - (End - Buffer),&Actual) == false) + if (d->Fd.Read(d->End, d->Size - (d->End - d->Buffer),&Actual) == false) return false; - if (Actual != Size - (End - Buffer)) - Done = true; - End += Actual; + if (Actual != d->Size - (d->End - d->Buffer)) + d->Done = true; + d->End += Actual; } - if (Done == true) + if (d->Done == true) { if (EndSize <= 3 && Actual == 0) return false; - if (Size - (End - Buffer) < 4) + if (d->Size - (d->End - d->Buffer) < 4) return true; // Append a double new line if one does not exist unsigned int LineCount = 0; - for (const char *E = End - 1; E - End < 6 && (*E == '\n' || *E == '\r'); E--) + for (const char *E = d->End - 1; E - d->End < 6 && (*E == '\n' || *E == '\r'); E--) if (*E == '\n') LineCount++; for (; LineCount < 2; LineCount++) - *End++ = '\n'; + *d->End++ = '\n'; return true; } @@ -160,33 +181,33 @@ bool pkgTagFile::Fill() bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long Offset) { // We are within a buffer space of the next hit.. - if (Offset >= iOffset && iOffset + (End - Start) > Offset) + if (Offset >= d->iOffset && d->iOffset + (d->End - d->Start) > Offset) { - unsigned long Dist = Offset - iOffset; - Start += Dist; - iOffset += Dist; + unsigned long Dist = Offset - d->iOffset; + d->Start += Dist; + d->iOffset += Dist; return Step(Tag); } // Reposition and reload.. - iOffset = Offset; - Done = false; - if (Fd.Seek(Offset) == false) + d->iOffset = Offset; + d->Done = false; + if (d->Fd.Seek(Offset) == false) return false; - End = Start = Buffer; + d->End = d->Start = d->Buffer; if (Fill() == false) return false; - if (Tag.Scan(Start,End - Start) == true) + if (Tag.Scan(d->Start, d->End - d->Start) == true) return true; // This appends a double new line (for the real eof handling) if (Fill() == false) return false; - if (Tag.Scan(Start,End - Start) == false) - return _error->Error(_("Unable to parse package file %s (2)"),Fd.Name().c_str()); + if (Tag.Scan(d->Start, d->End - d->Start) == false) + return _error->Error(_("Unable to parse package file %s (2)"),d->Fd.Name().c_str()); return true; } diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h index 6891c1d81..60d3c2cd0 100644 --- a/apt-pkg/tagfile.h +++ b/apt-pkg/tagfile.h @@ -23,16 +23,17 @@ #include #include - + class pkgTagSection { const char *Section; - // We have a limit of 256 tags per section. unsigned int Indexes[256]; unsigned int AlphaIndexes[0x100]; - unsigned int TagCount; + int *reserved1; + int *reserved2; + int *reserved3; /* This very simple hash function for the last 8 letters gives very good performance on the debian package files */ @@ -44,7 +45,6 @@ class pkgTagSection return Res & 0xFF; } - protected: const char *Stop; @@ -80,15 +80,10 @@ class pkgTagSection pkgTagSection() : Section(0), Stop(0) {}; }; +class pkgTagFilePrivate; class pkgTagFile { - FileFd &Fd; - char *Buffer; - char *Start; - char *End; - bool Done; - unsigned long iOffset; - unsigned long Size; + pkgTagFilePrivate *d; bool Fill(); bool Resize(); @@ -96,7 +91,7 @@ class pkgTagFile public: bool Step(pkgTagSection &Section); - inline unsigned long Offset() {return iOffset;}; + inline unsigned long Offset(); bool Jump(pkgTagSection &Tag,unsigned long Offset); pkgTagFile(FileFd *F,unsigned long Size = 32*1024); -- cgit v1.2.3-70-g09d2 From 4b2746d5ff7d6c5ed3b23a44a67fc323475cfd7d Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 27 Jan 2011 22:26:56 +0100 Subject: apt-pkg/tagfile.{cc,h}: add comment, remove "inline" from pkgTagFile::Offset() --- apt-pkg/tagfile.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h index 60d3c2cd0..68f1642d9 100644 --- a/apt-pkg/tagfile.h +++ b/apt-pkg/tagfile.h @@ -31,9 +31,11 @@ class pkgTagSection unsigned int Indexes[256]; unsigned int AlphaIndexes[0x100]; unsigned int TagCount; + // for later int *reserved1; int *reserved2; int *reserved3; + int *reserved4; /* This very simple hash function for the last 8 letters gives very good performance on the debian package files */ @@ -91,7 +93,7 @@ class pkgTagFile public: bool Step(pkgTagSection &Section); - inline unsigned long Offset(); + unsigned long Offset(); bool Jump(pkgTagSection &Tag,unsigned long Offset); pkgTagFile(FileFd *F,unsigned long Size = 32*1024); -- cgit v1.2.3-70-g09d2 From 43fb90dcd5d3f8887c1903073ad21a53847974ba Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 28 Jan 2011 20:55:45 +0100 Subject: apt-pkg/tagfile.h: add dpointer placeholder, make destructor virtual; apt-pkg/deb/debsystem.h: make destructor virtual --- apt-pkg/deb/debsystem.h | 2 +- apt-pkg/tagfile.h | 10 ++--- po/apt-all.pot | 104 ++++++++++++++++++++++++------------------------ 3 files changed, 57 insertions(+), 59 deletions(-) diff --git a/apt-pkg/deb/debsystem.h b/apt-pkg/deb/debsystem.h index 7c53e1829..232155256 100644 --- a/apt-pkg/deb/debsystem.h +++ b/apt-pkg/deb/debsystem.h @@ -34,7 +34,7 @@ class debSystem : public pkgSystem pkgIndexFile *&Found) const; debSystem(); - ~debSystem(); + virtual ~debSystem(); }; extern debSystem debSys; diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h index 68f1642d9..f361a787f 100644 --- a/apt-pkg/tagfile.h +++ b/apt-pkg/tagfile.h @@ -31,11 +31,8 @@ class pkgTagSection unsigned int Indexes[256]; unsigned int AlphaIndexes[0x100]; unsigned int TagCount; - // for later - int *reserved1; - int *reserved2; - int *reserved3; - int *reserved4; + // dpointer placeholder (for later in case we need it) + void *d; /* This very simple hash function for the last 8 letters gives very good performance on the debian package files */ @@ -80,6 +77,7 @@ class pkgTagSection }; pkgTagSection() : Section(0), Stop(0) {}; + virtual ~pkgTagSection() {}; }; class pkgTagFilePrivate; @@ -97,7 +95,7 @@ class pkgTagFile bool Jump(pkgTagSection &Tag,unsigned long Offset); pkgTagFile(FileFd *F,unsigned long Size = 32*1024); - ~pkgTagFile(); + virtual ~pkgTagFile(); }; /* This is the list of things to rewrite. The rewriter diff --git a/po/apt-all.pot b/po/apt-all.pot index 757f685da..51dce741d 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-09-28 17:23+0200\n" +"POT-Creation-Date: 2011-01-28 20:55+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -95,13 +95,13 @@ msgstr "" msgid "Package file %s is out of sync." msgstr "" -#: cmdline/apt-cache.cc:1273 -msgid "You must give at least one search pattern" +#: cmdline/apt-cache.cc:591 cmdline/apt-cache.cc:1429 +#: cmdline/apt-cache.cc:1431 cmdline/apt-cache.cc:1508 +msgid "No packages found" msgstr "" -#: cmdline/apt-cache.cc:1429 cmdline/apt-cache.cc:1431 -#: cmdline/apt-cache.cc:1508 -msgid "No packages found" +#: cmdline/apt-cache.cc:1273 +msgid "You must give at least one search pattern" msgstr "" #: cmdline/apt-cache.cc:1503 apt-pkg/cacheset.cc:440 @@ -868,7 +868,7 @@ msgstr "" msgid "Do you want to continue [Y/n]? " msgstr "" -#: 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 "" @@ -1236,33 +1236,33 @@ msgid "" " so don't depend on the relevance to the real current situation!" msgstr "" -#: cmdline/acqprogress.cc:55 +#: cmdline/acqprogress.cc:57 msgid "Hit " msgstr "" -#: cmdline/acqprogress.cc:79 +#: cmdline/acqprogress.cc:81 msgid "Get:" msgstr "" -#: cmdline/acqprogress.cc:110 +#: cmdline/acqprogress.cc:112 msgid "Ign " msgstr "" -#: cmdline/acqprogress.cc:114 +#: cmdline/acqprogress.cc:116 msgid "Err " msgstr "" -#: cmdline/acqprogress.cc:135 +#: cmdline/acqprogress.cc:137 #, c-format msgid "Fetched %sB in %s (%sB/s)\n" msgstr "" -#: cmdline/acqprogress.cc:225 +#: cmdline/acqprogress.cc:227 #, c-format msgid " [Working]" msgstr "" -#: cmdline/acqprogress.cc:271 +#: cmdline/acqprogress.cc:283 #, c-format msgid "" "Media change: please insert the disc labeled\n" @@ -2220,27 +2220,27 @@ msgstr "" msgid "write, still have %lu to write but couldn't" msgstr "" -#: apt-pkg/contrib/fileutl.cc:937 +#: apt-pkg/contrib/fileutl.cc:967 #, c-format msgid "Problem closing the gzip file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:940 +#: apt-pkg/contrib/fileutl.cc:970 #, c-format msgid "Problem closing the file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:945 +#: apt-pkg/contrib/fileutl.cc:975 #, c-format msgid "Problem renaming the file %s to %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:956 +#: apt-pkg/contrib/fileutl.cc:986 #, c-format msgid "Problem unlinking the file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:969 +#: apt-pkg/contrib/fileutl.cc:999 msgid "Problem syncing the file" msgstr "" @@ -2352,12 +2352,12 @@ msgstr "" msgid "Internal error, group '%s' has no installable pseudo package" msgstr "" -#: apt-pkg/tagfile.cc:102 +#: apt-pkg/tagfile.cc:123 #, c-format msgid "Unable to parse package file %s (1)" msgstr "" -#: apt-pkg/tagfile.cc:189 +#: apt-pkg/tagfile.cc:210 #, c-format msgid "Unable to parse package file %s (2)" msgstr "" @@ -2465,17 +2465,17 @@ msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." msgstr "" -#: apt-pkg/algorithms.cc:1210 +#: apt-pkg/algorithms.cc:1218 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." msgstr "" -#: apt-pkg/algorithms.cc:1212 +#: apt-pkg/algorithms.cc:1220 msgid "Unable to correct problems, you have held broken packages." msgstr "" -#: 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." @@ -2918,148 +2918,148 @@ msgstr "" msgid "Can't select installed version from package %s as it is not installed" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:52 +#: apt-pkg/deb/dpkgpm.cc:67 #, c-format msgid "Installing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:53 apt-pkg/deb/dpkgpm.cc:822 +#: apt-pkg/deb/dpkgpm.cc:68 apt-pkg/deb/dpkgpm.cc:839 #, c-format msgid "Configuring %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:54 apt-pkg/deb/dpkgpm.cc:829 +#: apt-pkg/deb/dpkgpm.cc:69 apt-pkg/deb/dpkgpm.cc:846 #, c-format msgid "Removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:55 +#: apt-pkg/deb/dpkgpm.cc:70 #, c-format msgid "Completely removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:56 +#: apt-pkg/deb/dpkgpm.cc:71 #, c-format msgid "Noting disappearance of %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:57 +#: apt-pkg/deb/dpkgpm.cc:72 #, c-format msgid "Running post-installation trigger %s" msgstr "" #. FIXME: use a better string after freeze -#: apt-pkg/deb/dpkgpm.cc:646 +#: apt-pkg/deb/dpkgpm.cc:662 #, c-format msgid "Directory '%s' missing" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:661 apt-pkg/deb/dpkgpm.cc:674 +#: apt-pkg/deb/dpkgpm.cc:677 apt-pkg/deb/dpkgpm.cc:691 #, c-format msgid "Could not open file '%s'" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:815 +#: apt-pkg/deb/dpkgpm.cc:832 #, c-format msgid "Preparing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:816 +#: apt-pkg/deb/dpkgpm.cc:833 #, c-format msgid "Unpacking %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:821 +#: apt-pkg/deb/dpkgpm.cc:838 #, c-format msgid "Preparing to configure %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:823 +#: apt-pkg/deb/dpkgpm.cc:840 #, c-format msgid "Installed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:828 +#: apt-pkg/deb/dpkgpm.cc:845 #, c-format msgid "Preparing for removal of %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:830 +#: apt-pkg/deb/dpkgpm.cc:847 #, c-format msgid "Removed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:835 +#: apt-pkg/deb/dpkgpm.cc:852 #, c-format msgid "Preparing to completely remove %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:836 +#: apt-pkg/deb/dpkgpm.cc:853 #, c-format msgid "Completely removed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1042 +#: apt-pkg/deb/dpkgpm.cc:1059 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1073 +#: apt-pkg/deb/dpkgpm.cc:1090 msgid "Running dpkg" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1276 +#: apt-pkg/deb/dpkgpm.cc:1293 msgid "No apport report written because MaxReports is reached already" msgstr "" #. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:1281 +#: apt-pkg/deb/dpkgpm.cc:1298 msgid "dependency problems - leaving unconfigured" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1283 +#: apt-pkg/deb/dpkgpm.cc:1300 msgid "" "No apport report written because the error message indicates its a followup " "error from a previous failure." msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1289 +#: apt-pkg/deb/dpkgpm.cc:1306 msgid "" "No apport report written because the error message indicates a disk full " "error" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1295 +#: apt-pkg/deb/dpkgpm.cc:1312 msgid "" "No apport report written because the error message indicates a out of memory " "error" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1302 +#: apt-pkg/deb/dpkgpm.cc:1319 msgid "" "No apport report written because the error message indicates a dpkg I/O error" msgstr "" -#: apt-pkg/deb/debsystem.cc:69 +#: apt-pkg/deb/debsystem.cc:79 #, c-format msgid "" "Unable to lock the administration directory (%s), is another process using " "it?" msgstr "" -#: apt-pkg/deb/debsystem.cc:72 +#: apt-pkg/deb/debsystem.cc:82 #, c-format msgid "Unable to lock the administration directory (%s), are you root?" msgstr "" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a -#: apt-pkg/deb/debsystem.cc:88 +#: apt-pkg/deb/debsystem.cc:98 #, c-format msgid "" "dpkg was interrupted, you must manually run '%s' to correct the problem. " msgstr "" -#: apt-pkg/deb/debsystem.cc:106 +#: apt-pkg/deb/debsystem.cc:116 msgid "Not locked" msgstr "" -- cgit v1.2.3-70-g09d2 From e92e897a6f47d4a5088f1362651476c160197b35 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 2 Feb 2011 22:21:21 +0100 Subject: apt-pkg/acquire.h: add placeholder dpointer --- apt-pkg/acquire.h | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index e3a4435b8..7db7a9958 100644 --- a/apt-pkg/acquire.h +++ b/apt-pkg/acquire.h @@ -91,6 +91,12 @@ class pkgAcquireStatus; */ class pkgAcquire { + private: + /** \brief FD of the Lock file we acquire in Setup (if any) */ + int LockFD; + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + public: class Item; @@ -359,9 +365,6 @@ class pkgAcquire */ virtual ~pkgAcquire(); - private: - /** \brief FD of the Lock file we acquire in Setup (if any) */ - int LockFD; }; /** \brief Represents a single download source from which an item @@ -391,6 +394,9 @@ class pkgAcquire::Queue friend class pkgAcquire::UriIterator; friend class pkgAcquire::Worker; + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + /** \brief The next queue in the pkgAcquire object's list of queues. */ Queue *Next; @@ -540,12 +546,15 @@ class pkgAcquire::Queue /** Shut down all the worker processes associated with this queue * and empty the queue. */ - ~Queue(); + virtual ~Queue(); }; /*}}}*/ /** \brief Iterates over all the URIs being fetched by a pkgAcquire object. {{{*/ class pkgAcquire::UriIterator { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + /** The next queue to iterate over. */ pkgAcquire::Queue *CurQ; /** The item that we currently point at. */ @@ -581,11 +590,15 @@ class pkgAcquire::UriIterator CurQ = CurQ->Next; } } + virtual ~UriIterator() {}; }; /*}}}*/ /** \brief Information about the properties of a single acquire method. {{{*/ struct pkgAcquire::MethodConfig { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + /** \brief The next link on the acquire method list. * * \todo Why not an STL container? @@ -634,6 +647,9 @@ struct pkgAcquire::MethodConfig * appropriate. */ MethodConfig(); + + /* \brief Destructor, empty currently */ + virtual ~MethodConfig() {}; }; /*}}}*/ /** \brief A monitor object for downloads controlled by the pkgAcquire class. {{{ @@ -644,6 +660,9 @@ struct pkgAcquire::MethodConfig */ class pkgAcquireStatus { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + protected: /** \brief The last time at which this monitor object was updated. */ -- cgit v1.2.3-70-g09d2 From be9b62f76406cf2546d21f3ca27587ee20e0fc37 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 2 Feb 2011 22:30:45 +0100 Subject: add more dpointer placeholders --- apt-pkg/acquire-worker.h | 5 ++++- apt-pkg/algorithms.h | 3 +++ apt-pkg/cachefile.h | 3 +++ apt-pkg/cachefilter.h | 2 ++ apt-pkg/clean.h | 3 +++ apt-pkg/indexcopy.h | 8 ++++++-- apt-pkg/pkgrecords.h | 5 +++-- apt-pkg/srcrecords.h | 2 ++ 8 files changed, 26 insertions(+), 5 deletions(-) diff --git a/apt-pkg/acquire-worker.h b/apt-pkg/acquire-worker.h index 06283922e..62545829a 100644 --- a/apt-pkg/acquire-worker.h +++ b/apt-pkg/acquire-worker.h @@ -44,6 +44,9 @@ */ class pkgAcquire::Worker : public WeakPointable { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + friend class pkgAcquire; protected: @@ -314,7 +317,7 @@ class pkgAcquire::Worker : public WeakPointable * Closes the file descriptors; if MethodConfig::NeedsCleanup is * \b false, also rudely interrupts the worker with a SIGINT. */ - ~Worker(); + virtual ~Worker(); }; /** @} */ diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h index cf4a98c4f..42945a6f2 100644 --- a/apt-pkg/algorithms.h +++ b/apt-pkg/algorithms.h @@ -78,6 +78,9 @@ private: /*}}}*/ class pkgProblemResolver /*{{{*/ { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + pkgDepCache &Cache; typedef pkgCache::PkgIterator PkgIterator; typedef pkgCache::VerIterator VerIterator; diff --git a/apt-pkg/cachefile.h b/apt-pkg/cachefile.h index 09d3ec267..d07337d38 100644 --- a/apt-pkg/cachefile.h +++ b/apt-pkg/cachefile.h @@ -25,6 +25,9 @@ class pkgCacheFile { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + protected: MMap *Map; diff --git a/apt-pkg/cachefilter.h b/apt-pkg/cachefilter.h index e7ab1723f..5d426008b 100644 --- a/apt-pkg/cachefilter.h +++ b/apt-pkg/cachefilter.h @@ -16,6 +16,8 @@ namespace APT { namespace CacheFilter { // PackageNameMatchesRegEx /*{{{*/ class PackageNameMatchesRegEx { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; regex_t* pattern; public: PackageNameMatchesRegEx(std::string const &Pattern); diff --git a/apt-pkg/clean.h b/apt-pkg/clean.h index 2aee2bf54..1ebf68dc9 100644 --- a/apt-pkg/clean.h +++ b/apt-pkg/clean.h @@ -15,6 +15,9 @@ class pkgArchiveCleaner { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + protected: virtual void Erase(const char * /*File*/,string /*Pkg*/,string /*Ver*/,struct stat & /*St*/) {}; diff --git a/apt-pkg/indexcopy.h b/apt-pkg/indexcopy.h index 6fcd3b8ce..277fb561c 100644 --- a/apt-pkg/indexcopy.h +++ b/apt-pkg/indexcopy.h @@ -24,6 +24,9 @@ class pkgCdromStatus; class IndexCopy /*{{{*/ { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + protected: pkgTagSection *Section; @@ -55,7 +58,6 @@ class PackageCopy : public IndexCopy /*{{{*/ virtual const char *GetFileName() {return "Packages";}; virtual const char *Type() {return "Package";}; - public: }; /*}}}*/ class SourceCopy : public IndexCopy /*{{{*/ @@ -67,7 +69,6 @@ class SourceCopy : public IndexCopy /*{{{*/ virtual const char *GetFileName() {return "Sources";}; virtual const char *Type() {return "Source";}; - public: }; /*}}}*/ class TranslationsCopy /*{{{*/ @@ -82,6 +83,9 @@ class TranslationsCopy /*{{{*/ /*}}}*/ class SigVerify /*{{{*/ { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + bool Verify(string prefix,string file, indexRecords *records); bool CopyMetaIndex(string CDROM, string CDName, string prefix, string file); diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h index c2c98188a..93e342534 100644 --- a/apt-pkg/pkgrecords.h +++ b/apt-pkg/pkgrecords.h @@ -28,12 +28,13 @@ class pkgRecords /*{{{*/ class Parser; private: + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; pkgCache &Cache; std::vectorFiles; - public: - + public: // Lookup function Parser &Lookup(pkgCache::VerFileIterator const &Ver); Parser &Lookup(pkgCache::DescFileIterator const &Desc); diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h index a49533864..a681d2e31 100644 --- a/apt-pkg/srcrecords.h +++ b/apt-pkg/srcrecords.h @@ -79,6 +79,8 @@ class pkgSrcRecords }; private: + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; // The list of files and the current parser pointer vector Files; -- cgit v1.2.3-70-g09d2 From ff72bd0dc7bd4d3bb6979e70d7bca9a07d28af28 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 2 Feb 2011 22:37:01 +0100 Subject: apt-pkg/deb/*: add placeholder dpointer and make destructors virtual --- apt-pkg/deb/debindexfile.h | 15 +++++++++++++++ apt-pkg/deb/deblistparser.h | 3 +++ apt-pkg/deb/debmetaindex.h | 4 +++- apt-pkg/deb/debrecords.h | 4 ++++ apt-pkg/deb/debsrcrecords.h | 5 ++++- apt-pkg/srcrecords.h | 2 +- 6 files changed, 30 insertions(+), 3 deletions(-) diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h index b5085992d..0f8d4433f 100644 --- a/apt-pkg/deb/debindexfile.h +++ b/apt-pkg/deb/debindexfile.h @@ -22,6 +22,8 @@ class debStatusIndex : public pkgIndexFile { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; string File; public: @@ -39,10 +41,14 @@ class debStatusIndex : public pkgIndexFile virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const; debStatusIndex(string File); + virtual ~debStatusIndex() {}; }; class debPackagesIndex : public pkgIndexFile { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + string URI; string Dist; string Section; @@ -72,10 +78,14 @@ class debPackagesIndex : public pkgIndexFile debPackagesIndex(string const &URI, string const &Dist, string const &Section, bool const &Trusted, string const &Arch = "native"); + virtual ~debPackagesIndex() {}; }; class debTranslationsIndex : public pkgIndexFile { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + string URI; string Dist; string Section; @@ -103,10 +113,14 @@ class debTranslationsIndex : public pkgIndexFile virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const; debTranslationsIndex(string URI,string Dist,string Section, char const * const Language); + virtual ~debTranslationsIndex() {}; }; class debSourcesIndex : public pkgIndexFile { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + string URI; string Dist; string Section; @@ -136,6 +150,7 @@ class debSourcesIndex : public pkgIndexFile virtual unsigned long Size() const; debSourcesIndex(string URI,string Dist,string Section,bool Trusted); + virtual ~debSourcesIndex() {}; }; #endif diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h index 4bc1bd93c..54da938ec 100644 --- a/apt-pkg/deb/deblistparser.h +++ b/apt-pkg/deb/deblistparser.h @@ -27,6 +27,8 @@ class debListParser : public pkgCacheGenerator::ListParser }; private: + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; pkgTagFile Tags; pkgTagSection Section; @@ -73,6 +75,7 @@ class debListParser : public pkgCacheGenerator::ListParser static const char *ConvertRelation(const char *I,unsigned int &Op); debListParser(FileFd *File, string const &Arch = ""); + virtual ~debListParser() {}; }; #endif diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h index 360fa5419..ffcc7c4bb 100644 --- a/apt-pkg/deb/debmetaindex.h +++ b/apt-pkg/deb/debmetaindex.h @@ -19,12 +19,14 @@ class debReleaseIndex : public metaIndex { }; private: + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; std::map > ArchEntries; public: debReleaseIndex(string const &URI, string const &Dist); - ~debReleaseIndex(); + virtual ~debReleaseIndex(); virtual string ArchiveURI(string const &File) const {return URI + File;}; virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) const; diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h index 6f358abfa..bbcb5640d 100644 --- a/apt-pkg/deb/debrecords.h +++ b/apt-pkg/deb/debrecords.h @@ -20,6 +20,9 @@ class debRecordParser : public pkgRecords::Parser { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + FileFd File; pkgTagFile Tags; pkgTagSection Section; @@ -49,6 +52,7 @@ class debRecordParser : public pkgRecords::Parser virtual void GetRec(const char *&Start,const char *&Stop); debRecordParser(string FileName,pkgCache &Cache); + virtual ~debRecordParser() {}; }; #endif diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h index 905264daa..aa859b0e6 100644 --- a/apt-pkg/deb/debsrcrecords.h +++ b/apt-pkg/deb/debsrcrecords.h @@ -18,6 +18,9 @@ class debSrcRecordParser : public pkgSrcRecords::Parser { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + FileFd Fd; pkgTagFile Tags; pkgTagSection Sect; @@ -50,7 +53,7 @@ class debSrcRecordParser : public pkgSrcRecords::Parser debSrcRecordParser(string const &File,pkgIndexFile const *Index) : Parser(Index), Fd(File,FileFd::ReadOnlyGzip), Tags(&Fd,102400), Buffer(0), BufSize(0) {} - ~debSrcRecordParser(); + virtual ~debSrcRecordParser(); }; #endif diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h index a681d2e31..8a78d7711 100644 --- a/apt-pkg/srcrecords.h +++ b/apt-pkg/srcrecords.h @@ -95,7 +95,7 @@ class pkgSrcRecords Parser *Find(const char *Package,bool const &SrcOnly = false); pkgSrcRecords(pkgSourceList &List); - ~pkgSrcRecords(); + virtual ~pkgSrcRecords(); }; #endif -- cgit v1.2.3-70-g09d2 From 54ce88fd2669a729c89c940be3abc9456d19d542 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 22 Feb 2011 21:53:23 +0100 Subject: add sha512 interface based on sha2 by aaron gifford --- apt-pkg/contrib/sha2.cc | 1065 +++++++++++++++++++++++++++++++++++++++++++++ apt-pkg/contrib/sha2.h | 197 +++++++++ apt-pkg/contrib/sha512.cc | 128 ++++++ apt-pkg/contrib/sha512.h | 68 +++ apt-pkg/makefile | 8 +- test/hash.cc | 25 +- 6 files changed, 1483 insertions(+), 8 deletions(-) create mode 100644 apt-pkg/contrib/sha2.cc create mode 100644 apt-pkg/contrib/sha2.h create mode 100644 apt-pkg/contrib/sha512.cc create mode 100644 apt-pkg/contrib/sha512.h diff --git a/apt-pkg/contrib/sha2.cc b/apt-pkg/contrib/sha2.cc new file mode 100644 index 000000000..810eb8317 --- /dev/null +++ b/apt-pkg/contrib/sha2.cc @@ -0,0 +1,1065 @@ +/* + * FILE: sha2.c + * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/ + * + * Copyright (c) 2000-2001, Aaron D. Gifford + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: sha2.c,v 1.1 2001/11/08 00:01:51 adg Exp adg $ + */ + +#include /* memcpy()/memset() or bcopy()/bzero() */ +#include /* assert() */ +#include "sha2.h" + +/* + * ASSERT NOTE: + * Some sanity checking code is included using assert(). On my FreeBSD + * system, this additional code can be removed by compiling with NDEBUG + * defined. Check your own systems manpage on assert() to see how to + * compile WITHOUT the sanity checking code on your system. + * + * UNROLLED TRANSFORM LOOP NOTE: + * You can define SHA2_UNROLL_TRANSFORM to use the unrolled transform + * loop version for the hash transform rounds (defined using macros + * later in this file). Either define on the command line, for example: + * + * cc -DSHA2_UNROLL_TRANSFORM -o sha2 sha2.c sha2prog.c + * + * or define below: + * + * #define SHA2_UNROLL_TRANSFORM + * + */ + + +/*** SHA-256/384/512 Machine Architecture Definitions *****************/ +/* + * BYTE_ORDER NOTE: + * + * Please make sure that your system defines BYTE_ORDER. If your + * architecture is little-endian, make sure it also defines + * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are + * equivilent. + * + * If your system does not define the above, then you can do so by + * hand like this: + * + * #define LITTLE_ENDIAN 1234 + * #define BIG_ENDIAN 4321 + * + * And for little-endian machines, add: + * + * #define BYTE_ORDER LITTLE_ENDIAN + * + * Or for big-endian machines: + * + * #define BYTE_ORDER BIG_ENDIAN + * + * The FreeBSD machine this was written on defines BYTE_ORDER + * appropriately by including (which in turn includes + * where the appropriate definitions are actually + * made). + */ +#if !defined(BYTE_ORDER) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN) +#error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN +#endif + +/* + * Define the followingsha2_* types to types of the correct length on + * the native archtecture. Most BSD systems and Linux define u_intXX_t + * types. Machines with very recent ANSI C headers, can use the + * uintXX_t definintions from inttypes.h by defining SHA2_USE_INTTYPES_H + * during compile or in the sha.h header file. + * + * Machines that support neither u_intXX_t nor inttypes.h's uintXX_t + * will need to define these three typedefs below (and the appropriate + * ones in sha.h too) by hand according to their system architecture. + * + * Thank you, Jun-ichiro itojun Hagino, for suggesting using u_intXX_t + * types and pointing out recent ANSI C support for uintXX_t in inttypes.h. + */ +#ifdef SHA2_USE_INTTYPES_H + +typedef uint8_t sha2_byte; /* Exactly 1 byte */ +typedef uint32_t sha2_word32; /* Exactly 4 bytes */ +typedef uint64_t sha2_word64; /* Exactly 8 bytes */ + +#else /* SHA2_USE_INTTYPES_H */ + +typedef u_int8_t sha2_byte; /* Exactly 1 byte */ +typedef u_int32_t sha2_word32; /* Exactly 4 bytes */ +typedef u_int64_t sha2_word64; /* Exactly 8 bytes */ + +#endif /* SHA2_USE_INTTYPES_H */ + + +/*** SHA-256/384/512 Various Length Definitions ***********************/ +/* NOTE: Most of these are in sha2.h */ +#define SHA256_SHORT_BLOCK_LENGTH (SHA256_BLOCK_LENGTH - 8) +#define SHA384_SHORT_BLOCK_LENGTH (SHA384_BLOCK_LENGTH - 16) +#define SHA512_SHORT_BLOCK_LENGTH (SHA512_BLOCK_LENGTH - 16) + + +/*** ENDIAN REVERSAL MACROS *******************************************/ +#if BYTE_ORDER == LITTLE_ENDIAN +#define REVERSE32(w,x) { \ + sha2_word32 tmp = (w); \ + tmp = (tmp >> 16) | (tmp << 16); \ + (x) = ((tmp & 0xff00ff00UL) >> 8) | ((tmp & 0x00ff00ffUL) << 8); \ +} +#define REVERSE64(w,x) { \ + sha2_word64 tmp = (w); \ + tmp = (tmp >> 32) | (tmp << 32); \ + tmp = ((tmp & 0xff00ff00ff00ff00ULL) >> 8) | \ + ((tmp & 0x00ff00ff00ff00ffULL) << 8); \ + (x) = ((tmp & 0xffff0000ffff0000ULL) >> 16) | \ + ((tmp & 0x0000ffff0000ffffULL) << 16); \ +} +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +/* + * Macro for incrementally adding the unsigned 64-bit integer n to the + * unsigned 128-bit integer (represented using a two-element array of + * 64-bit words): + */ +#define ADDINC128(w,n) { \ + (w)[0] += (sha2_word64)(n); \ + if ((w)[0] < (n)) { \ + (w)[1]++; \ + } \ +} + +/* + * Macros for copying blocks of memory and for zeroing out ranges + * of memory. Using these macros makes it easy to switch from + * using memset()/memcpy() and using bzero()/bcopy(). + * + * Please define either SHA2_USE_MEMSET_MEMCPY or define + * SHA2_USE_BZERO_BCOPY depending on which function set you + * choose to use: + */ +#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) +/* Default to memset()/memcpy() if no option is specified */ +#define SHA2_USE_MEMSET_MEMCPY 1 +#endif +#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) +/* Abort with an error if BOTH options are defined */ +#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! +#endif + +#ifdef SHA2_USE_MEMSET_MEMCPY +#define MEMSET_BZERO(p,l) memset((p), 0, (l)) +#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) +#endif +#ifdef SHA2_USE_BZERO_BCOPY +#define MEMSET_BZERO(p,l) bzero((p), (l)) +#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) +#endif + + +/*** THE SIX LOGICAL FUNCTIONS ****************************************/ +/* + * Bit shifting and rotation (used by the six SHA-XYZ logical functions: + * + * NOTE: The naming of R and S appears backwards here (R is a SHIFT and + * S is a ROTATION) because the SHA-256/384/512 description document + * (see http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf) uses this + * same "backwards" definition. + */ +/* Shift-right (used in SHA-256, SHA-384, and SHA-512): */ +#define R(b,x) ((x) >> (b)) +/* 32-bit Rotate-right (used in SHA-256): */ +#define S32(b,x) (((x) >> (b)) | ((x) << (32 - (b)))) +/* 64-bit Rotate-right (used in SHA-384 and SHA-512): */ +#define S64(b,x) (((x) >> (b)) | ((x) << (64 - (b)))) + +/* Two of six logical functions used in SHA-256, SHA-384, and SHA-512: */ +#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) +#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) + +/* Four of six logical functions used in SHA-256: */ +#define Sigma0_256(x) (S32(2, (x)) ^ S32(13, (x)) ^ S32(22, (x))) +#define Sigma1_256(x) (S32(6, (x)) ^ S32(11, (x)) ^ S32(25, (x))) +#define sigma0_256(x) (S32(7, (x)) ^ S32(18, (x)) ^ R(3 , (x))) +#define sigma1_256(x) (S32(17, (x)) ^ S32(19, (x)) ^ R(10, (x))) + +/* Four of six logical functions used in SHA-384 and SHA-512: */ +#define Sigma0_512(x) (S64(28, (x)) ^ S64(34, (x)) ^ S64(39, (x))) +#define Sigma1_512(x) (S64(14, (x)) ^ S64(18, (x)) ^ S64(41, (x))) +#define sigma0_512(x) (S64( 1, (x)) ^ S64( 8, (x)) ^ R( 7, (x))) +#define sigma1_512(x) (S64(19, (x)) ^ S64(61, (x)) ^ R( 6, (x))) + +/*** INTERNAL FUNCTION PROTOTYPES *************************************/ +/* NOTE: These should not be accessed directly from outside this + * library -- they are intended for private internal visibility/use + * only. + */ +void SHA512_Last(SHA512_CTX*); +void SHA256_Transform(SHA256_CTX*, const sha2_word32*); +void SHA512_Transform(SHA512_CTX*, const sha2_word64*); + + +/*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/ +/* Hash constant words K for SHA-256: */ +const static sha2_word32 K256[64] = { + 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, + 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, + 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL, + 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL, + 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, + 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, + 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, + 0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL, + 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL, + 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, + 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, + 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, + 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL, + 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL, + 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, + 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL +}; + +/* Initial hash value H for SHA-256: */ +const static sha2_word32 sha256_initial_hash_value[8] = { + 0x6a09e667UL, + 0xbb67ae85UL, + 0x3c6ef372UL, + 0xa54ff53aUL, + 0x510e527fUL, + 0x9b05688cUL, + 0x1f83d9abUL, + 0x5be0cd19UL +}; + +/* Hash constant words K for SHA-384 and SHA-512: */ +const static sha2_word64 K512[80] = { + 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, + 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, + 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, + 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, + 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, + 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, + 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, + 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, + 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, + 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, + 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, + 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, + 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, + 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, + 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, + 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, + 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, + 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, + 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, + 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, + 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, + 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, + 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, + 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, + 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, + 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, + 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL +}; + +/* Initial hash value H for SHA-384 */ +const static sha2_word64 sha384_initial_hash_value[8] = { + 0xcbbb9d5dc1059ed8ULL, + 0x629a292a367cd507ULL, + 0x9159015a3070dd17ULL, + 0x152fecd8f70e5939ULL, + 0x67332667ffc00b31ULL, + 0x8eb44a8768581511ULL, + 0xdb0c2e0d64f98fa7ULL, + 0x47b5481dbefa4fa4ULL +}; + +/* Initial hash value H for SHA-512 */ +const static sha2_word64 sha512_initial_hash_value[8] = { + 0x6a09e667f3bcc908ULL, + 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, + 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, + 0x5be0cd19137e2179ULL +}; + +/* + * Constant used by SHA256/384/512_End() functions for converting the + * digest to a readable hexadecimal character string: + */ +static const char *sha2_hex_digits = "0123456789abcdef"; + + +/*** SHA-256: *********************************************************/ +void SHA256_Init(SHA256_CTX* context) { + if (context == (SHA256_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha256_initial_hash_value, SHA256_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA256_BLOCK_LENGTH); + context->bitcount = 0; +} + +#ifdef SHA2_UNROLL_TRANSFORM + +/* Unrolled SHA-256 round macros: */ + +#if BYTE_ORDER == LITTLE_ENDIAN + +#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ + REVERSE32(*data++, W256[j]); \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \ + K256[j] + W256[j]; \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + + +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \ + K256[j] + (W256[j] = *data++); \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND256(a,b,c,d,e,f,g,h) \ + s0 = W256[(j+1)&0x0f]; \ + s0 = sigma0_256(s0); \ + s1 = W256[(j+14)&0x0f]; \ + s1 = sigma1_256(s1); \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + K256[j] + \ + (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + +void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { + sha2_word32 a, b, c, d, e, f, g, h, s0, s1; + sha2_word32 T1, *W256; + int j; + + W256 = (sha2_word32*)context->buffer; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { + /* Rounds 0 to 15 (unrolled): */ + ROUND256_0_TO_15(a,b,c,d,e,f,g,h); + ROUND256_0_TO_15(h,a,b,c,d,e,f,g); + ROUND256_0_TO_15(g,h,a,b,c,d,e,f); + ROUND256_0_TO_15(f,g,h,a,b,c,d,e); + ROUND256_0_TO_15(e,f,g,h,a,b,c,d); + ROUND256_0_TO_15(d,e,f,g,h,a,b,c); + ROUND256_0_TO_15(c,d,e,f,g,h,a,b); + ROUND256_0_TO_15(b,c,d,e,f,g,h,a); + } while (j < 16); + + /* Now for the remaining rounds to 64: */ + do { + ROUND256(a,b,c,d,e,f,g,h); + ROUND256(h,a,b,c,d,e,f,g); + ROUND256(g,h,a,b,c,d,e,f); + ROUND256(f,g,h,a,b,c,d,e); + ROUND256(e,f,g,h,a,b,c,d); + ROUND256(d,e,f,g,h,a,b,c); + ROUND256(c,d,e,f,g,h,a,b); + ROUND256(b,c,d,e,f,g,h,a); + } while (j < 64); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = 0; +} + +#else /* SHA2_UNROLL_TRANSFORM */ + +void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { + sha2_word32 a, b, c, d, e, f, g, h, s0, s1; + sha2_word32 T1, T2, *W256; + int j; + + W256 = (sha2_word32*)context->buffer; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { +#if BYTE_ORDER == LITTLE_ENDIAN + /* Copy data while converting to host byte order */ + REVERSE32(*data++,W256[j]); + /* Apply the SHA-256 compression function to update a..h */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j]; +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + /* Apply the SHA-256 compression function to update a..h with copy */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + (W256[j] = *data++); +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + T2 = Sigma0_256(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 16); + + do { + /* Part of the message block expansion: */ + s0 = W256[(j+1)&0x0f]; + s0 = sigma0_256(s0); + s1 = W256[(j+14)&0x0f]; + s1 = sigma1_256(s1); + + /* Apply the SHA-256 compression function to update a..h */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + + (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); + T2 = Sigma0_256(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 64); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = T2 = 0; +} + +#endif /* SHA2_UNROLL_TRANSFORM */ + +void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) { + unsigned int freespace, usedspace; + + if (len == 0) { + /* Calling with no data is valid - we do nothing */ + return; + } + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0 && data != (sha2_byte*)0); + + usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH; + if (usedspace > 0) { + /* Calculate how much free space is available in the buffer */ + freespace = SHA256_BLOCK_LENGTH - usedspace; + + if (len >= freespace) { + /* Fill the buffer completely and process it */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace); + context->bitcount += freespace << 3; + len -= freespace; + data += freespace; + SHA256_Transform(context, (sha2_word32*)context->buffer); + } else { + /* The buffer is not yet full */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, len); + context->bitcount += len << 3; + /* Clean up: */ + usedspace = freespace = 0; + return; + } + } + while (len >= SHA256_BLOCK_LENGTH) { + /* Process as many complete blocks as we can */ + SHA256_Transform(context, (sha2_word32*)data); + context->bitcount += SHA256_BLOCK_LENGTH << 3; + len -= SHA256_BLOCK_LENGTH; + data += SHA256_BLOCK_LENGTH; + } + if (len > 0) { + /* There's left-overs, so save 'em */ + MEMCPY_BCOPY(context->buffer, data, len); + context->bitcount += len << 3; + } + /* Clean up: */ + usedspace = freespace = 0; +} + +void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { + sha2_word32 *d = (sha2_word32*)digest; + unsigned int usedspace; + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH; +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert FROM host byte order */ + REVERSE64(context->bitcount,context->bitcount); +#endif + if (usedspace > 0) { + /* Begin padding with a 1 bit: */ + context->buffer[usedspace++] = 0x80; + + if (usedspace <= SHA256_SHORT_BLOCK_LENGTH) { + /* Set-up for the last transform: */ + MEMSET_BZERO(&context->buffer[usedspace], SHA256_SHORT_BLOCK_LENGTH - usedspace); + } else { + if (usedspace < SHA256_BLOCK_LENGTH) { + MEMSET_BZERO(&context->buffer[usedspace], SHA256_BLOCK_LENGTH - usedspace); + } + /* Do second-to-last transform: */ + SHA256_Transform(context, (sha2_word32*)context->buffer); + + /* And set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); + } + } else { + /* Set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); + + /* Begin padding with a 1 bit: */ + *context->buffer = 0x80; + } + /* Set the bit count: */ + *(sha2_word64*)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount; + + /* Final transform: */ + SHA256_Transform(context, (sha2_word32*)context->buffer); + +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 8; j++) { + REVERSE32(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA256_DIGEST_LENGTH); +#endif + } + + /* Clean up state data: */ + MEMSET_BZERO(context, sizeof(context)); + usedspace = 0; +} + +char *SHA256_End(SHA256_CTX* context, char buffer[]) { + sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0); + + if (buffer != (char*)0) { + SHA256_Final(digest, context); + + for (i = 0; i < SHA256_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA256_DIGEST_LENGTH); + return buffer; +} + +char* SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) { + SHA256_CTX context; + + SHA256_Init(&context); + SHA256_Update(&context, data, len); + return SHA256_End(&context, digest); +} + + +/*** SHA-512: *********************************************************/ +void SHA512_Init(SHA512_CTX* context) { + if (context == (SHA512_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha512_initial_hash_value, SHA512_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH); + context->bitcount[0] = context->bitcount[1] = 0; +} + +#ifdef SHA2_UNROLL_TRANSFORM + +/* Unrolled SHA-512 round macros: */ +#if BYTE_ORDER == LITTLE_ENDIAN + +#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \ + REVERSE64(*data++, W512[j]); \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \ + K512[j] + W512[j]; \ + (d) += T1, \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)), \ + j++ + + +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \ + K512[j] + (W512[j] = *data++); \ + (d) += T1; \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ + j++ + +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND512(a,b,c,d,e,f,g,h) \ + s0 = W512[(j+1)&0x0f]; \ + s0 = sigma0_512(s0); \ + s1 = W512[(j+14)&0x0f]; \ + s1 = sigma1_512(s1); \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + K512[j] + \ + (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); \ + (d) += T1; \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ + j++ + +void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { + sha2_word64 a, b, c, d, e, f, g, h, s0, s1; + sha2_word64 T1, *W512 = (sha2_word64*)context->buffer; + int j; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { + ROUND512_0_TO_15(a,b,c,d,e,f,g,h); + ROUND512_0_TO_15(h,a,b,c,d,e,f,g); + ROUND512_0_TO_15(g,h,a,b,c,d,e,f); + ROUND512_0_TO_15(f,g,h,a,b,c,d,e); + ROUND512_0_TO_15(e,f,g,h,a,b,c,d); + ROUND512_0_TO_15(d,e,f,g,h,a,b,c); + ROUND512_0_TO_15(c,d,e,f,g,h,a,b); + ROUND512_0_TO_15(b,c,d,e,f,g,h,a); + } while (j < 16); + + /* Now for the remaining rounds up to 79: */ + do { + ROUND512(a,b,c,d,e,f,g,h); + ROUND512(h,a,b,c,d,e,f,g); + ROUND512(g,h,a,b,c,d,e,f); + ROUND512(f,g,h,a,b,c,d,e); + ROUND512(e,f,g,h,a,b,c,d); + ROUND512(d,e,f,g,h,a,b,c); + ROUND512(c,d,e,f,g,h,a,b); + ROUND512(b,c,d,e,f,g,h,a); + } while (j < 80); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = 0; +} + +#else /* SHA2_UNROLL_TRANSFORM */ + +void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { + sha2_word64 a, b, c, d, e, f, g, h, s0, s1; + sha2_word64 T1, T2, *W512 = (sha2_word64*)context->buffer; + int j; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert TO host byte order */ + REVERSE64(*data++, W512[j]); + /* Apply the SHA-512 compression function to update a..h */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + W512[j]; +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + /* Apply the SHA-512 compression function to update a..h with copy */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + (W512[j] = *data++); +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + T2 = Sigma0_512(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 16); + + do { + /* Part of the message block expansion: */ + s0 = W512[(j+1)&0x0f]; + s0 = sigma0_512(s0); + s1 = W512[(j+14)&0x0f]; + s1 = sigma1_512(s1); + + /* Apply the SHA-512 compression function to update a..h */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + + (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); + T2 = Sigma0_512(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 80); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = T2 = 0; +} + +#endif /* SHA2_UNROLL_TRANSFORM */ + +void SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) { + unsigned int freespace, usedspace; + + if (len == 0) { + /* Calling with no data is valid - we do nothing */ + return; + } + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0 && data != (sha2_byte*)0); + + usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; + if (usedspace > 0) { + /* Calculate how much free space is available in the buffer */ + freespace = SHA512_BLOCK_LENGTH - usedspace; + + if (len >= freespace) { + /* Fill the buffer completely and process it */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace); + ADDINC128(context->bitcount, freespace << 3); + len -= freespace; + data += freespace; + SHA512_Transform(context, (sha2_word64*)context->buffer); + } else { + /* The buffer is not yet full */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, len); + ADDINC128(context->bitcount, len << 3); + /* Clean up: */ + usedspace = freespace = 0; + return; + } + } + while (len >= SHA512_BLOCK_LENGTH) { + /* Process as many complete blocks as we can */ + SHA512_Transform(context, (sha2_word64*)data); + ADDINC128(context->bitcount, SHA512_BLOCK_LENGTH << 3); + len -= SHA512_BLOCK_LENGTH; + data += SHA512_BLOCK_LENGTH; + } + if (len > 0) { + /* There's left-overs, so save 'em */ + MEMCPY_BCOPY(context->buffer, data, len); + ADDINC128(context->bitcount, len << 3); + } + /* Clean up: */ + usedspace = freespace = 0; +} + +void SHA512_Last(SHA512_CTX* context) { + unsigned int usedspace; + + usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert FROM host byte order */ + REVERSE64(context->bitcount[0],context->bitcount[0]); + REVERSE64(context->bitcount[1],context->bitcount[1]); +#endif + if (usedspace > 0) { + /* Begin padding with a 1 bit: */ + context->buffer[usedspace++] = 0x80; + + if (usedspace <= SHA512_SHORT_BLOCK_LENGTH) { + /* Set-up for the last transform: */ + MEMSET_BZERO(&context->buffer[usedspace], SHA512_SHORT_BLOCK_LENGTH - usedspace); + } else { + if (usedspace < SHA512_BLOCK_LENGTH) { + MEMSET_BZERO(&context->buffer[usedspace], SHA512_BLOCK_LENGTH - usedspace); + } + /* Do second-to-last transform: */ + SHA512_Transform(context, (sha2_word64*)context->buffer); + + /* And set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH - 2); + } + } else { + /* Prepare for final transform: */ + MEMSET_BZERO(context->buffer, SHA512_SHORT_BLOCK_LENGTH); + + /* Begin padding with a 1 bit: */ + *context->buffer = 0x80; + } + /* Store the length of input data (in bits): */ + *(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH] = context->bitcount[1]; + *(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH+8] = context->bitcount[0]; + + /* Final transform: */ + SHA512_Transform(context, (sha2_word64*)context->buffer); +} + +void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { + sha2_word64 *d = (sha2_word64*)digest; + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + SHA512_Last(context); + + /* Save the hash data for output: */ +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 8; j++) { + REVERSE64(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA512_DIGEST_LENGTH); +#endif + } + + /* Zero out state data */ + MEMSET_BZERO(context, sizeof(context)); +} + +char *SHA512_End(SHA512_CTX* context, char buffer[]) { + sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0); + + if (buffer != (char*)0) { + SHA512_Final(digest, context); + + for (i = 0; i < SHA512_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA512_DIGEST_LENGTH); + return buffer; +} + +char* SHA512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) { + SHA512_CTX context; + + SHA512_Init(&context); + SHA512_Update(&context, data, len); + return SHA512_End(&context, digest); +} + + +/*** SHA-384: *********************************************************/ +void SHA384_Init(SHA384_CTX* context) { + if (context == (SHA384_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha384_initial_hash_value, SHA512_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA384_BLOCK_LENGTH); + context->bitcount[0] = context->bitcount[1] = 0; +} + +void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) { + SHA512_Update((SHA512_CTX*)context, data, len); +} + +void SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { + sha2_word64 *d = (sha2_word64*)digest; + + /* Sanity check: */ + assert(context != (SHA384_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + SHA512_Last((SHA512_CTX*)context); + + /* Save the hash data for output: */ +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 6; j++) { + REVERSE64(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA384_DIGEST_LENGTH); +#endif + } + + /* Zero out state data */ + MEMSET_BZERO(context, sizeof(context)); +} + +char *SHA384_End(SHA384_CTX* context, char buffer[]) { + sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA384_CTX*)0); + + if (buffer != (char*)0) { + SHA384_Final(digest, context); + + for (i = 0; i < SHA384_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA384_DIGEST_LENGTH); + return buffer; +} + +char* SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_STRING_LENGTH]) { + SHA384_CTX context; + + SHA384_Init(&context); + SHA384_Update(&context, data, len); + return SHA384_End(&context, digest); +} + diff --git a/apt-pkg/contrib/sha2.h b/apt-pkg/contrib/sha2.h new file mode 100644 index 000000000..bf759ad45 --- /dev/null +++ b/apt-pkg/contrib/sha2.h @@ -0,0 +1,197 @@ +/* + * FILE: sha2.h + * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/ + * + * Copyright (c) 2000-2001, Aaron D. Gifford + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $ + */ + +#ifndef __SHA2_H__ +#define __SHA2_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + * Import u_intXX_t size_t type definitions from system headers. You + * may need to change this, or define these things yourself in this + * file. + */ +#include + +#ifdef SHA2_USE_INTTYPES_H + +#include + +#endif /* SHA2_USE_INTTYPES_H */ + + +/*** SHA-256/384/512 Various Length Definitions ***********************/ +#define SHA256_BLOCK_LENGTH 64 +#define SHA256_DIGEST_LENGTH 32 +#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) +#define SHA384_BLOCK_LENGTH 128 +#define SHA384_DIGEST_LENGTH 48 +#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1) +#define SHA512_BLOCK_LENGTH 128 +#define SHA512_DIGEST_LENGTH 64 +#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) + + +/*** SHA-256/384/512 Context Structures *******************************/ +/* NOTE: If your architecture does not define either u_intXX_t types or + * uintXX_t (from inttypes.h), you may need to define things by hand + * for your system: + */ +#if 0 +typedef unsigned char u_int8_t; /* 1-byte (8-bits) */ +typedef unsigned int u_int32_t; /* 4-bytes (32-bits) */ +typedef unsigned long long u_int64_t; /* 8-bytes (64-bits) */ +#endif +/* + * Most BSD systems already define u_intXX_t types, as does Linux. + * Some systems, however, like Compaq's Tru64 Unix instead can use + * uintXX_t types defined by very recent ANSI C standards and included + * in the file: + * + * #include + * + * If you choose to use then please define: + * + * #define SHA2_USE_INTTYPES_H + * + * Or on the command line during compile: + * + * cc -DSHA2_USE_INTTYPES_H ... + */ +#ifdef SHA2_USE_INTTYPES_H + +typedef struct _SHA256_CTX { + uint32_t state[8]; + uint64_t bitcount; + uint8_t buffer[SHA256_BLOCK_LENGTH]; +} SHA256_CTX; +typedef struct _SHA512_CTX { + uint64_t state[8]; + uint64_t bitcount[2]; + uint8_t buffer[SHA512_BLOCK_LENGTH]; +} SHA512_CTX; + +#else /* SHA2_USE_INTTYPES_H */ + +typedef struct _SHA256_CTX { + u_int32_t state[8]; + u_int64_t bitcount; + u_int8_t buffer[SHA256_BLOCK_LENGTH]; +} SHA256_CTX; +typedef struct _SHA512_CTX { + u_int64_t state[8]; + u_int64_t bitcount[2]; + u_int8_t buffer[SHA512_BLOCK_LENGTH]; +} SHA512_CTX; + +#endif /* SHA2_USE_INTTYPES_H */ + +typedef SHA512_CTX SHA384_CTX; + + +/*** SHA-256/384/512 Function Prototypes ******************************/ +#ifndef NOPROTO +#ifdef SHA2_USE_INTTYPES_H + +void SHA256_Init(SHA256_CTX *); +void SHA256_Update(SHA256_CTX*, const uint8_t*, size_t); +void SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); +char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); +char* SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); + +void SHA384_Init(SHA384_CTX*); +void SHA384_Update(SHA384_CTX*, const uint8_t*, size_t); +void SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); +char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); +char* SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); + +void SHA512_Init(SHA512_CTX*); +void SHA512_Update(SHA512_CTX*, const uint8_t*, size_t); +void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); +char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); +char* SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); + +#else /* SHA2_USE_INTTYPES_H */ + +void SHA256_Init(SHA256_CTX *); +void SHA256_Update(SHA256_CTX*, const u_int8_t*, size_t); +void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); +char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); +char* SHA256_Data(const u_int8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); + +void SHA384_Init(SHA384_CTX*); +void SHA384_Update(SHA384_CTX*, const u_int8_t*, size_t); +void SHA384_Final(u_int8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); +char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); +char* SHA384_Data(const u_int8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); + +void SHA512_Init(SHA512_CTX*); +void SHA512_Update(SHA512_CTX*, const u_int8_t*, size_t); +void SHA512_Final(u_int8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); +char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); +char* SHA512_Data(const u_int8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); + +#endif /* SHA2_USE_INTTYPES_H */ + +#else /* NOPROTO */ + +void SHA256_Init(); +void SHA256_Update(); +void SHA256_Final(); +char* SHA256_End(); +char* SHA256_Data(); + +void SHA384_Init(); +void SHA384_Update(); +void SHA384_Final(); +char* SHA384_End(); +char* SHA384_Data(); + +void SHA512_Init(); +void SHA512_Update(); +void SHA512_Final(); +char* SHA512_End(); +char* SHA512_Data(); + +#endif /* NOPROTO */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __SHA2_H__ */ + diff --git a/apt-pkg/contrib/sha512.cc b/apt-pkg/contrib/sha512.cc new file mode 100644 index 000000000..752e039a7 --- /dev/null +++ b/apt-pkg/contrib/sha512.cc @@ -0,0 +1,128 @@ +/* + * Cryptographic API. {{{ + * + * SHA-512, as specified in + * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + */ /*}}}*/ + +#ifdef __GNUG__ +#pragma implementation "apt-pkg/sha512.h" +#endif + +#include +#include +#include + +SHA512Summation::SHA512Summation() /*{{{*/ +{ + SHA512_Init(&ctx); + Done = false; +} + /*}}}*/ +bool SHA512Summation::Add(const unsigned char *inbuf,unsigned long len) /*{{{*/ +{ + if (Done) + return false; + SHA512_Update(&ctx, inbuf, len); + return true; +} + /*}}}*/ +SHA512SumValue SHA512Summation::Result() /*{{{*/ +{ + if (!Done) { + SHA512_Final(Sum, &ctx); + Done = true; + } + + SHA512SumValue res; + res.Set(Sum); + return res; +} + /*}}}*/ +// SHA512SumValue::SHA512SumValue - Constructs the sum from a string /*{{{*/ +// --------------------------------------------------------------------- +/* The string form of a SHA512 is a 64 character hex number */ +SHA512SumValue::SHA512SumValue(string Str) +{ + memset(Sum,0,sizeof(Sum)); + Set(Str); +} + /*}}}*/ +// SHA512SumValue::SHA512SumValue - Default constructor /*{{{*/ +// --------------------------------------------------------------------- +/* Sets the value to 0 */ +SHA512SumValue::SHA512SumValue() +{ + memset(Sum,0,sizeof(Sum)); +} + /*}}}*/ +// SHA512SumValue::Set - Set the sum from a string /*{{{*/ +// --------------------------------------------------------------------- +/* Converts the hex string into a set of chars */ +bool SHA512SumValue::Set(string Str) +{ + return Hex2Num(Str,Sum,sizeof(Sum)); +} + /*}}}*/ +// SHA512SumValue::Value - Convert the number into a string /*{{{*/ +// --------------------------------------------------------------------- +/* Converts the set of chars into a hex string in lower case */ +string SHA512SumValue::Value() const +{ + char Conv[16] = + { '0','1','2','3','4','5','6','7','8','9','a','b', + 'c','d','e','f' + }; + char Result[129]; + Result[128] = 0; + + // Convert each char into two letters + int J = 0; + int I = 0; + for (; I != 128; J++,I += 2) + { + Result[I] = Conv[Sum[J] >> 4]; + Result[I + 1] = Conv[Sum[J] & 0xF]; + } + + return string(Result); +} + /*}}}*/ +// SHA512SumValue::operator == - Comparator /*{{{*/ +// --------------------------------------------------------------------- +/* Call memcmp on the buffer */ +bool SHA512SumValue::operator == (const SHA512SumValue & rhs) const +{ + return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; +} + /*}}}*/ +// SHA512Summation::AddFD - Add content of file into the checksum /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool SHA512Summation::AddFD(int Fd,unsigned long Size) +{ + unsigned char Buf[64 * 64]; + int Res = 0; + int ToEOF = (Size == 0); + while (Size != 0 || ToEOF) + { + unsigned n = sizeof(Buf); + if (!ToEOF) n = min(Size,(unsigned long)n); + Res = read(Fd,Buf,n); + if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read + return false; + if (ToEOF && Res == 0) // EOF + break; + Size -= Res; + Add(Buf,Res); + } + return true; +} + /*}}}*/ + diff --git a/apt-pkg/contrib/sha512.h b/apt-pkg/contrib/sha512.h new file mode 100644 index 000000000..960ff1f46 --- /dev/null +++ b/apt-pkg/contrib/sha512.h @@ -0,0 +1,68 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: sha512.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ +/* ###################################################################### + + SHA512SumValue - Storage for a SHA-512 hash. + SHA512Summation - SHA-512 Secure Hash Algorithm. + + This is a C++ interface to a set of SHA512Sum functions, that mirrors + the equivalent MD5 & SHA1 classes. + + ##################################################################### */ + /*}}}*/ +#ifndef APTPKG_SHA512_H +#define APTPKG_SHA512_H + +#include +#include +#include +#include + +#include "sha2.h" + +using std::string; +using std::min; + +class SHA512Summation; + +class SHA512SumValue +{ + friend class SHA512Summation; + unsigned char Sum[64]; + + public: + + // Accessors + bool operator ==(const SHA512SumValue &rhs) const; + string Value() const; + inline void Value(unsigned char S[64]) + {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; + inline operator string() const {return Value();}; + bool Set(string Str); + inline void Set(unsigned char S[64]) + {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; + + SHA512SumValue(string Str); + SHA512SumValue(); +}; + +class SHA512Summation +{ + SHA512_CTX ctx; + unsigned char Sum[64]; + bool Done; + + public: + + bool Add(const unsigned char *inbuf,unsigned long inlen); + inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; + bool AddFD(int Fd,unsigned long Size); + inline bool Add(const unsigned char *Beg,const unsigned char *End) + {return Add(Beg,End-Beg);}; + SHA512SumValue Result(); + + SHA512Summation(); +}; + +#endif diff --git a/apt-pkg/makefile b/apt-pkg/makefile index 4e5ec107f..c7074943c 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -20,11 +20,15 @@ APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR) # Source code for the contributed non-core things SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \ contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \ - contrib/md5.cc contrib/sha1.cc contrib/sha256.cc contrib/hashes.cc \ + contrib/md5.cc contrib/sha1.cc contrib/sha256.cc contrib/sha2.cc \ + contrib/sha512.cc \ + contrib/hashes.cc \ contrib/cdromutl.cc contrib/crc-16.cc contrib/netrc.cc \ contrib/fileutl.cc HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h netrc.h\ - md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h hashes.h \ + md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h sha2.h \ + sha512.h\ + hashes.h \ macros.h weakptr.h # Source code for the core main library diff --git a/test/hash.cc b/test/hash.cc index cfdb4ea9d..259aa4e9a 100644 --- a/test/hash.cc +++ b/test/hash.cc @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -10,9 +11,17 @@ template void Test(const char *In,const char *Out) { T Sum; Sum.Add(In); - cout << Sum.Result().Value() << endl; - if (stringcasecmp(Sum.Result().Value(),Out) != 0) + + cout << "expected: '" << Out << "'" << endl; + cout << "got : '" << Sum.Result().Value() << "'" << endl; + cout << "got : '" << Sum.Result().Value() << "'" << endl; + cout << "got : '" << Sum.Result().Value() << "'" << endl; + if (stringcasecmp(Sum.Result().Value(), Out) != 0) { + cout << "FAIL" << endl << endl; abort(); + } else { + cout << "PASS" << endl << endl; + } } template void TestMill(const char *Out) @@ -34,9 +43,8 @@ template void TestMill(const char *Out) Count = 0; } } - - cout << Sum.Result().Value() << endl; - if (stringcasecmp(Sum.Result().Value(),Out) != 0) + + if (stringcasecmp(Sum.Result().Value(), Out) != 0) abort(); } @@ -62,8 +70,13 @@ int main() // SHA-256, From FIPS 180-2 Test("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"); - + // SHA-512, From + Test( + "abc", + "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" + "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"); + return 0; } -- cgit v1.2.3-70-g09d2 From 9a961efc5cedeb2b7439114df18e8d0201c83fcf Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 22 Feb 2011 22:06:31 +0100 Subject: add sha512 support to apt-ftparchive --- ftparchive/cachedb.cc | 39 +++++++++++++++++++++++++++++++++++++-- ftparchive/cachedb.h | 20 ++++++++++++++++---- ftparchive/writer.cc | 30 +++++++++++++++++++++++++++++- ftparchive/writer.h | 2 ++ 4 files changed, 84 insertions(+), 7 deletions(-) diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc index b04244347..699718e57 100644 --- a/ftparchive/cachedb.cc +++ b/ftparchive/cachedb.cc @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -162,7 +163,8 @@ bool CacheDB::GetCurStat() // --------------------------------------------------------------------- bool CacheDB::GetFileInfo(string const &FileName, bool const &DoControl, bool const &DoContents, bool const &GenContentsOnly, bool const &DoMD5, bool const &DoSHA1, - bool const &DoSHA256, bool const &checkMtime) + bool const &DoSHA256, bool const &DoSHA512, + bool const &checkMtime) { this->FileName = FileName; @@ -190,7 +192,9 @@ bool CacheDB::GetFileInfo(string const &FileName, bool const &DoControl, bool co || (DoContents && LoadContents(GenContentsOnly) == false) || (DoMD5 && GetMD5(false) == false) || (DoSHA1 && GetSHA1(false) == false) - || (DoSHA256 && GetSHA256(false) == false)) + || (DoSHA256 && GetSHA256(false) == false) + || (DoSHA512 && GetSHA512(false) == false) + ) { delete Fd; Fd = NULL; @@ -412,6 +416,37 @@ bool CacheDB::GetSHA256(bool const &GenOnly) return true; } /*}}}*/ +// CacheDB::GetSHA256 - Get the SHA256 hash /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool CacheDB::GetSHA512(bool const &GenOnly) +{ + // Try to read the control information out of the DB. + if ((CurStat.Flags & FlSHA512) == FlSHA512) + { + if (GenOnly == true) + return true; + + SHA512Res = bytes2hex(CurStat.SHA512, sizeof(CurStat.SHA512)); + return true; + } + + Stats.SHA512Bytes += CurStat.FileSize; + + if (Fd == NULL && OpenFile() == false) + { + return false; + } + SHA512Summation SHA512; + if (Fd->Seek(0) == false || SHA512.AddFD(Fd->Fd(),CurStat.FileSize) == false) + return false; + + SHA512Res = SHA512.Result(); + hex2bytes(CurStat.SHA512, SHA512Res.data(), sizeof(CurStat.SHA512)); + CurStat.Flags |= FlSHA512; + return true; +} + /*}}}*/ // CacheDB::Finish - Write back the cache structure /*{{{*/ // --------------------------------------------------------------------- /* */ diff --git a/ftparchive/cachedb.h b/ftparchive/cachedb.h index 0ba80909a..15e796325 100644 --- a/ftparchive/cachedb.h +++ b/ftparchive/cachedb.h @@ -70,10 +70,13 @@ class CacheDB bool GetMD5(bool const &GenOnly); bool GetSHA1(bool const &GenOnly); bool GetSHA256(bool const &GenOnly); + bool GetSHA512(bool const &GenOnly); // Stat info stored in the DB, Fixed types since it is written to disk. enum FlagList {FlControl = (1<<0),FlMD5=(1<<1),FlContents=(1<<2), - FlSize=(1<<3), FlSHA1=(1<<4), FlSHA256=(1<<5)}; + FlSize=(1<<3), FlSHA1=(1<<4), FlSHA256=(1<<5), + FlSHA512=(1<<6)}; + struct StatStore { uint32_t Flags; @@ -82,6 +85,7 @@ class CacheDB uint8_t MD5[16]; uint8_t SHA1[20]; uint8_t SHA256[32]; + uint8_t SHA512[64]; } CurStat; struct StatStore OldStat; @@ -98,6 +102,7 @@ class CacheDB string MD5Res; string SHA1Res; string SHA256Res; + string SHA512Res; // Runtime statistics struct Stats @@ -106,14 +111,21 @@ class CacheDB double MD5Bytes; double SHA1Bytes; double SHA256Bytes; + double SHA512Bytes; unsigned long Packages; unsigned long Misses; unsigned long DeLinkBytes; inline void Add(const Stats &S) { - Bytes += S.Bytes; MD5Bytes += S.MD5Bytes; SHA1Bytes += S.SHA1Bytes; + Bytes += S.Bytes; + MD5Bytes += S.MD5Bytes; + SHA1Bytes += S.SHA1Bytes; SHA256Bytes += S.SHA256Bytes; - Packages += S.Packages; Misses += S.Misses; DeLinkBytes += S.DeLinkBytes;}; + SHA512Bytes += S.SHA512Bytes; + Packages += S.Packages; + Misses += S.Misses; + DeLinkBytes += S.DeLinkBytes; + }; Stats() : Bytes(0), MD5Bytes(0), SHA1Bytes(0), SHA256Bytes(0), Packages(0), Misses(0), DeLinkBytes(0) {}; } Stats; @@ -125,7 +137,7 @@ class CacheDB bool SetFile(string const &FileName,struct stat St,FileFd *Fd); bool GetFileInfo(string const &FileName, bool const &DoControl, bool const &DoContents, bool const &GenContentsOnly, - bool const &DoMD5, bool const &DoSHA1, bool const &DoSHA256, bool const &checkMtime = false); + bool const &DoMD5, bool const &DoSHA1, bool const &DoSHA256, bool const &DoSHA512, bool const &checkMtime = false); bool Finish(); bool Clean(); diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index 9cdca8d3e..e7eff2045 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -311,6 +312,7 @@ PackagesWriter::PackagesWriter(string const &DB,string const &Overrides,string c DoMD5 = _config->FindB("APT::FTPArchive::MD5",true); DoSHA1 = _config->FindB("APT::FTPArchive::SHA1",true); DoSHA256 = _config->FindB("APT::FTPArchive::SHA256",true); + DoSHA256 = _config->FindB("APT::FTPArchive::SHA512",true); DoAlwaysStat = _config->FindB("APT::FTPArchive::AlwaysStat", false); DoContents = _config->FindB("APT::FTPArchive::Contents",true); NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false); @@ -365,7 +367,7 @@ bool FTWScanner::SetExts(string const &Vals) bool PackagesWriter::DoPackage(string FileName) { // Pull all the data we need form the DB - if (Db.GetFileInfo(FileName, true, DoContents, true, DoMD5, DoSHA1, DoSHA256, DoAlwaysStat) + if (Db.GetFileInfo(FileName, true, DoContents, true, DoMD5, DoSHA1, DoSHA256, DoSHA512, DoAlwaysStat) == false) { return false; @@ -438,6 +440,7 @@ bool PackagesWriter::DoPackage(string FileName) SetTFRewriteData(Changes[End++], "MD5sum", Db.MD5Res.c_str()); SetTFRewriteData(Changes[End++], "SHA1", Db.SHA1Res.c_str()); SetTFRewriteData(Changes[End++], "SHA256", Db.SHA256Res.c_str()); + SetTFRewriteData(Changes[End++], "SHA512", Db.SHA512Res.c_str()); SetTFRewriteData(Changes[End++], "Filename", NewFileName.c_str()); SetTFRewriteData(Changes[End++], "Priority", OverItem->Priority.c_str()); SetTFRewriteData(Changes[End++], "Status", 0); @@ -613,8 +616,10 @@ bool SourcesWriter::DoPackage(string FileName) SHA1Summation SHA1; SHA256Summation SHA256; + SHA512Summation SHA512; SHA1.Add((unsigned char *)Start,BlkEnd - Start); SHA256.Add((unsigned char *)Start,BlkEnd - Start); + SHA512.Add((unsigned char *)Start,BlkEnd - Start); // Add an extra \n to the end, just in case *BlkEnd++ = '\n'; @@ -725,6 +730,12 @@ bool SourcesWriter::DoPackage(string FileName) << strippedName << "\n " << Tags.FindS("Checksums-Sha256"); string const ChecksumsSha256 = ostreamSha256.str(); + std::ostringstream ostreamSha512; + if (Tags.Exists("Checksums-Sha512")) + ostreamSha512 << "\n " << string(SHA512.Result()) << " " << St.st_size << " " + << strippedName << "\n " << Tags.FindS("Checksums-Sha512"); + string const ChecksumsSha512 = ostreamSha512.str(); + // Strip the DirStrip prefix from the FileName and add the PathPrefix string NewFileName; if (DirStrip.empty() == false && @@ -777,6 +788,7 @@ bool SourcesWriter::DoPackage(string FileName) SetTFRewriteData(Changes[End++],"Files",Files.c_str()); SetTFRewriteData(Changes[End++],"Checksums-Sha1",ChecksumsSha1.c_str()); SetTFRewriteData(Changes[End++],"Checksums-Sha256",ChecksumsSha256.c_str()); + SetTFRewriteData(Changes[End++],"Checksums-Sha512",ChecksumsSha512.c_str()); if (Directory != "./") SetTFRewriteData(Changes[End++],"Directory",Directory.c_str()); SetTFRewriteData(Changes[End++],"Priority",BestPrio.c_str()); @@ -1010,6 +1022,10 @@ bool ReleaseWriter::DoPackage(string FileName) SHA256.AddFD(fd.Fd(), fd.Size()); CheckSums[NewFileName].SHA256 = SHA256.Result(); + SHA256Summation SHA512; + SHA256.AddFD(fd.Fd(), fd.Size()); + CheckSums[NewFileName].SHA512 = SHA512.Result(); + fd.Close(); return true; @@ -1052,5 +1068,17 @@ void ReleaseWriter::Finish() (*I).second.size, (*I).first.c_str()); } + + fprintf(Output, "SHA512:\n"); + for(map::const_iterator I = CheckSums.begin(); + I != CheckSums.end(); + ++I) + { + fprintf(Output, " %s %32ld %s\n", + (*I).second.SHA512.c_str(), + (*I).second.size, + (*I).first.c_str()); + } + } diff --git a/ftparchive/writer.h b/ftparchive/writer.h index 3796f79f6..e1810821a 100644 --- a/ftparchive/writer.h +++ b/ftparchive/writer.h @@ -106,6 +106,7 @@ class PackagesWriter : public FTWScanner bool DoMD5; bool DoSHA1; bool DoSHA256; + bool DoSHA512; bool DoAlwaysStat; bool NoOverride; bool DoContents; @@ -195,6 +196,7 @@ protected: string MD5; string SHA1; string SHA256; + string SHA512; // Limited by FileFd::Size() unsigned long size; ~CheckSum() {}; -- cgit v1.2.3-70-g09d2 From 84a0890e6ef49b5d41a0b9ff0b5a5fe95cca6f3e Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 25 Feb 2011 14:16:35 +0100 Subject: move sha512,256 into apt-pkg/sha2.{cc,h}, move gifford implementation to sha2_internal.{cc,h} --- apt-pkg/contrib/hashes.h | 3 +- apt-pkg/contrib/sha2.cc | 1283 +++++++------------------------------- apt-pkg/contrib/sha2.h | 304 ++++----- apt-pkg/contrib/sha256.cc | 424 ------------- apt-pkg/contrib/sha256.h | 68 +- apt-pkg/contrib/sha2_internal.cc | 1065 +++++++++++++++++++++++++++++++ apt-pkg/contrib/sha2_internal.h | 197 ++++++ apt-pkg/contrib/sha512.cc | 128 ---- apt-pkg/contrib/sha512.h | 68 -- apt-pkg/makefile | 8 +- ftparchive/cachedb.cc | 3 +- ftparchive/writer.cc | 3 +- test/hash.cc | 3 +- 13 files changed, 1607 insertions(+), 1950 deletions(-) delete mode 100644 apt-pkg/contrib/sha256.cc create mode 100644 apt-pkg/contrib/sha2_internal.cc create mode 100644 apt-pkg/contrib/sha2_internal.h delete mode 100644 apt-pkg/contrib/sha512.cc delete mode 100644 apt-pkg/contrib/sha512.h diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h index b3587e02a..4b6a08b1f 100644 --- a/apt-pkg/contrib/hashes.h +++ b/apt-pkg/contrib/hashes.h @@ -16,8 +16,7 @@ #include #include -#include -#include +#include #include #include diff --git a/apt-pkg/contrib/sha2.cc b/apt-pkg/contrib/sha2.cc index 810eb8317..00d90d6ba 100644 --- a/apt-pkg/contrib/sha2.cc +++ b/apt-pkg/contrib/sha2.cc @@ -1,1065 +1,234 @@ /* - * FILE: sha2.c - * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/ - * - * Copyright (c) 2000-2001, Aaron D. Gifford - * All rights reserved. + * Cryptographic API. {{{ * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. + * SHA-512, as specified in + * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf * - * $Id: sha2.c,v 1.1 2001/11/08 00:01:51 adg Exp adg $ - */ - -#include /* memcpy()/memset() or bcopy()/bzero() */ -#include /* assert() */ -#include "sha2.h" - -/* - * ASSERT NOTE: - * Some sanity checking code is included using assert(). On my FreeBSD - * system, this additional code can be removed by compiling with NDEBUG - * defined. Check your own systems manpage on assert() to see how to - * compile WITHOUT the sanity checking code on your system. - * - * UNROLLED TRANSFORM LOOP NOTE: - * You can define SHA2_UNROLL_TRANSFORM to use the unrolled transform - * loop version for the hash transform rounds (defined using macros - * later in this file). Either define on the command line, for example: - * - * cc -DSHA2_UNROLL_TRANSFORM -o sha2 sha2.c sha2prog.c - * - * or define below: - * - * #define SHA2_UNROLL_TRANSFORM + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. * - */ + */ /*}}}*/ - -/*** SHA-256/384/512 Machine Architecture Definitions *****************/ -/* - * BYTE_ORDER NOTE: - * - * Please make sure that your system defines BYTE_ORDER. If your - * architecture is little-endian, make sure it also defines - * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are - * equivilent. - * - * If your system does not define the above, then you can do so by - * hand like this: - * - * #define LITTLE_ENDIAN 1234 - * #define BIG_ENDIAN 4321 - * - * And for little-endian machines, add: - * - * #define BYTE_ORDER LITTLE_ENDIAN - * - * Or for big-endian machines: - * - * #define BYTE_ORDER BIG_ENDIAN - * - * The FreeBSD machine this was written on defines BYTE_ORDER - * appropriately by including (which in turn includes - * where the appropriate definitions are actually - * made). - */ -#if !defined(BYTE_ORDER) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN) -#error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN +#ifdef __GNUG__ +#pragma implementation "apt-pkg/2.h" #endif -/* - * Define the followingsha2_* types to types of the correct length on - * the native archtecture. Most BSD systems and Linux define u_intXX_t - * types. Machines with very recent ANSI C headers, can use the - * uintXX_t definintions from inttypes.h by defining SHA2_USE_INTTYPES_H - * during compile or in the sha.h header file. - * - * Machines that support neither u_intXX_t nor inttypes.h's uintXX_t - * will need to define these three typedefs below (and the appropriate - * ones in sha.h too) by hand according to their system architecture. - * - * Thank you, Jun-ichiro itojun Hagino, for suggesting using u_intXX_t - * types and pointing out recent ANSI C support for uintXX_t in inttypes.h. - */ -#ifdef SHA2_USE_INTTYPES_H - -typedef uint8_t sha2_byte; /* Exactly 1 byte */ -typedef uint32_t sha2_word32; /* Exactly 4 bytes */ -typedef uint64_t sha2_word64; /* Exactly 8 bytes */ - -#else /* SHA2_USE_INTTYPES_H */ - -typedef u_int8_t sha2_byte; /* Exactly 1 byte */ -typedef u_int32_t sha2_word32; /* Exactly 4 bytes */ -typedef u_int64_t sha2_word64; /* Exactly 8 bytes */ - -#endif /* SHA2_USE_INTTYPES_H */ - - -/*** SHA-256/384/512 Various Length Definitions ***********************/ -/* NOTE: Most of these are in sha2.h */ -#define SHA256_SHORT_BLOCK_LENGTH (SHA256_BLOCK_LENGTH - 8) -#define SHA384_SHORT_BLOCK_LENGTH (SHA384_BLOCK_LENGTH - 16) -#define SHA512_SHORT_BLOCK_LENGTH (SHA512_BLOCK_LENGTH - 16) - - -/*** ENDIAN REVERSAL MACROS *******************************************/ -#if BYTE_ORDER == LITTLE_ENDIAN -#define REVERSE32(w,x) { \ - sha2_word32 tmp = (w); \ - tmp = (tmp >> 16) | (tmp << 16); \ - (x) = ((tmp & 0xff00ff00UL) >> 8) | ((tmp & 0x00ff00ffUL) << 8); \ -} -#define REVERSE64(w,x) { \ - sha2_word64 tmp = (w); \ - tmp = (tmp >> 32) | (tmp << 32); \ - tmp = ((tmp & 0xff00ff00ff00ff00ULL) >> 8) | \ - ((tmp & 0x00ff00ff00ff00ffULL) << 8); \ - (x) = ((tmp & 0xffff0000ffff0000ULL) >> 16) | \ - ((tmp & 0x0000ffff0000ffffULL) << 16); \ -} -#endif /* BYTE_ORDER == LITTLE_ENDIAN */ - -/* - * Macro for incrementally adding the unsigned 64-bit integer n to the - * unsigned 128-bit integer (represented using a two-element array of - * 64-bit words): - */ -#define ADDINC128(w,n) { \ - (w)[0] += (sha2_word64)(n); \ - if ((w)[0] < (n)) { \ - (w)[1]++; \ - } \ -} - -/* - * Macros for copying blocks of memory and for zeroing out ranges - * of memory. Using these macros makes it easy to switch from - * using memset()/memcpy() and using bzero()/bcopy(). - * - * Please define either SHA2_USE_MEMSET_MEMCPY or define - * SHA2_USE_BZERO_BCOPY depending on which function set you - * choose to use: - */ -#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) -/* Default to memset()/memcpy() if no option is specified */ -#define SHA2_USE_MEMSET_MEMCPY 1 -#endif -#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) -/* Abort with an error if BOTH options are defined */ -#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! -#endif - -#ifdef SHA2_USE_MEMSET_MEMCPY -#define MEMSET_BZERO(p,l) memset((p), 0, (l)) -#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) -#endif -#ifdef SHA2_USE_BZERO_BCOPY -#define MEMSET_BZERO(p,l) bzero((p), (l)) -#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) -#endif - - -/*** THE SIX LOGICAL FUNCTIONS ****************************************/ -/* - * Bit shifting and rotation (used by the six SHA-XYZ logical functions: - * - * NOTE: The naming of R and S appears backwards here (R is a SHIFT and - * S is a ROTATION) because the SHA-256/384/512 description document - * (see http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf) uses this - * same "backwards" definition. - */ -/* Shift-right (used in SHA-256, SHA-384, and SHA-512): */ -#define R(b,x) ((x) >> (b)) -/* 32-bit Rotate-right (used in SHA-256): */ -#define S32(b,x) (((x) >> (b)) | ((x) << (32 - (b)))) -/* 64-bit Rotate-right (used in SHA-384 and SHA-512): */ -#define S64(b,x) (((x) >> (b)) | ((x) << (64 - (b)))) - -/* Two of six logical functions used in SHA-256, SHA-384, and SHA-512: */ -#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) -#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) - -/* Four of six logical functions used in SHA-256: */ -#define Sigma0_256(x) (S32(2, (x)) ^ S32(13, (x)) ^ S32(22, (x))) -#define Sigma1_256(x) (S32(6, (x)) ^ S32(11, (x)) ^ S32(25, (x))) -#define sigma0_256(x) (S32(7, (x)) ^ S32(18, (x)) ^ R(3 , (x))) -#define sigma1_256(x) (S32(17, (x)) ^ S32(19, (x)) ^ R(10, (x))) - -/* Four of six logical functions used in SHA-384 and SHA-512: */ -#define Sigma0_512(x) (S64(28, (x)) ^ S64(34, (x)) ^ S64(39, (x))) -#define Sigma1_512(x) (S64(14, (x)) ^ S64(18, (x)) ^ S64(41, (x))) -#define sigma0_512(x) (S64( 1, (x)) ^ S64( 8, (x)) ^ R( 7, (x))) -#define sigma1_512(x) (S64(19, (x)) ^ S64(61, (x)) ^ R( 6, (x))) - -/*** INTERNAL FUNCTION PROTOTYPES *************************************/ -/* NOTE: These should not be accessed directly from outside this - * library -- they are intended for private internal visibility/use - * only. - */ -void SHA512_Last(SHA512_CTX*); -void SHA256_Transform(SHA256_CTX*, const sha2_word32*); -void SHA512_Transform(SHA512_CTX*, const sha2_word64*); - - -/*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/ -/* Hash constant words K for SHA-256: */ -const static sha2_word32 K256[64] = { - 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, - 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, - 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL, - 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL, - 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, - 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, - 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, - 0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL, - 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL, - 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, - 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, - 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, - 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL, - 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL, - 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, - 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL -}; - -/* Initial hash value H for SHA-256: */ -const static sha2_word32 sha256_initial_hash_value[8] = { - 0x6a09e667UL, - 0xbb67ae85UL, - 0x3c6ef372UL, - 0xa54ff53aUL, - 0x510e527fUL, - 0x9b05688cUL, - 0x1f83d9abUL, - 0x5be0cd19UL -}; - -/* Hash constant words K for SHA-384 and SHA-512: */ -const static sha2_word64 K512[80] = { - 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, - 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, - 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, - 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, - 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, - 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, - 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, - 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, - 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, - 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, - 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, - 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, - 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, - 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, - 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, - 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, - 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, - 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, - 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, - 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, - 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, - 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, - 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, - 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, - 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, - 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, - 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, - 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, - 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, - 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, - 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, - 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, - 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, - 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, - 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, - 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, - 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, - 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, - 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, - 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL -}; - -/* Initial hash value H for SHA-384 */ -const static sha2_word64 sha384_initial_hash_value[8] = { - 0xcbbb9d5dc1059ed8ULL, - 0x629a292a367cd507ULL, - 0x9159015a3070dd17ULL, - 0x152fecd8f70e5939ULL, - 0x67332667ffc00b31ULL, - 0x8eb44a8768581511ULL, - 0xdb0c2e0d64f98fa7ULL, - 0x47b5481dbefa4fa4ULL -}; - -/* Initial hash value H for SHA-512 */ -const static sha2_word64 sha512_initial_hash_value[8] = { - 0x6a09e667f3bcc908ULL, - 0xbb67ae8584caa73bULL, - 0x3c6ef372fe94f82bULL, - 0xa54ff53a5f1d36f1ULL, - 0x510e527fade682d1ULL, - 0x9b05688c2b3e6c1fULL, - 0x1f83d9abfb41bd6bULL, - 0x5be0cd19137e2179ULL -}; - -/* - * Constant used by SHA256/384/512_End() functions for converting the - * digest to a readable hexadecimal character string: - */ -static const char *sha2_hex_digits = "0123456789abcdef"; - - -/*** SHA-256: *********************************************************/ -void SHA256_Init(SHA256_CTX* context) { - if (context == (SHA256_CTX*)0) { - return; - } - MEMCPY_BCOPY(context->state, sha256_initial_hash_value, SHA256_DIGEST_LENGTH); - MEMSET_BZERO(context->buffer, SHA256_BLOCK_LENGTH); - context->bitcount = 0; -} - -#ifdef SHA2_UNROLL_TRANSFORM - -/* Unrolled SHA-256 round macros: */ - -#if BYTE_ORDER == LITTLE_ENDIAN - -#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ - REVERSE32(*data++, W256[j]); \ - T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \ - K256[j] + W256[j]; \ - (d) += T1; \ - (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ - j++ - - -#else /* BYTE_ORDER == LITTLE_ENDIAN */ - -#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ - T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \ - K256[j] + (W256[j] = *data++); \ - (d) += T1; \ - (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ - j++ - -#endif /* BYTE_ORDER == LITTLE_ENDIAN */ - -#define ROUND256(a,b,c,d,e,f,g,h) \ - s0 = W256[(j+1)&0x0f]; \ - s0 = sigma0_256(s0); \ - s1 = W256[(j+14)&0x0f]; \ - s1 = sigma1_256(s1); \ - T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + K256[j] + \ - (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); \ - (d) += T1; \ - (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ - j++ - -void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { - sha2_word32 a, b, c, d, e, f, g, h, s0, s1; - sha2_word32 T1, *W256; - int j; - - W256 = (sha2_word32*)context->buffer; - - /* Initialize registers with the prev. intermediate value */ - a = context->state[0]; - b = context->state[1]; - c = context->state[2]; - d = context->state[3]; - e = context->state[4]; - f = context->state[5]; - g = context->state[6]; - h = context->state[7]; - - j = 0; - do { - /* Rounds 0 to 15 (unrolled): */ - ROUND256_0_TO_15(a,b,c,d,e,f,g,h); - ROUND256_0_TO_15(h,a,b,c,d,e,f,g); - ROUND256_0_TO_15(g,h,a,b,c,d,e,f); - ROUND256_0_TO_15(f,g,h,a,b,c,d,e); - ROUND256_0_TO_15(e,f,g,h,a,b,c,d); - ROUND256_0_TO_15(d,e,f,g,h,a,b,c); - ROUND256_0_TO_15(c,d,e,f,g,h,a,b); - ROUND256_0_TO_15(b,c,d,e,f,g,h,a); - } while (j < 16); - - /* Now for the remaining rounds to 64: */ - do { - ROUND256(a,b,c,d,e,f,g,h); - ROUND256(h,a,b,c,d,e,f,g); - ROUND256(g,h,a,b,c,d,e,f); - ROUND256(f,g,h,a,b,c,d,e); - ROUND256(e,f,g,h,a,b,c,d); - ROUND256(d,e,f,g,h,a,b,c); - ROUND256(c,d,e,f,g,h,a,b); - ROUND256(b,c,d,e,f,g,h,a); - } while (j < 64); - - /* Compute the current intermediate hash value */ - context->state[0] += a; - context->state[1] += b; - context->state[2] += c; - context->state[3] += d; - context->state[4] += e; - context->state[5] += f; - context->state[6] += g; - context->state[7] += h; - - /* Clean up */ - a = b = c = d = e = f = g = h = T1 = 0; -} - -#else /* SHA2_UNROLL_TRANSFORM */ - -void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { - sha2_word32 a, b, c, d, e, f, g, h, s0, s1; - sha2_word32 T1, T2, *W256; - int j; - - W256 = (sha2_word32*)context->buffer; - - /* Initialize registers with the prev. intermediate value */ - a = context->state[0]; - b = context->state[1]; - c = context->state[2]; - d = context->state[3]; - e = context->state[4]; - f = context->state[5]; - g = context->state[6]; - h = context->state[7]; - - j = 0; - do { -#if BYTE_ORDER == LITTLE_ENDIAN - /* Copy data while converting to host byte order */ - REVERSE32(*data++,W256[j]); - /* Apply the SHA-256 compression function to update a..h */ - T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j]; -#else /* BYTE_ORDER == LITTLE_ENDIAN */ - /* Apply the SHA-256 compression function to update a..h with copy */ - T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + (W256[j] = *data++); -#endif /* BYTE_ORDER == LITTLE_ENDIAN */ - T2 = Sigma0_256(a) + Maj(a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - - j++; - } while (j < 16); - - do { - /* Part of the message block expansion: */ - s0 = W256[(j+1)&0x0f]; - s0 = sigma0_256(s0); - s1 = W256[(j+14)&0x0f]; - s1 = sigma1_256(s1); - - /* Apply the SHA-256 compression function to update a..h */ - T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + - (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); - T2 = Sigma0_256(a) + Maj(a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - - j++; - } while (j < 64); - - /* Compute the current intermediate hash value */ - context->state[0] += a; - context->state[1] += b; - context->state[2] += c; - context->state[3] += d; - context->state[4] += e; - context->state[5] += f; - context->state[6] += g; - context->state[7] += h; - - /* Clean up */ - a = b = c = d = e = f = g = h = T1 = T2 = 0; -} - -#endif /* SHA2_UNROLL_TRANSFORM */ - -void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) { - unsigned int freespace, usedspace; - - if (len == 0) { - /* Calling with no data is valid - we do nothing */ - return; - } - - /* Sanity check: */ - assert(context != (SHA256_CTX*)0 && data != (sha2_byte*)0); - - usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH; - if (usedspace > 0) { - /* Calculate how much free space is available in the buffer */ - freespace = SHA256_BLOCK_LENGTH - usedspace; - - if (len >= freespace) { - /* Fill the buffer completely and process it */ - MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace); - context->bitcount += freespace << 3; - len -= freespace; - data += freespace; - SHA256_Transform(context, (sha2_word32*)context->buffer); - } else { - /* The buffer is not yet full */ - MEMCPY_BCOPY(&context->buffer[usedspace], data, len); - context->bitcount += len << 3; - /* Clean up: */ - usedspace = freespace = 0; - return; - } - } - while (len >= SHA256_BLOCK_LENGTH) { - /* Process as many complete blocks as we can */ - SHA256_Transform(context, (sha2_word32*)data); - context->bitcount += SHA256_BLOCK_LENGTH << 3; - len -= SHA256_BLOCK_LENGTH; - data += SHA256_BLOCK_LENGTH; - } - if (len > 0) { - /* There's left-overs, so save 'em */ - MEMCPY_BCOPY(context->buffer, data, len); - context->bitcount += len << 3; - } - /* Clean up: */ - usedspace = freespace = 0; -} - -void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { - sha2_word32 *d = (sha2_word32*)digest; - unsigned int usedspace; - - /* Sanity check: */ - assert(context != (SHA256_CTX*)0); - - /* If no digest buffer is passed, we don't bother doing this: */ - if (digest != (sha2_byte*)0) { - usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH; -#if BYTE_ORDER == LITTLE_ENDIAN - /* Convert FROM host byte order */ - REVERSE64(context->bitcount,context->bitcount); -#endif - if (usedspace > 0) { - /* Begin padding with a 1 bit: */ - context->buffer[usedspace++] = 0x80; - - if (usedspace <= SHA256_SHORT_BLOCK_LENGTH) { - /* Set-up for the last transform: */ - MEMSET_BZERO(&context->buffer[usedspace], SHA256_SHORT_BLOCK_LENGTH - usedspace); - } else { - if (usedspace < SHA256_BLOCK_LENGTH) { - MEMSET_BZERO(&context->buffer[usedspace], SHA256_BLOCK_LENGTH - usedspace); - } - /* Do second-to-last transform: */ - SHA256_Transform(context, (sha2_word32*)context->buffer); - - /* And set-up for the last transform: */ - MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); - } - } else { - /* Set-up for the last transform: */ - MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); - - /* Begin padding with a 1 bit: */ - *context->buffer = 0x80; - } - /* Set the bit count: */ - *(sha2_word64*)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount; - - /* Final transform: */ - SHA256_Transform(context, (sha2_word32*)context->buffer); - -#if BYTE_ORDER == LITTLE_ENDIAN - { - /* Convert TO host byte order */ - int j; - for (j = 0; j < 8; j++) { - REVERSE32(context->state[j],context->state[j]); - *d++ = context->state[j]; - } - } -#else - MEMCPY_BCOPY(d, context->state, SHA256_DIGEST_LENGTH); -#endif - } - - /* Clean up state data: */ - MEMSET_BZERO(context, sizeof(context)); - usedspace = 0; -} - -char *SHA256_End(SHA256_CTX* context, char buffer[]) { - sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest; - int i; - - /* Sanity check: */ - assert(context != (SHA256_CTX*)0); - - if (buffer != (char*)0) { - SHA256_Final(digest, context); - - for (i = 0; i < SHA256_DIGEST_LENGTH; i++) { - *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; - *buffer++ = sha2_hex_digits[*d & 0x0f]; - d++; - } - *buffer = (char)0; - } else { - MEMSET_BZERO(context, sizeof(context)); - } - MEMSET_BZERO(digest, SHA256_DIGEST_LENGTH); - return buffer; -} - -char* SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) { - SHA256_CTX context; - - SHA256_Init(&context); - SHA256_Update(&context, data, len); - return SHA256_End(&context, digest); -} - - -/*** SHA-512: *********************************************************/ -void SHA512_Init(SHA512_CTX* context) { - if (context == (SHA512_CTX*)0) { - return; - } - MEMCPY_BCOPY(context->state, sha512_initial_hash_value, SHA512_DIGEST_LENGTH); - MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH); - context->bitcount[0] = context->bitcount[1] = 0; -} - -#ifdef SHA2_UNROLL_TRANSFORM - -/* Unrolled SHA-512 round macros: */ -#if BYTE_ORDER == LITTLE_ENDIAN - -#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \ - REVERSE64(*data++, W512[j]); \ - T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \ - K512[j] + W512[j]; \ - (d) += T1, \ - (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)), \ - j++ - - -#else /* BYTE_ORDER == LITTLE_ENDIAN */ - -#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \ - T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \ - K512[j] + (W512[j] = *data++); \ - (d) += T1; \ - (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ - j++ - -#endif /* BYTE_ORDER == LITTLE_ENDIAN */ - -#define ROUND512(a,b,c,d,e,f,g,h) \ - s0 = W512[(j+1)&0x0f]; \ - s0 = sigma0_512(s0); \ - s1 = W512[(j+14)&0x0f]; \ - s1 = sigma1_512(s1); \ - T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + K512[j] + \ - (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); \ - (d) += T1; \ - (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ - j++ - -void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { - sha2_word64 a, b, c, d, e, f, g, h, s0, s1; - sha2_word64 T1, *W512 = (sha2_word64*)context->buffer; - int j; - - /* Initialize registers with the prev. intermediate value */ - a = context->state[0]; - b = context->state[1]; - c = context->state[2]; - d = context->state[3]; - e = context->state[4]; - f = context->state[5]; - g = context->state[6]; - h = context->state[7]; - - j = 0; - do { - ROUND512_0_TO_15(a,b,c,d,e,f,g,h); - ROUND512_0_TO_15(h,a,b,c,d,e,f,g); - ROUND512_0_TO_15(g,h,a,b,c,d,e,f); - ROUND512_0_TO_15(f,g,h,a,b,c,d,e); - ROUND512_0_TO_15(e,f,g,h,a,b,c,d); - ROUND512_0_TO_15(d,e,f,g,h,a,b,c); - ROUND512_0_TO_15(c,d,e,f,g,h,a,b); - ROUND512_0_TO_15(b,c,d,e,f,g,h,a); - } while (j < 16); - - /* Now for the remaining rounds up to 79: */ - do { - ROUND512(a,b,c,d,e,f,g,h); - ROUND512(h,a,b,c,d,e,f,g); - ROUND512(g,h,a,b,c,d,e,f); - ROUND512(f,g,h,a,b,c,d,e); - ROUND512(e,f,g,h,a,b,c,d); - ROUND512(d,e,f,g,h,a,b,c); - ROUND512(c,d,e,f,g,h,a,b); - ROUND512(b,c,d,e,f,g,h,a); - } while (j < 80); - - /* Compute the current intermediate hash value */ - context->state[0] += a; - context->state[1] += b; - context->state[2] += c; - context->state[3] += d; - context->state[4] += e; - context->state[5] += f; - context->state[6] += g; - context->state[7] += h; - - /* Clean up */ - a = b = c = d = e = f = g = h = T1 = 0; -} - -#else /* SHA2_UNROLL_TRANSFORM */ - -void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { - sha2_word64 a, b, c, d, e, f, g, h, s0, s1; - sha2_word64 T1, T2, *W512 = (sha2_word64*)context->buffer; - int j; - - /* Initialize registers with the prev. intermediate value */ - a = context->state[0]; - b = context->state[1]; - c = context->state[2]; - d = context->state[3]; - e = context->state[4]; - f = context->state[5]; - g = context->state[6]; - h = context->state[7]; - - j = 0; - do { -#if BYTE_ORDER == LITTLE_ENDIAN - /* Convert TO host byte order */ - REVERSE64(*data++, W512[j]); - /* Apply the SHA-512 compression function to update a..h */ - T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + W512[j]; -#else /* BYTE_ORDER == LITTLE_ENDIAN */ - /* Apply the SHA-512 compression function to update a..h with copy */ - T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + (W512[j] = *data++); -#endif /* BYTE_ORDER == LITTLE_ENDIAN */ - T2 = Sigma0_512(a) + Maj(a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - - j++; - } while (j < 16); - - do { - /* Part of the message block expansion: */ - s0 = W512[(j+1)&0x0f]; - s0 = sigma0_512(s0); - s1 = W512[(j+14)&0x0f]; - s1 = sigma1_512(s1); - - /* Apply the SHA-512 compression function to update a..h */ - T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + - (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); - T2 = Sigma0_512(a) + Maj(a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - - j++; - } while (j < 80); - - /* Compute the current intermediate hash value */ - context->state[0] += a; - context->state[1] += b; - context->state[2] += c; - context->state[3] += d; - context->state[4] += e; - context->state[5] += f; - context->state[6] += g; - context->state[7] += h; - - /* Clean up */ - a = b = c = d = e = f = g = h = T1 = T2 = 0; -} - -#endif /* SHA2_UNROLL_TRANSFORM */ - -void SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) { - unsigned int freespace, usedspace; - - if (len == 0) { - /* Calling with no data is valid - we do nothing */ - return; - } - - /* Sanity check: */ - assert(context != (SHA512_CTX*)0 && data != (sha2_byte*)0); - - usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; - if (usedspace > 0) { - /* Calculate how much free space is available in the buffer */ - freespace = SHA512_BLOCK_LENGTH - usedspace; - - if (len >= freespace) { - /* Fill the buffer completely and process it */ - MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace); - ADDINC128(context->bitcount, freespace << 3); - len -= freespace; - data += freespace; - SHA512_Transform(context, (sha2_word64*)context->buffer); - } else { - /* The buffer is not yet full */ - MEMCPY_BCOPY(&context->buffer[usedspace], data, len); - ADDINC128(context->bitcount, len << 3); - /* Clean up: */ - usedspace = freespace = 0; - return; - } - } - while (len >= SHA512_BLOCK_LENGTH) { - /* Process as many complete blocks as we can */ - SHA512_Transform(context, (sha2_word64*)data); - ADDINC128(context->bitcount, SHA512_BLOCK_LENGTH << 3); - len -= SHA512_BLOCK_LENGTH; - data += SHA512_BLOCK_LENGTH; - } - if (len > 0) { - /* There's left-overs, so save 'em */ - MEMCPY_BCOPY(context->buffer, data, len); - ADDINC128(context->bitcount, len << 3); - } - /* Clean up: */ - usedspace = freespace = 0; -} - -void SHA512_Last(SHA512_CTX* context) { - unsigned int usedspace; - - usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; -#if BYTE_ORDER == LITTLE_ENDIAN - /* Convert FROM host byte order */ - REVERSE64(context->bitcount[0],context->bitcount[0]); - REVERSE64(context->bitcount[1],context->bitcount[1]); -#endif - if (usedspace > 0) { - /* Begin padding with a 1 bit: */ - context->buffer[usedspace++] = 0x80; - - if (usedspace <= SHA512_SHORT_BLOCK_LENGTH) { - /* Set-up for the last transform: */ - MEMSET_BZERO(&context->buffer[usedspace], SHA512_SHORT_BLOCK_LENGTH - usedspace); - } else { - if (usedspace < SHA512_BLOCK_LENGTH) { - MEMSET_BZERO(&context->buffer[usedspace], SHA512_BLOCK_LENGTH - usedspace); - } - /* Do second-to-last transform: */ - SHA512_Transform(context, (sha2_word64*)context->buffer); - - /* And set-up for the last transform: */ - MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH - 2); - } - } else { - /* Prepare for final transform: */ - MEMSET_BZERO(context->buffer, SHA512_SHORT_BLOCK_LENGTH); - - /* Begin padding with a 1 bit: */ - *context->buffer = 0x80; - } - /* Store the length of input data (in bits): */ - *(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH] = context->bitcount[1]; - *(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH+8] = context->bitcount[0]; - - /* Final transform: */ - SHA512_Transform(context, (sha2_word64*)context->buffer); -} - -void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { - sha2_word64 *d = (sha2_word64*)digest; - - /* Sanity check: */ - assert(context != (SHA512_CTX*)0); - - /* If no digest buffer is passed, we don't bother doing this: */ - if (digest != (sha2_byte*)0) { - SHA512_Last(context); - - /* Save the hash data for output: */ -#if BYTE_ORDER == LITTLE_ENDIAN - { - /* Convert TO host byte order */ - int j; - for (j = 0; j < 8; j++) { - REVERSE64(context->state[j],context->state[j]); - *d++ = context->state[j]; - } - } -#else - MEMCPY_BCOPY(d, context->state, SHA512_DIGEST_LENGTH); -#endif - } - - /* Zero out state data */ - MEMSET_BZERO(context, sizeof(context)); -} - -char *SHA512_End(SHA512_CTX* context, char buffer[]) { - sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest; - int i; - - /* Sanity check: */ - assert(context != (SHA512_CTX*)0); - - if (buffer != (char*)0) { - SHA512_Final(digest, context); - - for (i = 0; i < SHA512_DIGEST_LENGTH; i++) { - *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; - *buffer++ = sha2_hex_digits[*d & 0x0f]; - d++; - } - *buffer = (char)0; - } else { - MEMSET_BZERO(context, sizeof(context)); - } - MEMSET_BZERO(digest, SHA512_DIGEST_LENGTH); - return buffer; -} - -char* SHA512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) { - SHA512_CTX context; - - SHA512_Init(&context); - SHA512_Update(&context, data, len); - return SHA512_End(&context, digest); -} - - -/*** SHA-384: *********************************************************/ -void SHA384_Init(SHA384_CTX* context) { - if (context == (SHA384_CTX*)0) { - return; - } - MEMCPY_BCOPY(context->state, sha384_initial_hash_value, SHA512_DIGEST_LENGTH); - MEMSET_BZERO(context->buffer, SHA384_BLOCK_LENGTH); - context->bitcount[0] = context->bitcount[1] = 0; -} - -void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) { - SHA512_Update((SHA512_CTX*)context, data, len); -} - -void SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { - sha2_word64 *d = (sha2_word64*)digest; - - /* Sanity check: */ - assert(context != (SHA384_CTX*)0); - - /* If no digest buffer is passed, we don't bother doing this: */ - if (digest != (sha2_byte*)0) { - SHA512_Last((SHA512_CTX*)context); - - /* Save the hash data for output: */ -#if BYTE_ORDER == LITTLE_ENDIAN - { - /* Convert TO host byte order */ - int j; - for (j = 0; j < 6; j++) { - REVERSE64(context->state[j],context->state[j]); - *d++ = context->state[j]; - } - } -#else - MEMCPY_BCOPY(d, context->state, SHA384_DIGEST_LENGTH); -#endif - } - - /* Zero out state data */ - MEMSET_BZERO(context, sizeof(context)); -} - -char *SHA384_End(SHA384_CTX* context, char buffer[]) { - sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest; - int i; - - /* Sanity check: */ - assert(context != (SHA384_CTX*)0); - - if (buffer != (char*)0) { - SHA384_Final(digest, context); - - for (i = 0; i < SHA384_DIGEST_LENGTH; i++) { - *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; - *buffer++ = sha2_hex_digits[*d & 0x0f]; - d++; - } - *buffer = (char)0; - } else { - MEMSET_BZERO(context, sizeof(context)); - } - MEMSET_BZERO(digest, SHA384_DIGEST_LENGTH); - return buffer; -} - -char* SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_STRING_LENGTH]) { - SHA384_CTX context; - - SHA384_Init(&context); - SHA384_Update(&context, data, len); - return SHA384_End(&context, digest); -} +#include +#include + +SHA512Summation::SHA512Summation() /*{{{*/ +{ + SHA512_Init(&ctx); + Done = false; +} + /*}}}*/ +bool SHA512Summation::Add(const unsigned char *inbuf,unsigned long len) /*{{{*/ +{ + if (Done) + return false; + SHA512_Update(&ctx, inbuf, len); + return true; +} + /*}}}*/ +SHA512SumValue SHA512Summation::Result() /*{{{*/ +{ + if (!Done) { + SHA512_Final(Sum, &ctx); + Done = true; + } + + SHA512SumValue res; + res.Set(Sum); + return res; +} + /*}}}*/ +// SHA512SumValue::SHA512SumValue - Constructs the sum from a string /*{{{*/ +// --------------------------------------------------------------------- +/* The string form of a SHA512 is a 64 character hex number */ +SHA512SumValue::SHA512SumValue(string Str) +{ + memset(Sum,0,sizeof(Sum)); + Set(Str); +} + /*}}}*/ +// SHA512SumValue::SHA512SumValue - Default constructor /*{{{*/ +// --------------------------------------------------------------------- +/* Sets the value to 0 */ +SHA512SumValue::SHA512SumValue() +{ + memset(Sum,0,sizeof(Sum)); +} + /*}}}*/ +// SHA512SumValue::Set - Set the sum from a string /*{{{*/ +// --------------------------------------------------------------------- +/* Converts the hex string into a set of chars */ +bool SHA512SumValue::Set(string Str) +{ + return Hex2Num(Str,Sum,sizeof(Sum)); +} + /*}}}*/ +// SHA512SumValue::Value - Convert the number into a string /*{{{*/ +// --------------------------------------------------------------------- +/* Converts the set of chars into a hex string in lower case */ +string SHA512SumValue::Value() const +{ + char Conv[16] = + { '0','1','2','3','4','5','6','7','8','9','a','b', + 'c','d','e','f' + }; + char Result[129]; + Result[128] = 0; + + // Convert each char into two letters + int J = 0; + int I = 0; + for (; I != 128; J++,I += 2) + { + Result[I] = Conv[Sum[J] >> 4]; + Result[I + 1] = Conv[Sum[J] & 0xF]; + } + + return string(Result); +} + /*}}}*/ +// SHA512SumValue::operator == - Comparator /*{{{*/ +// --------------------------------------------------------------------- +/* Call memcmp on the buffer */ +bool SHA512SumValue::operator == (const SHA512SumValue & rhs) const +{ + return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; +} + /*}}}*/ +// SHA512Summation::AddFD - Add content of file into the checksum /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool SHA512Summation::AddFD(int Fd,unsigned long Size) +{ + unsigned char Buf[64 * 64]; + int Res = 0; + int ToEOF = (Size == 0); + while (Size != 0 || ToEOF) + { + unsigned n = sizeof(Buf); + if (!ToEOF) n = min(Size,(unsigned long)n); + Res = read(Fd,Buf,n); + if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read + return false; + if (ToEOF && Res == 0) // EOF + break; + Size -= Res; + Add(Buf,Res); + } + return true; +} + /*}}}*/ + +SHA256Summation::SHA256Summation() /*{{{*/ +{ + SHA256_Init(&ctx); + Done = false; +} + /*}}}*/ +bool SHA256Summation::Add(const unsigned char *inbuf,unsigned long len) /*{{{*/ +{ + if (Done) + return false; + SHA256_Update(&ctx, inbuf, len); + return true; +} + /*}}}*/ +SHA256SumValue SHA256Summation::Result() /*{{{*/ +{ + if (!Done) { + SHA256_Final(Sum, &ctx); + Done = true; + } + + SHA256SumValue res; + res.Set(Sum); + return res; +} + /*}}}*/ +// SHA256SumValue::SHA256SumValue - Constructs the sum from a string /*{{{*/ +// --------------------------------------------------------------------- +/* The string form of a SHA512 is a 64 character hex number */ +SHA256SumValue::SHA256SumValue(string Str) +{ + memset(Sum,0,sizeof(Sum)); + Set(Str); +} + /*}}}*/ +// SHA256SumValue::SHA256SumValue - Default constructor /*{{{*/ +// --------------------------------------------------------------------- +/* Sets the value to 0 */ +SHA256SumValue::SHA256SumValue() +{ + memset(Sum,0,sizeof(Sum)); +} + /*}}}*/ +// SHA256SumValue::Set - Set the sum from a string /*{{{*/ +// --------------------------------------------------------------------- +/* Converts the hex string into a set of chars */ +bool SHA256SumValue::Set(string Str) +{ + return Hex2Num(Str,Sum,sizeof(Sum)); +} + /*}}}*/ +// SHA256SumValue::Value - Convert the number into a string /*{{{*/ +// --------------------------------------------------------------------- +/* Converts the set of chars into a hex string in lower case */ +string SHA256SumValue::Value() const +{ + char Conv[16] = + { '0','1','2','3','4','5','6','7','8','9','a','b', + 'c','d','e','f' + }; + char Result[129]; + Result[128] = 0; + + // Convert each char into two letters + int J = 0; + int I = 0; + for (; I != 128; J++,I += 2) + { + Result[I] = Conv[Sum[J] >> 4]; + Result[I + 1] = Conv[Sum[J] & 0xF]; + } + + return string(Result); +} + /*}}}*/ +// SHA256SumValue::operator == - Comparator /*{{{*/ +// --------------------------------------------------------------------- +/* Call memcmp on the buffer */ +bool SHA256SumValue::operator == (const SHA256SumValue & rhs) const +{ + return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; +} + /*}}}*/ +// SHA256Summation::AddFD - Add content of file into the checksum /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool SHA256Summation::AddFD(int Fd,unsigned long Size) +{ + unsigned char Buf[64 * 64]; + int Res = 0; + int ToEOF = (Size == 0); + while (Size != 0 || ToEOF) + { + unsigned n = sizeof(Buf); + if (!ToEOF) n = min(Size,(unsigned long)n); + Res = read(Fd,Buf,n); + if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read + return false; + if (ToEOF && Res == 0) // EOF + break; + Size -= Res; + Add(Buf,Res); + } + return true; +} + /*}}}*/ diff --git a/apt-pkg/contrib/sha2.h b/apt-pkg/contrib/sha2.h index bf759ad45..5148b05c3 100644 --- a/apt-pkg/contrib/sha2.h +++ b/apt-pkg/contrib/sha2.h @@ -1,197 +1,111 @@ -/* - * FILE: sha2.h - * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/ - * - * Copyright (c) 2000-2001, Aaron D. Gifford - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the copyright holder nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $ - */ - -#ifndef __SHA2_H__ -#define __SHA2_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - * Import u_intXX_t size_t type definitions from system headers. You - * may need to change this, or define these things yourself in this - * file. - */ -#include - -#ifdef SHA2_USE_INTTYPES_H - -#include +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: sha512.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ +/* ###################################################################### + + SHA{512,256}SumValue - Storage for a SHA-{512,256} hash. + SHA{512,256}Summation - SHA-{512,256} Secure Hash Algorithm. + + This is a C++ interface to a set of SHA{512,256}Sum functions, that mirrors + the equivalent MD5 & SHA1 classes. + + ##################################################################### */ + /*}}}*/ +#ifndef APTPKG_SHA2_H +#define APTPKG_SHA2_H + +#include +#include +#include +#include + +#include "sha2_internal.h" + +using std::string; +using std::min; + +// SHA512 +class SHA512Summation; + +class SHA512SumValue +{ + friend class SHA512Summation; + unsigned char Sum[64]; + + public: + + // Accessors + bool operator ==(const SHA512SumValue &rhs) const; + string Value() const; + inline void Value(unsigned char S[64]) + {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; + inline operator string() const {return Value();}; + bool Set(string Str); + inline void Set(unsigned char S[64]) + {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; + + SHA512SumValue(string Str); + SHA512SumValue(); +}; + +class SHA512Summation +{ + SHA512_CTX ctx; + unsigned char Sum[64]; + bool Done; + + public: + + bool Add(const unsigned char *inbuf,unsigned long inlen); + inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; + bool AddFD(int Fd,unsigned long Size); + inline bool Add(const unsigned char *Beg,const unsigned char *End) + {return Add(Beg,End-Beg);}; + SHA512SumValue Result(); + + SHA512Summation(); +}; + +// SHA256 +class SHA256Summation; + +class SHA256SumValue +{ + friend class SHA256Summation; + unsigned char Sum[32]; + + public: + + // Accessors + bool operator ==(const SHA256SumValue &rhs) const; + string Value() const; + inline void Value(unsigned char S[32]) + {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; + inline operator string() const {return Value();}; + bool Set(string Str); + inline void Set(unsigned char S[32]) + {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; + + SHA256SumValue(string Str); + SHA256SumValue(); +}; + +class SHA256Summation +{ + SHA256_CTX ctx; + unsigned char Sum[32]; + bool Done; + + public: + + bool Add(const unsigned char *inbuf,unsigned long inlen); + inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; + bool AddFD(int Fd,unsigned long Size); + inline bool Add(const unsigned char *Beg,const unsigned char *End) + {return Add(Beg,End-Beg);}; + SHA256SumValue Result(); + + SHA256Summation(); +}; -#endif /* SHA2_USE_INTTYPES_H */ - - -/*** SHA-256/384/512 Various Length Definitions ***********************/ -#define SHA256_BLOCK_LENGTH 64 -#define SHA256_DIGEST_LENGTH 32 -#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) -#define SHA384_BLOCK_LENGTH 128 -#define SHA384_DIGEST_LENGTH 48 -#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1) -#define SHA512_BLOCK_LENGTH 128 -#define SHA512_DIGEST_LENGTH 64 -#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) - - -/*** SHA-256/384/512 Context Structures *******************************/ -/* NOTE: If your architecture does not define either u_intXX_t types or - * uintXX_t (from inttypes.h), you may need to define things by hand - * for your system: - */ -#if 0 -typedef unsigned char u_int8_t; /* 1-byte (8-bits) */ -typedef unsigned int u_int32_t; /* 4-bytes (32-bits) */ -typedef unsigned long long u_int64_t; /* 8-bytes (64-bits) */ #endif -/* - * Most BSD systems already define u_intXX_t types, as does Linux. - * Some systems, however, like Compaq's Tru64 Unix instead can use - * uintXX_t types defined by very recent ANSI C standards and included - * in the file: - * - * #include - * - * If you choose to use then please define: - * - * #define SHA2_USE_INTTYPES_H - * - * Or on the command line during compile: - * - * cc -DSHA2_USE_INTTYPES_H ... - */ -#ifdef SHA2_USE_INTTYPES_H - -typedef struct _SHA256_CTX { - uint32_t state[8]; - uint64_t bitcount; - uint8_t buffer[SHA256_BLOCK_LENGTH]; -} SHA256_CTX; -typedef struct _SHA512_CTX { - uint64_t state[8]; - uint64_t bitcount[2]; - uint8_t buffer[SHA512_BLOCK_LENGTH]; -} SHA512_CTX; - -#else /* SHA2_USE_INTTYPES_H */ - -typedef struct _SHA256_CTX { - u_int32_t state[8]; - u_int64_t bitcount; - u_int8_t buffer[SHA256_BLOCK_LENGTH]; -} SHA256_CTX; -typedef struct _SHA512_CTX { - u_int64_t state[8]; - u_int64_t bitcount[2]; - u_int8_t buffer[SHA512_BLOCK_LENGTH]; -} SHA512_CTX; - -#endif /* SHA2_USE_INTTYPES_H */ - -typedef SHA512_CTX SHA384_CTX; - - -/*** SHA-256/384/512 Function Prototypes ******************************/ -#ifndef NOPROTO -#ifdef SHA2_USE_INTTYPES_H - -void SHA256_Init(SHA256_CTX *); -void SHA256_Update(SHA256_CTX*, const uint8_t*, size_t); -void SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); -char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); -char* SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); - -void SHA384_Init(SHA384_CTX*); -void SHA384_Update(SHA384_CTX*, const uint8_t*, size_t); -void SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); -char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); -char* SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); - -void SHA512_Init(SHA512_CTX*); -void SHA512_Update(SHA512_CTX*, const uint8_t*, size_t); -void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); -char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); -char* SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); - -#else /* SHA2_USE_INTTYPES_H */ - -void SHA256_Init(SHA256_CTX *); -void SHA256_Update(SHA256_CTX*, const u_int8_t*, size_t); -void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); -char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); -char* SHA256_Data(const u_int8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); - -void SHA384_Init(SHA384_CTX*); -void SHA384_Update(SHA384_CTX*, const u_int8_t*, size_t); -void SHA384_Final(u_int8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); -char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); -char* SHA384_Data(const u_int8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); - -void SHA512_Init(SHA512_CTX*); -void SHA512_Update(SHA512_CTX*, const u_int8_t*, size_t); -void SHA512_Final(u_int8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); -char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); -char* SHA512_Data(const u_int8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); - -#endif /* SHA2_USE_INTTYPES_H */ - -#else /* NOPROTO */ - -void SHA256_Init(); -void SHA256_Update(); -void SHA256_Final(); -char* SHA256_End(); -char* SHA256_Data(); - -void SHA384_Init(); -void SHA384_Update(); -void SHA384_Final(); -char* SHA384_End(); -char* SHA384_Data(); - -void SHA512_Init(); -void SHA512_Update(); -void SHA512_Final(); -char* SHA512_End(); -char* SHA512_Data(); - -#endif /* NOPROTO */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __SHA2_H__ */ - diff --git a/apt-pkg/contrib/sha256.cc b/apt-pkg/contrib/sha256.cc deleted file mode 100644 index e380c13ae..000000000 --- a/apt-pkg/contrib/sha256.cc +++ /dev/null @@ -1,424 +0,0 @@ -/* - * Cryptographic API. {{{ - * - * SHA-256, as specified in - * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf - * - * SHA-256 code by Jean-Luc Cooke . - * - * Copyright (c) Jean-Luc Cooke - * Copyright (c) Andrew McDonald - * Copyright (c) 2002 James Morris - * - * Ported from the Linux kernel to Apt by Anthony Towns - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - */ /*}}}*/ - -#ifdef __GNUG__ -#pragma implementation "apt-pkg/sha256.h" -#endif - - -#define SHA256_DIGEST_SIZE 32 -#define SHA256_HMAC_BLOCK_SIZE 64 - -#define ror32(value,bits) (((value) >> (bits)) | ((value) << (32 - (bits)))) - -#include -#include -#include -#include -#include -#include -#include -#include - -typedef uint32_t u32; -typedef uint8_t u8; - -static inline u32 Ch(u32 x, u32 y, u32 z) -{ - return z ^ (x & (y ^ z)); -} - -static inline u32 Maj(u32 x, u32 y, u32 z) -{ - return (x & y) | (z & (x | y)); -} - -#define e0(x) (ror32(x, 2) ^ ror32(x,13) ^ ror32(x,22)) -#define e1(x) (ror32(x, 6) ^ ror32(x,11) ^ ror32(x,25)) -#define s0(x) (ror32(x, 7) ^ ror32(x,18) ^ (x >> 3)) -#define s1(x) (ror32(x,17) ^ ror32(x,19) ^ (x >> 10)) - -#define H0 0x6a09e667 -#define H1 0xbb67ae85 -#define H2 0x3c6ef372 -#define H3 0xa54ff53a -#define H4 0x510e527f -#define H5 0x9b05688c -#define H6 0x1f83d9ab -#define H7 0x5be0cd19 - -static inline void LOAD_OP(int I, u32 *W, const u8 *input) /*{{{*/ -{ - W[I] = ( ((u32) input[I * 4 + 0] << 24) - | ((u32) input[I * 4 + 1] << 16) - | ((u32) input[I * 4 + 2] << 8) - | ((u32) input[I * 4 + 3])); -} - /*}}}*/ -static inline void BLEND_OP(int I, u32 *W) -{ - W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16]; -} - -static void sha256_transform(u32 *state, const u8 *input) /*{{{*/ -{ - u32 a, b, c, d, e, f, g, h, t1, t2; - u32 W[64]; - int i; - - /* load the input */ - for (i = 0; i < 16; i++) - LOAD_OP(i, W, input); - - /* now blend */ - for (i = 16; i < 64; i++) - BLEND_OP(i, W); - - /* load the state into our registers */ - a=state[0]; b=state[1]; c=state[2]; d=state[3]; - e=state[4]; f=state[5]; g=state[6]; h=state[7]; - - /* now iterate */ - t1 = h + e1(e) + Ch(e,f,g) + 0x428a2f98 + W[ 0]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x71374491 + W[ 1]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0xb5c0fbcf + W[ 2]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0xe9b5dba5 + W[ 3]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x3956c25b + W[ 4]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x59f111f1 + W[ 5]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x923f82a4 + W[ 6]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0xab1c5ed5 + W[ 7]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0xd807aa98 + W[ 8]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x12835b01 + W[ 9]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x243185be + W[10]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x550c7dc3 + W[11]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x72be5d74 + W[12]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x80deb1fe + W[13]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x9bdc06a7 + W[14]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0xc19bf174 + W[15]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0xe49b69c1 + W[16]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0xefbe4786 + W[17]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x0fc19dc6 + W[18]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x240ca1cc + W[19]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x2de92c6f + W[20]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x4a7484aa + W[21]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x5cb0a9dc + W[22]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x76f988da + W[23]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0x983e5152 + W[24]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0xa831c66d + W[25]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0xb00327c8 + W[26]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0xbf597fc7 + W[27]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0xc6e00bf3 + W[28]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0xd5a79147 + W[29]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x06ca6351 + W[30]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x14292967 + W[31]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0x27b70a85 + W[32]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x2e1b2138 + W[33]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x4d2c6dfc + W[34]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x53380d13 + W[35]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x650a7354 + W[36]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x766a0abb + W[37]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x81c2c92e + W[38]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x92722c85 + W[39]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0xa2bfe8a1 + W[40]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0xa81a664b + W[41]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0xc24b8b70 + W[42]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0xc76c51a3 + W[43]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0xd192e819 + W[44]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0xd6990624 + W[45]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0xf40e3585 + W[46]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x106aa070 + W[47]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0x19a4c116 + W[48]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x1e376c08 + W[49]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x2748774c + W[50]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x34b0bcb5 + W[51]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x391c0cb3 + W[52]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x4ed8aa4a + W[53]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x5b9cca4f + W[54]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x682e6ff3 + W[55]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0x748f82ee + W[56]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x78a5636f + W[57]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x84c87814 + W[58]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x8cc70208 + W[59]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x90befffa + W[60]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0xa4506ceb + W[61]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0xbef9a3f7 + W[62]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0xc67178f2 + W[63]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - state[0] += a; state[1] += b; state[2] += c; state[3] += d; - state[4] += e; state[5] += f; state[6] += g; state[7] += h; - - /* clear any sensitive info... */ - a = b = c = d = e = f = g = h = t1 = t2 = 0; - memset(W, 0, 64 * sizeof(u32)); -} - /*}}}*/ -SHA256Summation::SHA256Summation() /*{{{*/ -{ - Sum.state[0] = H0; - Sum.state[1] = H1; - Sum.state[2] = H2; - Sum.state[3] = H3; - Sum.state[4] = H4; - Sum.state[5] = H5; - Sum.state[6] = H6; - Sum.state[7] = H7; - Sum.count[0] = Sum.count[1] = 0; - memset(Sum.buf, 0, sizeof(Sum.buf)); - Done = false; -} - /*}}}*/ -bool SHA256Summation::Add(const u8 *data, unsigned long len) /*{{{*/ -{ - struct sha256_ctx *sctx = ∑ - unsigned int i, index, part_len; - - if (Done) return false; - - /* Compute number of bytes mod 128 */ - index = (unsigned int)((sctx->count[0] >> 3) & 0x3f); - - /* Update number of bits */ - if ((sctx->count[0] += (len << 3)) < (len << 3)) { - sctx->count[1]++; - sctx->count[1] += (len >> 29); - } - - part_len = 64 - index; - - /* Transform as many times as possible. */ - if (len >= part_len) { - memcpy(&sctx->buf[index], data, part_len); - sha256_transform(sctx->state, sctx->buf); - - for (i = part_len; i + 63 < len; i += 64) - sha256_transform(sctx->state, &data[i]); - index = 0; - } else { - i = 0; - } - - /* Buffer remaining input */ - memcpy(&sctx->buf[index], &data[i], len-i); - - return true; -} - /*}}}*/ -SHA256SumValue SHA256Summation::Result() /*{{{*/ -{ - struct sha256_ctx *sctx = ∑ - if (!Done) { - u8 bits[8]; - unsigned int index, pad_len, t; - static const u8 padding[64] = { 0x80, }; - - /* Save number of bits */ - t = sctx->count[0]; - bits[7] = t; t >>= 8; - bits[6] = t; t >>= 8; - bits[5] = t; t >>= 8; - bits[4] = t; - t = sctx->count[1]; - bits[3] = t; t >>= 8; - bits[2] = t; t >>= 8; - bits[1] = t; t >>= 8; - bits[0] = t; - - /* Pad out to 56 mod 64. */ - index = (sctx->count[0] >> 3) & 0x3f; - pad_len = (index < 56) ? (56 - index) : ((64+56) - index); - Add(padding, pad_len); - - /* Append length (before padding) */ - Add(bits, 8); - } - - Done = true; - - /* Store state in digest */ - - SHA256SumValue res; - u8 *out = res.Sum; - - int i, j; - unsigned int t; - for (i = j = 0; i < 8; i++, j += 4) { - t = sctx->state[i]; - out[j+3] = t; t >>= 8; - out[j+2] = t; t >>= 8; - out[j+1] = t; t >>= 8; - out[j ] = t; - } - - return res; -} - /*}}}*/ -// SHA256SumValue::SHA256SumValue - Constructs the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a SHA256 is a 64 character hex number */ -SHA256SumValue::SHA256SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - /*}}}*/ -// SHA256SumValue::SHA256SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -SHA256SumValue::SHA256SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - /*}}}*/ -// SHA256SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool SHA256SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - /*}}}*/ -// SHA256SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string SHA256SumValue::Value() const -{ - char Conv[16] = - { '0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f' - }; - char Result[65]; - Result[64] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 64; J++,I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); -} - /*}}}*/ -// SHA256SumValue::operator == - Comparator /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool SHA256SumValue::operator == (const SHA256SumValue & rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ -// SHA256Summation::AddFD - Add content of file into the checksum /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool SHA256Summation::AddFD(int Fd,unsigned long Size) -{ - unsigned char Buf[64 * 64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ - diff --git a/apt-pkg/contrib/sha256.h b/apt-pkg/contrib/sha256.h index 5934b5641..fe2b30ac2 100644 --- a/apt-pkg/contrib/sha256.h +++ b/apt-pkg/contrib/sha256.h @@ -1,72 +1,8 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -// $Id: sha1.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ -/* ###################################################################### - - SHA256SumValue - Storage for a SHA-256 hash. - SHA256Summation - SHA-256 Secure Hash Algorithm. - - This is a C++ interface to a set of SHA256Sum functions, that mirrors - the equivalent MD5 & SHA1 classes. - - ##################################################################### */ - /*}}}*/ #ifndef APTPKG_SHA256_H #define APTPKG_SHA256_H -#include -#include -#include -#include - -using std::string; -using std::min; - -class SHA256Summation; - -class SHA256SumValue -{ - friend class SHA256Summation; - unsigned char Sum[32]; - - public: - - // Accessors - bool operator ==(const SHA256SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[32]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[32]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; - - SHA256SumValue(string Str); - SHA256SumValue(); -}; - -struct sha256_ctx { - uint32_t count[2]; - uint32_t state[8]; - uint8_t buf[128]; -}; - -class SHA256Summation -{ - struct sha256_ctx Sum; - - bool Done; - - public: +#include "sha2.h" - bool Add(const unsigned char *inbuf,unsigned long inlen); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; - SHA256SumValue Result(); - - SHA256Summation(); -}; +#warn "This header is deprecated, please include sha2.h instead" #endif diff --git a/apt-pkg/contrib/sha2_internal.cc b/apt-pkg/contrib/sha2_internal.cc new file mode 100644 index 000000000..10b82dec4 --- /dev/null +++ b/apt-pkg/contrib/sha2_internal.cc @@ -0,0 +1,1065 @@ +/* + * FILE: sha2.c + * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/ + * + * Copyright (c) 2000-2001, Aaron D. Gifford + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: sha2.c,v 1.1 2001/11/08 00:01:51 adg Exp adg $ + */ + +#include /* memcpy()/memset() or bcopy()/bzero() */ +#include /* assert() */ +#include "sha2_internal.h" + +/* + * ASSERT NOTE: + * Some sanity checking code is included using assert(). On my FreeBSD + * system, this additional code can be removed by compiling with NDEBUG + * defined. Check your own systems manpage on assert() to see how to + * compile WITHOUT the sanity checking code on your system. + * + * UNROLLED TRANSFORM LOOP NOTE: + * You can define SHA2_UNROLL_TRANSFORM to use the unrolled transform + * loop version for the hash transform rounds (defined using macros + * later in this file). Either define on the command line, for example: + * + * cc -DSHA2_UNROLL_TRANSFORM -o sha2 sha2.c sha2prog.c + * + * or define below: + * + * #define SHA2_UNROLL_TRANSFORM + * + */ + + +/*** SHA-256/384/512 Machine Architecture Definitions *****************/ +/* + * BYTE_ORDER NOTE: + * + * Please make sure that your system defines BYTE_ORDER. If your + * architecture is little-endian, make sure it also defines + * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are + * equivilent. + * + * If your system does not define the above, then you can do so by + * hand like this: + * + * #define LITTLE_ENDIAN 1234 + * #define BIG_ENDIAN 4321 + * + * And for little-endian machines, add: + * + * #define BYTE_ORDER LITTLE_ENDIAN + * + * Or for big-endian machines: + * + * #define BYTE_ORDER BIG_ENDIAN + * + * The FreeBSD machine this was written on defines BYTE_ORDER + * appropriately by including (which in turn includes + * where the appropriate definitions are actually + * made). + */ +#if !defined(BYTE_ORDER) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN) +#error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN +#endif + +/* + * Define the followingsha2_* types to types of the correct length on + * the native archtecture. Most BSD systems and Linux define u_intXX_t + * types. Machines with very recent ANSI C headers, can use the + * uintXX_t definintions from inttypes.h by defining SHA2_USE_INTTYPES_H + * during compile or in the sha.h header file. + * + * Machines that support neither u_intXX_t nor inttypes.h's uintXX_t + * will need to define these three typedefs below (and the appropriate + * ones in sha.h too) by hand according to their system architecture. + * + * Thank you, Jun-ichiro itojun Hagino, for suggesting using u_intXX_t + * types and pointing out recent ANSI C support for uintXX_t in inttypes.h. + */ +#ifdef SHA2_USE_INTTYPES_H + +typedef uint8_t sha2_byte; /* Exactly 1 byte */ +typedef uint32_t sha2_word32; /* Exactly 4 bytes */ +typedef uint64_t sha2_word64; /* Exactly 8 bytes */ + +#else /* SHA2_USE_INTTYPES_H */ + +typedef u_int8_t sha2_byte; /* Exactly 1 byte */ +typedef u_int32_t sha2_word32; /* Exactly 4 bytes */ +typedef u_int64_t sha2_word64; /* Exactly 8 bytes */ + +#endif /* SHA2_USE_INTTYPES_H */ + + +/*** SHA-256/384/512 Various Length Definitions ***********************/ +/* NOTE: Most of these are in sha2.h */ +#define SHA256_SHORT_BLOCK_LENGTH (SHA256_BLOCK_LENGTH - 8) +#define SHA384_SHORT_BLOCK_LENGTH (SHA384_BLOCK_LENGTH - 16) +#define SHA512_SHORT_BLOCK_LENGTH (SHA512_BLOCK_LENGTH - 16) + + +/*** ENDIAN REVERSAL MACROS *******************************************/ +#if BYTE_ORDER == LITTLE_ENDIAN +#define REVERSE32(w,x) { \ + sha2_word32 tmp = (w); \ + tmp = (tmp >> 16) | (tmp << 16); \ + (x) = ((tmp & 0xff00ff00UL) >> 8) | ((tmp & 0x00ff00ffUL) << 8); \ +} +#define REVERSE64(w,x) { \ + sha2_word64 tmp = (w); \ + tmp = (tmp >> 32) | (tmp << 32); \ + tmp = ((tmp & 0xff00ff00ff00ff00ULL) >> 8) | \ + ((tmp & 0x00ff00ff00ff00ffULL) << 8); \ + (x) = ((tmp & 0xffff0000ffff0000ULL) >> 16) | \ + ((tmp & 0x0000ffff0000ffffULL) << 16); \ +} +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +/* + * Macro for incrementally adding the unsigned 64-bit integer n to the + * unsigned 128-bit integer (represented using a two-element array of + * 64-bit words): + */ +#define ADDINC128(w,n) { \ + (w)[0] += (sha2_word64)(n); \ + if ((w)[0] < (n)) { \ + (w)[1]++; \ + } \ +} + +/* + * Macros for copying blocks of memory and for zeroing out ranges + * of memory. Using these macros makes it easy to switch from + * using memset()/memcpy() and using bzero()/bcopy(). + * + * Please define either SHA2_USE_MEMSET_MEMCPY or define + * SHA2_USE_BZERO_BCOPY depending on which function set you + * choose to use: + */ +#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) +/* Default to memset()/memcpy() if no option is specified */ +#define SHA2_USE_MEMSET_MEMCPY 1 +#endif +#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) +/* Abort with an error if BOTH options are defined */ +#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! +#endif + +#ifdef SHA2_USE_MEMSET_MEMCPY +#define MEMSET_BZERO(p,l) memset((p), 0, (l)) +#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) +#endif +#ifdef SHA2_USE_BZERO_BCOPY +#define MEMSET_BZERO(p,l) bzero((p), (l)) +#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) +#endif + + +/*** THE SIX LOGICAL FUNCTIONS ****************************************/ +/* + * Bit shifting and rotation (used by the six SHA-XYZ logical functions: + * + * NOTE: The naming of R and S appears backwards here (R is a SHIFT and + * S is a ROTATION) because the SHA-256/384/512 description document + * (see http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf) uses this + * same "backwards" definition. + */ +/* Shift-right (used in SHA-256, SHA-384, and SHA-512): */ +#define R(b,x) ((x) >> (b)) +/* 32-bit Rotate-right (used in SHA-256): */ +#define S32(b,x) (((x) >> (b)) | ((x) << (32 - (b)))) +/* 64-bit Rotate-right (used in SHA-384 and SHA-512): */ +#define S64(b,x) (((x) >> (b)) | ((x) << (64 - (b)))) + +/* Two of six logical functions used in SHA-256, SHA-384, and SHA-512: */ +#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) +#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) + +/* Four of six logical functions used in SHA-256: */ +#define Sigma0_256(x) (S32(2, (x)) ^ S32(13, (x)) ^ S32(22, (x))) +#define Sigma1_256(x) (S32(6, (x)) ^ S32(11, (x)) ^ S32(25, (x))) +#define sigma0_256(x) (S32(7, (x)) ^ S32(18, (x)) ^ R(3 , (x))) +#define sigma1_256(x) (S32(17, (x)) ^ S32(19, (x)) ^ R(10, (x))) + +/* Four of six logical functions used in SHA-384 and SHA-512: */ +#define Sigma0_512(x) (S64(28, (x)) ^ S64(34, (x)) ^ S64(39, (x))) +#define Sigma1_512(x) (S64(14, (x)) ^ S64(18, (x)) ^ S64(41, (x))) +#define sigma0_512(x) (S64( 1, (x)) ^ S64( 8, (x)) ^ R( 7, (x))) +#define sigma1_512(x) (S64(19, (x)) ^ S64(61, (x)) ^ R( 6, (x))) + +/*** INTERNAL FUNCTION PROTOTYPES *************************************/ +/* NOTE: These should not be accessed directly from outside this + * library -- they are intended for private internal visibility/use + * only. + */ +void SHA512_Last(SHA512_CTX*); +void SHA256_Transform(SHA256_CTX*, const sha2_word32*); +void SHA512_Transform(SHA512_CTX*, const sha2_word64*); + + +/*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/ +/* Hash constant words K for SHA-256: */ +const static sha2_word32 K256[64] = { + 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, + 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, + 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL, + 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL, + 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, + 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, + 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, + 0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL, + 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL, + 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, + 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, + 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, + 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL, + 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL, + 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, + 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL +}; + +/* Initial hash value H for SHA-256: */ +const static sha2_word32 sha256_initial_hash_value[8] = { + 0x6a09e667UL, + 0xbb67ae85UL, + 0x3c6ef372UL, + 0xa54ff53aUL, + 0x510e527fUL, + 0x9b05688cUL, + 0x1f83d9abUL, + 0x5be0cd19UL +}; + +/* Hash constant words K for SHA-384 and SHA-512: */ +const static sha2_word64 K512[80] = { + 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, + 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, + 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, + 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, + 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, + 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, + 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, + 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, + 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, + 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, + 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, + 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, + 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, + 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, + 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, + 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, + 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, + 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, + 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, + 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, + 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, + 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, + 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, + 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, + 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, + 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, + 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL +}; + +/* Initial hash value H for SHA-384 */ +const static sha2_word64 sha384_initial_hash_value[8] = { + 0xcbbb9d5dc1059ed8ULL, + 0x629a292a367cd507ULL, + 0x9159015a3070dd17ULL, + 0x152fecd8f70e5939ULL, + 0x67332667ffc00b31ULL, + 0x8eb44a8768581511ULL, + 0xdb0c2e0d64f98fa7ULL, + 0x47b5481dbefa4fa4ULL +}; + +/* Initial hash value H for SHA-512 */ +const static sha2_word64 sha512_initial_hash_value[8] = { + 0x6a09e667f3bcc908ULL, + 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, + 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, + 0x5be0cd19137e2179ULL +}; + +/* + * Constant used by SHA256/384/512_End() functions for converting the + * digest to a readable hexadecimal character string: + */ +static const char *sha2_hex_digits = "0123456789abcdef"; + + +/*** SHA-256: *********************************************************/ +void SHA256_Init(SHA256_CTX* context) { + if (context == (SHA256_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha256_initial_hash_value, SHA256_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA256_BLOCK_LENGTH); + context->bitcount = 0; +} + +#ifdef SHA2_UNROLL_TRANSFORM + +/* Unrolled SHA-256 round macros: */ + +#if BYTE_ORDER == LITTLE_ENDIAN + +#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ + REVERSE32(*data++, W256[j]); \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \ + K256[j] + W256[j]; \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + + +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \ + K256[j] + (W256[j] = *data++); \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND256(a,b,c,d,e,f,g,h) \ + s0 = W256[(j+1)&0x0f]; \ + s0 = sigma0_256(s0); \ + s1 = W256[(j+14)&0x0f]; \ + s1 = sigma1_256(s1); \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + K256[j] + \ + (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + +void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { + sha2_word32 a, b, c, d, e, f, g, h, s0, s1; + sha2_word32 T1, *W256; + int j; + + W256 = (sha2_word32*)context->buffer; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { + /* Rounds 0 to 15 (unrolled): */ + ROUND256_0_TO_15(a,b,c,d,e,f,g,h); + ROUND256_0_TO_15(h,a,b,c,d,e,f,g); + ROUND256_0_TO_15(g,h,a,b,c,d,e,f); + ROUND256_0_TO_15(f,g,h,a,b,c,d,e); + ROUND256_0_TO_15(e,f,g,h,a,b,c,d); + ROUND256_0_TO_15(d,e,f,g,h,a,b,c); + ROUND256_0_TO_15(c,d,e,f,g,h,a,b); + ROUND256_0_TO_15(b,c,d,e,f,g,h,a); + } while (j < 16); + + /* Now for the remaining rounds to 64: */ + do { + ROUND256(a,b,c,d,e,f,g,h); + ROUND256(h,a,b,c,d,e,f,g); + ROUND256(g,h,a,b,c,d,e,f); + ROUND256(f,g,h,a,b,c,d,e); + ROUND256(e,f,g,h,a,b,c,d); + ROUND256(d,e,f,g,h,a,b,c); + ROUND256(c,d,e,f,g,h,a,b); + ROUND256(b,c,d,e,f,g,h,a); + } while (j < 64); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = 0; +} + +#else /* SHA2_UNROLL_TRANSFORM */ + +void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { + sha2_word32 a, b, c, d, e, f, g, h, s0, s1; + sha2_word32 T1, T2, *W256; + int j; + + W256 = (sha2_word32*)context->buffer; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { +#if BYTE_ORDER == LITTLE_ENDIAN + /* Copy data while converting to host byte order */ + REVERSE32(*data++,W256[j]); + /* Apply the SHA-256 compression function to update a..h */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j]; +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + /* Apply the SHA-256 compression function to update a..h with copy */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + (W256[j] = *data++); +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + T2 = Sigma0_256(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 16); + + do { + /* Part of the message block expansion: */ + s0 = W256[(j+1)&0x0f]; + s0 = sigma0_256(s0); + s1 = W256[(j+14)&0x0f]; + s1 = sigma1_256(s1); + + /* Apply the SHA-256 compression function to update a..h */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + + (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); + T2 = Sigma0_256(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 64); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = T2 = 0; +} + +#endif /* SHA2_UNROLL_TRANSFORM */ + +void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) { + unsigned int freespace, usedspace; + + if (len == 0) { + /* Calling with no data is valid - we do nothing */ + return; + } + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0 && data != (sha2_byte*)0); + + usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH; + if (usedspace > 0) { + /* Calculate how much free space is available in the buffer */ + freespace = SHA256_BLOCK_LENGTH - usedspace; + + if (len >= freespace) { + /* Fill the buffer completely and process it */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace); + context->bitcount += freespace << 3; + len -= freespace; + data += freespace; + SHA256_Transform(context, (sha2_word32*)context->buffer); + } else { + /* The buffer is not yet full */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, len); + context->bitcount += len << 3; + /* Clean up: */ + usedspace = freespace = 0; + return; + } + } + while (len >= SHA256_BLOCK_LENGTH) { + /* Process as many complete blocks as we can */ + SHA256_Transform(context, (sha2_word32*)data); + context->bitcount += SHA256_BLOCK_LENGTH << 3; + len -= SHA256_BLOCK_LENGTH; + data += SHA256_BLOCK_LENGTH; + } + if (len > 0) { + /* There's left-overs, so save 'em */ + MEMCPY_BCOPY(context->buffer, data, len); + context->bitcount += len << 3; + } + /* Clean up: */ + usedspace = freespace = 0; +} + +void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { + sha2_word32 *d = (sha2_word32*)digest; + unsigned int usedspace; + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH; +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert FROM host byte order */ + REVERSE64(context->bitcount,context->bitcount); +#endif + if (usedspace > 0) { + /* Begin padding with a 1 bit: */ + context->buffer[usedspace++] = 0x80; + + if (usedspace <= SHA256_SHORT_BLOCK_LENGTH) { + /* Set-up for the last transform: */ + MEMSET_BZERO(&context->buffer[usedspace], SHA256_SHORT_BLOCK_LENGTH - usedspace); + } else { + if (usedspace < SHA256_BLOCK_LENGTH) { + MEMSET_BZERO(&context->buffer[usedspace], SHA256_BLOCK_LENGTH - usedspace); + } + /* Do second-to-last transform: */ + SHA256_Transform(context, (sha2_word32*)context->buffer); + + /* And set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); + } + } else { + /* Set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); + + /* Begin padding with a 1 bit: */ + *context->buffer = 0x80; + } + /* Set the bit count: */ + *(sha2_word64*)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount; + + /* Final transform: */ + SHA256_Transform(context, (sha2_word32*)context->buffer); + +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 8; j++) { + REVERSE32(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA256_DIGEST_LENGTH); +#endif + } + + /* Clean up state data: */ + MEMSET_BZERO(context, sizeof(context)); + usedspace = 0; +} + +char *SHA256_End(SHA256_CTX* context, char buffer[]) { + sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0); + + if (buffer != (char*)0) { + SHA256_Final(digest, context); + + for (i = 0; i < SHA256_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA256_DIGEST_LENGTH); + return buffer; +} + +char* SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) { + SHA256_CTX context; + + SHA256_Init(&context); + SHA256_Update(&context, data, len); + return SHA256_End(&context, digest); +} + + +/*** SHA-512: *********************************************************/ +void SHA512_Init(SHA512_CTX* context) { + if (context == (SHA512_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha512_initial_hash_value, SHA512_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH); + context->bitcount[0] = context->bitcount[1] = 0; +} + +#ifdef SHA2_UNROLL_TRANSFORM + +/* Unrolled SHA-512 round macros: */ +#if BYTE_ORDER == LITTLE_ENDIAN + +#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \ + REVERSE64(*data++, W512[j]); \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \ + K512[j] + W512[j]; \ + (d) += T1, \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)), \ + j++ + + +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \ + K512[j] + (W512[j] = *data++); \ + (d) += T1; \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ + j++ + +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND512(a,b,c,d,e,f,g,h) \ + s0 = W512[(j+1)&0x0f]; \ + s0 = sigma0_512(s0); \ + s1 = W512[(j+14)&0x0f]; \ + s1 = sigma1_512(s1); \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + K512[j] + \ + (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); \ + (d) += T1; \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ + j++ + +void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { + sha2_word64 a, b, c, d, e, f, g, h, s0, s1; + sha2_word64 T1, *W512 = (sha2_word64*)context->buffer; + int j; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { + ROUND512_0_TO_15(a,b,c,d,e,f,g,h); + ROUND512_0_TO_15(h,a,b,c,d,e,f,g); + ROUND512_0_TO_15(g,h,a,b,c,d,e,f); + ROUND512_0_TO_15(f,g,h,a,b,c,d,e); + ROUND512_0_TO_15(e,f,g,h,a,b,c,d); + ROUND512_0_TO_15(d,e,f,g,h,a,b,c); + ROUND512_0_TO_15(c,d,e,f,g,h,a,b); + ROUND512_0_TO_15(b,c,d,e,f,g,h,a); + } while (j < 16); + + /* Now for the remaining rounds up to 79: */ + do { + ROUND512(a,b,c,d,e,f,g,h); + ROUND512(h,a,b,c,d,e,f,g); + ROUND512(g,h,a,b,c,d,e,f); + ROUND512(f,g,h,a,b,c,d,e); + ROUND512(e,f,g,h,a,b,c,d); + ROUND512(d,e,f,g,h,a,b,c); + ROUND512(c,d,e,f,g,h,a,b); + ROUND512(b,c,d,e,f,g,h,a); + } while (j < 80); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = 0; +} + +#else /* SHA2_UNROLL_TRANSFORM */ + +void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { + sha2_word64 a, b, c, d, e, f, g, h, s0, s1; + sha2_word64 T1, T2, *W512 = (sha2_word64*)context->buffer; + int j; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert TO host byte order */ + REVERSE64(*data++, W512[j]); + /* Apply the SHA-512 compression function to update a..h */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + W512[j]; +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + /* Apply the SHA-512 compression function to update a..h with copy */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + (W512[j] = *data++); +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + T2 = Sigma0_512(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 16); + + do { + /* Part of the message block expansion: */ + s0 = W512[(j+1)&0x0f]; + s0 = sigma0_512(s0); + s1 = W512[(j+14)&0x0f]; + s1 = sigma1_512(s1); + + /* Apply the SHA-512 compression function to update a..h */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + + (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); + T2 = Sigma0_512(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 80); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = T2 = 0; +} + +#endif /* SHA2_UNROLL_TRANSFORM */ + +void SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) { + unsigned int freespace, usedspace; + + if (len == 0) { + /* Calling with no data is valid - we do nothing */ + return; + } + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0 && data != (sha2_byte*)0); + + usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; + if (usedspace > 0) { + /* Calculate how much free space is available in the buffer */ + freespace = SHA512_BLOCK_LENGTH - usedspace; + + if (len >= freespace) { + /* Fill the buffer completely and process it */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace); + ADDINC128(context->bitcount, freespace << 3); + len -= freespace; + data += freespace; + SHA512_Transform(context, (sha2_word64*)context->buffer); + } else { + /* The buffer is not yet full */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, len); + ADDINC128(context->bitcount, len << 3); + /* Clean up: */ + usedspace = freespace = 0; + return; + } + } + while (len >= SHA512_BLOCK_LENGTH) { + /* Process as many complete blocks as we can */ + SHA512_Transform(context, (sha2_word64*)data); + ADDINC128(context->bitcount, SHA512_BLOCK_LENGTH << 3); + len -= SHA512_BLOCK_LENGTH; + data += SHA512_BLOCK_LENGTH; + } + if (len > 0) { + /* There's left-overs, so save 'em */ + MEMCPY_BCOPY(context->buffer, data, len); + ADDINC128(context->bitcount, len << 3); + } + /* Clean up: */ + usedspace = freespace = 0; +} + +void SHA512_Last(SHA512_CTX* context) { + unsigned int usedspace; + + usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert FROM host byte order */ + REVERSE64(context->bitcount[0],context->bitcount[0]); + REVERSE64(context->bitcount[1],context->bitcount[1]); +#endif + if (usedspace > 0) { + /* Begin padding with a 1 bit: */ + context->buffer[usedspace++] = 0x80; + + if (usedspace <= SHA512_SHORT_BLOCK_LENGTH) { + /* Set-up for the last transform: */ + MEMSET_BZERO(&context->buffer[usedspace], SHA512_SHORT_BLOCK_LENGTH - usedspace); + } else { + if (usedspace < SHA512_BLOCK_LENGTH) { + MEMSET_BZERO(&context->buffer[usedspace], SHA512_BLOCK_LENGTH - usedspace); + } + /* Do second-to-last transform: */ + SHA512_Transform(context, (sha2_word64*)context->buffer); + + /* And set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH - 2); + } + } else { + /* Prepare for final transform: */ + MEMSET_BZERO(context->buffer, SHA512_SHORT_BLOCK_LENGTH); + + /* Begin padding with a 1 bit: */ + *context->buffer = 0x80; + } + /* Store the length of input data (in bits): */ + *(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH] = context->bitcount[1]; + *(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH+8] = context->bitcount[0]; + + /* Final transform: */ + SHA512_Transform(context, (sha2_word64*)context->buffer); +} + +void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { + sha2_word64 *d = (sha2_word64*)digest; + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + SHA512_Last(context); + + /* Save the hash data for output: */ +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 8; j++) { + REVERSE64(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA512_DIGEST_LENGTH); +#endif + } + + /* Zero out state data */ + MEMSET_BZERO(context, sizeof(context)); +} + +char *SHA512_End(SHA512_CTX* context, char buffer[]) { + sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0); + + if (buffer != (char*)0) { + SHA512_Final(digest, context); + + for (i = 0; i < SHA512_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA512_DIGEST_LENGTH); + return buffer; +} + +char* SHA512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) { + SHA512_CTX context; + + SHA512_Init(&context); + SHA512_Update(&context, data, len); + return SHA512_End(&context, digest); +} + + +/*** SHA-384: *********************************************************/ +void SHA384_Init(SHA384_CTX* context) { + if (context == (SHA384_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha384_initial_hash_value, SHA512_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA384_BLOCK_LENGTH); + context->bitcount[0] = context->bitcount[1] = 0; +} + +void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) { + SHA512_Update((SHA512_CTX*)context, data, len); +} + +void SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { + sha2_word64 *d = (sha2_word64*)digest; + + /* Sanity check: */ + assert(context != (SHA384_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + SHA512_Last((SHA512_CTX*)context); + + /* Save the hash data for output: */ +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 6; j++) { + REVERSE64(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA384_DIGEST_LENGTH); +#endif + } + + /* Zero out state data */ + MEMSET_BZERO(context, sizeof(context)); +} + +char *SHA384_End(SHA384_CTX* context, char buffer[]) { + sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA384_CTX*)0); + + if (buffer != (char*)0) { + SHA384_Final(digest, context); + + for (i = 0; i < SHA384_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA384_DIGEST_LENGTH); + return buffer; +} + +char* SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_STRING_LENGTH]) { + SHA384_CTX context; + + SHA384_Init(&context); + SHA384_Update(&context, data, len); + return SHA384_End(&context, digest); +} + diff --git a/apt-pkg/contrib/sha2_internal.h b/apt-pkg/contrib/sha2_internal.h new file mode 100644 index 000000000..bf759ad45 --- /dev/null +++ b/apt-pkg/contrib/sha2_internal.h @@ -0,0 +1,197 @@ +/* + * FILE: sha2.h + * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/ + * + * Copyright (c) 2000-2001, Aaron D. Gifford + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $ + */ + +#ifndef __SHA2_H__ +#define __SHA2_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + * Import u_intXX_t size_t type definitions from system headers. You + * may need to change this, or define these things yourself in this + * file. + */ +#include + +#ifdef SHA2_USE_INTTYPES_H + +#include + +#endif /* SHA2_USE_INTTYPES_H */ + + +/*** SHA-256/384/512 Various Length Definitions ***********************/ +#define SHA256_BLOCK_LENGTH 64 +#define SHA256_DIGEST_LENGTH 32 +#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) +#define SHA384_BLOCK_LENGTH 128 +#define SHA384_DIGEST_LENGTH 48 +#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1) +#define SHA512_BLOCK_LENGTH 128 +#define SHA512_DIGEST_LENGTH 64 +#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) + + +/*** SHA-256/384/512 Context Structures *******************************/ +/* NOTE: If your architecture does not define either u_intXX_t types or + * uintXX_t (from inttypes.h), you may need to define things by hand + * for your system: + */ +#if 0 +typedef unsigned char u_int8_t; /* 1-byte (8-bits) */ +typedef unsigned int u_int32_t; /* 4-bytes (32-bits) */ +typedef unsigned long long u_int64_t; /* 8-bytes (64-bits) */ +#endif +/* + * Most BSD systems already define u_intXX_t types, as does Linux. + * Some systems, however, like Compaq's Tru64 Unix instead can use + * uintXX_t types defined by very recent ANSI C standards and included + * in the file: + * + * #include + * + * If you choose to use then please define: + * + * #define SHA2_USE_INTTYPES_H + * + * Or on the command line during compile: + * + * cc -DSHA2_USE_INTTYPES_H ... + */ +#ifdef SHA2_USE_INTTYPES_H + +typedef struct _SHA256_CTX { + uint32_t state[8]; + uint64_t bitcount; + uint8_t buffer[SHA256_BLOCK_LENGTH]; +} SHA256_CTX; +typedef struct _SHA512_CTX { + uint64_t state[8]; + uint64_t bitcount[2]; + uint8_t buffer[SHA512_BLOCK_LENGTH]; +} SHA512_CTX; + +#else /* SHA2_USE_INTTYPES_H */ + +typedef struct _SHA256_CTX { + u_int32_t state[8]; + u_int64_t bitcount; + u_int8_t buffer[SHA256_BLOCK_LENGTH]; +} SHA256_CTX; +typedef struct _SHA512_CTX { + u_int64_t state[8]; + u_int64_t bitcount[2]; + u_int8_t buffer[SHA512_BLOCK_LENGTH]; +} SHA512_CTX; + +#endif /* SHA2_USE_INTTYPES_H */ + +typedef SHA512_CTX SHA384_CTX; + + +/*** SHA-256/384/512 Function Prototypes ******************************/ +#ifndef NOPROTO +#ifdef SHA2_USE_INTTYPES_H + +void SHA256_Init(SHA256_CTX *); +void SHA256_Update(SHA256_CTX*, const uint8_t*, size_t); +void SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); +char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); +char* SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); + +void SHA384_Init(SHA384_CTX*); +void SHA384_Update(SHA384_CTX*, const uint8_t*, size_t); +void SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); +char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); +char* SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); + +void SHA512_Init(SHA512_CTX*); +void SHA512_Update(SHA512_CTX*, const uint8_t*, size_t); +void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); +char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); +char* SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); + +#else /* SHA2_USE_INTTYPES_H */ + +void SHA256_Init(SHA256_CTX *); +void SHA256_Update(SHA256_CTX*, const u_int8_t*, size_t); +void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); +char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); +char* SHA256_Data(const u_int8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); + +void SHA384_Init(SHA384_CTX*); +void SHA384_Update(SHA384_CTX*, const u_int8_t*, size_t); +void SHA384_Final(u_int8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); +char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); +char* SHA384_Data(const u_int8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); + +void SHA512_Init(SHA512_CTX*); +void SHA512_Update(SHA512_CTX*, const u_int8_t*, size_t); +void SHA512_Final(u_int8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); +char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); +char* SHA512_Data(const u_int8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); + +#endif /* SHA2_USE_INTTYPES_H */ + +#else /* NOPROTO */ + +void SHA256_Init(); +void SHA256_Update(); +void SHA256_Final(); +char* SHA256_End(); +char* SHA256_Data(); + +void SHA384_Init(); +void SHA384_Update(); +void SHA384_Final(); +char* SHA384_End(); +char* SHA384_Data(); + +void SHA512_Init(); +void SHA512_Update(); +void SHA512_Final(); +char* SHA512_End(); +char* SHA512_Data(); + +#endif /* NOPROTO */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __SHA2_H__ */ + diff --git a/apt-pkg/contrib/sha512.cc b/apt-pkg/contrib/sha512.cc deleted file mode 100644 index 752e039a7..000000000 --- a/apt-pkg/contrib/sha512.cc +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Cryptographic API. {{{ - * - * SHA-512, as specified in - * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - */ /*}}}*/ - -#ifdef __GNUG__ -#pragma implementation "apt-pkg/sha512.h" -#endif - -#include -#include -#include - -SHA512Summation::SHA512Summation() /*{{{*/ -{ - SHA512_Init(&ctx); - Done = false; -} - /*}}}*/ -bool SHA512Summation::Add(const unsigned char *inbuf,unsigned long len) /*{{{*/ -{ - if (Done) - return false; - SHA512_Update(&ctx, inbuf, len); - return true; -} - /*}}}*/ -SHA512SumValue SHA512Summation::Result() /*{{{*/ -{ - if (!Done) { - SHA512_Final(Sum, &ctx); - Done = true; - } - - SHA512SumValue res; - res.Set(Sum); - return res; -} - /*}}}*/ -// SHA512SumValue::SHA512SumValue - Constructs the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a SHA512 is a 64 character hex number */ -SHA512SumValue::SHA512SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - /*}}}*/ -// SHA512SumValue::SHA512SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -SHA512SumValue::SHA512SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - /*}}}*/ -// SHA512SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool SHA512SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - /*}}}*/ -// SHA512SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string SHA512SumValue::Value() const -{ - char Conv[16] = - { '0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f' - }; - char Result[129]; - Result[128] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 128; J++,I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); -} - /*}}}*/ -// SHA512SumValue::operator == - Comparator /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool SHA512SumValue::operator == (const SHA512SumValue & rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ -// SHA512Summation::AddFD - Add content of file into the checksum /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool SHA512Summation::AddFD(int Fd,unsigned long Size) -{ - unsigned char Buf[64 * 64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ - diff --git a/apt-pkg/contrib/sha512.h b/apt-pkg/contrib/sha512.h deleted file mode 100644 index 960ff1f46..000000000 --- a/apt-pkg/contrib/sha512.h +++ /dev/null @@ -1,68 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -// $Id: sha512.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ -/* ###################################################################### - - SHA512SumValue - Storage for a SHA-512 hash. - SHA512Summation - SHA-512 Secure Hash Algorithm. - - This is a C++ interface to a set of SHA512Sum functions, that mirrors - the equivalent MD5 & SHA1 classes. - - ##################################################################### */ - /*}}}*/ -#ifndef APTPKG_SHA512_H -#define APTPKG_SHA512_H - -#include -#include -#include -#include - -#include "sha2.h" - -using std::string; -using std::min; - -class SHA512Summation; - -class SHA512SumValue -{ - friend class SHA512Summation; - unsigned char Sum[64]; - - public: - - // Accessors - bool operator ==(const SHA512SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[64]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[64]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; - - SHA512SumValue(string Str); - SHA512SumValue(); -}; - -class SHA512Summation -{ - SHA512_CTX ctx; - unsigned char Sum[64]; - bool Done; - - public: - - bool Add(const unsigned char *inbuf,unsigned long inlen); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; - SHA512SumValue Result(); - - SHA512Summation(); -}; - -#endif diff --git a/apt-pkg/makefile b/apt-pkg/makefile index c7074943c..313aefe7d 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -20,14 +20,14 @@ APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR) # Source code for the contributed non-core things SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \ contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \ - contrib/md5.cc contrib/sha1.cc contrib/sha256.cc contrib/sha2.cc \ - contrib/sha512.cc \ + contrib/md5.cc contrib/sha1.cc contrib/sha2.cc \ + contrib/sha2_internal.cc\ contrib/hashes.cc \ contrib/cdromutl.cc contrib/crc-16.cc contrib/netrc.cc \ contrib/fileutl.cc HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h netrc.h\ - md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h sha2.h \ - sha512.h\ + md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha2.h \ + sha2_internal.h \ hashes.h \ macros.h weakptr.h diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc index 699718e57..7e4c2e9fe 100644 --- a/ftparchive/cachedb.cc +++ b/ftparchive/cachedb.cc @@ -16,8 +16,7 @@ #include #include #include -#include -#include +#include #include #include diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index e7eff2045..98ab852ea 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -19,8 +19,7 @@ #include #include #include -#include -#include +#include #include #include diff --git a/test/hash.cc b/test/hash.cc index 259aa4e9a..88f09fca0 100644 --- a/test/hash.cc +++ b/test/hash.cc @@ -1,7 +1,6 @@ #include #include -#include -#include +#include #include #include -- cgit v1.2.3-70-g09d2 From 7ac56f8ffd5544c6c1f681f79cafbf72d37d0b82 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 25 Feb 2011 18:59:29 +0100 Subject: template based hashsum implementation --- apt-pkg/contrib/hashsum_template.h | 87 ++++++++++++++++++++++++ apt-pkg/contrib/md5.cc | 57 +--------------- apt-pkg/contrib/md5.h | 23 +------ apt-pkg/contrib/sha1.cc | 65 +----------------- apt-pkg/contrib/sha1.h | 23 +------ apt-pkg/contrib/sha2.cc | 132 ++++--------------------------------- apt-pkg/contrib/sha2.h | 70 +++++--------------- apt-pkg/makefile | 2 +- 8 files changed, 124 insertions(+), 335 deletions(-) create mode 100644 apt-pkg/contrib/hashsum_template.h diff --git a/apt-pkg/contrib/hashsum_template.h b/apt-pkg/contrib/hashsum_template.h new file mode 100644 index 000000000..7667baf92 --- /dev/null +++ b/apt-pkg/contrib/hashsum_template.h @@ -0,0 +1,87 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: hashsum_template.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ +/* ###################################################################### + + HashSumValueTemplate - Generic Storage for a hash value + + ##################################################################### */ + /*}}}*/ +#ifndef APTPKG_HASHSUM_TEMPLATE_H +#define APTPKG_HASHSUM_TEMPLATE_H + +#include +#include +#include +#include + +using std::string; +using std::min; + +template +class HashSumValue +{ + unsigned char Sum[N/8]; + + public: + + // Accessors + bool operator ==(const HashSumValue &rhs) const + { + return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; + }; + + string Value() const + { + char Conv[16] = + { '0','1','2','3','4','5','6','7','8','9','a','b', + 'c','d','e','f' + }; + char Result[((N/8)*2)+1]; + Result[(N/8)*2] = 0; + + // Convert each char into two letters + int J = 0; + int I = 0; + for (; I != (N/8)*2; J++,I += 2) + { + Result[I] = Conv[Sum[J] >> 4]; + Result[I + 1] = Conv[Sum[J] & 0xF]; + } + return string(Result); + }; + + inline void Value(unsigned char S[N/8]) + { + for (int I = 0; I != sizeof(Sum); I++) + S[I] = Sum[I]; + }; + + inline operator string() const + { + return Value(); + }; + + bool Set(string Str) + { + return Hex2Num(Str,Sum,sizeof(Sum)); + }; + + inline void Set(unsigned char S[N/8]) + { + for (int I = 0; I != sizeof(Sum); I++) + Sum[I] = S[I]; + }; + + HashSumValue(string Str) + { + memset(Sum,0,sizeof(Sum)); + Set(Str); + } + HashSumValue() + { + memset(Sum,0,sizeof(Sum)); + } +}; + +#endif diff --git a/apt-pkg/contrib/md5.cc b/apt-pkg/contrib/md5.cc index c0fa8493d..6c60ffd74 100644 --- a/apt-pkg/contrib/md5.cc +++ b/apt-pkg/contrib/md5.cc @@ -165,61 +165,6 @@ static void MD5Transform(uint32_t buf[4], uint32_t const in[16]) buf[3] += d; } /*}}}*/ -// MD5SumValue::MD5SumValue - Constructs the summation from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a MD5 is a 32 character hex number */ -MD5SumValue::MD5SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - /*}}}*/ -// MD5SumValue::MD5SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -MD5SumValue::MD5SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - /*}}}*/ -// MD5SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool MD5SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - /*}}}*/ -// MD5SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string MD5SumValue::Value() const -{ - char Conv[16] = {'0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f'}; - char Result[33]; - Result[32] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 32; J++, I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); -} - /*}}}*/ -// MD5SumValue::operator == - Comparitor /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool MD5SumValue::operator ==(const MD5SumValue &rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ // MD5Summation::MD5Summation - Initialize the summer /*{{{*/ // --------------------------------------------------------------------- /* This assigns the deep magic initial values */ @@ -353,7 +298,7 @@ MD5SumValue MD5Summation::Result() } MD5SumValue V; - memcpy(V.Sum,buf,16); + V.Set((char *)buf); return V; } /*}}}*/ diff --git a/apt-pkg/contrib/md5.h b/apt-pkg/contrib/md5.h index 96c8975b4..9cc88cfbe 100644 --- a/apt-pkg/contrib/md5.h +++ b/apt-pkg/contrib/md5.h @@ -32,28 +32,11 @@ using std::string; using std::min; -class MD5Summation; +#include "hashsum_template.h" -class MD5SumValue -{ - friend class MD5Summation; - unsigned char Sum[4*4]; - - public: - - // Accessors - bool operator ==(const MD5SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[16]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[16]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; +class MD5Summation; - MD5SumValue(string Str); - MD5SumValue(); -}; +typedef HashSumValue<128> MD5SumValue; class MD5Summation { diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc index eae52d52f..0b1c16dc3 100644 --- a/apt-pkg/contrib/sha1.cc +++ b/apt-pkg/contrib/sha1.cc @@ -178,67 +178,6 @@ static void SHA1Transform(uint32_t state[5],uint8_t const buffer[64]) } /*}}}*/ -// SHA1SumValue::SHA1SumValue - Constructs the summation from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a SHA1 is a 40 character hex number */ -SHA1SumValue::SHA1SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - - /*}}} */ -// SHA1SumValue::SHA1SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -SHA1SumValue::SHA1SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - - /*}}} */ -// SHA1SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool SHA1SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - - /*}}} */ -// SHA1SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string SHA1SumValue::Value() const -{ - char Conv[16] = - { '0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f' - }; - char Result[41]; - Result[40] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 40; J++,I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); -} - - /*}}} */ -// SHA1SumValue::operator == - Comparator /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool SHA1SumValue::operator == (const SHA1SumValue & rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ // SHA1Summation::SHA1Summation - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -290,11 +229,13 @@ SHA1SumValue SHA1Summation::Result() // Transfer over the result SHA1SumValue Value; + char res[20]; for (unsigned i = 0; i < 20; i++) { - Value.Sum[i] = (unsigned char) + res[i] = (unsigned char) ((state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255); } + Value.Set(res); return Value; } /*}}}*/ diff --git a/apt-pkg/contrib/sha1.h b/apt-pkg/contrib/sha1.h index 8ddd889f1..e7683fa7b 100644 --- a/apt-pkg/contrib/sha1.h +++ b/apt-pkg/contrib/sha1.h @@ -21,28 +21,11 @@ using std::string; using std::min; -class SHA1Summation; +#include "hashsum_template.h" -class SHA1SumValue -{ - friend class SHA1Summation; - unsigned char Sum[20]; - - public: - - // Accessors - bool operator ==(const SHA1SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[20]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[20]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; +class SHA1Summation; - SHA1SumValue(string Str); - SHA1SumValue(); -}; +typedef HashSumValue<160> SHA1SumValue; class SHA1Summation { diff --git a/apt-pkg/contrib/sha2.cc b/apt-pkg/contrib/sha2.cc index 00d90d6ba..dcdbef6e7 100644 --- a/apt-pkg/contrib/sha2.cc +++ b/apt-pkg/contrib/sha2.cc @@ -12,26 +12,22 @@ */ /*}}}*/ #ifdef __GNUG__ -#pragma implementation "apt-pkg/2.h" +#pragma implementation "apt-pkg/sha2.h" #endif #include #include + + + SHA512Summation::SHA512Summation() /*{{{*/ { SHA512_Init(&ctx); Done = false; } - /*}}}*/ -bool SHA512Summation::Add(const unsigned char *inbuf,unsigned long len) /*{{{*/ -{ - if (Done) - return false; - SHA512_Update(&ctx, inbuf, len); - return true; -} - /*}}}*/ + /*}}}*/ + SHA512SumValue SHA512Summation::Result() /*{{{*/ { if (!Done) { @@ -44,63 +40,14 @@ SHA512SumValue SHA512Summation::Result() /*{{{*/ return res; } /*}}}*/ -// SHA512SumValue::SHA512SumValue - Constructs the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a SHA512 is a 64 character hex number */ -SHA512SumValue::SHA512SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - /*}}}*/ -// SHA512SumValue::SHA512SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -SHA512SumValue::SHA512SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - /*}}}*/ -// SHA512SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool SHA512SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - /*}}}*/ -// SHA512SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string SHA512SumValue::Value() const +bool SHA512Summation::Add(const unsigned char *inbuf,unsigned long len) /*{{{*/ { - char Conv[16] = - { '0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f' - }; - char Result[129]; - Result[128] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 128; J++,I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); + if (Done) + return false; + SHA512_Update(&ctx, inbuf, len); + return true; } /*}}}*/ -// SHA512SumValue::operator == - Comparator /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool SHA512SumValue::operator == (const SHA512SumValue & rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ // SHA512Summation::AddFD - Add content of file into the checksum /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -151,63 +98,6 @@ SHA256SumValue SHA256Summation::Result() /*{{{*/ return res; } /*}}}*/ -// SHA256SumValue::SHA256SumValue - Constructs the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a SHA512 is a 64 character hex number */ -SHA256SumValue::SHA256SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - /*}}}*/ -// SHA256SumValue::SHA256SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -SHA256SumValue::SHA256SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - /*}}}*/ -// SHA256SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool SHA256SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - /*}}}*/ -// SHA256SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string SHA256SumValue::Value() const -{ - char Conv[16] = - { '0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f' - }; - char Result[129]; - Result[128] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 128; J++,I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); -} - /*}}}*/ -// SHA256SumValue::operator == - Comparator /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool SHA256SumValue::operator == (const SHA256SumValue & rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ // SHA256Summation::AddFD - Add content of file into the checksum /*{{{*/ // --------------------------------------------------------------------- /* */ diff --git a/apt-pkg/contrib/sha2.h b/apt-pkg/contrib/sha2.h index 5148b05c3..2c3fcae12 100644 --- a/apt-pkg/contrib/sha2.h +++ b/apt-pkg/contrib/sha2.h @@ -20,38 +20,21 @@ #include #include "sha2_internal.h" +#include "hashsum_template.h" using std::string; using std::min; -// SHA512 class SHA512Summation; +class SHA256Summation; -class SHA512SumValue -{ - friend class SHA512Summation; - unsigned char Sum[64]; - - public: - - // Accessors - bool operator ==(const SHA512SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[64]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[64]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; - - SHA512SumValue(string Str); - SHA512SumValue(); -}; +typedef HashSumValue<512> SHA512SumValue; +typedef HashSumValue<256> SHA256SumValue; -class SHA512Summation +class SHA256Summation { - SHA512_CTX ctx; - unsigned char Sum[64]; + SHA256_CTX ctx; + unsigned char Sum[32]; bool Done; public: @@ -61,39 +44,15 @@ class SHA512Summation bool AddFD(int Fd,unsigned long Size); inline bool Add(const unsigned char *Beg,const unsigned char *End) {return Add(Beg,End-Beg);}; - SHA512SumValue Result(); - - SHA512Summation(); -}; - -// SHA256 -class SHA256Summation; - -class SHA256SumValue -{ - friend class SHA256Summation; - unsigned char Sum[32]; + SHA256SumValue Result(); - public: - - // Accessors - bool operator ==(const SHA256SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[32]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[32]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; - - SHA256SumValue(string Str); - SHA256SumValue(); + SHA256Summation(); }; -class SHA256Summation +class SHA512Summation { - SHA256_CTX ctx; - unsigned char Sum[32]; + SHA512_CTX ctx; + unsigned char Sum[64]; bool Done; public: @@ -103,9 +62,10 @@ class SHA256Summation bool AddFD(int Fd,unsigned long Size); inline bool Add(const unsigned char *Beg,const unsigned char *End) {return Add(Beg,End-Beg);}; - SHA256SumValue Result(); + SHA512SumValue Result(); - SHA256Summation(); + SHA512Summation(); }; + #endif diff --git a/apt-pkg/makefile b/apt-pkg/makefile index 313aefe7d..b94b88257 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -28,7 +28,7 @@ SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \ HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h netrc.h\ md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha2.h \ sha2_internal.h \ - hashes.h \ + hashes.h hashsum_template.h\ macros.h weakptr.h # Source code for the core main library -- cgit v1.2.3-70-g09d2 From 31693a8ff0fe593879ed30a4dde8f9be5b0859bf Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Mon, 28 Feb 2011 09:36:17 +0100 Subject: apt-pkg/contrib/sha2.{cc,h}: move duplicated AddFD to baseclass --- apt-pkg/contrib/sha2.cc | 85 ++--------------------------------------------- apt-pkg/contrib/sha2.h | 87 ++++++++++++++++++++++++++++++++++++------------- 2 files changed, 67 insertions(+), 105 deletions(-) diff --git a/apt-pkg/contrib/sha2.cc b/apt-pkg/contrib/sha2.cc index dcdbef6e7..4604d3167 100644 --- a/apt-pkg/contrib/sha2.cc +++ b/apt-pkg/contrib/sha2.cc @@ -18,91 +18,10 @@ #include #include - - - -SHA512Summation::SHA512Summation() /*{{{*/ -{ - SHA512_Init(&ctx); - Done = false; -} - /*}}}*/ - -SHA512SumValue SHA512Summation::Result() /*{{{*/ -{ - if (!Done) { - SHA512_Final(Sum, &ctx); - Done = true; - } - - SHA512SumValue res; - res.Set(Sum); - return res; -} - /*}}}*/ -bool SHA512Summation::Add(const unsigned char *inbuf,unsigned long len) /*{{{*/ -{ - if (Done) - return false; - SHA512_Update(&ctx, inbuf, len); - return true; -} - /*}}}*/ -// SHA512Summation::AddFD - Add content of file into the checksum /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool SHA512Summation::AddFD(int Fd,unsigned long Size) -{ - unsigned char Buf[64 * 64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ - -SHA256Summation::SHA256Summation() /*{{{*/ -{ - SHA256_Init(&ctx); - Done = false; -} - /*}}}*/ -bool SHA256Summation::Add(const unsigned char *inbuf,unsigned long len) /*{{{*/ -{ - if (Done) - return false; - SHA256_Update(&ctx, inbuf, len); - return true; -} - /*}}}*/ -SHA256SumValue SHA256Summation::Result() /*{{{*/ -{ - if (!Done) { - SHA256_Final(Sum, &ctx); - Done = true; - } - - SHA256SumValue res; - res.Set(Sum); - return res; -} - /*}}}*/ -// SHA256Summation::AddFD - Add content of file into the checksum /*{{{*/ +// SHA2Summation::AddFD - Add content of file into the checksum /*{{{*/ // --------------------------------------------------------------------- /* */ -bool SHA256Summation::AddFD(int Fd,unsigned long Size) -{ +bool SHA2SummationBase::AddFD(int Fd,unsigned long Size){ unsigned char Buf[64 * 64]; int Res = 0; int ToEOF = (Size == 0); diff --git a/apt-pkg/contrib/sha2.h b/apt-pkg/contrib/sha2.h index 2c3fcae12..bd5472527 100644 --- a/apt-pkg/contrib/sha2.h +++ b/apt-pkg/contrib/sha2.h @@ -31,40 +31,83 @@ class SHA256Summation; typedef HashSumValue<512> SHA512SumValue; typedef HashSumValue<256> SHA256SumValue; -class SHA256Summation +class SHA2SummationBase +{ + protected: + bool Done; + public: + virtual bool Add(const unsigned char *inbuf,unsigned long inlen) = 0; + virtual bool AddFD(int Fd,unsigned long Size); + + inline bool Add(const char *Data) + { + return Add((unsigned char *)Data,strlen(Data)); + }; + inline bool Add(const unsigned char *Beg,const unsigned char *End) + { + return Add(Beg,End-Beg); + }; + void Result(); +}; + +class SHA256Summation : public SHA2SummationBase { SHA256_CTX ctx; unsigned char Sum[32]; - bool Done; public: - - bool Add(const unsigned char *inbuf,unsigned long inlen); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; - SHA256SumValue Result(); - - SHA256Summation(); + virtual bool Add(const unsigned char *inbuf, unsigned long len) + { + if (Done) + return false; + SHA256_Update(&ctx, inbuf, len); + return true; + }; + SHA256SumValue Result() + { + if (!Done) { + SHA256_Final(Sum, &ctx); + Done = true; + } + SHA256SumValue res; + res.Set(Sum); + return res; + }; + SHA256Summation() + { + SHA256_Init(&ctx); + Done = false; + }; }; -class SHA512Summation +class SHA512Summation : public SHA2SummationBase { SHA512_CTX ctx; unsigned char Sum[64]; - bool Done; public: - - bool Add(const unsigned char *inbuf,unsigned long inlen); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; - SHA512SumValue Result(); - - SHA512Summation(); + virtual bool Add(const unsigned char *inbuf, unsigned long len) + { + if (Done) + return false; + SHA512_Update(&ctx, inbuf, len); + return true; + }; + SHA512SumValue Result() + { + if (!Done) { + SHA512_Final(Sum, &ctx); + Done = true; + } + SHA512SumValue res; + res.Set(Sum); + return res; + }; + SHA512Summation() + { + SHA512_Init(&ctx); + Done = false; + }; }; -- cgit v1.2.3-70-g09d2 From 798d79f10f828312db06fa7d25d8fa106fbe3c23 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Wed, 30 Mar 2011 16:30:55 +0200 Subject: solver protocol (EDSP): first draft version 0.1 --- doc/apt-solver-protocol.mdwn | 235 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 doc/apt-solver-protocol.mdwn diff --git a/doc/apt-solver-protocol.mdwn b/doc/apt-solver-protocol.mdwn new file mode 100644 index 000000000..b1435102e --- /dev/null +++ b/doc/apt-solver-protocol.mdwn @@ -0,0 +1,235 @@ +** TENTATIVE PROPOSAL, VERY VERY VERY DRAFT ** + +# APT External Dependency Solver Protocol (EDSP) - version 0.1 + +This document describes the communication protocol between APT and +external dependency solvers. The protocol is called APT EDSP, for "APT +External Dependency Solver Protocol". + + +## Components + +- **APT**: we know this one. +- APT is equipped with its own **internal solver** for dependencies, + which is identified by the string `internal`. +- **External solver**: an *external* software component able to resolve + dependencies on behalf of APT. Each external solver is identified by + an unique string (other than `internal`) called the solver **name**. + +At each interaction with APT, a single solver is in use. When there is +a total of 2 or more solvers, internals or externals, the user can +choose which one to use. + + +## Installation + +Each external solver is installed as a file under +`/usr/lib/apt/solvers`. The naming scheme is +`/usr/lib/apt/solvers/NAME`, where `NAME` is the name of the external +solver. + +Each file under `/usr/lib/apt/solvers` corresponding to an external +solver must be executable. + +No non-solver files must be installed under `/usr/lib/apt/solvers`, so +that an index of available external solvers can be obtained by simply +looking at the content of that directory. + + +## Configuration + +Several APT options can be used to affect dependency solving in APT. An +overview of them is given below. Please refer to proper APT +configuration documentation for more, and more up to date, information. + +- **APT::Solver::Name**: the name of the solver to be used for + dependency solving. Defaults to `internal` + +- **APT::Solver::Strict-Pinning**: whether pinning must be strictly + respected (as the internal solver does) or can be slightly deviated + from. Defaults to `yes`. + +- **APT::Solver::Preferences**: solver-specific user preferences used + during dependency solving. Check your solver documentation for what is + supported here. Default to empty. + + +## Protocol + +When configured to use an external solver, APT will resort to it to +decide which packages should be installed or removed. + +The interaction happens **in batch**: APT will invoke the external +solver passing the current status of installed and available packages, +as well as the user request to alter the set of installed packages. The +external solver will compute a new complete set of installed packages +and gives APT a "diff" listing of which *additional* packages should be +installed and of which currently installed packages should be +*removed*. (Note: the order in which those actions have to be performed +will be up to APT to decide.) + +External solvers are invoked by executing them. Communications happens +via the file descriptors: **stdin** (standard input) and **stdout** +(standard output). stderr is not used by the EDSP protocol. Solvers can +therefore use stderr to dump debugging information that could be +inspected separately. + +After invocation, the protocol passes through 3 separate phases: + +1. APT send to the solver a dependency solving **scenario** +2. The solver solves dependencies. No communication with APT happens + during this phase. +3. The solver sends back to APT an **answer**, i.e. either a *solution* + or an *error* report. + + +### Scenario + +A scenario is a text file encoded in a format very similar to the "Deb +822" format (AKA "the format used by Debian `Packages` files"). A +scenario consists of two distinct parts: a **request** and a **package +universe**, occurring in that order. The request consists of a single +Deb 822 stanza, while the package universe consists of several such +stanzas. All stanzas occurring in a scenario are separated by an empty +line. + + +#### Request + +Within a dependency solving scenario, a request represents the action on +installed packages requested by the user. + +A request is a single Deb 822 stanza opened by a mandatory Request field +and followed by a mixture of action and preference fields. + +The value of the **Request:** field is a string describing the EDSP +protocol which will be used to communicate. At present, the string must +be `EDSP 0.1`. + +a unique request identifier, such as an +UUID. Request fields are mainly used to identify the beginning of a +request stanza; their actual values are otherwise not used by the EDSP +protocol. + +The following **action fields** are supported in request stanzas: + +- **Install:** (optional, defaults to the empty string) A space + separated list of package names, with *no version attached*, to + install. This field denotes a list of packages that the user wants to + install, usually via an APT `install` request. + +- **Remove:** (optional, defaults to the empty string) Same syntax of + Install. This field denotes a list of packages that the user wants to + remove, usually via APT `remove` or `purge` requests. + +- **Upgrade:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, an upgrade of all installed packages has been + requested, usually via an APT `upgrade` request. + +- **Dist-Upgrade:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. Same as Upgrade, but for APT `dist-upgrade` requests. + +- **Autoremove:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, a clean up of unused automatically installed + packages has been requested, usually via an APT `autoremove` request. + +The following **preference fields** are supported in request stanzas: + +- **Strict-Pinning:** (optional, defaults to `yes`). Allowed values: + `yes`, `no`. When set to `yes`, APT pinning is strict, in the sense + that the solver must not propose to install packages which are not APT + candidates (see the `APT-Pin` and `APT-Candidate` fields in the + package universe). When set to `no`, the solver does only a best + effort attempt to install APT candidates. Usually, the value of this + field comes from the `APT::Solver::Strict-Pinning` configuration + option. + +- **Preferences:** a solver-specific optimization string, usually coming + from the `APT::Solver::Preferences` configuration option. + + +#### Package universe + +A package universe is a list of Deb 822 stanzas, one per package, called +**package stanzas**. Each package stanzas starts with a Package +field. The following fields are supported in package stanzas: + +- All fields supported by Debian Packages file (see one of the + `/var/lib/apt/lists/*Packages` file for an example), *with the + exception of the Description field* that is not allowed. + + Among those fields, the following are mandatory: Package, Version, + Architecture. + +- **Installed:** (optional, default value `no`). Allowed values: `yes`, + `no`. When set to `yes`, the corresponding package is currently + installed. + + ##TODO## changed with respect to current prototype, which uses Status + +- **APT-ID:** (mandatory). Unique package identifier, according to APT. + +- **APT-Pin:** (mandatory). Must be a non-negative integer. Package pin + value, according to current APT policy. + +- **APT-Candidate:** (optional, default value `no`). Allowed values: + `yes`, `no`. When set to `yes`, the corresponding package is granted + to have the highest pinning value among all the packages having the + same name. + + ##TODO## what about multi-arch? is the pin value granted to be the + higest also across different architectures? + + +### Answer + +An answer from the external solver to APT is either a *solution* or an +*error*. + +The following invariant on **exit codes** must hold true. When the +external solver is *able to find a solution*, it will write the solution +to standard output and then exit with an exit code of 0. When the +external solver is *unable to find a solution* (and aware of that), it +will write an error to standard output and then exit with an exit code +of 0. An exit code other than 0 will be interpreted as a solver crash +with no meaningful error about dependency resolution to convey to the +user. + + +#### Solution + +A solution is a single Deb 822 stanza, starting with the field +Solution. The following fields are supported in solution stanzas: + +- **Solution:** (mandatory). The value of this field is ignored, + although it should be a unique solution identifier, such as a UUID. + +- **Install:** (optional, defaults to the empty string). A space + separated list of strings of the form `PACKAGE=VERSION` where + `PACKAGE` is a package name and `VERSION` is an available version of + that package. The list denotes a set of packages that must be + installed to satisfy user request. + +- **Remove:** (optional, defaults to the empty string). Same as Install, + but denoting a set of packages that must be removed to satisfy user + request. + + +#### Error + +An error is a single Deb 822 stanza, starting the field Error. The +following fields are supported in error stanzas: + +- **Error:** (mandatory). The value of this field is ignored, although + it should be a unique error identifier, such as a UUID. + +- **Message:** (mandatory). The value of this field is a text string, + meant to be read by humans, that explains the cause of the solver + error. + + ##TODO## can we support line continuations throughout this format? If + yes, they might come handy both for error stanzas and for solution + stanzas (which might have very long install/remove lines) + + +** TENTATIVE PROPOSAL, VERY VERY VERY DRAFT ** -- cgit v1.2.3-70-g09d2 From 6d38011bb93451dd9da3294614d821c77ac91687 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 30 Mar 2011 17:23:43 +0200 Subject: add a first round of stuff needed for talking between APT and solvers based on a very early draft for EDSP by Stefano APT can now write a scenario as well as load most stuff from it. --- apt-pkg/algorithms.cc | 33 +++++++++-- apt-pkg/algorithms.h | 2 + apt-pkg/deb/debindexfile.h | 4 +- apt-pkg/deb/deblistparser.h | 8 +-- apt-pkg/depcache.cc | 6 ++ apt-pkg/depcache.h | 4 +- apt-pkg/edsp/edspindexfile.cc | 74 +++++++++++++++++++++++ apt-pkg/edsp/edspindexfile.h | 25 ++++++++ apt-pkg/edsp/edsplistparser.cc | 109 ++++++++++++++++++++++++++++++++++ apt-pkg/edsp/edsplistparser.h | 38 ++++++++++++ apt-pkg/edsp/edspsystem.cc | 117 +++++++++++++++++++++++++++++++++++++ apt-pkg/edsp/edspsystem.h | 38 ++++++++++++ apt-pkg/edsp/edspwriter.cc | 130 +++++++++++++++++++++++++++++++++++++++++ apt-pkg/edsp/edspwriter.h | 19 ++++++ apt-pkg/makefile | 7 ++- apt-pkg/pkgcachegen.cc | 2 +- apt-pkg/policy.cc | 4 ++ apt-pkg/policy.h | 7 +-- 18 files changed, 609 insertions(+), 18 deletions(-) create mode 100644 apt-pkg/edsp/edspindexfile.cc create mode 100644 apt-pkg/edsp/edspindexfile.h create mode 100644 apt-pkg/edsp/edsplistparser.cc create mode 100644 apt-pkg/edsp/edsplistparser.h create mode 100644 apt-pkg/edsp/edspsystem.cc create mode 100644 apt-pkg/edsp/edspsystem.h create mode 100644 apt-pkg/edsp/edspwriter.cc create mode 100644 apt-pkg/edsp/edspwriter.h diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 0b4366e5e..2ca3404a0 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -20,12 +20,15 @@ #include #include #include - +#include + #include #include #include #include #include + +#include /*}}}*/ using namespace std; @@ -731,7 +734,25 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg) return true; } /*}}}*/ -// ProblemResolver::Resolve - Run the resolution pass /*{{{*/ +// ProblemResolver::Resolve - calls a resolver to fix the situation /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool pkgProblemResolver::Resolve(bool BrokenFix) +{ + std::string const solver = _config->Find("APT::Solver::Name", "internal"); + if (solver != "internal") + { + FILE* output = fopen("/tmp/universe.log", "w"); + edspWriter::WriteUniverse(Cache, output); + fclose(output); + output = fopen("/tmp/request.log", "w"); + edspWriter::WriteRequest(Cache, output); + fclose(output); + } + return ResolveInternal(BrokenFix); +} + /*}}}*/ +// ProblemResolver::ResolveInternal - Run the resolution pass /*{{{*/ // --------------------------------------------------------------------- /* This routines works by calculating a score for each package. The score is derived by considering the package's priority and all reverse @@ -745,12 +766,10 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg) The BrokenFix flag enables a mode where the algorithm tries to upgrade packages to advoid problems. */ -bool pkgProblemResolver::Resolve(bool BrokenFix) +bool pkgProblemResolver::ResolveInternal(bool const BrokenFix) { pkgDepCache::ActionGroup group(Cache); - unsigned long Size = Cache.Head().PackageCount; - // Record which packages are marked for install bool Again = false; do @@ -780,7 +799,9 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) clog << "Starting" << endl; MakeScores(); - + + unsigned long const Size = Cache.Head().PackageCount; + /* We have to order the packages so that the broken fixing pass operates from highest score to lowest. This prevents problems when high score packages cause the removal of lower score packages that diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h index ebe31cc10..0778ec722 100644 --- a/apt-pkg/algorithms.h +++ b/apt-pkg/algorithms.h @@ -105,6 +105,8 @@ class pkgProblemResolver /*{{{*/ void MakeScores(); bool DoUpgrade(pkgCache::PkgIterator Pkg); + + bool ResolveInternal(bool const BrokenFix = false); public: diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h index b5085992d..6697c5f26 100644 --- a/apt-pkg/deb/debindexfile.h +++ b/apt-pkg/deb/debindexfile.h @@ -22,8 +22,9 @@ class debStatusIndex : public pkgIndexFile { + protected: string File; - + public: virtual const Type *GetType() const; @@ -36,6 +37,7 @@ class debStatusIndex : public pkgIndexFile virtual bool HasPackages() const {return true;}; virtual unsigned long Size() const; virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const; + bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog, unsigned long const Flag) const; virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const; debStatusIndex(string File); diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h index d62ce641c..8b8aff788 100644 --- a/apt-pkg/deb/deblistparser.h +++ b/apt-pkg/deb/deblistparser.h @@ -25,9 +25,9 @@ class debListParser : public pkgCacheGenerator::ListParser const char *Str; unsigned char Val; }; - - private: - + + protected: + pkgTagFile Tags; pkgTagSection Section; unsigned long iOffset; @@ -36,7 +36,7 @@ class debListParser : public pkgCacheGenerator::ListParser bool MultiArchEnabled; unsigned long UniqFindTagWrite(const char *Tag); - bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver); + virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver); bool ParseDepends(pkgCache::VerIterator &Ver,const char *Tag, unsigned int Type); bool ParseProvides(pkgCache::VerIterator &Ver); diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 07803d7bf..2790080a1 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1578,6 +1578,12 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator const &Dep) return false; } /*}}}*/ +// Policy::GetPriority - Get the priority of the package pin /*{{{*/ +signed short pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const &Pkg) +{ return 0; }; +signed short pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const &File) +{ return 0; }; + /*}}}*/ pkgDepCache::InRootSetFunc *pkgDepCache::GetRootSetFunc() /*{{{*/ { DefaultRootSetFunc *f = new DefaultRootSetFunc; diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index 750da3d6f..b15cd527d 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -258,7 +258,9 @@ class pkgDepCache : protected pkgCache::Namespace virtual VerIterator GetCandidateVer(PkgIterator const &Pkg); virtual bool IsImportantDep(DepIterator const &Dep); - + virtual signed short GetPriority(PkgIterator const &Pkg); + virtual signed short GetPriority(PkgFileIterator const &File); + virtual ~Policy() {}; }; diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc new file mode 100644 index 000000000..5a9d5aacd --- /dev/null +++ b/apt-pkg/edsp/edspindexfile.cc @@ -0,0 +1,74 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + The universe file is designed to work as an intermediate file between + APT and the resolver. Its on propose very similar to a dpkg status file + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include +#include +#include +#include +#include +#include +#include +#include + +#include + /*}}}*/ + +// edspIndex::edspIndex - Constructor /*{{{*/ +// --------------------------------------------------------------------- +/* */ +edspIndex::edspIndex(string File) : debStatusIndex(File) +{ +} + /*}}}*/ +// StatusIndex::Merge - Load the index file into a cache /*{{{*/ +bool edspIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const +{ + FileFd Pkg(File,FileFd::ReadOnlyGzip); + if (_error->PendingError() == true) + return false; + edspListParser Parser(&Pkg); + if (_error->PendingError() == true) + return false; + + if (Prog != NULL) + Prog->SubProgress(0,File); + if (Gen.SelectFile(File,string(),*this) == false) + return _error->Error("Problem with SelectFile %s",File.c_str()); + + // Store the IMS information + pkgCache::PkgFileIterator CFile = Gen.GetCurFile(); + struct stat St; + if (fstat(Pkg.Fd(),&St) != 0) + return _error->Errno("fstat","Failed to stat"); + CFile->Size = St.st_size; + CFile->mtime = St.st_mtime; + CFile->Archive = Gen.WriteUniqString("universe"); + + if (Gen.MergeList(Parser) == false) + return _error->Error("Problem with MergeList %s",File.c_str()); + return true; +} + /*}}}*/ +// Index File types for APT /*{{{*/ +class edspIFType: public pkgIndexFile::Type +{ + public: + virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator File) const + { + // we don't have a record parser for this type as the file is not presistent + return NULL; + }; + edspIFType() {Label = "APT universe file";}; +}; +static edspIFType _apt_Universe; + +const pkgIndexFile::Type *edspIndex::GetType() const +{ + return &_apt_Universe; +} + /*}}}*/ diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h new file mode 100644 index 000000000..4ef7787e7 --- /dev/null +++ b/apt-pkg/edsp/edspindexfile.h @@ -0,0 +1,25 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + The universe file is designed to work as an intermediate file between + APT and the resolver. Its on propose very similar to a dpkg status file + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSPINDEXFILE_H +#define PKGLIB_EDSPINDEXFILE_H + +#include +#include + +class edspIndex : public debStatusIndex +{ + public: + + virtual const Type *GetType() const; + + virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const; + + edspIndex(string File); +}; + +#endif diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc new file mode 100644 index 000000000..3e57ea822 --- /dev/null +++ b/apt-pkg/edsp/edsplistparser.cc @@ -0,0 +1,109 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + + Package Cache Generator - Generator for the cache structure. + + This builds the cache structure from the abstract package list parser. + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include +#include +#include +#include +#include +#include + /*}}}*/ + +// ListParser::edspListParser - Constructor /*{{{*/ +edspListParser::edspListParser(FileFd *File, string const &Arch) : debListParser(File, Arch) +{} + /*}}}*/ +// ListParser::NewVersion - Fill in the version structure /*{{{*/ +bool edspListParser::NewVersion(pkgCache::VerIterator &Ver) +{ + Ver->ID = Section.FindI("APT-ID", Ver->ID); + return debListParser::NewVersion(Ver); +} + /*}}}*/ +// ListParser::Description - Return the description string /*{{{*/ +// --------------------------------------------------------------------- +/* Sorry, no description for the resolvers… */ +string edspListParser::Description() +{ + return ""; +} +string edspListParser::DescriptionLanguage() +{ + return ""; +} +MD5SumValue edspListParser::Description_md5() +{ + return MD5SumValue(""); +} + /*}}}*/ +// ListParser::VersionHash - Compute a unique hash for this version /*{{{*/ +// --------------------------------------------------------------------- +/* */ +unsigned short edspListParser::VersionHash() +{ + if (Section.Exists("APT-Hash") == true) + return Section.FindI("APT-Hash"); + else if (Section.Exists("APT-ID") == true) + return Section.FindI("APT-ID"); + return 0; +} + /*}}}*/ +// ListParser::ParseStatus - Parse the status field /*{{{*/ +// --------------------------------------------------------------------- +/* The Status: line here is not a normal dpkg one but just one which tells + use if the package is installed or not, where missing means not. */ +bool edspListParser::ParseStatus(pkgCache::PkgIterator &Pkg, + pkgCache::VerIterator &Ver) +{ + const char *Start; + const char *Stop; + if (Section.Find("Status",Start,Stop) == false) + return true; + + // UsePackage() is responsible for setting the flag in the default case + bool const static essential = _config->Find("pkgCacheGen::Essential", "") == "installed"; + if (essential == true && + Section.FindFlag("Essential",Pkg->Flags,pkgCache::Flag::Essential) == false) + return false; + + // Isolate the first word + const char *I = Start; + for(; I < Stop && *I != ' '; I++); + + // Process the flag field + WordList StatusList[] = {{"installed",pkgCache::State::Installed}, + {}}; + if (GrabWord(string(Start,I-Start),StatusList,Pkg->CurrentState) == false) + return _error->Error("Malformed Status line"); + + /* A Status line marks the package as indicating the current + version as well. Only if it is actually installed.. Otherwise + the interesting dpkg handling of the status file creates bogus + entries. */ + if (!(Pkg->CurrentState == pkgCache::State::NotInstalled || + Pkg->CurrentState == pkgCache::State::ConfigFiles)) + { + if (Ver.end() == true) + _error->Warning("Encountered status field in a non-version description"); + else + Pkg->CurrentVer = Ver.Index(); + } + + return true; +} + /*}}}*/ +// ListParser::LoadReleaseInfo - Load the release information /*{{{*/ +bool edspListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, + FileFd &File, string component) +{ + return true; +} + /*}}}*/ diff --git a/apt-pkg/edsp/edsplistparser.h b/apt-pkg/edsp/edsplistparser.h new file mode 100644 index 000000000..ec9f09905 --- /dev/null +++ b/apt-pkg/edsp/edsplistparser.h @@ -0,0 +1,38 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + + EDSP Package List Parser - This implements the abstract parser + interface for the APT specific intermediate format which is passed + to external resolvers + + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSPLISTPARSER_H +#define PKGLIB_EDSPLISTPARSER_H + +#include +#include +#include +#include + +class edspListParser : public debListParser +{ + public: + virtual bool NewVersion(pkgCache::VerIterator &Ver); + virtual string Description(); + virtual string DescriptionLanguage(); + virtual MD5SumValue Description_md5(); + virtual unsigned short VersionHash(); + + bool LoadReleaseInfo(pkgCache::PkgFileIterator &FileI,FileFd &File, + string section); + + edspListParser(FileFd *File, string const &Arch = ""); + + protected: + virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver); + +}; + +#endif diff --git a/apt-pkg/edsp/edspsystem.cc b/apt-pkg/edsp/edspsystem.cc new file mode 100644 index 000000000..579ffc656 --- /dev/null +++ b/apt-pkg/edsp/edspsystem.cc @@ -0,0 +1,117 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + + This system provides the abstraction to use the universe file as the + only source of package information to be able to feed the created file + back to APT for its own consumption (eat your own dogfood). + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + /*}}}*/ + +edspSystem edspSys; + +// System::debSystem - Constructor /*{{{*/ +edspSystem::edspSystem() +{ + StatusFile = 0; + + Label = "Debian APT solver interface"; + VS = &debVS; +} + /*}}}*/ +// System::~debSystem - Destructor /*{{{*/ +edspSystem::~edspSystem() +{ + delete StatusFile; +} + /*}}}*/ +// System::Lock - Get the lock /*{{{*/ +bool edspSystem::Lock() +{ + return true; +} + /*}}}*/ +// System::UnLock - Drop a lock /*{{{*/ +bool edspSystem::UnLock(bool NoErrors) +{ + return true; +} + /*}}}*/ +// System::CreatePM - Create the underlying package manager /*{{{*/ +// --------------------------------------------------------------------- +/* we can't use edsp input as input for real installations - just a + simulation can work, but everything else will fail bigtime */ +pkgPackageManager *edspSystem::CreatePM(pkgDepCache *Cache) const +{ + return NULL; +} + /*}}}*/ +// System::Initialize - Setup the configuration space.. /*{{{*/ +bool edspSystem::Initialize(Configuration &Cnf) +{ + Cnf.Set("Dir::State::extended_states", "/dev/null"); + Cnf.Set("Dir::State::status","/dev/null"); + Cnf.Set("Dir::State::lists","/dev/null"); + + Cnf.Set("Debug::NoLocking", "true"); + Cnf.Set("APT::Get::Simulate", "true"); + + if (StatusFile) { + delete StatusFile; + StatusFile = 0; + } + return true; +} + /*}}}*/ +// System::ArchiveSupported - Is a file format supported /*{{{*/ +bool edspSystem::ArchiveSupported(const char *Type) +{ + return false; +} + /*}}}*/ +// System::Score - Determine if we should use the edsp system /*{{{*/ +signed edspSystem::Score(Configuration const &Cnf) +{ + if (FileExists(Cnf.FindFile("Dir::State::universe","")) == true) + return 1000; + return -1000; +} + /*}}}*/ +// System::AddStatusFiles - Register the status files /*{{{*/ +bool edspSystem::AddStatusFiles(vector &List) +{ + if (StatusFile == 0) + StatusFile = new edspIndex(_config->FindFile("Dir::State::universe")); + List.push_back(StatusFile); + return true; +} + /*}}}*/ +// System::FindIndex - Get an index file for status files /*{{{*/ +bool edspSystem::FindIndex(pkgCache::PkgFileIterator File, + pkgIndexFile *&Found) const +{ + if (StatusFile == 0) + return false; + if (StatusFile->FindInCache(*File.Cache()) == File) + { + Found = StatusFile; + return true; + } + + return false; +} + /*}}}*/ diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h new file mode 100644 index 000000000..bc5be61d1 --- /dev/null +++ b/apt-pkg/edsp/edspsystem.h @@ -0,0 +1,38 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: debsystem.h,v 1.4 2003/01/11 07:16:33 jgg Exp $ +/* ###################################################################### + + System - Debian version of the System Class + + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSPSYSTEM_H +#define PKGLIB_EDSPSYSTEM_H + +#include + +class edspIndex; +class edspSystem : public pkgSystem +{ + edspIndex *StatusFile; + + public: + + virtual bool Lock(); + virtual bool UnLock(bool NoErrors = false); + virtual pkgPackageManager *CreatePM(pkgDepCache *Cache) const; + virtual bool Initialize(Configuration &Cnf); + virtual bool ArchiveSupported(const char *Type); + virtual signed Score(Configuration const &Cnf); + virtual bool AddStatusFiles(std::vector &List); + virtual bool FindIndex(pkgCache::PkgFileIterator File, + pkgIndexFile *&Found) const; + + edspSystem(); + ~edspSystem(); +}; + +extern edspSystem edspSys; + +#endif diff --git a/apt-pkg/edsp/edspwriter.cc b/apt-pkg/edsp/edspwriter.cc new file mode 100644 index 000000000..38d0d82c5 --- /dev/null +++ b/apt-pkg/edsp/edspwriter.cc @@ -0,0 +1,130 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + Set of methods to help writing and reading everything needed for EDSP + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include +#include +#include +#include +#include + +#include +#include + +#include + /*}}}*/ + +// edspWriter::WriteUniverse - to the given file descriptor /*{{{*/ +bool edspWriter::WriteUniverse(pkgDepCache &Cache, FILE* output) +{ + // we could use pkgCache::DepType and ::Priority, but these would be lokalized strings… + const char * const PrioMap[] = {0, "important", "required", "standard", + "optional", "extra"}; + const char * const DepMap[] = {"", "Depends", "PreDepends", "Suggests", + "Recommends" , "Conflicts", "Replaces", + "Obsoletes", "Breaks", "Enhances"}; + + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + { + for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) + { + fprintf(output, "Package: %s\n", Pkg.Name()); + fprintf(output, "Architecture: %s\n", Ver.Arch()); + fprintf(output, "Version: %s\n", Ver.VerStr()); + if (Pkg.CurrentVer() == Ver) + fprintf(output, "Installed: yes\n"); + if (Pkg->SelectedState == pkgCache::State::Hold) + fprintf(output, "Hold: yes\n"); + fprintf(output, "APT-ID: %u\n", Ver->ID); + fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); + if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) + fprintf(output, "Essential: yes\n"); + fprintf(output, "Section: %s\n", Ver.Section()); + if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) + fprintf(output, "Multi-Arch: allowed\n"); + else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) + fprintf(output, "Multi-Arch: foreign\n"); + else if (Ver->MultiArch == pkgCache::Version::Same) + fprintf(output, "Multi-Arch: same\n"); + signed short Pin = std::numeric_limits::min(); + for (pkgCache::VerFileIterator File = Ver.FileList(); File.end() == false; ++File) { + signed short const p = Cache.GetPolicy().GetPriority(File.File()); + if (Pin < p) + Pin = p; + } + fprintf(output, "APT-Pin: %d\n", Pin); + if (Cache.GetCandidateVer(Pkg) == Ver) + fprintf(output, "APT-Candidate: yes\n"); + if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) + fprintf(output, "APT-Automatic: yes\n"); + std::string dependencies[pkgCache::Dep::Enhances + 1]; + bool orGroup = false; + for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) + { + // Ignore implicit dependencies for multiarch here + if (strcmp(Pkg.Arch(), Dep.TargetPkg().Arch()) != 0) + continue; + if (orGroup == false) + dependencies[Dep->Type].append(", "); + dependencies[Dep->Type].append(Dep.TargetPkg().Name()); + if (Dep->Version != 0) + dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")"); + if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) + { + dependencies[Dep->Type].append(" | "); + orGroup = true; + } + else + orGroup = false; + } + for (int i = 1; i < pkgCache::Dep::Enhances + 1; ++i) + if (dependencies[i].empty() == false) + fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2); + string provides; + for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) + { + // Ignore implicit provides for multiarch here + if (strcmp(Pkg.Arch(), Prv.ParentPkg().Arch()) != 0 || strcmp(Pkg.Name(),Prv.Name()) == 0) + continue; + provides.append(", ").append(Prv.Name()); + } + if (provides.empty() == false) + fprintf(output, "Provides: %s\n", provides.c_str()+2); + + + fprintf(output, "\n"); + } + } + return true; +} + /*}}}*/ +// edspWriter::WriteRequest - to the given file descriptor /*{{{*/ +bool edspWriter::WriteRequest(pkgDepCache &Cache, FILE* output) +{ + string del, inst, upgrade; + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + { + string* req; + if (Cache[Pkg].Delete() == true) + req = &del; + else if (Cache[Pkg].NewInstall() == true) + req = &inst; + else if (Cache[Pkg].Upgrade() == true) + req = &upgrade; + else + continue; + req->append(", ").append(Pkg.FullName()); + } + if (del.empty() == false) + fprintf(output, "Remove: %s\n", del.c_str()+2); + if (inst.empty() == false) + fprintf(output, "Install: %s\n", inst.c_str()+2); + if (upgrade.empty() == false) + fprintf(output, "Upgrade: %s\n", upgrade.c_str()+2); + + return true; +} + /*}}}*/ diff --git a/apt-pkg/edsp/edspwriter.h b/apt-pkg/edsp/edspwriter.h new file mode 100644 index 000000000..52923ff73 --- /dev/null +++ b/apt-pkg/edsp/edspwriter.h @@ -0,0 +1,19 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + Set of methods to help writing and reading everything needed for EDSP + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSPWRITER_H +#define PKGLIB_EDSPWRITER_H + +#include + +class edspWriter /*{{{*/ +{ +public: + bool static WriteUniverse(pkgDepCache &Cache, FILE* output); + bool static WriteRequest(pkgDepCache &Cache, FILE* output); +}; + /*}}}*/ +#endif diff --git a/apt-pkg/makefile b/apt-pkg/makefile index 4e5ec107f..a7880e81c 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -3,7 +3,7 @@ BASE=.. SUBDIR=apt-pkg # Header location -SUBDIRS = deb contrib +SUBDIRS = deb edsp contrib HEADER_TARGETDIRS = apt-pkg # Bring in the default rules @@ -53,6 +53,11 @@ SOURCE+= deb/deblistparser.cc deb/debrecords.cc deb/dpkgpm.cc \ HEADERS+= debversion.h debsrcrecords.h dpkgpm.h debrecords.h \ deblistparser.h debsystem.h debindexfile.h debmetaindex.h +# Source code for the APT resolver interface specific components +SOURCE+= edsp/edsplistparser.cc edsp/edspindexfile.cc edsp/edspsystem.cc \ + edsp/edspwriter.cc +HEADERS+= edsplistparser.h edspindexfile.h edspsystem.h edspwriter.h + HEADERS := $(addprefix apt-pkg/,$(HEADERS)) include $(LIBRARY_H) diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index b0ee04554..46dd22007 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -641,7 +641,7 @@ bool pkgCacheGenerator::FinishCache(OpProgress *Progress) bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same); for (vector::const_iterator A = archs.begin(); A != archs.end(); ++A) { - if (*A == Arch) + if (Arch == 0 || *A == Arch) continue; /* We allow only one installed arch at the time per group, therefore each group member conflicts diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index 94c7fd4af..4e4077feb 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -269,6 +269,10 @@ signed short pkgPolicy::GetPriority(pkgCache::PkgIterator const &Pkg) } return 0; +} +signed short pkgPolicy::GetPriority(pkgCache::PkgFileIterator const &File) +{ + return PFPriority[File->ID]; } /*}}}*/ // PreferenceSection class - Overriding the default TrimRecord method /*{{{*/ diff --git a/apt-pkg/policy.h b/apt-pkg/policy.h index f8b2678de..e7f36d618 100644 --- a/apt-pkg/policy.h +++ b/apt-pkg/policy.h @@ -69,14 +69,13 @@ class pkgPolicy : public pkgDepCache::Policy // Things for manipulating pins void CreatePin(pkgVersionMatch::MatchType Type,string Pkg, string Data,signed short Priority); - inline signed short GetPriority(pkgCache::PkgFileIterator const &File) - {return PFPriority[File->ID];}; - signed short GetPriority(pkgCache::PkgIterator const &Pkg); pkgCache::VerIterator GetMatch(pkgCache::PkgIterator const &Pkg); // Things for the cache interface. virtual pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg); - virtual bool IsImportantDep(pkgCache::DepIterator const &Dep) {return pkgDepCache::Policy::IsImportantDep(Dep);}; + virtual signed short GetPriority(pkgCache::PkgIterator const &Pkg); + virtual signed short GetPriority(pkgCache::PkgFileIterator const &File); + bool InitDefaults(); pkgPolicy(pkgCache *Owner); -- cgit v1.2.3-70-g09d2 From e3674d91d27a7290d2b01e14eb2540e10be9d883 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 30 Mar 2011 22:15:40 +0200 Subject: be able to write solutions, too --- apt-pkg/algorithms.cc | 6 ++++++ apt-pkg/edsp/edspwriter.cc | 20 ++++++++++++++++++++ apt-pkg/edsp/edspwriter.h | 1 + 3 files changed, 27 insertions(+) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 2ca3404a0..35752a5c4 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -748,6 +748,12 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) output = fopen("/tmp/request.log", "w"); edspWriter::WriteRequest(Cache, output); fclose(output); + if (ResolveInternal(BrokenFix) == false) + return false; + output = fopen("/tmp/solution.log", "w"); + edspWriter::WriteSolution(Cache, output); + fclose(output); + return true; } return ResolveInternal(BrokenFix); } diff --git a/apt-pkg/edsp/edspwriter.cc b/apt-pkg/edsp/edspwriter.cc index 38d0d82c5..ea46065c2 100644 --- a/apt-pkg/edsp/edspwriter.cc +++ b/apt-pkg/edsp/edspwriter.cc @@ -125,6 +125,26 @@ bool edspWriter::WriteRequest(pkgDepCache &Cache, FILE* output) if (upgrade.empty() == false) fprintf(output, "Upgrade: %s\n", upgrade.c_str()+2); + return true; +} + /*}}}*/ +// edspWriter::WriteSolution - to the given file descriptor /*{{{*/ +bool edspWriter::WriteSolution(pkgDepCache &Cache, FILE* output) +{ + bool const Debug = _config->FindB("Debug::EDSPWriter::WriteSolution", false); + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + { + if (Cache[Pkg].Delete() == true) + fprintf(output, "Remove: %d\n", Cache.GetCandidateVer(Pkg)->ID); + else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true) + fprintf(output, "Install: %d\n", Cache.GetCandidateVer(Pkg)->ID); + else + continue; + if (Debug == true) + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Cache.GetCandidateVer(Pkg).VerStr()); + fprintf(output, "\n"); + } + return true; } /*}}}*/ diff --git a/apt-pkg/edsp/edspwriter.h b/apt-pkg/edsp/edspwriter.h index 52923ff73..c42dfd398 100644 --- a/apt-pkg/edsp/edspwriter.h +++ b/apt-pkg/edsp/edspwriter.h @@ -14,6 +14,7 @@ class edspWriter /*{{{*/ public: bool static WriteUniverse(pkgDepCache &Cache, FILE* output); bool static WriteRequest(pkgDepCache &Cache, FILE* output); + bool static WriteSolution(pkgDepCache &Cache, FILE* output); }; /*}}}*/ #endif -- cgit v1.2.3-70-g09d2 From d911f277f40fec55b80b3c9cb6e805d39c480b59 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Wed, 30 Mar 2011 22:28:23 +0200 Subject: second draft, addressing David and Michael comments EDSP version 0.2 --- doc/apt-solver-protocol.mdwn | 153 +++++++++++++++++++++++++++++-------------- 1 file changed, 104 insertions(+), 49 deletions(-) diff --git a/doc/apt-solver-protocol.mdwn b/doc/apt-solver-protocol.mdwn index b1435102e..85cd98d62 100644 --- a/doc/apt-solver-protocol.mdwn +++ b/doc/apt-solver-protocol.mdwn @@ -1,6 +1,6 @@ ** TENTATIVE PROPOSAL, VERY VERY VERY DRAFT ** -# APT External Dependency Solver Protocol (EDSP) - version 0.1 +# APT External Dependency Solver Protocol (EDSP) - version 0.2 This document describes the communication protocol between APT and external dependency solvers. The protocol is called APT EDSP, for "APT @@ -13,13 +13,18 @@ External Dependency Solver Protocol". - APT is equipped with its own **internal solver** for dependencies, which is identified by the string `internal`. - **External solver**: an *external* software component able to resolve - dependencies on behalf of APT. Each external solver is identified by - an unique string (other than `internal`) called the solver **name**. - + dependencies on behalf of APT. + At each interaction with APT, a single solver is in use. When there is a total of 2 or more solvers, internals or externals, the user can choose which one to use. +Each solver is identified by an unique string, the **solver +name**. Solver names must be formed using only alphanumeric ASCII +characters, dashes, and underscores; solver names must start with a +lowercase ASCII letter. The special name `internal` denotes APT's +internal solver, is reserved, and cannot be used by external solvers. + ## Installation @@ -32,8 +37,8 @@ Each file under `/usr/lib/apt/solvers` corresponding to an external solver must be executable. No non-solver files must be installed under `/usr/lib/apt/solvers`, so -that an index of available external solvers can be obtained by simply -looking at the content of that directory. +that an index of available external solvers can be obtained by listing +the content of that directory. ## Configuration @@ -49,9 +54,10 @@ configuration documentation for more, and more up to date, information. respected (as the internal solver does) or can be slightly deviated from. Defaults to `yes`. -- **APT::Solver::Preferences**: solver-specific user preferences used - during dependency solving. Check your solver documentation for what is - supported here. Default to empty. +- **APT::Solver::NAME::Preferences** (where NAME is a solver name): + solver-specific user preference string used during dependency solving, + when the solver NAME is in use. Check solver-specific documentation + for what is supported here. Defaults to the empty string. ## Protocol @@ -74,13 +80,15 @@ via the file descriptors: **stdin** (standard input) and **stdout** therefore use stderr to dump debugging information that could be inspected separately. -After invocation, the protocol passes through 3 separate phases: +After invocation, the protocol passes through a sequence of phases: -1. APT send to the solver a dependency solving **scenario** -2. The solver solves dependencies. No communication with APT happens - during this phase. -3. The solver sends back to APT an **answer**, i.e. either a *solution* +1. APT invokes the external solver +2. APT send to the solver a dependency solving **scenario** +3. The solver solves dependencies. During this phase the solver may + send, repeatedly, **progress** information to APT. +4. The solver sends back to APT an **answer**, i.e. either a *solution* or an *error* report. +5. The external solver exits ### Scenario @@ -104,7 +112,7 @@ and followed by a mixture of action and preference fields. The value of the **Request:** field is a string describing the EDSP protocol which will be used to communicate. At present, the string must -be `EDSP 0.1`. +be `EDSP 0.2`. a unique request identifier, such as an UUID. Request fields are mainly used to identify the beginning of a @@ -154,32 +162,42 @@ A package universe is a list of Deb 822 stanzas, one per package, called **package stanzas**. Each package stanzas starts with a Package field. The following fields are supported in package stanzas: -- All fields supported by Debian Packages file (see one of the - `/var/lib/apt/lists/*Packages` file for an example), *with the - exception of the Description field* that is not allowed. +- All fields contained in the dpkg database, with the exception of + fields marked as "internal" (see the manpage `dpkg-query (1)`). Among + those fields, the following are mandatory for all package stanzas: + Package, Version, Architecture. - Among those fields, the following are mandatory: Package, Version, - Architecture. + It is recommended not to pass the Description field to external + solvers or, alternatively, to trim it to the short description only. -- **Installed:** (optional, default value `no`). Allowed values: `yes`, +- **Installed:** (optional, defaults to `no`). Allowed values: `yes`, `no`. When set to `yes`, the corresponding package is currently installed. + + Note: the Status field present in the dpkg database must not be passed + to the external solver, as it's an internal dpkg field. Installed and + other fields permit to encode the most relevant aspects of Status in + communications with solvers. - ##TODO## changed with respect to current prototype, which uses Status +- **Hold:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, the corresponding package is marked as "on + hold" by dpkg. - **APT-ID:** (mandatory). Unique package identifier, according to APT. -- **APT-Pin:** (mandatory). Must be a non-negative integer. Package pin - value, according to current APT policy. +- **APT-Pin:** (mandatory). Must be an integer. Package pin value, + according to APT policy. -- **APT-Candidate:** (optional, default value `no`). Allowed values: - `yes`, `no`. When set to `yes`, the corresponding package is granted - to have the highest pinning value among all the packages having the - same name. - - ##TODO## what about multi-arch? is the pin value granted to be the - higest also across different architectures? - +- **APT-Candidate:** (optional, defaults to `no`). Allowed values: + `yes`, `no`. When set to `yes`, the corresponding package is the APT + candidate for installation among all available packages with the same + name. + +- **APT-Automatic:** (optional, defaults to `no`). Allowed values: + `yes`, `no`. When set to `yes`, the corresponding package is marked by + APT as automatic installed. Note that automatic installed packages + should be removed by the solver only when the Autoremove action is + requested (see Request section). ### Answer @@ -189,7 +207,7 @@ An answer from the external solver to APT is either a *solution* or an The following invariant on **exit codes** must hold true. When the external solver is *able to find a solution*, it will write the solution to standard output and then exit with an exit code of 0. When the -external solver is *unable to find a solution* (and aware of that), it +external solver is *unable to find a solution* (and s aware of that), it will write an error to standard output and then exit with an exit code of 0. An exit code other than 0 will be interpreted as a solver crash with no meaningful error about dependency resolution to convey to the @@ -198,21 +216,29 @@ user. #### Solution -A solution is a single Deb 822 stanza, starting with the field -Solution. The following fields are supported in solution stanzas: +A solution is a list of Deb 822 stanzas. Each of them is either an +install stanza, telling APT to install a specific package, or a remove +stanza, telling APT to remove one. + +An **install stanza** starts with an Install field and supports the +following fields: + +- **Install:** (mandatory). The value is a package identifier, + referencing one of the package stanzas of the package universe via its + APT-ID field. -- **Solution:** (mandatory). The value of this field is ignored, - although it should be a unique solution identifier, such as a UUID. +- All fields supported by package stanzas. -- **Install:** (optional, defaults to the empty string). A space - separated list of strings of the form `PACKAGE=VERSION` where - `PACKAGE` is a package name and `VERSION` is an available version of - that package. The list denotes a set of packages that must be - installed to satisfy user request. +**Remove stanzas** are similar to install stanzas, but have **Remove** +fields instead of Install fields. -- **Remove:** (optional, defaults to the empty string). Same as Install, - but denoting a set of packages that must be removed to satisfy user - request. +In terms of expressivity, install and remove stanzas can carry one +single field each, as APT-IDs are enough to pinpoint packages to be +installed/removed. Nonetheless, for protocol readability, it is +recommended that solvers either add unconditionally the fields Package, +Version, and Architecture to all install/remove stanzas or, +alternatively, that they support a `--verbose` command line flag that +explicitly enables the output of those fields in solutions. #### Error @@ -225,11 +251,40 @@ following fields are supported in error stanzas: - **Message:** (mandatory). The value of this field is a text string, meant to be read by humans, that explains the cause of the solver - error. + error. Message fields might be multi-line, like the Description field + in the dpkg database. The first line conveys a short message, which + can be explained in more details using subsequent lines. + + +### Progress + +During dependency solving, an external solver may send progress +information to APT using **progress stanzas**. A progress stanza starts +with the Progress field and might contain the following fields: + +- **Progress:** (mandatory). The value of this field is a date and time + timestamp, in RFC 2822 format. The timestamp provides a time + annotation for the progress report. + +- **Percentage:** (optional). An integer from 0 to 100, representing the + completion of the dependency solving process, as declared by the + solver. + +- **Message:** (optional). A textual message, meant to be read by the + APT user, telling what is going on within the dependency solving + (e.g. the current phase of dependency solving, as declared by the + solver). + + +# Future extensions + +Potential future extensions to this protocol, listed in no specific +order, include: - ##TODO## can we support line continuations throughout this format? If - yes, they might come handy both for error stanzas and for solution - stanzas (which might have very long install/remove lines) +- fixed error types to identify common failures across solvers and + enable APT to translate error messages +- structured error data to explain failures in terms of packages and + dependencies ** TENTATIVE PROPOSAL, VERY VERY VERY DRAFT ** -- cgit v1.2.3-70-g09d2 From 41ceaf02483a826d5797cf0bd61bd7b6013733a8 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 31 Mar 2011 11:47:01 +0200 Subject: add a special scenario filename for using stdin --- apt-pkg/edsp/edspindexfile.cc | 6 +++++- apt-pkg/edsp/edspsystem.cc | 11 +++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc index 5a9d5aacd..366325d0f 100644 --- a/apt-pkg/edsp/edspindexfile.cc +++ b/apt-pkg/edsp/edspindexfile.cc @@ -28,7 +28,11 @@ edspIndex::edspIndex(string File) : debStatusIndex(File) // StatusIndex::Merge - Load the index file into a cache /*{{{*/ bool edspIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const { - FileFd Pkg(File,FileFd::ReadOnlyGzip); + FileFd Pkg; + if (File != "stdin") + Pkg.Open(File, FileFd::ReadOnly); + else + Pkg.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly); if (_error->PendingError() == true) return false; edspListParser Parser(&Pkg); diff --git a/apt-pkg/edsp/edspsystem.cc b/apt-pkg/edsp/edspsystem.cc index 579ffc656..c8e417b1d 100644 --- a/apt-pkg/edsp/edspsystem.cc +++ b/apt-pkg/edsp/edspsystem.cc @@ -86,8 +86,10 @@ bool edspSystem::ArchiveSupported(const char *Type) // System::Score - Determine if we should use the edsp system /*{{{*/ signed edspSystem::Score(Configuration const &Cnf) { + if (Cnf.Find("Dir::State::universe", "") == "stdin") + return 1000; if (FileExists(Cnf.FindFile("Dir::State::universe","")) == true) - return 1000; + return 1000; return -1000; } /*}}}*/ @@ -95,7 +97,12 @@ signed edspSystem::Score(Configuration const &Cnf) bool edspSystem::AddStatusFiles(vector &List) { if (StatusFile == 0) - StatusFile = new edspIndex(_config->FindFile("Dir::State::universe")); + { + if (_config->Find("Dir::State::universe", "") == "stdin") + StatusFile = new edspIndex("stdin"); + else + StatusFile = new edspIndex(_config->FindFile("Dir::State::universe")); + } List.push_back(StatusFile); return true; } -- cgit v1.2.3-70-g09d2 From 825780ef6c39e9fd89f761a8a9c873c848fb894d Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Thu, 31 Mar 2011 11:49:34 +0200 Subject: add indicative Autoremove stanzas in solutions as suggested by David EDSP version 0.3 --- doc/apt-solver-protocol.mdwn | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/doc/apt-solver-protocol.mdwn b/doc/apt-solver-protocol.mdwn index 85cd98d62..4c520b037 100644 --- a/doc/apt-solver-protocol.mdwn +++ b/doc/apt-solver-protocol.mdwn @@ -1,6 +1,6 @@ ** TENTATIVE PROPOSAL, VERY VERY VERY DRAFT ** -# APT External Dependency Solver Protocol (EDSP) - version 0.2 +# APT External Dependency Solver Protocol (EDSP) - version 0.3 This document describes the communication protocol between APT and external dependency solvers. The protocol is called APT EDSP, for "APT @@ -112,7 +112,7 @@ and followed by a mixture of action and preference fields. The value of the **Request:** field is a string describing the EDSP protocol which will be used to communicate. At present, the string must -be `EDSP 0.2`. +be `EDSP 0.3`. a unique request identifier, such as an UUID. Request fields are mainly used to identify the beginning of a @@ -216,9 +216,11 @@ user. #### Solution -A solution is a list of Deb 822 stanzas. Each of them is either an -install stanza, telling APT to install a specific package, or a remove -stanza, telling APT to remove one. +A solution is a list of Deb 822 stanzas. Each of them could be an +install stanza (telling APT to install a specific package), a remove +stanza (telling APT to remove one), or an autoremove stanza (telling APT +about the *future* possibility of removing a package using the +Autoremove action). An **install stanza** starts with an Install field and supports the following fields: @@ -232,6 +234,14 @@ following fields: **Remove stanzas** are similar to install stanzas, but have **Remove** fields instead of Install fields. +**Autoremove stanzas** are similar to install stanzas, but have +**Autoremove** fields instead of Install fields. Autoremove stanzas +should be output so that APT can inform the user of which packages they +can now autoremove, as a consequence of the executed action. However, +this protocol makes no assumption on the fact that a subsequent +invocation of an Autoremove action will actually remove the very same +packages indicated by Autoremove stanzas in the former solution. + In terms of expressivity, install and remove stanzas can carry one single field each, as APT-IDs are enough to pinpoint packages to be installed/removed. Nonetheless, for protocol readability, it is -- cgit v1.2.3-70-g09d2 From e0a78caad639a3fa8d50edf3374a06805ab86315 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 31 Mar 2011 11:58:24 +0200 Subject: rename the 'universe' to 'scenario' to reflect the naming in the draft --- apt-pkg/algorithms.cc | 4 ++-- apt-pkg/edsp/edspindexfile.cc | 6 +++--- apt-pkg/edsp/edspindexfile.h | 2 +- apt-pkg/edsp/edspsystem.cc | 10 +++++----- apt-pkg/edsp/edspwriter.cc | 2 +- apt-pkg/edsp/edspwriter.h | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 35752a5c4..b55ff2897 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -742,8 +742,8 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) std::string const solver = _config->Find("APT::Solver::Name", "internal"); if (solver != "internal") { - FILE* output = fopen("/tmp/universe.log", "w"); - edspWriter::WriteUniverse(Cache, output); + FILE* output = fopen("/tmp/scenario.log", "w"); + edspWriter::WriteScenario(Cache, output); fclose(output); output = fopen("/tmp/request.log", "w"); edspWriter::WriteRequest(Cache, output); diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc index 366325d0f..f5881e663 100644 --- a/apt-pkg/edsp/edspindexfile.cc +++ b/apt-pkg/edsp/edspindexfile.cc @@ -1,7 +1,7 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - The universe file is designed to work as an intermediate file between + The scenario file is designed to work as an intermediate file between APT and the resolver. Its on propose very similar to a dpkg status file ##################################################################### */ /*}}}*/ @@ -51,7 +51,7 @@ bool edspIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const return _error->Errno("fstat","Failed to stat"); CFile->Size = St.st_size; CFile->mtime = St.st_mtime; - CFile->Archive = Gen.WriteUniqString("universe"); + CFile->Archive = Gen.WriteUniqString("edsp::scenario"); if (Gen.MergeList(Parser) == false) return _error->Error("Problem with MergeList %s",File.c_str()); @@ -67,7 +67,7 @@ class edspIFType: public pkgIndexFile::Type // we don't have a record parser for this type as the file is not presistent return NULL; }; - edspIFType() {Label = "APT universe file";}; + edspIFType() {Label = "EDSP scenario file";}; }; static edspIFType _apt_Universe; diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h index 4ef7787e7..87c06557c 100644 --- a/apt-pkg/edsp/edspindexfile.h +++ b/apt-pkg/edsp/edspindexfile.h @@ -1,7 +1,7 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - The universe file is designed to work as an intermediate file between + The scenario file is designed to work as an intermediate file between APT and the resolver. Its on propose very similar to a dpkg status file ##################################################################### */ /*}}}*/ diff --git a/apt-pkg/edsp/edspsystem.cc b/apt-pkg/edsp/edspsystem.cc index c8e417b1d..3a0494e19 100644 --- a/apt-pkg/edsp/edspsystem.cc +++ b/apt-pkg/edsp/edspsystem.cc @@ -2,7 +2,7 @@ // Description /*{{{*/ /* ###################################################################### - This system provides the abstraction to use the universe file as the + This system provides the abstraction to use the scenario file as the only source of package information to be able to feed the created file back to APT for its own consumption (eat your own dogfood). @@ -86,9 +86,9 @@ bool edspSystem::ArchiveSupported(const char *Type) // System::Score - Determine if we should use the edsp system /*{{{*/ signed edspSystem::Score(Configuration const &Cnf) { - if (Cnf.Find("Dir::State::universe", "") == "stdin") + if (Cnf.Find("Dir::State::edsp::scenario", "") == "stdin") return 1000; - if (FileExists(Cnf.FindFile("Dir::State::universe","")) == true) + if (FileExists(Cnf.FindFile("Dir::State::edsp::scenario","")) == true) return 1000; return -1000; } @@ -98,10 +98,10 @@ bool edspSystem::AddStatusFiles(vector &List) { if (StatusFile == 0) { - if (_config->Find("Dir::State::universe", "") == "stdin") + if (_config->Find("Dir::State::edsp::scenario", "") == "stdin") StatusFile = new edspIndex("stdin"); else - StatusFile = new edspIndex(_config->FindFile("Dir::State::universe")); + StatusFile = new edspIndex(_config->FindFile("Dir::State::edsp::scenario")); } List.push_back(StatusFile); return true; diff --git a/apt-pkg/edsp/edspwriter.cc b/apt-pkg/edsp/edspwriter.cc index ea46065c2..5c741c45d 100644 --- a/apt-pkg/edsp/edspwriter.cc +++ b/apt-pkg/edsp/edspwriter.cc @@ -18,7 +18,7 @@ /*}}}*/ // edspWriter::WriteUniverse - to the given file descriptor /*{{{*/ -bool edspWriter::WriteUniverse(pkgDepCache &Cache, FILE* output) +bool edspWriter::WriteScenario(pkgDepCache &Cache, FILE* output) { // we could use pkgCache::DepType and ::Priority, but these would be lokalized strings… const char * const PrioMap[] = {0, "important", "required", "standard", diff --git a/apt-pkg/edsp/edspwriter.h b/apt-pkg/edsp/edspwriter.h index c42dfd398..2b417956e 100644 --- a/apt-pkg/edsp/edspwriter.h +++ b/apt-pkg/edsp/edspwriter.h @@ -12,7 +12,7 @@ class edspWriter /*{{{*/ { public: - bool static WriteUniverse(pkgDepCache &Cache, FILE* output); + bool static WriteScenario(pkgDepCache &Cache, FILE* output); bool static WriteRequest(pkgDepCache &Cache, FILE* output); bool static WriteSolution(pkgDepCache &Cache, FILE* output); }; -- cgit v1.2.3-70-g09d2 From b195733d0f3476ae92f2689ba5c584a69171f170 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 31 Mar 2011 12:17:39 +0200 Subject: parse the state of the package from the scenario file correctly --- apt-pkg/edsp/edsplistparser.cc | 38 ++++++++------------------------------ 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc index 3e57ea822..913455efa 100644 --- a/apt-pkg/edsp/edsplistparser.cc +++ b/apt-pkg/edsp/edsplistparser.cc @@ -63,40 +63,18 @@ unsigned short edspListParser::VersionHash() bool edspListParser::ParseStatus(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver) { - const char *Start; - const char *Stop; - if (Section.Find("Status",Start,Stop) == false) - return true; - - // UsePackage() is responsible for setting the flag in the default case - bool const static essential = _config->Find("pkgCacheGen::Essential", "") == "installed"; - if (essential == true && - Section.FindFlag("Essential",Pkg->Flags,pkgCache::Flag::Essential) == false) + if (Section.FindFlag("Hold",Pkg->Flags,pkgCache::State::Installed) == false) return false; - // Isolate the first word - const char *I = Start; - for(; I < Stop && *I != ' '; I++); - - // Process the flag field - WordList StatusList[] = {{"installed",pkgCache::State::Installed}, - {}}; - if (GrabWord(string(Start,I-Start),StatusList,Pkg->CurrentState) == false) - return _error->Error("Malformed Status line"); - - /* A Status line marks the package as indicating the current - version as well. Only if it is actually installed.. Otherwise - the interesting dpkg handling of the status file creates bogus - entries. */ - if (!(Pkg->CurrentState == pkgCache::State::NotInstalled || - Pkg->CurrentState == pkgCache::State::ConfigFiles)) + unsigned long state = 0; + if (Section.FindFlag("Installed",state,pkgCache::State::Installed) == false) + return false; + if (state != 0) { - if (Ver.end() == true) - _error->Warning("Encountered status field in a non-version description"); - else - Pkg->CurrentVer = Ver.Index(); + Pkg->CurrentState = pkgCache::State::Installed; + Pkg->CurrentVer = Ver.Index(); } - + return true; } /*}}}*/ -- cgit v1.2.3-70-g09d2 From 85bcab87a3c6f8d4b1369a5a4bd5a73a28f41dce Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 31 Mar 2011 14:50:34 +0200 Subject: strip the Dir::state from the config name as it will never be there --- apt-pkg/edsp/edspsystem.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apt-pkg/edsp/edspsystem.cc b/apt-pkg/edsp/edspsystem.cc index 3a0494e19..ac0bb8beb 100644 --- a/apt-pkg/edsp/edspsystem.cc +++ b/apt-pkg/edsp/edspsystem.cc @@ -86,9 +86,9 @@ bool edspSystem::ArchiveSupported(const char *Type) // System::Score - Determine if we should use the edsp system /*{{{*/ signed edspSystem::Score(Configuration const &Cnf) { - if (Cnf.Find("Dir::State::edsp::scenario", "") == "stdin") + if (Cnf.Find("edsp::scenario", "") == "stdin") return 1000; - if (FileExists(Cnf.FindFile("Dir::State::edsp::scenario","")) == true) + if (FileExists(Cnf.FindFile("edsp::scenario","")) == true) return 1000; return -1000; } @@ -98,10 +98,10 @@ bool edspSystem::AddStatusFiles(vector &List) { if (StatusFile == 0) { - if (_config->Find("Dir::State::edsp::scenario", "") == "stdin") + if (_config->Find("edsp::scenario", "") == "stdin") StatusFile = new edspIndex("stdin"); else - StatusFile = new edspIndex(_config->FindFile("Dir::State::edsp::scenario")); + StatusFile = new edspIndex(_config->FindFile("edsp::scenario")); } List.push_back(StatusFile); return true; -- cgit v1.2.3-70-g09d2 From 29099cb6855af2e465d26e888160e4f97bda4f0b Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 31 Mar 2011 14:56:10 +0200 Subject: add the methods we will need to write to make working with EDSP possible --- apt-pkg/edsp/edspwriter.cc | 12 +++++++++++- apt-pkg/edsp/edspwriter.h | 14 +++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/apt-pkg/edsp/edspwriter.cc b/apt-pkg/edsp/edspwriter.cc index 5c741c45d..2f6bde5a1 100644 --- a/apt-pkg/edsp/edspwriter.cc +++ b/apt-pkg/edsp/edspwriter.cc @@ -17,7 +17,7 @@ #include /*}}}*/ -// edspWriter::WriteUniverse - to the given file descriptor /*{{{*/ +// edspWriter::WriteScenario - to the given file descriptor /*{{{*/ bool edspWriter::WriteScenario(pkgDepCache &Cache, FILE* output) { // we could use pkgCache::DepType and ::Priority, but these would be lokalized strings… @@ -128,6 +128,15 @@ bool edspWriter::WriteRequest(pkgDepCache &Cache, FILE* output) return true; } /*}}}*/ +bool edspWriter::ReadResponse(FILE* input, pkgDepCache &Cache) { return false; } + +bool edspWriter::ReadRequest(FILE* input, std::list &install, + std::list &remove) +{ return false; } +bool edspWriter::ApplyRequest(std::list const &install, + std::list const &remove, + pkgDepCache &Cache) +{ return false; } // edspWriter::WriteSolution - to the given file descriptor /*{{{*/ bool edspWriter::WriteSolution(pkgDepCache &Cache, FILE* output) { @@ -148,3 +157,4 @@ bool edspWriter::WriteSolution(pkgDepCache &Cache, FILE* output) return true; } /*}}}*/ +bool edspWriter::WriteError(std::string const &message, FILE* output) { return false; } diff --git a/apt-pkg/edsp/edspwriter.h b/apt-pkg/edsp/edspwriter.h index 2b417956e..c5eed788f 100644 --- a/apt-pkg/edsp/edspwriter.h +++ b/apt-pkg/edsp/edspwriter.h @@ -9,12 +9,24 @@ #include +#include + class edspWriter /*{{{*/ { public: - bool static WriteScenario(pkgDepCache &Cache, FILE* output); bool static WriteRequest(pkgDepCache &Cache, FILE* output); + bool static WriteScenario(pkgDepCache &Cache, FILE* output); + bool static ReadResponse(FILE* input, pkgDepCache &Cache); + + // ReadScenario is provided by the listparser infrastructure + bool static ReadRequest(FILE* input, std::list &install, + std::list &remove); + bool static ApplyRequest(std::list const &install, + std::list const &remove, + pkgDepCache &Cache); bool static WriteSolution(pkgDepCache &Cache, FILE* output); + bool static WriteError(std::string const &message, FILE* output); + }; /*}}}*/ #endif -- cgit v1.2.3-70-g09d2 From c3b851268e6e900be2bf0bd715435db9010fd591 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 31 Mar 2011 15:10:13 +0200 Subject: rename edspwriter to straight edsp in toplevel as it does more than just writing stuff… it also reads and can work for both: - APT talking to an external solver - an external solver (understanding EDSP) talking to APT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apt-pkg/algorithms.cc | 8 +-- apt-pkg/edsp.cc | 160 +++++++++++++++++++++++++++++++++++++++++++++ apt-pkg/edsp.h | 32 +++++++++ apt-pkg/edsp/edspwriter.cc | 160 --------------------------------------------- apt-pkg/edsp/edspwriter.h | 32 --------- apt-pkg/makefile | 9 ++- 6 files changed, 200 insertions(+), 201 deletions(-) create mode 100644 apt-pkg/edsp.cc create mode 100644 apt-pkg/edsp.h delete mode 100644 apt-pkg/edsp/edspwriter.cc delete mode 100644 apt-pkg/edsp/edspwriter.h diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index b55ff2897..00f558420 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include @@ -743,15 +743,15 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) if (solver != "internal") { FILE* output = fopen("/tmp/scenario.log", "w"); - edspWriter::WriteScenario(Cache, output); + EDSP::WriteScenario(Cache, output); fclose(output); output = fopen("/tmp/request.log", "w"); - edspWriter::WriteRequest(Cache, output); + EDSP::WriteRequest(Cache, output); fclose(output); if (ResolveInternal(BrokenFix) == false) return false; output = fopen("/tmp/solution.log", "w"); - edspWriter::WriteSolution(Cache, output); + EDSP::WriteSolution(Cache, output); fclose(output); return true; } diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc new file mode 100644 index 000000000..1af5aed53 --- /dev/null +++ b/apt-pkg/edsp.cc @@ -0,0 +1,160 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + Set of methods to help writing and reading everything needed for EDSP + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include +#include +#include +#include +#include + +#include +#include + +#include + /*}}}*/ + +// EDSP::WriteScenario - to the given file descriptor /*{{{*/ +bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output) +{ + // we could use pkgCache::DepType and ::Priority, but these would be lokalized strings… + const char * const PrioMap[] = {0, "important", "required", "standard", + "optional", "extra"}; + const char * const DepMap[] = {"", "Depends", "PreDepends", "Suggests", + "Recommends" , "Conflicts", "Replaces", + "Obsoletes", "Breaks", "Enhances"}; + + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + { + for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) + { + fprintf(output, "Package: %s\n", Pkg.Name()); + fprintf(output, "Architecture: %s\n", Ver.Arch()); + fprintf(output, "Version: %s\n", Ver.VerStr()); + if (Pkg.CurrentVer() == Ver) + fprintf(output, "Installed: yes\n"); + if (Pkg->SelectedState == pkgCache::State::Hold) + fprintf(output, "Hold: yes\n"); + fprintf(output, "APT-ID: %u\n", Ver->ID); + fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); + if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) + fprintf(output, "Essential: yes\n"); + fprintf(output, "Section: %s\n", Ver.Section()); + if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) + fprintf(output, "Multi-Arch: allowed\n"); + else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) + fprintf(output, "Multi-Arch: foreign\n"); + else if (Ver->MultiArch == pkgCache::Version::Same) + fprintf(output, "Multi-Arch: same\n"); + signed short Pin = std::numeric_limits::min(); + for (pkgCache::VerFileIterator File = Ver.FileList(); File.end() == false; ++File) { + signed short const p = Cache.GetPolicy().GetPriority(File.File()); + if (Pin < p) + Pin = p; + } + fprintf(output, "APT-Pin: %d\n", Pin); + if (Cache.GetCandidateVer(Pkg) == Ver) + fprintf(output, "APT-Candidate: yes\n"); + if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) + fprintf(output, "APT-Automatic: yes\n"); + std::string dependencies[pkgCache::Dep::Enhances + 1]; + bool orGroup = false; + for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) + { + // Ignore implicit dependencies for multiarch here + if (strcmp(Pkg.Arch(), Dep.TargetPkg().Arch()) != 0) + continue; + if (orGroup == false) + dependencies[Dep->Type].append(", "); + dependencies[Dep->Type].append(Dep.TargetPkg().Name()); + if (Dep->Version != 0) + dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")"); + if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) + { + dependencies[Dep->Type].append(" | "); + orGroup = true; + } + else + orGroup = false; + } + for (int i = 1; i < pkgCache::Dep::Enhances + 1; ++i) + if (dependencies[i].empty() == false) + fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2); + string provides; + for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) + { + // Ignore implicit provides for multiarch here + if (strcmp(Pkg.Arch(), Prv.ParentPkg().Arch()) != 0 || strcmp(Pkg.Name(),Prv.Name()) == 0) + continue; + provides.append(", ").append(Prv.Name()); + } + if (provides.empty() == false) + fprintf(output, "Provides: %s\n", provides.c_str()+2); + + + fprintf(output, "\n"); + } + } + return true; +} + /*}}}*/ +// EDSP::WriteRequest - to the given file descriptor /*{{{*/ +bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output) +{ + string del, inst, upgrade; + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + { + string* req; + if (Cache[Pkg].Delete() == true) + req = &del; + else if (Cache[Pkg].NewInstall() == true) + req = &inst; + else if (Cache[Pkg].Upgrade() == true) + req = &upgrade; + else + continue; + req->append(", ").append(Pkg.FullName()); + } + if (del.empty() == false) + fprintf(output, "Remove: %s\n", del.c_str()+2); + if (inst.empty() == false) + fprintf(output, "Install: %s\n", inst.c_str()+2); + if (upgrade.empty() == false) + fprintf(output, "Upgrade: %s\n", upgrade.c_str()+2); + + return true; +} + /*}}}*/ +bool EDSP::ReadResponse(FILE* input, pkgDepCache &Cache) { return false; } + +bool EDSP::ReadRequest(FILE* input, std::list &install, + std::list &remove) +{ return false; } +bool EDSP::ApplyRequest(std::list const &install, + std::list const &remove, + pkgDepCache &Cache) +{ return false; } +// EDSP::WriteSolution - to the given file descriptor /*{{{*/ +bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) +{ + bool const Debug = _config->FindB("Debug::EDSPWriter::WriteSolution", false); + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + { + if (Cache[Pkg].Delete() == true) + fprintf(output, "Remove: %d\n", Cache.GetCandidateVer(Pkg)->ID); + else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true) + fprintf(output, "Install: %d\n", Cache.GetCandidateVer(Pkg)->ID); + else + continue; + if (Debug == true) + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Cache.GetCandidateVer(Pkg).VerStr()); + fprintf(output, "\n"); + } + + return true; +} + /*}}}*/ +bool EDSP::WriteError(std::string const &message, FILE* output) { return false; } diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h new file mode 100644 index 000000000..ef137b8f6 --- /dev/null +++ b/apt-pkg/edsp.h @@ -0,0 +1,32 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + Set of methods to help writing and reading everything needed for EDSP + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSP_H +#define PKGLIB_EDSP_H + +#include + +#include + +class EDSP /*{{{*/ +{ +public: + bool static WriteRequest(pkgDepCache &Cache, FILE* output); + bool static WriteScenario(pkgDepCache &Cache, FILE* output); + bool static ReadResponse(FILE* input, pkgDepCache &Cache); + + // ReadScenario is provided by the listparser infrastructure + bool static ReadRequest(FILE* input, std::list &install, + std::list &remove); + bool static ApplyRequest(std::list const &install, + std::list const &remove, + pkgDepCache &Cache); + bool static WriteSolution(pkgDepCache &Cache, FILE* output); + bool static WriteError(std::string const &message, FILE* output); + +}; + /*}}}*/ +#endif diff --git a/apt-pkg/edsp/edspwriter.cc b/apt-pkg/edsp/edspwriter.cc deleted file mode 100644 index 2f6bde5a1..000000000 --- a/apt-pkg/edsp/edspwriter.cc +++ /dev/null @@ -1,160 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -/* ###################################################################### - Set of methods to help writing and reading everything needed for EDSP - ##################################################################### */ - /*}}}*/ -// Include Files /*{{{*/ -#include -#include -#include -#include -#include - -#include -#include - -#include - /*}}}*/ - -// edspWriter::WriteScenario - to the given file descriptor /*{{{*/ -bool edspWriter::WriteScenario(pkgDepCache &Cache, FILE* output) -{ - // we could use pkgCache::DepType and ::Priority, but these would be lokalized strings… - const char * const PrioMap[] = {0, "important", "required", "standard", - "optional", "extra"}; - const char * const DepMap[] = {"", "Depends", "PreDepends", "Suggests", - "Recommends" , "Conflicts", "Replaces", - "Obsoletes", "Breaks", "Enhances"}; - - for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) - { - for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) - { - fprintf(output, "Package: %s\n", Pkg.Name()); - fprintf(output, "Architecture: %s\n", Ver.Arch()); - fprintf(output, "Version: %s\n", Ver.VerStr()); - if (Pkg.CurrentVer() == Ver) - fprintf(output, "Installed: yes\n"); - if (Pkg->SelectedState == pkgCache::State::Hold) - fprintf(output, "Hold: yes\n"); - fprintf(output, "APT-ID: %u\n", Ver->ID); - fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); - if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) - fprintf(output, "Essential: yes\n"); - fprintf(output, "Section: %s\n", Ver.Section()); - if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) - fprintf(output, "Multi-Arch: allowed\n"); - else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) - fprintf(output, "Multi-Arch: foreign\n"); - else if (Ver->MultiArch == pkgCache::Version::Same) - fprintf(output, "Multi-Arch: same\n"); - signed short Pin = std::numeric_limits::min(); - for (pkgCache::VerFileIterator File = Ver.FileList(); File.end() == false; ++File) { - signed short const p = Cache.GetPolicy().GetPriority(File.File()); - if (Pin < p) - Pin = p; - } - fprintf(output, "APT-Pin: %d\n", Pin); - if (Cache.GetCandidateVer(Pkg) == Ver) - fprintf(output, "APT-Candidate: yes\n"); - if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) - fprintf(output, "APT-Automatic: yes\n"); - std::string dependencies[pkgCache::Dep::Enhances + 1]; - bool orGroup = false; - for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) - { - // Ignore implicit dependencies for multiarch here - if (strcmp(Pkg.Arch(), Dep.TargetPkg().Arch()) != 0) - continue; - if (orGroup == false) - dependencies[Dep->Type].append(", "); - dependencies[Dep->Type].append(Dep.TargetPkg().Name()); - if (Dep->Version != 0) - dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")"); - if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) - { - dependencies[Dep->Type].append(" | "); - orGroup = true; - } - else - orGroup = false; - } - for (int i = 1; i < pkgCache::Dep::Enhances + 1; ++i) - if (dependencies[i].empty() == false) - fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2); - string provides; - for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) - { - // Ignore implicit provides for multiarch here - if (strcmp(Pkg.Arch(), Prv.ParentPkg().Arch()) != 0 || strcmp(Pkg.Name(),Prv.Name()) == 0) - continue; - provides.append(", ").append(Prv.Name()); - } - if (provides.empty() == false) - fprintf(output, "Provides: %s\n", provides.c_str()+2); - - - fprintf(output, "\n"); - } - } - return true; -} - /*}}}*/ -// edspWriter::WriteRequest - to the given file descriptor /*{{{*/ -bool edspWriter::WriteRequest(pkgDepCache &Cache, FILE* output) -{ - string del, inst, upgrade; - for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) - { - string* req; - if (Cache[Pkg].Delete() == true) - req = &del; - else if (Cache[Pkg].NewInstall() == true) - req = &inst; - else if (Cache[Pkg].Upgrade() == true) - req = &upgrade; - else - continue; - req->append(", ").append(Pkg.FullName()); - } - if (del.empty() == false) - fprintf(output, "Remove: %s\n", del.c_str()+2); - if (inst.empty() == false) - fprintf(output, "Install: %s\n", inst.c_str()+2); - if (upgrade.empty() == false) - fprintf(output, "Upgrade: %s\n", upgrade.c_str()+2); - - return true; -} - /*}}}*/ -bool edspWriter::ReadResponse(FILE* input, pkgDepCache &Cache) { return false; } - -bool edspWriter::ReadRequest(FILE* input, std::list &install, - std::list &remove) -{ return false; } -bool edspWriter::ApplyRequest(std::list const &install, - std::list const &remove, - pkgDepCache &Cache) -{ return false; } -// edspWriter::WriteSolution - to the given file descriptor /*{{{*/ -bool edspWriter::WriteSolution(pkgDepCache &Cache, FILE* output) -{ - bool const Debug = _config->FindB("Debug::EDSPWriter::WriteSolution", false); - for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) - { - if (Cache[Pkg].Delete() == true) - fprintf(output, "Remove: %d\n", Cache.GetCandidateVer(Pkg)->ID); - else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true) - fprintf(output, "Install: %d\n", Cache.GetCandidateVer(Pkg)->ID); - else - continue; - if (Debug == true) - fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Cache.GetCandidateVer(Pkg).VerStr()); - fprintf(output, "\n"); - } - - return true; -} - /*}}}*/ -bool edspWriter::WriteError(std::string const &message, FILE* output) { return false; } diff --git a/apt-pkg/edsp/edspwriter.h b/apt-pkg/edsp/edspwriter.h deleted file mode 100644 index c5eed788f..000000000 --- a/apt-pkg/edsp/edspwriter.h +++ /dev/null @@ -1,32 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -/* ###################################################################### - Set of methods to help writing and reading everything needed for EDSP - ##################################################################### */ - /*}}}*/ -#ifndef PKGLIB_EDSPWRITER_H -#define PKGLIB_EDSPWRITER_H - -#include - -#include - -class edspWriter /*{{{*/ -{ -public: - bool static WriteRequest(pkgDepCache &Cache, FILE* output); - bool static WriteScenario(pkgDepCache &Cache, FILE* output); - bool static ReadResponse(FILE* input, pkgDepCache &Cache); - - // ReadScenario is provided by the listparser infrastructure - bool static ReadRequest(FILE* input, std::list &install, - std::list &remove); - bool static ApplyRequest(std::list const &install, - std::list const &remove, - pkgDepCache &Cache); - bool static WriteSolution(pkgDepCache &Cache, FILE* output); - bool static WriteError(std::string const &message, FILE* output); - -}; - /*}}}*/ -#endif diff --git a/apt-pkg/makefile b/apt-pkg/makefile index a7880e81c..e6bcf8524 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -35,7 +35,7 @@ SOURCE+= pkgcache.cc version.cc depcache.cc \ srcrecords.cc cachefile.cc versionmatch.cc policy.cc \ pkgsystem.cc indexfile.cc pkgcachegen.cc acquire-item.cc \ indexrecords.cc vendor.cc vendorlist.cc cdrom.cc indexcopy.cc \ - aptconfiguration.cc cachefilter.cc cacheset.cc + aptconfiguration.cc cachefilter.cc cacheset.cc edsp.cc HEADERS+= algorithms.h depcache.h pkgcachegen.h cacheiterators.h \ orderlist.h sourcelist.h packagemanager.h tagfile.h \ init.h pkgcache.h version.h progress.h pkgrecords.h \ @@ -43,7 +43,7 @@ HEADERS+= algorithms.h depcache.h pkgcachegen.h cacheiterators.h \ clean.h srcrecords.h cachefile.h versionmatch.h policy.h \ pkgsystem.h indexfile.h metaindex.h indexrecords.h vendor.h \ vendorlist.h cdrom.h indexcopy.h aptconfiguration.h \ - cachefilter.h cacheset.h + cachefilter.h cacheset.h edsp.h # Source code for the debian specific components # In theory the deb headers do not need to be exported.. @@ -54,9 +54,8 @@ HEADERS+= debversion.h debsrcrecords.h dpkgpm.h debrecords.h \ deblistparser.h debsystem.h debindexfile.h debmetaindex.h # Source code for the APT resolver interface specific components -SOURCE+= edsp/edsplistparser.cc edsp/edspindexfile.cc edsp/edspsystem.cc \ - edsp/edspwriter.cc -HEADERS+= edsplistparser.h edspindexfile.h edspsystem.h edspwriter.h +SOURCE+= edsp/edsplistparser.cc edsp/edspindexfile.cc edsp/edspsystem.cc +HEADERS+= edsplistparser.h edspindexfile.h edspsystem.h HEADERS := $(addprefix apt-pkg/,$(HEADERS)) -- cgit v1.2.3-70-g09d2 From 93794bc92e8d2fd84c6e596e3238c31d0832c271 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 31 Mar 2011 15:32:55 +0200 Subject: WriteRequest according to current EDSP draft --- apt-pkg/edsp.cc | 24 +++++++++++++++++------- apt-pkg/edsp.h | 5 ++++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 1af5aed53..db0e2466c 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -102,28 +102,38 @@ bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output) } /*}}}*/ // EDSP::WriteRequest - to the given file descriptor /*{{{*/ -bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output) +bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, + bool const DistUpgrade, bool const AutoRemove) { - string del, inst, upgrade; + string del, inst; for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) { string* req; if (Cache[Pkg].Delete() == true) req = &del; - else if (Cache[Pkg].NewInstall() == true) + else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true) req = &inst; - else if (Cache[Pkg].Upgrade() == true) - req = &upgrade; else continue; req->append(", ").append(Pkg.FullName()); } + fprintf(output, "Request: EDSP 0.2\n"); if (del.empty() == false) fprintf(output, "Remove: %s\n", del.c_str()+2); if (inst.empty() == false) fprintf(output, "Install: %s\n", inst.c_str()+2); - if (upgrade.empty() == false) - fprintf(output, "Upgrade: %s\n", upgrade.c_str()+2); + if (Upgrade == true) + fprintf(output, "Upgrade: yes\n"); + if (DistUpgrade == true) + fprintf(output, "Dist-Upgrade: yes\n"); + if (AutoRemove == true) + fprintf(output, "Autoremove: yes\n"); + if (_config->FindB("APT::Solver::Strict-Pinning", true) == false) + fprintf(output, "Strict-Pinning: no\n"); + string solverpref("APT::Solver::"); + solverpref.append(_config->Find("APT::Solver::Name", "internal")).append("::Preferences"); + if (_config->Exists(solverpref) == false) + fprintf(output, "Preferences: %s\n", _config->Find(solverpref,"").c_str()); return true; } diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index ef137b8f6..04d8c255f 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -14,7 +14,10 @@ class EDSP /*{{{*/ { public: - bool static WriteRequest(pkgDepCache &Cache, FILE* output); + bool static WriteRequest(pkgDepCache &Cache, FILE* output, + bool const Upgrade = false, + bool const DistUpgrade = false, + bool const AutoRemove = false); bool static WriteScenario(pkgDepCache &Cache, FILE* output); bool static ReadResponse(FILE* input, pkgDepCache &Cache); -- cgit v1.2.3-70-g09d2 From 6d5bd6147e210bfb93e4ce0009d4e71c5995eab1 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 1 Apr 2011 12:04:13 +0200 Subject: Read and apply install/remove requests correctly --- apt-pkg/algorithms.cc | 4 +- apt-pkg/edsp.cc | 101 ++++++++++++++++++++++++++++++++++++++++++++++---- apt-pkg/edsp.h | 4 +- 3 files changed, 97 insertions(+), 12 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 00f558420..aabb511a2 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -743,10 +743,8 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) if (solver != "internal") { FILE* output = fopen("/tmp/scenario.log", "w"); - EDSP::WriteScenario(Cache, output); - fclose(output); - output = fopen("/tmp/request.log", "w"); EDSP::WriteRequest(Cache, output); + EDSP::WriteScenario(Cache, output); fclose(output); if (ResolveInternal(BrokenFix) == false) return false; diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index db0e2466c..6f084ce04 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -115,13 +115,13 @@ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, req = &inst; else continue; - req->append(", ").append(Pkg.FullName()); + req->append(" ").append(Pkg.FullName()); } fprintf(output, "Request: EDSP 0.2\n"); if (del.empty() == false) - fprintf(output, "Remove: %s\n", del.c_str()+2); + fprintf(output, "Remove: %s\n", del.c_str()+1); if (inst.empty() == false) - fprintf(output, "Install: %s\n", inst.c_str()+2); + fprintf(output, "Install: %s\n", inst.c_str()+1); if (Upgrade == true) fprintf(output, "Upgrade: yes\n"); if (DistUpgrade == true) @@ -132,25 +132,110 @@ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, fprintf(output, "Strict-Pinning: no\n"); string solverpref("APT::Solver::"); solverpref.append(_config->Find("APT::Solver::Name", "internal")).append("::Preferences"); - if (_config->Exists(solverpref) == false) + if (_config->Exists(solverpref) == true) fprintf(output, "Preferences: %s\n", _config->Find(solverpref,"").c_str()); + fprintf(output, "\n"); return true; } /*}}}*/ bool EDSP::ReadResponse(FILE* input, pkgDepCache &Cache) { return false; } -bool EDSP::ReadRequest(FILE* input, std::list &install, +// EDSP::ReadLine - first line from the given file descriptor /*{{{*/ +// --------------------------------------------------------------------- +/* Little helper method to read a complete line into a string. Similar to + fgets but we need to use the low-level read() here as otherwise the + listparser will be confused later on as mixing of fgets and read isn't + a supported action according to the manpages and result are undefined */ +bool EDSP::ReadLine(int const input, std::string &line) { + char one; + ssize_t data = 0; + line.erase(); + line.reserve(100); + while ((data = read(input, &one, sizeof(one))) != -1) { + if (data != 1) + continue; + if (one == '\n') + return true; + if (one == '\r') + continue; + if (line.empty() == true && isblank(one) != 0) + continue; + line += one; + } + return false; +} + /*}}}*/ +// EDSP::ReadRequest - first stanza from the given file descriptor /*{{{*/ +bool EDSP::ReadRequest(int const input, std::list &install, std::list &remove) -{ return false; } +{ + std::string line; + while (ReadLine(input, line) == true) + { + // Skip empty lines before request + if (line.empty() == true) + continue; + // The first Tag must be a request, so search for it + if (line.compare(0,8, "Request:") != 0) + continue; + + while (ReadLine(input, line) == true) + { + // empty lines are the end of the request + if (line.empty() == true) + return true; + + std::list *request = NULL; + if (line.compare(0,8, "Install:") == 0) + { + line.erase(0,8); + request = &install; + } + if (line.compare(0,7, "Remove:") == 0) + { + line.erase(0,7); + request = &remove; + } + if (request == NULL) + continue; + size_t end = line.length(); + do { + size_t begin = line.rfind(' '); + if (begin == std::string::npos) + { + request->push_back(line.substr(0,end)); + break; + } + else if (begin < end) + request->push_back(line.substr(begin + 1, end)); + line.erase(begin); + end = line.find_last_not_of(' '); + } while (end != std::string::npos); + } + } + return false; +} + /*}}}*/ +// EDSP::ApplyRequest - first stanza from the given file descriptor /*{{{*/ bool EDSP::ApplyRequest(std::list const &install, std::list const &remove, pkgDepCache &Cache) -{ return false; } +{ + for (std::list::const_iterator i = install.begin(); + i != install.end(); ++i) + Cache.MarkInstall(Cache.FindPkg(*i), false); + + for (std::list::const_iterator i = remove.begin(); + i != remove.end(); ++i) + Cache.MarkDelete(Cache.FindPkg(*i)); + return true; +} + /*}}}*/ // EDSP::WriteSolution - to the given file descriptor /*{{{*/ bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) { - bool const Debug = _config->FindB("Debug::EDSPWriter::WriteSolution", false); + bool const Debug = _config->FindB("Debug::EDSP::WriteSolution", false); for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) { if (Cache[Pkg].Delete() == true) diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index 04d8c255f..742d89b43 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -13,6 +13,8 @@ class EDSP /*{{{*/ { + bool static ReadLine(int const input, std::string &line); + public: bool static WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade = false, @@ -22,7 +24,7 @@ public: bool static ReadResponse(FILE* input, pkgDepCache &Cache); // ReadScenario is provided by the listparser infrastructure - bool static ReadRequest(FILE* input, std::list &install, + bool static ReadRequest(int const input, std::list &install, std::list &remove); bool static ApplyRequest(std::list const &install, std::list const &remove, -- cgit v1.2.3-70-g09d2 From 40795fca99c72b0b43124cdfffb40e8fa3c4d952 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 1 Apr 2011 13:21:38 +0200 Subject: parse also the action flags Upgrade, Dist-Upgrade and alike from the request --- apt-pkg/edsp.cc | 44 +++++++++++++++++++++++++++++++++++++------- apt-pkg/edsp.h | 10 ++++++---- 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 6f084ce04..d93b05411 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -166,10 +166,31 @@ bool EDSP::ReadLine(int const input, std::string &line) { return false; } /*}}}*/ +// EDSP::StringToBool - convert yes/no to bool /*{{{*/ +// --------------------------------------------------------------------- +/* we are not as lazy as we are in the global StringToBool as we really + only accept yes/no here - but we will ignore leading spaces */ +bool EDSP::StringToBool(char const *answer, bool const defValue) { + for (; isspace(*answer) != 0; ++answer); + if (strncasecmp(answer, "yes", 3) == 0) + return true; + else if (strncasecmp(answer, "no", 2) == 0) + return false; + else + _error->Warning("Value '%s' is not a boolean 'yes' or 'no'!", answer); + return defValue; +} + /*}}}*/ // EDSP::ReadRequest - first stanza from the given file descriptor /*{{{*/ bool EDSP::ReadRequest(int const input, std::list &install, - std::list &remove) + std::list &remove, bool &upgrade, + bool &distUpgrade, bool &autoRemove) { + install.clear(); + remove.clear(); + upgrade = false; + distUpgrade = false; + autoRemove = false; std::string line; while (ReadLine(input, line) == true) { @@ -177,7 +198,7 @@ bool EDSP::ReadRequest(int const input, std::list &install, if (line.empty() == true) continue; // The first Tag must be a request, so search for it - if (line.compare(0,8, "Request:") != 0) + if (line.compare(0, 8, "Request:") != 0) continue; while (ReadLine(input, line) == true) @@ -187,16 +208,25 @@ bool EDSP::ReadRequest(int const input, std::list &install, return true; std::list *request = NULL; - if (line.compare(0,8, "Install:") == 0) + if (line.compare(0, 8, "Install:") == 0) { - line.erase(0,8); + line.erase(0, 8); request = &install; } - if (line.compare(0,7, "Remove:") == 0) + else if (line.compare(0, 7, "Remove:") == 0) { - line.erase(0,7); + line.erase(0, 7); request = &remove; } + else if (line.compare(0, 8, "Upgrade:") == 0) + upgrade = EDSP::StringToBool(line.c_str() + 9, false); + else if (line.compare(0, 13, "Dist-Upgrade:") == 0) + distUpgrade = EDSP::StringToBool(line.c_str() + 14, false); + else if (line.compare(0, 11, "Autoremove:") == 0) + autoRemove = EDSP::StringToBool(line.c_str() + 12, false); + else + _error->Warning("Unknown line in EDSP Request stanza: %s", line.c_str()); + if (request == NULL) continue; size_t end = line.length(); @@ -204,7 +234,7 @@ bool EDSP::ReadRequest(int const input, std::list &install, size_t begin = line.rfind(' '); if (begin == std::string::npos) { - request->push_back(line.substr(0,end)); + request->push_back(line.substr(0, end)); break; } else if (begin < end) diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index 742d89b43..75733c2d2 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -14,18 +14,20 @@ class EDSP /*{{{*/ { bool static ReadLine(int const input, std::string &line); + bool static StringToBool(char const *answer, bool const defValue); public: bool static WriteRequest(pkgDepCache &Cache, FILE* output, - bool const Upgrade = false, - bool const DistUpgrade = false, - bool const AutoRemove = false); + bool const upgrade = false, + bool const distUpgrade = false, + bool const autoRemove = false); bool static WriteScenario(pkgDepCache &Cache, FILE* output); bool static ReadResponse(FILE* input, pkgDepCache &Cache); // ReadScenario is provided by the listparser infrastructure bool static ReadRequest(int const input, std::list &install, - std::list &remove); + std::list &remove, bool &upgrade, + bool &distUpgrade, bool &autoRemove); bool static ApplyRequest(std::list const &install, std::list const &remove, pkgDepCache &Cache); -- cgit v1.2.3-70-g09d2 From 4128c84679e54e2afda7913946facaf9c52cd3eb Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 1 Apr 2011 16:14:24 +0200 Subject: add a small wrapper to use the internal apt solver as an external one --- cmdline/apt-internal-solver.cc | 129 +++++++++++++++++++++++++++++++++++++++++ cmdline/makefile | 7 +++ 2 files changed, 136 insertions(+) create mode 100644 cmdline/apt-internal-solver.cc diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc new file mode 100644 index 000000000..83d79e42a --- /dev/null +++ b/cmdline/apt-internal-solver.cc @@ -0,0 +1,129 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ##################################################################### + + cover around the internal solver to be able to run it like an external + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + /*}}}*/ + +// ShowHelp - Show a help screen /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool ShowHelp(CommandLine &CmdL) { + ioprintf(std::cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + COMMON_ARCH,__DATE__,__TIME__); + + std::cout << + _("Usage: apt-internal-resolver\n" + "\n" + "apt-internal-resolver is an interface to use the current internal\n" + "like an external resolver for the APT family for debugging or alike\n" + "\n" + "Options:\n" + " -h This help text.\n" + " -q Loggable output - no progress indicator\n" + " -c=? Read this configuration file\n" + " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" + "apt.conf(5) manual pages for more information and options.\n" + " This APT has Super Cow Powers.\n"); + return true; +} + /*}}}*/ +int main(int argc,const char *argv[]) /*{{{*/ +{ + CommandLine::Args Args[] = { + {'h',"help","help",0}, + {'v',"version","version",0}, + {'q',"quiet","quiet",CommandLine::IntLevel}, + {'q',"silent","quiet",CommandLine::IntLevel}, + {0,0,0,0}}; + + CommandLine CmdL(Args,_config); + if (pkgInitConfig(*_config) == false || + CmdL.Parse(argc,argv) == false) { + _error->DumpErrors(); + return 2; + } + + // See if the help should be shown + if (_config->FindB("help") == true || + _config->FindB("version") == true) { + ShowHelp(CmdL); + return 1; + } + + // Deal with stdout not being a tty + if (!isatty(STDOUT_FILENO) && _config->FindI("quiet", -1) == -1) + _config->Set("quiet","1"); + + if (_config->FindI("quiet", 0) < 1) + _config->Set("Debug::EDSP::WriteSolution", true); + + _config->Set("APT::Solver::Name", "internal"); + _config->Set("edsp::scenario", "stdin"); + int input = STDIN_FILENO; + FILE* output = stdout; + SetNonBlock(input, false); + + if (pkgInitSystem(*_config,_system) == false) { + std::cerr << "System could not be initialized!" << std::endl; + return 1; + } + + if (WaitFd(input, false, 5) == false) + std::cerr << "WAIT timed out in the resolver" << std::endl; + + std::list install, remove; + bool upgrade, distUpgrade, autoRemove; + if (EDSP::ReadRequest(input, install, remove, upgrade, distUpgrade, autoRemove) == false) { + std::cerr << "Parsing the request failed!" << std::endl; + return 2; + } + + pkgCacheFile CacheFile; + CacheFile.Open(NULL, false); + + if (EDSP::ApplyRequest(install, remove, CacheFile) == false) { + std::cerr << "Failed to apply request to depcache!" << std::endl; + return 3; + } + for (std::list::const_iterator i = install.begin(); + i != install.end(); ++i) + CacheFile->MarkInstall(CacheFile->FindPkg(*i), true); + + pkgProblemResolver Fix(CacheFile); + if (Fix.Resolve() == false) { + EDSP::WriteError("An error occured", output); + return 0; + } + + if (EDSP::WriteSolution(CacheFile, output) == false) { + std::cerr << "Failed to output the solution!" << std::endl; + return 4; + } + + bool const Errors = _error->PendingError(); + if (_config->FindI("quiet",0) > 0) + _error->DumpErrors(); + else + _error->DumpErrors(GlobalError::DEBUG); + return Errors == true ? 100 : 0; +} + /*}}}*/ diff --git a/cmdline/makefile b/cmdline/makefile index 917ccc96a..4462ccaf4 100644 --- a/cmdline/makefile +++ b/cmdline/makefile @@ -64,3 +64,10 @@ include $(COPY_H) #TO=$(BIN) #TARGET=program #include $(COPY_H) + +# The internal solver acting as an external +PROGRAM=apt-internal-solver +SLIBS = -lapt-pkg $(INTLLIBS) +LIB_MAKES = apt-pkg/makefile +SOURCE = apt-internal-solver.cc +include $(PROGRAM_H) -- cgit v1.2.3-70-g09d2 From 2029276f0343c96481d0d3cbbc367420b4a5f864 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 2 Apr 2011 15:47:14 +0200 Subject: send the scenario through a pipe to the solver and get the solution back The solution is NOT interpreted so far. --- apt-pkg/algorithms.cc | 42 +++++++++++++++++++++++++++++++++++------- apt-pkg/edsp.cc | 28 ++++++++++++++++++++++++++-- apt-pkg/edsp.h | 2 +- 3 files changed, 62 insertions(+), 10 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index aabb511a2..bbe315ef7 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -740,18 +740,46 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg) bool pkgProblemResolver::Resolve(bool BrokenFix) { std::string const solver = _config->Find("APT::Solver::Name", "internal"); + if (solver != "internal") { - FILE* output = fopen("/tmp/scenario.log", "w"); +// std::string const file = _config->FindDir("Dir::Bin::Solvers") + solver; + std::string const file = solver; + if (RealFileExists(file.c_str()) == false) + return _error->Error("Can't call external solver '%s' as it is not available: %s", solver.c_str(), file.c_str()); + int external[4] = {-1, -1, -1, -1}; + if (pipe(external) != 0 || pipe(external + 2) != 0) + return _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP"); + for (int i = 0; i < 4; ++i) + SetCloseExec(external[i], true); + + pid_t Solver = ExecFork(); + if (Solver == 0) + { + dup2(external[0], STDIN_FILENO); + dup2(external[3], STDOUT_FILENO); + const char* calling[2] = { file.c_str(), 0 }; + execv(calling[0], (char**) calling); + std::cerr << "Failed to execute solver '" << solver << "'!" << std::endl; + _exit(100); + } + close(external[0]); + close(external[3]); + + if (WaitFd(external[1], true, 5) == false) + return _error->Errno("Resolve", "Waiting on availability of solver stdin timed out"); + + FILE* output = fdopen(external[1], "w"); + if (output == NULL) + return _error->Errno("Resolve", "fdopen on solver stdin failed"); EDSP::WriteRequest(Cache, output); EDSP::WriteScenario(Cache, output); fclose(output); - if (ResolveInternal(BrokenFix) == false) - return false; - output = fopen("/tmp/solution.log", "w"); - EDSP::WriteSolution(Cache, output); - fclose(output); - return true; + + if (EDSP::ReadResponse(external[2], Cache) == false) + return _error->Error("Reading solver response failed"); + + return ExecWait(Solver, solver.c_str(), false); } return ResolveInternal(BrokenFix); } diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index d93b05411..e6dc16536 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -139,14 +140,37 @@ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, return true; } /*}}}*/ -bool EDSP::ReadResponse(FILE* input, pkgDepCache &Cache) { return false; } +// EDSP::ReadResponse - from the given file descriptor /*{{{*/ +bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { + FileFd in; + in.OpenDescriptor(input, FileFd::ReadOnly); + pkgTagFile response(&in); + pkgTagSection section; + while (response.Step(section) == true) { + std::string type; + if (section.Exists("Install") == true) + type = "Install"; + else if (section.Exists("Remove") == true) + type = "Remove"; + //FIXME: handle progress + else + continue; + + int const id = section.FindI(type.c_str(), -1); + if (id == -1) + return _error->Error("Unable to parse %s request!", type.c_str()); + //FIXME: find version by id and mark it correctly + } + return true; +} + /*}}}*/ // EDSP::ReadLine - first line from the given file descriptor /*{{{*/ // --------------------------------------------------------------------- /* Little helper method to read a complete line into a string. Similar to fgets but we need to use the low-level read() here as otherwise the listparser will be confused later on as mixing of fgets and read isn't - a supported action according to the manpages and result are undefined */ + a supported action according to the manpages and results are undefined */ bool EDSP::ReadLine(int const input, std::string &line) { char one; ssize_t data = 0; diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index 75733c2d2..31f8891f3 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -22,7 +22,7 @@ public: bool const distUpgrade = false, bool const autoRemove = false); bool static WriteScenario(pkgDepCache &Cache, FILE* output); - bool static ReadResponse(FILE* input, pkgDepCache &Cache); + bool static ReadResponse(int const input, pkgDepCache &Cache); // ReadScenario is provided by the listparser infrastructure bool static ReadRequest(int const input, std::list &install, -- cgit v1.2.3-70-g09d2 From 56d53b54e795479194eb653741c5a816698db43f Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 2 Apr 2011 15:51:37 +0200 Subject: disable the error discarding as it destroyes the error reporting about failures with external solvers for now as long as i can't see a reason for it --- cmdline/apt-get.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 6ffecd777..a1264f54a 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1887,7 +1887,7 @@ bool DoInstall(CommandLine &CmdL) // Call the scored problem resolver Fix->InstallProtect(); if (Fix->Resolve(true) == false) - _error->Discard(); + ; //FIXME: is there a valid reason for? _error->Discard(); delete Fix; } -- cgit v1.2.3-70-g09d2 From 3f248168dca69008fd8b7f8338dc76d767b47b43 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 2 Apr 2011 15:54:39 +0200 Subject: disable automatical installation of dependencies in MarkInstall if we will not use the default internal resolver later on --- apt-pkg/depcache.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 2790080a1..ed9e2084c 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1056,7 +1056,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, Update(Pkg); AddSizes(Pkg); - if (AutoInst == false) + if (AutoInst == false || _config->Find("APT::Solver::Name", "internal") != "internal") return; if (DebugMarker == true) -- cgit v1.2.3-70-g09d2 From 90bcac9e663d1a37eb2e0f1ba0878d0a545c9991 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Mon, 4 Apr 2011 11:54:54 +0200 Subject: edsp: rename and drop very-draft warnings --- doc/apt-solver-protocol.mdwn | 300 ---------------------------- doc/external-dependency-solver-protocol.txt | 295 +++++++++++++++++++++++++++ 2 files changed, 295 insertions(+), 300 deletions(-) delete mode 100644 doc/apt-solver-protocol.mdwn create mode 100644 doc/external-dependency-solver-protocol.txt diff --git a/doc/apt-solver-protocol.mdwn b/doc/apt-solver-protocol.mdwn deleted file mode 100644 index 4c520b037..000000000 --- a/doc/apt-solver-protocol.mdwn +++ /dev/null @@ -1,300 +0,0 @@ -** TENTATIVE PROPOSAL, VERY VERY VERY DRAFT ** - -# APT External Dependency Solver Protocol (EDSP) - version 0.3 - -This document describes the communication protocol between APT and -external dependency solvers. The protocol is called APT EDSP, for "APT -External Dependency Solver Protocol". - - -## Components - -- **APT**: we know this one. -- APT is equipped with its own **internal solver** for dependencies, - which is identified by the string `internal`. -- **External solver**: an *external* software component able to resolve - dependencies on behalf of APT. - -At each interaction with APT, a single solver is in use. When there is -a total of 2 or more solvers, internals or externals, the user can -choose which one to use. - -Each solver is identified by an unique string, the **solver -name**. Solver names must be formed using only alphanumeric ASCII -characters, dashes, and underscores; solver names must start with a -lowercase ASCII letter. The special name `internal` denotes APT's -internal solver, is reserved, and cannot be used by external solvers. - - -## Installation - -Each external solver is installed as a file under -`/usr/lib/apt/solvers`. The naming scheme is -`/usr/lib/apt/solvers/NAME`, where `NAME` is the name of the external -solver. - -Each file under `/usr/lib/apt/solvers` corresponding to an external -solver must be executable. - -No non-solver files must be installed under `/usr/lib/apt/solvers`, so -that an index of available external solvers can be obtained by listing -the content of that directory. - - -## Configuration - -Several APT options can be used to affect dependency solving in APT. An -overview of them is given below. Please refer to proper APT -configuration documentation for more, and more up to date, information. - -- **APT::Solver::Name**: the name of the solver to be used for - dependency solving. Defaults to `internal` - -- **APT::Solver::Strict-Pinning**: whether pinning must be strictly - respected (as the internal solver does) or can be slightly deviated - from. Defaults to `yes`. - -- **APT::Solver::NAME::Preferences** (where NAME is a solver name): - solver-specific user preference string used during dependency solving, - when the solver NAME is in use. Check solver-specific documentation - for what is supported here. Defaults to the empty string. - - -## Protocol - -When configured to use an external solver, APT will resort to it to -decide which packages should be installed or removed. - -The interaction happens **in batch**: APT will invoke the external -solver passing the current status of installed and available packages, -as well as the user request to alter the set of installed packages. The -external solver will compute a new complete set of installed packages -and gives APT a "diff" listing of which *additional* packages should be -installed and of which currently installed packages should be -*removed*. (Note: the order in which those actions have to be performed -will be up to APT to decide.) - -External solvers are invoked by executing them. Communications happens -via the file descriptors: **stdin** (standard input) and **stdout** -(standard output). stderr is not used by the EDSP protocol. Solvers can -therefore use stderr to dump debugging information that could be -inspected separately. - -After invocation, the protocol passes through a sequence of phases: - -1. APT invokes the external solver -2. APT send to the solver a dependency solving **scenario** -3. The solver solves dependencies. During this phase the solver may - send, repeatedly, **progress** information to APT. -4. The solver sends back to APT an **answer**, i.e. either a *solution* - or an *error* report. -5. The external solver exits - - -### Scenario - -A scenario is a text file encoded in a format very similar to the "Deb -822" format (AKA "the format used by Debian `Packages` files"). A -scenario consists of two distinct parts: a **request** and a **package -universe**, occurring in that order. The request consists of a single -Deb 822 stanza, while the package universe consists of several such -stanzas. All stanzas occurring in a scenario are separated by an empty -line. - - -#### Request - -Within a dependency solving scenario, a request represents the action on -installed packages requested by the user. - -A request is a single Deb 822 stanza opened by a mandatory Request field -and followed by a mixture of action and preference fields. - -The value of the **Request:** field is a string describing the EDSP -protocol which will be used to communicate. At present, the string must -be `EDSP 0.3`. - -a unique request identifier, such as an -UUID. Request fields are mainly used to identify the beginning of a -request stanza; their actual values are otherwise not used by the EDSP -protocol. - -The following **action fields** are supported in request stanzas: - -- **Install:** (optional, defaults to the empty string) A space - separated list of package names, with *no version attached*, to - install. This field denotes a list of packages that the user wants to - install, usually via an APT `install` request. - -- **Remove:** (optional, defaults to the empty string) Same syntax of - Install. This field denotes a list of packages that the user wants to - remove, usually via APT `remove` or `purge` requests. - -- **Upgrade:** (optional, defaults to `no`). Allowed values: `yes`, - `no`. When set to `yes`, an upgrade of all installed packages has been - requested, usually via an APT `upgrade` request. - -- **Dist-Upgrade:** (optional, defaults to `no`). Allowed values: `yes`, - `no`. Same as Upgrade, but for APT `dist-upgrade` requests. - -- **Autoremove:** (optional, defaults to `no`). Allowed values: `yes`, - `no`. When set to `yes`, a clean up of unused automatically installed - packages has been requested, usually via an APT `autoremove` request. - -The following **preference fields** are supported in request stanzas: - -- **Strict-Pinning:** (optional, defaults to `yes`). Allowed values: - `yes`, `no`. When set to `yes`, APT pinning is strict, in the sense - that the solver must not propose to install packages which are not APT - candidates (see the `APT-Pin` and `APT-Candidate` fields in the - package universe). When set to `no`, the solver does only a best - effort attempt to install APT candidates. Usually, the value of this - field comes from the `APT::Solver::Strict-Pinning` configuration - option. - -- **Preferences:** a solver-specific optimization string, usually coming - from the `APT::Solver::Preferences` configuration option. - - -#### Package universe - -A package universe is a list of Deb 822 stanzas, one per package, called -**package stanzas**. Each package stanzas starts with a Package -field. The following fields are supported in package stanzas: - -- All fields contained in the dpkg database, with the exception of - fields marked as "internal" (see the manpage `dpkg-query (1)`). Among - those fields, the following are mandatory for all package stanzas: - Package, Version, Architecture. - - It is recommended not to pass the Description field to external - solvers or, alternatively, to trim it to the short description only. - -- **Installed:** (optional, defaults to `no`). Allowed values: `yes`, - `no`. When set to `yes`, the corresponding package is currently - installed. - - Note: the Status field present in the dpkg database must not be passed - to the external solver, as it's an internal dpkg field. Installed and - other fields permit to encode the most relevant aspects of Status in - communications with solvers. - -- **Hold:** (optional, defaults to `no`). Allowed values: `yes`, - `no`. When set to `yes`, the corresponding package is marked as "on - hold" by dpkg. - -- **APT-ID:** (mandatory). Unique package identifier, according to APT. - -- **APT-Pin:** (mandatory). Must be an integer. Package pin value, - according to APT policy. - -- **APT-Candidate:** (optional, defaults to `no`). Allowed values: - `yes`, `no`. When set to `yes`, the corresponding package is the APT - candidate for installation among all available packages with the same - name. - -- **APT-Automatic:** (optional, defaults to `no`). Allowed values: - `yes`, `no`. When set to `yes`, the corresponding package is marked by - APT as automatic installed. Note that automatic installed packages - should be removed by the solver only when the Autoremove action is - requested (see Request section). - -### Answer - -An answer from the external solver to APT is either a *solution* or an -*error*. - -The following invariant on **exit codes** must hold true. When the -external solver is *able to find a solution*, it will write the solution -to standard output and then exit with an exit code of 0. When the -external solver is *unable to find a solution* (and s aware of that), it -will write an error to standard output and then exit with an exit code -of 0. An exit code other than 0 will be interpreted as a solver crash -with no meaningful error about dependency resolution to convey to the -user. - - -#### Solution - -A solution is a list of Deb 822 stanzas. Each of them could be an -install stanza (telling APT to install a specific package), a remove -stanza (telling APT to remove one), or an autoremove stanza (telling APT -about the *future* possibility of removing a package using the -Autoremove action). - -An **install stanza** starts with an Install field and supports the -following fields: - -- **Install:** (mandatory). The value is a package identifier, - referencing one of the package stanzas of the package universe via its - APT-ID field. - -- All fields supported by package stanzas. - -**Remove stanzas** are similar to install stanzas, but have **Remove** -fields instead of Install fields. - -**Autoremove stanzas** are similar to install stanzas, but have -**Autoremove** fields instead of Install fields. Autoremove stanzas -should be output so that APT can inform the user of which packages they -can now autoremove, as a consequence of the executed action. However, -this protocol makes no assumption on the fact that a subsequent -invocation of an Autoremove action will actually remove the very same -packages indicated by Autoremove stanzas in the former solution. - -In terms of expressivity, install and remove stanzas can carry one -single field each, as APT-IDs are enough to pinpoint packages to be -installed/removed. Nonetheless, for protocol readability, it is -recommended that solvers either add unconditionally the fields Package, -Version, and Architecture to all install/remove stanzas or, -alternatively, that they support a `--verbose` command line flag that -explicitly enables the output of those fields in solutions. - - -#### Error - -An error is a single Deb 822 stanza, starting the field Error. The -following fields are supported in error stanzas: - -- **Error:** (mandatory). The value of this field is ignored, although - it should be a unique error identifier, such as a UUID. - -- **Message:** (mandatory). The value of this field is a text string, - meant to be read by humans, that explains the cause of the solver - error. Message fields might be multi-line, like the Description field - in the dpkg database. The first line conveys a short message, which - can be explained in more details using subsequent lines. - - -### Progress - -During dependency solving, an external solver may send progress -information to APT using **progress stanzas**. A progress stanza starts -with the Progress field and might contain the following fields: - -- **Progress:** (mandatory). The value of this field is a date and time - timestamp, in RFC 2822 format. The timestamp provides a time - annotation for the progress report. - -- **Percentage:** (optional). An integer from 0 to 100, representing the - completion of the dependency solving process, as declared by the - solver. - -- **Message:** (optional). A textual message, meant to be read by the - APT user, telling what is going on within the dependency solving - (e.g. the current phase of dependency solving, as declared by the - solver). - - -# Future extensions - -Potential future extensions to this protocol, listed in no specific -order, include: - -- fixed error types to identify common failures across solvers and - enable APT to translate error messages -- structured error data to explain failures in terms of packages and - dependencies - - -** TENTATIVE PROPOSAL, VERY VERY VERY DRAFT ** diff --git a/doc/external-dependency-solver-protocol.txt b/doc/external-dependency-solver-protocol.txt new file mode 100644 index 000000000..8c13b185c --- /dev/null +++ b/doc/external-dependency-solver-protocol.txt @@ -0,0 +1,295 @@ +# APT External Dependency Solver Protocol (EDSP) - version 0.3 + +This document describes the communication protocol between APT and +external dependency solvers. The protocol is called APT EDSP, for "APT +External Dependency Solver Protocol". + + +## Components + +- **APT**: we know this one. +- APT is equipped with its own **internal solver** for dependencies, + which is identified by the string `internal`. +- **External solver**: an *external* software component able to resolve + dependencies on behalf of APT. + +At each interaction with APT, a single solver is in use. When there is +a total of 2 or more solvers, internals or externals, the user can +choose which one to use. + +Each solver is identified by an unique string, the **solver +name**. Solver names must be formed using only alphanumeric ASCII +characters, dashes, and underscores; solver names must start with a +lowercase ASCII letter. The special name `internal` denotes APT's +internal solver, is reserved, and cannot be used by external solvers. + + +## Installation + +Each external solver is installed as a file under +`/usr/lib/apt/solvers`. The naming scheme is +`/usr/lib/apt/solvers/NAME`, where `NAME` is the name of the external +solver. + +Each file under `/usr/lib/apt/solvers` corresponding to an external +solver must be executable. + +No non-solver files must be installed under `/usr/lib/apt/solvers`, so +that an index of available external solvers can be obtained by listing +the content of that directory. + + +## Configuration + +Several APT options can be used to affect dependency solving in APT. An +overview of them is given below. Please refer to proper APT +configuration documentation for more, and more up to date, information. + +- **APT::Solver::Name**: the name of the solver to be used for + dependency solving. Defaults to `internal` + +- **APT::Solver::Strict-Pinning**: whether pinning must be strictly + respected (as the internal solver does) or can be slightly deviated + from. Defaults to `yes`. + +- **APT::Solver::NAME::Preferences** (where NAME is a solver name): + solver-specific user preference string used during dependency solving, + when the solver NAME is in use. Check solver-specific documentation + for what is supported here. Defaults to the empty string. + + +## Protocol + +When configured to use an external solver, APT will resort to it to +decide which packages should be installed or removed. + +The interaction happens **in batch**: APT will invoke the external +solver passing the current status of installed and available packages, +as well as the user request to alter the set of installed packages. The +external solver will compute a new complete set of installed packages +and gives APT a "diff" listing of which *additional* packages should be +installed and of which currently installed packages should be +*removed*. (Note: the order in which those actions have to be performed +will be up to APT to decide.) + +External solvers are invoked by executing them. Communications happens +via the file descriptors: **stdin** (standard input) and **stdout** +(standard output). stderr is not used by the EDSP protocol. Solvers can +therefore use stderr to dump debugging information that could be +inspected separately. + +After invocation, the protocol passes through a sequence of phases: + +1. APT invokes the external solver +2. APT send to the solver a dependency solving **scenario** +3. The solver solves dependencies. During this phase the solver may + send, repeatedly, **progress** information to APT. +4. The solver sends back to APT an **answer**, i.e. either a *solution* + or an *error* report. +5. The external solver exits + + +### Scenario + +A scenario is a text file encoded in a format very similar to the "Deb +822" format (AKA "the format used by Debian `Packages` files"). A +scenario consists of two distinct parts: a **request** and a **package +universe**, occurring in that order. The request consists of a single +Deb 822 stanza, while the package universe consists of several such +stanzas. All stanzas occurring in a scenario are separated by an empty +line. + + +#### Request + +Within a dependency solving scenario, a request represents the action on +installed packages requested by the user. + +A request is a single Deb 822 stanza opened by a mandatory Request field +and followed by a mixture of action and preference fields. + +The value of the **Request:** field is a string describing the EDSP +protocol which will be used to communicate. At present, the string must +be `EDSP 0.3`. + +a unique request identifier, such as an +UUID. Request fields are mainly used to identify the beginning of a +request stanza; their actual values are otherwise not used by the EDSP +protocol. + +The following **action fields** are supported in request stanzas: + +- **Install:** (optional, defaults to the empty string) A space + separated list of package names, with *no version attached*, to + install. This field denotes a list of packages that the user wants to + install, usually via an APT `install` request. + +- **Remove:** (optional, defaults to the empty string) Same syntax of + Install. This field denotes a list of packages that the user wants to + remove, usually via APT `remove` or `purge` requests. + +- **Upgrade:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, an upgrade of all installed packages has been + requested, usually via an APT `upgrade` request. + +- **Dist-Upgrade:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. Same as Upgrade, but for APT `dist-upgrade` requests. + +- **Autoremove:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, a clean up of unused automatically installed + packages has been requested, usually via an APT `autoremove` request. + +The following **preference fields** are supported in request stanzas: + +- **Strict-Pinning:** (optional, defaults to `yes`). Allowed values: + `yes`, `no`. When set to `yes`, APT pinning is strict, in the sense + that the solver must not propose to install packages which are not APT + candidates (see the `APT-Pin` and `APT-Candidate` fields in the + package universe). When set to `no`, the solver does only a best + effort attempt to install APT candidates. Usually, the value of this + field comes from the `APT::Solver::Strict-Pinning` configuration + option. + +- **Preferences:** a solver-specific optimization string, usually coming + from the `APT::Solver::Preferences` configuration option. + + +#### Package universe + +A package universe is a list of Deb 822 stanzas, one per package, called +**package stanzas**. Each package stanzas starts with a Package +field. The following fields are supported in package stanzas: + +- All fields contained in the dpkg database, with the exception of + fields marked as "internal" (see the manpage `dpkg-query (1)`). Among + those fields, the following are mandatory for all package stanzas: + Package, Version, Architecture. + + It is recommended not to pass the Description field to external + solvers or, alternatively, to trim it to the short description only. + +- **Installed:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, the corresponding package is currently + installed. + + Note: the Status field present in the dpkg database must not be passed + to the external solver, as it's an internal dpkg field. Installed and + other fields permit to encode the most relevant aspects of Status in + communications with solvers. + +- **Hold:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, the corresponding package is marked as "on + hold" by dpkg. + +- **APT-ID:** (mandatory). Unique package identifier, according to APT. + +- **APT-Pin:** (mandatory). Must be an integer. Package pin value, + according to APT policy. + +- **APT-Candidate:** (optional, defaults to `no`). Allowed values: + `yes`, `no`. When set to `yes`, the corresponding package is the APT + candidate for installation among all available packages with the same + name. + +- **APT-Automatic:** (optional, defaults to `no`). Allowed values: + `yes`, `no`. When set to `yes`, the corresponding package is marked by + APT as automatic installed. Note that automatic installed packages + should be removed by the solver only when the Autoremove action is + requested (see Request section). + +### Answer + +An answer from the external solver to APT is either a *solution* or an +*error*. + +The following invariant on **exit codes** must hold true. When the +external solver is *able to find a solution*, it will write the solution +to standard output and then exit with an exit code of 0. When the +external solver is *unable to find a solution* (and s aware of that), it +will write an error to standard output and then exit with an exit code +of 0. An exit code other than 0 will be interpreted as a solver crash +with no meaningful error about dependency resolution to convey to the +user. + + +#### Solution + +A solution is a list of Deb 822 stanzas. Each of them could be an +install stanza (telling APT to install a specific package), a remove +stanza (telling APT to remove one), or an autoremove stanza (telling APT +about the *future* possibility of removing a package using the +Autoremove action). + +An **install stanza** starts with an Install field and supports the +following fields: + +- **Install:** (mandatory). The value is a package identifier, + referencing one of the package stanzas of the package universe via its + APT-ID field. + +- All fields supported by package stanzas. + +**Remove stanzas** are similar to install stanzas, but have **Remove** +fields instead of Install fields. + +**Autoremove stanzas** are similar to install stanzas, but have +**Autoremove** fields instead of Install fields. Autoremove stanzas +should be output so that APT can inform the user of which packages they +can now autoremove, as a consequence of the executed action. However, +this protocol makes no assumption on the fact that a subsequent +invocation of an Autoremove action will actually remove the very same +packages indicated by Autoremove stanzas in the former solution. + +In terms of expressivity, install and remove stanzas can carry one +single field each, as APT-IDs are enough to pinpoint packages to be +installed/removed. Nonetheless, for protocol readability, it is +recommended that solvers either add unconditionally the fields Package, +Version, and Architecture to all install/remove stanzas or, +alternatively, that they support a `--verbose` command line flag that +explicitly enables the output of those fields in solutions. + + +#### Error + +An error is a single Deb 822 stanza, starting the field Error. The +following fields are supported in error stanzas: + +- **Error:** (mandatory). The value of this field is ignored, although + it should be a unique error identifier, such as a UUID. + +- **Message:** (mandatory). The value of this field is a text string, + meant to be read by humans, that explains the cause of the solver + error. Message fields might be multi-line, like the Description field + in the dpkg database. The first line conveys a short message, which + can be explained in more details using subsequent lines. + + +### Progress + +During dependency solving, an external solver may send progress +information to APT using **progress stanzas**. A progress stanza starts +with the Progress field and might contain the following fields: + +- **Progress:** (mandatory). The value of this field is a date and time + timestamp, in RFC 2822 format. The timestamp provides a time + annotation for the progress report. + +- **Percentage:** (optional). An integer from 0 to 100, representing the + completion of the dependency solving process, as declared by the + solver. + +- **Message:** (optional). A textual message, meant to be read by the + APT user, telling what is going on within the dependency solving + (e.g. the current phase of dependency solving, as declared by the + solver). + + +# Future extensions + +Potential future extensions to this protocol, listed in no specific +order, include: + +- fixed error types to identify common failures across solvers and + enable APT to translate error messages +- structured error data to explain failures in terms of packages and + dependencies -- cgit v1.2.3-70-g09d2 From a1421e1e452e36b3f82a1cf23d2bf806ca9262c1 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Mon, 4 Apr 2011 11:57:04 +0200 Subject: install EDSP protocol description in apt-doc --- debian/apt-doc.docs | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/apt-doc.docs b/debian/apt-doc.docs index 86aa69ceb..4ec23f55d 100644 --- a/debian/apt-doc.docs +++ b/debian/apt-doc.docs @@ -1,2 +1,3 @@ README.progress-reporting README.MultiArch +doc/external-dependency-solver-protocol.txt -- cgit v1.2.3-70-g09d2 From 1083e5c3dd59fedd6135e0af14882ce4b0491383 Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Mon, 4 Apr 2011 15:20:13 +0200 Subject: add Dir::Bin::Solvers to enable customization of solver directory EDSP version 0.4 --- doc/external-dependency-solver-protocol.txt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/external-dependency-solver-protocol.txt b/doc/external-dependency-solver-protocol.txt index 8c13b185c..ae01fbc35 100644 --- a/doc/external-dependency-solver-protocol.txt +++ b/doc/external-dependency-solver-protocol.txt @@ -1,4 +1,4 @@ -# APT External Dependency Solver Protocol (EDSP) - version 0.3 +# APT External Dependency Solver Protocol (EDSP) - version 0.4 This document describes the communication protocol between APT and external dependency solvers. The protocol is called APT EDSP, for "APT @@ -26,10 +26,12 @@ internal solver, is reserved, and cannot be used by external solvers. ## Installation -Each external solver is installed as a file under -`/usr/lib/apt/solvers`. The naming scheme is -`/usr/lib/apt/solvers/NAME`, where `NAME` is the name of the external -solver. +Each external solver is installed as a file under Dir::Bin::Solvers (see +below), which defaults to `/usr/lib/apt/solvers`. We will assume in the +remainder of this section that such a default value is in effect. + +The naming scheme is `/usr/lib/apt/solvers/NAME`, where `NAME` is the +name of the external solver. Each file under `/usr/lib/apt/solvers` corresponding to an external solver must be executable. @@ -57,6 +59,8 @@ configuration documentation for more, and more up to date, information. when the solver NAME is in use. Check solver-specific documentation for what is supported here. Defaults to the empty string. +- **Dir::Bin::Solvers**: absolute path of the directory where to look for + external solvers. Defaults to `/usr/lib/apt/solvers`. ## Protocol @@ -110,7 +114,7 @@ and followed by a mixture of action and preference fields. The value of the **Request:** field is a string describing the EDSP protocol which will be used to communicate. At present, the string must -be `EDSP 0.3`. +be `EDSP 0.4`. a unique request identifier, such as an UUID. Request fields are mainly used to identify the beginning of a -- cgit v1.2.3-70-g09d2 From 69a788359e1ff895efd32348ab6d610bc72794dd Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 19 Apr 2011 11:51:47 +0200 Subject: Interpret Remove and Install lines in Responses correctly --- apt-pkg/edsp.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index e6dc16536..f8deef8b8 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -39,7 +39,7 @@ bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output) fprintf(output, "Installed: yes\n"); if (Pkg->SelectedState == pkgCache::State::Hold) fprintf(output, "Hold: yes\n"); - fprintf(output, "APT-ID: %u\n", Ver->ID); + fprintf(output, "APT-ID: %lu\n", Ver.Index()); fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) fprintf(output, "Essential: yes\n"); @@ -156,11 +156,18 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { else continue; - int const id = section.FindI(type.c_str(), -1); - if (id == -1) - return _error->Error("Unable to parse %s request!", type.c_str()); + size_t const index = section.FindULL(type.c_str(), 0); + if (index == 0) { + _error->Warning("Unable to parse %s request with id value '%s'!", type.c_str(), section.FindS(type.c_str()).c_str()); + continue; + } - //FIXME: find version by id and mark it correctly + pkgCache::VerIterator Ver(Cache.GetCache(), Cache.GetCache().VerP + index); + Cache.SetCandidateVersion(Ver); + if (type == "Install") + Cache.MarkInstall(Ver.ParentPkg(), false, false); + else if (type == "Remove") + Cache.MarkDelete(Ver.ParentPkg(), false); } return true; } -- cgit v1.2.3-70-g09d2 From d9933172b31e21862b660c182f7c747802dbaa73 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 19 Apr 2011 11:52:47 +0200 Subject: set hint flags for the problem resolver according to request --- cmdline/apt-internal-solver.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc index 83d79e42a..83a671a96 100644 --- a/cmdline/apt-internal-solver.cc +++ b/cmdline/apt-internal-solver.cc @@ -104,11 +104,28 @@ int main(int argc,const char *argv[]) /*{{{*/ std::cerr << "Failed to apply request to depcache!" << std::endl; return 3; } + + pkgProblemResolver Fix(CacheFile); + for (std::list::const_iterator i = remove.begin(); + i != remove.end(); ++i) { + pkgCache::PkgIterator P = CacheFile->FindPkg(*i); + Fix.Clear(P); + Fix.Protect(P); + Fix.Remove(P); + } + + for (std::list::const_iterator i = install.begin(); + i != install.end(); ++i) { + pkgCache::PkgIterator P = CacheFile->FindPkg(*i); + Fix.Clear(P); + Fix.Protect(P); + } + for (std::list::const_iterator i = install.begin(); i != install.end(); ++i) CacheFile->MarkInstall(CacheFile->FindPkg(*i), true); - pkgProblemResolver Fix(CacheFile); + if (Fix.Resolve() == false) { EDSP::WriteError("An error occured", output); return 0; -- cgit v1.2.3-70-g09d2 From 2a33cb16d6be42b253e9a4169e2c725e17cf7c1a Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 19 Apr 2011 15:26:21 +0200 Subject: use the version id instead of the mmap offset as APT-ID This leads to a small performance decrease as we need to build this mapping now while interpreting the Response but a (buggy) solver can't point us to dangerous memory locations anymore this way and VersionCount remains useful for other mapping proposes --- apt-pkg/edsp.cc | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index f8deef8b8..55bc0a0d9 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -39,7 +39,7 @@ bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output) fprintf(output, "Installed: yes\n"); if (Pkg->SelectedState == pkgCache::State::Hold) fprintf(output, "Hold: yes\n"); - fprintf(output, "APT-ID: %lu\n", Ver.Index()); + fprintf(output, "APT-ID: %d\n", Ver->ID); fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) fprintf(output, "Essential: yes\n"); @@ -146,6 +146,17 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { in.OpenDescriptor(input, FileFd::ReadOnly); pkgTagFile response(&in); pkgTagSection section; + + /* We build an map id to mmap offset here + In theory we could use the offset as ID, but then VersionCount + couldn't be used to create other versionmappings anymore and it + would be too easy for a (buggy) solver to segfault APT… */ + unsigned long long const VersionCount = Cache.Head().VersionCount; + unsigned long VerIdx[VersionCount]; + for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; ++P) + for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V) + VerIdx[V->ID] = V.Index(); + while (response.Step(section) == true) { std::string type; if (section.Exists("Install") == true) @@ -156,13 +167,16 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { else continue; - size_t const index = section.FindULL(type.c_str(), 0); - if (index == 0) { + size_t const id = section.FindULL(type.c_str(), VersionCount); + if (id == VersionCount) { _error->Warning("Unable to parse %s request with id value '%s'!", type.c_str(), section.FindS(type.c_str()).c_str()); continue; + } else if (id > Cache.Head().VersionCount) { + _error->Warning("ID value '%s' in %s request stanza is to high to refer to a known version!", section.FindS(type.c_str()).c_str(), type.c_str()); + continue; } - pkgCache::VerIterator Ver(Cache.GetCache(), Cache.GetCache().VerP + index); + pkgCache::VerIterator Ver(Cache.GetCache(), Cache.GetCache().VerP + VerIdx[id]); Cache.SetCandidateVersion(Ver); if (type == "Install") Cache.MarkInstall(Ver.ParentPkg(), false, false); -- cgit v1.2.3-70-g09d2 From d4f626ff09383873c7b1ae42b744293c940c9c2c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 25 Apr 2011 15:59:19 +0200 Subject: reorganize WriteScenario to add a WriteLimitedScenario in which a scenario can be limited to a subset of packages with only relevant dependencies --- apt-pkg/edsp.cc | 255 ++++++++++++++++++++++++++++++++++++++------------------ apt-pkg/edsp.h | 17 ++++ 2 files changed, 192 insertions(+), 80 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 55bc0a0d9..aec43c7e8 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -18,90 +18,169 @@ #include /*}}}*/ +// we could use pkgCache::DepType and ::Priority, but these would be localized strings… +const char * const EDSP::PrioMap[] = {0, "important", "required", "standard", + "optional", "extra"}; +const char * const EDSP::DepMap[] = {"", "Depends", "PreDepends", "Suggests", + "Recommends" , "Conflicts", "Replaces", + "Obsoletes", "Breaks", "Enhances"}; + // EDSP::WriteScenario - to the given file descriptor /*{{{*/ bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output) { - // we could use pkgCache::DepType and ::Priority, but these would be lokalized strings… - const char * const PrioMap[] = {0, "important", "required", "standard", - "optional", "extra"}; - const char * const DepMap[] = {"", "Depends", "PreDepends", "Suggests", - "Recommends" , "Conflicts", "Replaces", - "Obsoletes", "Breaks", "Enhances"}; - for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) - { for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) { - fprintf(output, "Package: %s\n", Pkg.Name()); - fprintf(output, "Architecture: %s\n", Ver.Arch()); - fprintf(output, "Version: %s\n", Ver.VerStr()); - if (Pkg.CurrentVer() == Ver) - fprintf(output, "Installed: yes\n"); - if (Pkg->SelectedState == pkgCache::State::Hold) - fprintf(output, "Hold: yes\n"); - fprintf(output, "APT-ID: %d\n", Ver->ID); - fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); - if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) - fprintf(output, "Essential: yes\n"); - fprintf(output, "Section: %s\n", Ver.Section()); - if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) - fprintf(output, "Multi-Arch: allowed\n"); - else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) - fprintf(output, "Multi-Arch: foreign\n"); - else if (Ver->MultiArch == pkgCache::Version::Same) - fprintf(output, "Multi-Arch: same\n"); - signed short Pin = std::numeric_limits::min(); - for (pkgCache::VerFileIterator File = Ver.FileList(); File.end() == false; ++File) { - signed short const p = Cache.GetPolicy().GetPriority(File.File()); - if (Pin < p) - Pin = p; - } - fprintf(output, "APT-Pin: %d\n", Pin); - if (Cache.GetCandidateVer(Pkg) == Ver) - fprintf(output, "APT-Candidate: yes\n"); - if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) - fprintf(output, "APT-Automatic: yes\n"); - std::string dependencies[pkgCache::Dep::Enhances + 1]; - bool orGroup = false; - for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) - { - // Ignore implicit dependencies for multiarch here - if (strcmp(Pkg.Arch(), Dep.TargetPkg().Arch()) != 0) - continue; - if (orGroup == false) - dependencies[Dep->Type].append(", "); - dependencies[Dep->Type].append(Dep.TargetPkg().Name()); - if (Dep->Version != 0) - dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")"); - if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) - { - dependencies[Dep->Type].append(" | "); - orGroup = true; - } - else - orGroup = false; - } - for (int i = 1; i < pkgCache::Dep::Enhances + 1; ++i) - if (dependencies[i].empty() == false) - fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2); - string provides; - for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) - { - // Ignore implicit provides for multiarch here - if (strcmp(Pkg.Arch(), Prv.ParentPkg().Arch()) != 0 || strcmp(Pkg.Name(),Prv.Name()) == 0) - continue; - provides.append(", ").append(Prv.Name()); - } - if (provides.empty() == false) - fprintf(output, "Provides: %s\n", provides.c_str()+2); - - + WriteScenarioVersion(Cache, output, Pkg, Ver); + WriteScenarioDependency(Cache, output, Pkg, Ver); fprintf(output, "\n"); } - } return true; } /*}}}*/ +// EDSP::WriteLimitedScenario - to the given file descriptor /*{{{*/ +bool EDSP::WriteLimitedScenario(pkgDepCache &Cache, FILE* output, + APT::PackageSet const &pkgset) +{ + for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg) + for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) + { + WriteScenarioVersion(Cache, output, Pkg, Ver); + WriteScenarioLimitedDependency(Cache, output, Pkg, Ver, pkgset); + fprintf(output, "\n"); + } + return true; +} + /*}}}*/ +// EDSP::WriteScenarioVersion /*{{{*/ +void EDSP::WriteScenarioVersion(pkgDepCache &Cache, FILE* output, pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver) +{ + fprintf(output, "Package: %s\n", Pkg.Name()); + fprintf(output, "Architecture: %s\n", Ver.Arch()); + fprintf(output, "Version: %s\n", Ver.VerStr()); + if (Pkg.CurrentVer() == Ver) + fprintf(output, "Installed: yes\n"); + if (Pkg->SelectedState == pkgCache::State::Hold) + fprintf(output, "Hold: yes\n"); + fprintf(output, "APT-ID: %d\n", Ver->ID); + fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); + if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) + fprintf(output, "Essential: yes\n"); + fprintf(output, "Section: %s\n", Ver.Section()); + if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) + fprintf(output, "Multi-Arch: allowed\n"); + else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) + fprintf(output, "Multi-Arch: foreign\n"); + else if (Ver->MultiArch == pkgCache::Version::Same) + fprintf(output, "Multi-Arch: same\n"); + signed short Pin = std::numeric_limits::min(); + for (pkgCache::VerFileIterator File = Ver.FileList(); File.end() == false; ++File) { + signed short const p = Cache.GetPolicy().GetPriority(File.File()); + if (Pin < p) + Pin = p; + } + fprintf(output, "APT-Pin: %d\n", Pin); + if (Cache.GetCandidateVer(Pkg) == Ver) + fprintf(output, "APT-Candidate: yes\n"); + if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) + fprintf(output, "APT-Automatic: yes\n"); +} + /*}}}*/ +// EDSP::WriteScenarioDependency /*{{{*/ +void EDSP::WriteScenarioDependency(pkgDepCache &Cache, FILE* output, pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver) +{ + std::string dependencies[pkgCache::Dep::Enhances + 1]; + bool orGroup = false; + for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) + { + // Ignore implicit dependencies for multiarch here + if (strcmp(Pkg.Arch(), Dep.TargetPkg().Arch()) != 0) + continue; + if (orGroup == false) + dependencies[Dep->Type].append(", "); + dependencies[Dep->Type].append(Dep.TargetPkg().Name()); + if (Dep->Version != 0) + dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")"); + if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) + { + dependencies[Dep->Type].append(" | "); + orGroup = true; + } + else + orGroup = false; + } + for (int i = 1; i < pkgCache::Dep::Enhances + 1; ++i) + if (dependencies[i].empty() == false) + fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2); + string provides; + for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) + { + // Ignore implicit provides for multiarch here + if (strcmp(Pkg.Arch(), Prv.ParentPkg().Arch()) != 0 || strcmp(Pkg.Name(),Prv.Name()) == 0) + continue; + provides.append(", ").append(Prv.Name()); + } + if (provides.empty() == false) + fprintf(output, "Provides: %s\n", provides.c_str()+2); +} + /*}}}*/ +// EDSP::WriteScenarioLimitedDependency /*{{{*/ +void EDSP::WriteScenarioLimitedDependency(pkgDepCache &Cache, FILE* output, + pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver, + APT::PackageSet const &pkgset) +{ + std::string dependencies[pkgCache::Dep::Enhances + 1]; + bool orGroup = false; + for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) + { + // Ignore implicit dependencies for multiarch here + if (strcmp(Pkg.Arch(), Dep.TargetPkg().Arch()) != 0) + continue; + if (orGroup == false) + { + if (pkgset.find(Dep.TargetPkg()) == pkgset.end()) + continue; + dependencies[Dep->Type].append(", "); + } + else if (pkgset.find(Dep.TargetPkg()) == pkgset.end()) + { + if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) + continue; + dependencies[Dep->Type].erase(dependencies[Dep->Type].end()-3, dependencies[Dep->Type].end()); + orGroup = false; + continue; + } + dependencies[Dep->Type].append(Dep.TargetPkg().Name()); + if (Dep->Version != 0) + dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")"); + if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) + { + dependencies[Dep->Type].append(" | "); + orGroup = true; + } + else + orGroup = false; + } + for (int i = 1; i < pkgCache::Dep::Enhances + 1; ++i) + if (dependencies[i].empty() == false) + fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2); + string provides; + for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) + { + // Ignore implicit provides for multiarch here + if (strcmp(Pkg.Arch(), Prv.ParentPkg().Arch()) != 0 || strcmp(Pkg.Name(),Prv.Name()) == 0) + continue; + if (pkgset.find(Prv.ParentPkg()) == pkgset.end()) + continue; + provides.append(", ").append(Prv.Name()); + } + if (provides.empty() == false) + fprintf(output, "Provides: %s\n", provides.c_str()+2); +} + /*}}}*/ // EDSP::WriteRequest - to the given file descriptor /*{{{*/ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, bool const DistUpgrade, bool const AutoRemove) @@ -298,12 +377,22 @@ bool EDSP::ApplyRequest(std::list const &install, pkgDepCache &Cache) { for (std::list::const_iterator i = install.begin(); - i != install.end(); ++i) - Cache.MarkInstall(Cache.FindPkg(*i), false); + i != install.end(); ++i) { + pkgCache::PkgIterator P = Cache.FindPkg(*i); + if (P.end() == true) + _error->Warning("Package %s is not known, so can't be installed", i->c_str()); + else + Cache.MarkInstall(P, false); + } for (std::list::const_iterator i = remove.begin(); - i != remove.end(); ++i) - Cache.MarkDelete(Cache.FindPkg(*i)); + i != remove.end(); ++i) { + pkgCache::PkgIterator P = Cache.FindPkg(*i); + if (P.end() == true) + _error->Warning("Package %s is not known, so can't be installed", i->c_str()); + else + Cache.MarkDelete(P); + } return true; } /*}}}*/ @@ -314,13 +403,19 @@ bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) { if (Cache[Pkg].Delete() == true) - fprintf(output, "Remove: %d\n", Cache.GetCandidateVer(Pkg)->ID); + { + fprintf(output, "Remove: %d\n", Pkg.CurrentVer()->ID); + if (Debug == true) + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr()); + } else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true) + { fprintf(output, "Install: %d\n", Cache.GetCandidateVer(Pkg)->ID); + if (Debug == true) + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Cache.GetCandidateVer(Pkg).VerStr()); + } else continue; - if (Debug == true) - fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Cache.GetCandidateVer(Pkg).VerStr()); fprintf(output, "\n"); } diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index 31f8891f3..db4f06a7c 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -8,20 +8,37 @@ #define PKGLIB_EDSP_H #include +#include #include class EDSP /*{{{*/ { + // we could use pkgCache::DepType and ::Priority, but these would be localized strings… + static const char * const PrioMap[]; + static const char * const DepMap[]; + bool static ReadLine(int const input, std::string &line); bool static StringToBool(char const *answer, bool const defValue); + void static WriteScenarioVersion(pkgDepCache &Cache, FILE* output, + pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver); + void static WriteScenarioDependency(pkgDepCache &Cache, FILE* output, + pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver); + void static WriteScenarioLimitedDependency(pkgDepCache &Cache, FILE* output, + pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver, + APT::PackageSet const &pkgset); public: bool static WriteRequest(pkgDepCache &Cache, FILE* output, bool const upgrade = false, bool const distUpgrade = false, bool const autoRemove = false); bool static WriteScenario(pkgDepCache &Cache, FILE* output); + bool static WriteLimitedScenario(pkgDepCache &Cache, FILE* output, + APT::PackageSet const &pkgset); bool static ReadResponse(int const input, pkgDepCache &Cache); // ReadScenario is provided by the listparser infrastructure -- cgit v1.2.3-70-g09d2 From 904be3525223633721dc7b5bff22ae7d8db8cb95 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 25 Apr 2011 15:59:45 +0200 Subject: add scenario command to output a complete or limited scenario --- cmdline/apt-internal-solver.cc | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc index 83a671a96..68489e213 100644 --- a/cmdline/apt-internal-solver.cc +++ b/cmdline/apt-internal-solver.cc @@ -53,6 +53,8 @@ int main(int argc,const char *argv[]) /*{{{*/ {'v',"version","version",0}, {'q',"quiet","quiet",CommandLine::IntLevel}, {'q',"silent","quiet",CommandLine::IntLevel}, + {'c',"config-file",0,CommandLine::ConfigFile}, + {'o',"option",0,CommandLine::ArbItem}, {0,0,0,0}}; CommandLine CmdL(Args,_config); @@ -69,6 +71,25 @@ int main(int argc,const char *argv[]) /*{{{*/ return 1; } + if (CmdL.FileList[0] != 0 && strcmp(CmdL.FileList[0], "scenario") == 0) + { + if (pkgInitSystem(*_config,_system) == false) { + std::cerr << "System could not be initialized!" << std::endl; + return 1; + } + pkgCacheFile CacheFile; + CacheFile.Open(NULL, false); + APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1); + FILE* output = stdout; + if (pkgset.empty() == true) + EDSP::WriteScenario(CacheFile, output); + else + EDSP::WriteLimitedScenario(CacheFile, output, pkgset); + fclose(output); + _error->DumpErrors(std::cerr); + return 0; + } + // Deal with stdout not being a tty if (!isatty(STDOUT_FILENO) && _config->FindI("quiet", -1) == -1) _config->Set("quiet","1"); @@ -138,9 +159,9 @@ int main(int argc,const char *argv[]) /*{{{*/ bool const Errors = _error->PendingError(); if (_config->FindI("quiet",0) > 0) - _error->DumpErrors(); + _error->DumpErrors(std::cerr); else - _error->DumpErrors(GlobalError::DEBUG); + _error->DumpErrors(std::cerr, GlobalError::DEBUG); return Errors == true ? 100 : 0; } /*}}}*/ -- cgit v1.2.3-70-g09d2 From 7ca70a9af1bc6af753ee3012d1840d5ddfafe37c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 2 May 2011 10:41:38 +0200 Subject: merge single-arch :arch fix from my sid branch --- apt-pkg/pkgcache.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index c6326abf1..93d09a18e 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -211,11 +211,14 @@ pkgCache::PkgIterator pkgCache::SingleArchFindPkg(const string &Name) // --------------------------------------------------------------------- /* Returns 0 on error, pointer to the package otherwise */ pkgCache::PkgIterator pkgCache::FindPkg(const string &Name) { - if (MultiArchCache() == false) - return SingleArchFindPkg(Name); size_t const found = Name.find(':'); if (found == string::npos) - return FindPkg(Name, "native"); + { + if (MultiArchCache() == false) + return SingleArchFindPkg(Name); + else + return FindPkg(Name, "native"); + } string const Arch = Name.substr(found+1); if (Arch == "any") return FindPkg(Name, "any"); -- cgit v1.2.3-70-g09d2 From e876223c704d8cac6246b4aff4bf683fb8b053e3 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 2 May 2011 11:51:44 +0200 Subject: implement optional Progress report in EDSP --- apt-pkg/edsp.cc | 21 +++++++++++++++++++-- apt-pkg/edsp.h | 1 + cmdline/apt-internal-solver.cc | 13 +++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index aec43c7e8..6343b57cd 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -242,8 +242,16 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { type = "Install"; else if (section.Exists("Remove") == true) type = "Remove"; - //FIXME: handle progress - else + else if (section.Exists("Progress") == true) { + ioprintf(std::clog, "[ %3d%% ] ", section.FindI("Percentage", 0)); + std::clog << section.FindS("Progress") << " - "; + string const msg = section.FindS("Message"); + if (msg.empty() == true) + std::clog << "Solver is still working on the solution" << std::endl; + else + std::clog << msg << std::endl; + continue; + } else continue; size_t const id = section.FindULL(type.c_str(), VersionCount); @@ -422,4 +430,13 @@ bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) return true; } /*}}}*/ +// EDSP::WriteProgess - pulse to the given file descriptor /*{{{*/ +bool EDSP::WriteProgress(unsigned short const percent, const char* const message, FILE* output) { + fprintf(output, "Progress: %s\n", TimeRFC1123(time(NULL)).c_str()); + fprintf(output, "Percentage: %d\n", percent); + fprintf(output, "Message: %s\n\n", message); + fflush(output); + return true; +} + /*}}}*/ bool EDSP::WriteError(std::string const &message, FILE* output) { return false; } diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index db4f06a7c..a05de9448 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -49,6 +49,7 @@ public: std::list const &remove, pkgDepCache &Cache); bool static WriteSolution(pkgDepCache &Cache, FILE* output); + bool static WriteProgress(unsigned short const percent, const char* const message, FILE* output); bool static WriteError(std::string const &message, FILE* output); }; diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc index 68489e213..0aa218d52 100644 --- a/cmdline/apt-internal-solver.cc +++ b/cmdline/apt-internal-solver.cc @@ -103,11 +103,15 @@ int main(int argc,const char *argv[]) /*{{{*/ FILE* output = stdout; SetNonBlock(input, false); + EDSP::WriteProgress(0, "Start up solver…", output); + if (pkgInitSystem(*_config,_system) == false) { std::cerr << "System could not be initialized!" << std::endl; return 1; } + EDSP::WriteProgress(1, "Read request…", output); + if (WaitFd(input, false, 5) == false) std::cerr << "WAIT timed out in the resolver" << std::endl; @@ -118,9 +122,13 @@ int main(int argc,const char *argv[]) /*{{{*/ return 2; } + EDSP::WriteProgress(5, "Read scenario…", output); + pkgCacheFile CacheFile; CacheFile.Open(NULL, false); + EDSP::WriteProgress(50, "Apply request on scenario…", output); + if (EDSP::ApplyRequest(install, remove, CacheFile) == false) { std::cerr << "Failed to apply request to depcache!" << std::endl; return 3; @@ -146,17 +154,22 @@ int main(int argc,const char *argv[]) /*{{{*/ i != install.end(); ++i) CacheFile->MarkInstall(CacheFile->FindPkg(*i), true); + EDSP::WriteProgress(60, "Call problemresolver on current scenario…", output); if (Fix.Resolve() == false) { EDSP::WriteError("An error occured", output); return 0; } + EDSP::WriteProgress(95, "Write solution…", output); + if (EDSP::WriteSolution(CacheFile, output) == false) { std::cerr << "Failed to output the solution!" << std::endl; return 4; } + EDSP::WriteProgress(100, "Done", output); + bool const Errors = _error->PendingError(); if (_config->FindI("quiet",0) > 0) _error->DumpErrors(std::cerr); -- cgit v1.2.3-70-g09d2 From c80a49f556ae565e280637b4617d6492a1d5a3b8 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 2 May 2011 11:52:28 +0200 Subject: move the mapping generation to the top as the response reading is currently waiting for the solver to complete and not non-blocking so we can generate the map while waiting for the solver --- apt-pkg/edsp.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 6343b57cd..9dbbbaf26 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -221,11 +221,6 @@ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, /*}}}*/ // EDSP::ReadResponse - from the given file descriptor /*{{{*/ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { - FileFd in; - in.OpenDescriptor(input, FileFd::ReadOnly); - pkgTagFile response(&in); - pkgTagSection section; - /* We build an map id to mmap offset here In theory we could use the offset as ID, but then VersionCount couldn't be used to create other versionmappings anymore and it @@ -236,6 +231,11 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V) VerIdx[V->ID] = V.Index(); + FileFd in; + in.OpenDescriptor(input, FileFd::ReadOnly); + pkgTagFile response(&in); + pkgTagSection section; + while (response.Step(section) == true) { std::string type; if (section.Exists("Install") == true) -- cgit v1.2.3-70-g09d2 From 288a76d2dcb19aaf0aca6fc9d4898701e5379f5c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 2 May 2011 12:23:13 +0200 Subject: reduce the buffer size so we get a sort of realtime progress report and print the time of output at the front of the progress report so we can see the delay --- apt-pkg/edsp.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 9dbbbaf26..170e2a4c6 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -233,7 +233,7 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { FileFd in; in.OpenDescriptor(input, FileFd::ReadOnly); - pkgTagFile response(&in); + pkgTagFile response(&in, 100); pkgTagSection section; while (response.Step(section) == true) { @@ -243,6 +243,7 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { else if (section.Exists("Remove") == true) type = "Remove"; else if (section.Exists("Progress") == true) { + std::clog << TimeRFC1123(time(NULL)) << " "; ioprintf(std::clog, "[ %3d%% ] ", section.FindI("Percentage", 0)); std::clog << section.FindS("Progress") << " - "; string const msg = section.FindS("Message"); -- cgit v1.2.3-70-g09d2 From 98d6aaa8fd2e5c3e9671560781ab23c99f66d7a4 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 2 May 2011 13:22:14 +0200 Subject: handle Dir::Bin::Solvers as a list of directories and find the solver in this list of directories --- apt-pkg/algorithms.cc | 16 ++++++++++++---- apt-pkg/init.cc | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index bbe315ef7..e40f74122 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -743,10 +743,18 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) if (solver != "internal") { -// std::string const file = _config->FindDir("Dir::Bin::Solvers") + solver; - std::string const file = solver; - if (RealFileExists(file.c_str()) == false) - return _error->Error("Can't call external solver '%s' as it is not available: %s", solver.c_str(), file.c_str()); + std::vector const solverDirs = _config->FindVector("Dir::Bin::Solvers"); + std::string file; + for (std::vector::const_iterator dir = solverDirs.begin(); + dir != solverDirs.end(); ++dir) { + file = flCombine(*dir, solver); + if (RealFileExists(file.c_str()) == true) + break; + file.clear(); + } + + if (file.empty() == true) + return _error->Error("Can't call external solver '%s' as it is not in a configured directory!", solver.c_str()); int external[4] = {-1, -1, -1, -1}; if (pipe(external) != 0 || pipe(external + 2) != 0) return _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP"); diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index a30f27844..aff585e3b 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -72,7 +72,9 @@ bool pkgInitConfig(Configuration &Cnf) Cnf.Set("Dir::Etc::preferencesparts","preferences.d"); Cnf.Set("Dir::Etc::trusted", "trusted.gpg"); Cnf.Set("Dir::Etc::trustedparts","trusted.gpg.d"); + Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods"); + Cnf.Set("Dir::Bin::solvers::","/usr/lib/apt/solvers"); Cnf.Set("Dir::Media::MountPath","/media/apt"); // State -- cgit v1.2.3-70-g09d2 From ac5fbff8c55db2bd1cde194600115a874d9d0c73 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 2 May 2011 13:55:51 +0200 Subject: refactor: move solver execution into his own EDSP method --- apt-pkg/algorithms.cc | 42 +++++------------------------------------- apt-pkg/edsp.cc | 42 ++++++++++++++++++++++++++++++++++++++++++ apt-pkg/edsp.h | 1 + 3 files changed, 48 insertions(+), 37 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index e40f74122..82b1d608d 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -743,51 +743,19 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) if (solver != "internal") { - std::vector const solverDirs = _config->FindVector("Dir::Bin::Solvers"); - std::string file; - for (std::vector::const_iterator dir = solverDirs.begin(); - dir != solverDirs.end(); ++dir) { - file = flCombine(*dir, solver); - if (RealFileExists(file.c_str()) == true) - break; - file.clear(); - } - - if (file.empty() == true) - return _error->Error("Can't call external solver '%s' as it is not in a configured directory!", solver.c_str()); - int external[4] = {-1, -1, -1, -1}; - if (pipe(external) != 0 || pipe(external + 2) != 0) - return _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP"); - for (int i = 0; i < 4; ++i) - SetCloseExec(external[i], true); - - pid_t Solver = ExecFork(); - if (Solver == 0) - { - dup2(external[0], STDIN_FILENO); - dup2(external[3], STDOUT_FILENO); - const char* calling[2] = { file.c_str(), 0 }; - execv(calling[0], (char**) calling); - std::cerr << "Failed to execute solver '" << solver << "'!" << std::endl; - _exit(100); - } - close(external[0]); - close(external[3]); - - if (WaitFd(external[1], true, 5) == false) - return _error->Errno("Resolve", "Waiting on availability of solver stdin timed out"); + int solver_in, solver_out; + if (EDSP::ExecuteSolver(solver.c_str(), &solver_in, &solver_out) == false) + return false; - FILE* output = fdopen(external[1], "w"); + FILE* output = fdopen(solver_in, "w"); if (output == NULL) return _error->Errno("Resolve", "fdopen on solver stdin failed"); EDSP::WriteRequest(Cache, output); EDSP::WriteScenario(Cache, output); fclose(output); - if (EDSP::ReadResponse(external[2], Cache) == false) + if (EDSP::ReadResponse(solver_out, Cache) == false) return _error->Error("Reading solver response failed"); - - return ExecWait(Solver, solver.c_str(), false); } return ResolveInternal(BrokenFix); } diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 170e2a4c6..c3e608d17 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -441,3 +441,45 @@ bool EDSP::WriteProgress(unsigned short const percent, const char* const message } /*}}}*/ bool EDSP::WriteError(std::string const &message, FILE* output) { return false; } + +// EDSP::ExecuteSolver - fork requested solver and setup ipc pipes {{{*/ +bool EDSP::ExecuteSolver(const char* const solver, int *solver_in, int *solver_out) { + std::vector const solverDirs = _config->FindVector("Dir::Bin::Solvers"); + std::string file; + for (std::vector::const_iterator dir = solverDirs.begin(); + dir != solverDirs.end(); ++dir) { + file = flCombine(*dir, solver); + if (RealFileExists(file.c_str()) == true) + break; + file.clear(); + } + + if (file.empty() == true) + return _error->Error("Can't call external solver '%s' as it is not in a configured directory!", solver); + int external[4] = {-1, -1, -1, -1}; + if (pipe(external) != 0 || pipe(external + 2) != 0) + return _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP"); + for (int i = 0; i < 4; ++i) + SetCloseExec(external[i], true); + + pid_t Solver = ExecFork(); + if (Solver == 0) + { + dup2(external[0], STDIN_FILENO); + dup2(external[3], STDOUT_FILENO); + const char* calling[2] = { file.c_str(), 0 }; + execv(calling[0], (char**) calling); + std::cerr << "Failed to execute solver '" << solver << "'!" << std::endl; + _exit(100); + } + close(external[0]); + close(external[3]); + + if (WaitFd(external[1], true, 5) == false) + return _error->Errno("Resolve", "Timed out while Waiting on availability of solver stdin"); + + *solver_in = external[1]; + *solver_out = external[2]; + return true; +} + /*}}}*/ diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index a05de9448..df6e1d21c 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -52,6 +52,7 @@ public: bool static WriteProgress(unsigned short const percent, const char* const message, FILE* output); bool static WriteError(std::string const &message, FILE* output); + bool static ExecuteSolver(const char* const solver, int *solver_in, int *solver_out); }; /*}}}*/ #endif -- cgit v1.2.3-70-g09d2 From 76d4aab06d3c5edd60362fd14b38eb43416616f0 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 2 May 2011 17:06:47 +0200 Subject: doesn't execute autoremove marker setting if an external solver is called and instead rely on the Autoremove tagging to show us what could be done. (apt-internal-solver doesn't support this currently as it doesn't load the auto-information into the cache) --- apt-pkg/algorithms.cc | 2 ++ apt-pkg/depcache.cc | 3 +++ apt-pkg/edsp.cc | 20 ++++++++++++++++++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 82b1d608d..fea9e92e1 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -756,6 +756,8 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) if (EDSP::ReadResponse(solver_out, Cache) == false) return _error->Error("Reading solver response failed"); + + return true; } return ResolveInternal(BrokenFix); } diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index ed9e2084c..31410e2a6 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1609,6 +1609,9 @@ bool pkgDepCache::MarkFollowsSuggests() // pkgDepCache::MarkRequired - the main mark algorithm /*{{{*/ bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc) { + if (_config->Find("APT::Solver::Name", "internal") != "internal") + return true; + bool follow_recommends; bool follow_suggests; bool debug_autoremove = _config->FindB("Debug::pkgAutoRemove",false); diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index c3e608d17..f35570c12 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -227,9 +227,12 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { would be too easy for a (buggy) solver to segfault APT… */ unsigned long long const VersionCount = Cache.Head().VersionCount; unsigned long VerIdx[VersionCount]; - for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; ++P) + for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; ++P) { for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V) VerIdx[V->ID] = V.Index(); + Cache[P].Marked = true; + Cache[P].Garbage = false; + } FileFd in; in.OpenDescriptor(input, FileFd::ReadOnly); @@ -252,7 +255,9 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { else std::clog << msg << std::endl; continue; - } else + } else if (section.Exists("Autoremove") == true) + type = "Autoremove"; + else continue; size_t const id = section.FindULL(type.c_str(), VersionCount); @@ -270,6 +275,10 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { Cache.MarkInstall(Ver.ParentPkg(), false, false); else if (type == "Remove") Cache.MarkDelete(Ver.ParentPkg(), false); + else if (type == "Autoremove") { + Cache[Ver.ParentPkg()].Marked = false; + Cache[Ver.ParentPkg()].Garbage = true; + } } return true; } @@ -423,6 +432,13 @@ bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) if (Debug == true) fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Cache.GetCandidateVer(Pkg).VerStr()); } + else if (Cache[Pkg].Garbage == true) + { + fprintf(output, "Autoremove: %d\n", Pkg.CurrentVer()->ID); + if (Debug == true) + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr()); + fprintf(stderr, "Autoremove: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr()); + } else continue; fprintf(output, "\n"); -- cgit v1.2.3-70-g09d2 From 9221da7e1d5516494d17043a4d0b063a1d6b95c2 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 2 May 2011 18:08:13 +0200 Subject: parse correctly the Hold: lines into Pkg->SelectedState = Hold --- apt-pkg/edsp/edsplistparser.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc index 913455efa..3349e8cce 100644 --- a/apt-pkg/edsp/edsplistparser.cc +++ b/apt-pkg/edsp/edsplistparser.cc @@ -63,10 +63,13 @@ unsigned short edspListParser::VersionHash() bool edspListParser::ParseStatus(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver) { - if (Section.FindFlag("Hold",Pkg->Flags,pkgCache::State::Installed) == false) + unsigned long state = 0; + if (Section.FindFlag("Hold",state,pkgCache::State::Hold) == false) return false; + if (state != 0) + Pkg->SelectedState = pkgCache::State::Hold; - unsigned long state = 0; + state = 0; if (Section.FindFlag("Installed",state,pkgCache::State::Installed) == false) return false; if (state != 0) -- cgit v1.2.3-70-g09d2 From 80699703b6015a8fe7707302f365020f9782cf2c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 10:38:49 +0200 Subject: work on requests with the correct upgrade/dist-upgrade/else resolver --- cmdline/apt-internal-solver.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc index 0aa218d52..df6a6f569 100644 --- a/cmdline/apt-internal-solver.cc +++ b/cmdline/apt-internal-solver.cc @@ -156,7 +156,17 @@ int main(int argc,const char *argv[]) /*{{{*/ EDSP::WriteProgress(60, "Call problemresolver on current scenario…", output); - if (Fix.Resolve() == false) { + if (upgrade == true) { + if (pkgAllUpgrade(CacheFile) == false) { + EDSP::WriteError("An upgrade error occured", output); + return 0; + } + } else if (distUpgrade == true) { + if (pkgDistUpgrade(CacheFile) == false) { + EDSP::WriteError("An dist-upgrade error occured", output); + return 0; + } + } else if (Fix.Resolve() == false) { EDSP::WriteError("An error occured", output); return 0; } -- cgit v1.2.3-70-g09d2 From 741b7da9de1d2ab470728f1e7f38b25e0d6a556c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 10:50:25 +0200 Subject: implement external solver calling for upgrade and dist-upgrade, too --- apt-pkg/algorithms.cc | 40 ++++++++++++----------- apt-pkg/algorithms.h | 1 + apt-pkg/edsp.cc | 88 +++++++++++++++++++++++++++++++-------------------- apt-pkg/edsp.h | 3 ++ 4 files changed, 80 insertions(+), 52 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index fea9e92e1..5d9fefaa6 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -332,6 +332,10 @@ bool pkgFixBroken(pkgDepCache &Cache) */ bool pkgDistUpgrade(pkgDepCache &Cache) { + std::string const solver = _config->Find("APT::Solver::Name", "internal"); + if (solver != "internal") + return EDSP::ResolveExternal(solver.c_str(), Cache, false, true, false); + pkgDepCache::ActionGroup group(Cache); /* Upgrade all installed packages first without autoinst to help the resolver @@ -384,6 +388,10 @@ bool pkgDistUpgrade(pkgDepCache &Cache) to install packages not marked for install */ bool pkgAllUpgrade(pkgDepCache &Cache) { + std::string const solver = _config->Find("APT::Solver::Name", "internal"); + if (solver != "internal") + return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false); + pkgDepCache::ActionGroup group(Cache); pkgProblemResolver Fix(&Cache); @@ -740,25 +748,8 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg) bool pkgProblemResolver::Resolve(bool BrokenFix) { std::string const solver = _config->Find("APT::Solver::Name", "internal"); - if (solver != "internal") - { - int solver_in, solver_out; - if (EDSP::ExecuteSolver(solver.c_str(), &solver_in, &solver_out) == false) - return false; - - FILE* output = fdopen(solver_in, "w"); - if (output == NULL) - return _error->Errno("Resolve", "fdopen on solver stdin failed"); - EDSP::WriteRequest(Cache, output); - EDSP::WriteScenario(Cache, output); - fclose(output); - - if (EDSP::ReadResponse(solver_out, Cache) == false) - return _error->Error("Reading solver response failed"); - - return true; - } + return EDSP::ResolveExternal(solver.c_str(), Cache, false, false, false); return ResolveInternal(BrokenFix); } /*}}}*/ @@ -1230,6 +1221,19 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix) in that it does not install or remove any packages. It is assumed that the system was non-broken previously. */ bool pkgProblemResolver::ResolveByKeep() +{ + std::string const solver = _config->Find("APT::Solver::Name", "internal"); + if (solver != "internal") + return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false); + return ResolveByKeepInternal(); +} + /*}}}*/ +// ProblemResolver::ResolveByKeepInternal - Resolve problems using keep /*{{{*/ +// --------------------------------------------------------------------- +/* This is the work horse of the soft upgrade routine. It is very gental + in that it does not install or remove any packages. It is assumed that the + system was non-broken previously. */ +bool pkgProblemResolver::ResolveByKeepInternal() { pkgDepCache::ActionGroup group(Cache); diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h index 0778ec722..582cbc527 100644 --- a/apt-pkg/algorithms.h +++ b/apt-pkg/algorithms.h @@ -107,6 +107,7 @@ class pkgProblemResolver /*{{{*/ bool DoUpgrade(pkgCache::PkgIterator Pkg); bool ResolveInternal(bool const BrokenFix = false); + bool ResolveByKeepInternal(); public: diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index f35570c12..d72370358 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -197,7 +197,7 @@ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, continue; req->append(" ").append(Pkg.FullName()); } - fprintf(output, "Request: EDSP 0.2\n"); + fprintf(output, "Request: EDSP 0.4\n"); if (del.empty() == false) fprintf(output, "Remove: %s\n", del.c_str()+1); if (inst.empty() == false) @@ -460,42 +460,62 @@ bool EDSP::WriteError(std::string const &message, FILE* output) { return false; // EDSP::ExecuteSolver - fork requested solver and setup ipc pipes {{{*/ bool EDSP::ExecuteSolver(const char* const solver, int *solver_in, int *solver_out) { - std::vector const solverDirs = _config->FindVector("Dir::Bin::Solvers"); - std::string file; - for (std::vector::const_iterator dir = solverDirs.begin(); - dir != solverDirs.end(); ++dir) { - file = flCombine(*dir, solver); - if (RealFileExists(file.c_str()) == true) - break; - file.clear(); - } + std::vector const solverDirs = _config->FindVector("Dir::Bin::Solvers"); + std::string file; + for (std::vector::const_iterator dir = solverDirs.begin(); + dir != solverDirs.end(); ++dir) { + file = flCombine(*dir, solver); + if (RealFileExists(file.c_str()) == true) + break; + file.clear(); + } - if (file.empty() == true) - return _error->Error("Can't call external solver '%s' as it is not in a configured directory!", solver); - int external[4] = {-1, -1, -1, -1}; - if (pipe(external) != 0 || pipe(external + 2) != 0) - return _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP"); - for (int i = 0; i < 4; ++i) - SetCloseExec(external[i], true); + if (file.empty() == true) + return _error->Error("Can't call external solver '%s' as it is not in a configured directory!", solver); + int external[4] = {-1, -1, -1, -1}; + if (pipe(external) != 0 || pipe(external + 2) != 0) + return _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP"); + for (int i = 0; i < 4; ++i) + SetCloseExec(external[i], true); - pid_t Solver = ExecFork(); - if (Solver == 0) - { - dup2(external[0], STDIN_FILENO); - dup2(external[3], STDOUT_FILENO); - const char* calling[2] = { file.c_str(), 0 }; - execv(calling[0], (char**) calling); - std::cerr << "Failed to execute solver '" << solver << "'!" << std::endl; - _exit(100); - } - close(external[0]); - close(external[3]); + pid_t Solver = ExecFork(); + if (Solver == 0) { + dup2(external[0], STDIN_FILENO); + dup2(external[3], STDOUT_FILENO); + const char* calling[2] = { file.c_str(), 0 }; + execv(calling[0], (char**) calling); + std::cerr << "Failed to execute solver '" << solver << "'!" << std::endl; + _exit(100); + } + close(external[0]); + close(external[3]); - if (WaitFd(external[1], true, 5) == false) - return _error->Errno("Resolve", "Timed out while Waiting on availability of solver stdin"); + if (WaitFd(external[1], true, 5) == false) + return _error->Errno("Resolve", "Timed out while Waiting on availability of solver stdin"); - *solver_in = external[1]; - *solver_out = external[2]; - return true; + *solver_in = external[1]; + *solver_out = external[2]; + return true; +} + /*}}}*/ +// EDSP::ResolveExternal - resolve problems by asking external for help {{{*/ +bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache, + bool const upgrade, bool const distUpgrade, + bool const autoRemove) { + int solver_in, solver_out; + if (EDSP::ExecuteSolver(solver, &solver_in, &solver_out) == false) + return false; + + FILE* output = fdopen(solver_in, "w"); + if (output == NULL) + return _error->Errno("Resolve", "fdopen on solver stdin failed"); + EDSP::WriteRequest(Cache, output, upgrade, distUpgrade, autoRemove); + EDSP::WriteScenario(Cache, output); + fclose(output); + + if (EDSP::ReadResponse(solver_out, Cache) == false) + return _error->Error("Reading solver response failed"); + + return true; } /*}}}*/ diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index df6e1d21c..95132ebd0 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -53,6 +53,9 @@ public: bool static WriteError(std::string const &message, FILE* output); bool static ExecuteSolver(const char* const solver, int *solver_in, int *solver_out); + bool static ResolveExternal(const char* const solver, pkgDepCache &Cache, + bool const upgrade, bool const distUpgrade, + bool const autoRemove); }; /*}}}*/ #endif -- cgit v1.2.3-70-g09d2 From cbc702ea5805ba63f6a032d38530879700f4d100 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 10:51:55 +0200 Subject: tell the resolver a package is set on hold if it was set by the user to Keep which happens for example if a user decides to "remove" a not installed package to forbid that it's part of the solution --- apt-pkg/depcache.h | 1 + apt-pkg/edsp.cc | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index b15cd527d..f95ad9a14 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -232,6 +232,7 @@ class pkgDepCache : protected pkgCache::Namespace inline bool NewInstall() const {return Status == 2 && Mode == ModeInstall;}; inline bool Delete() const {return Mode == ModeDelete;}; inline bool Keep() const {return Mode == ModeKeep;}; + inline bool Protect() const {return (iFlags & Protected) == Protected;}; inline bool Upgrade() const {return Status > 0 && Mode == ModeInstall;}; inline bool Upgradable() const {return Status >= 1;}; inline bool Downgrade() const {return Status < 0 && Mode == ModeInstall;}; diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index d72370358..8bd0c14bb 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -61,7 +61,8 @@ void EDSP::WriteScenarioVersion(pkgDepCache &Cache, FILE* output, pkgCache::PkgI fprintf(output, "Version: %s\n", Ver.VerStr()); if (Pkg.CurrentVer() == Ver) fprintf(output, "Installed: yes\n"); - if (Pkg->SelectedState == pkgCache::State::Hold) + if (Pkg->SelectedState == pkgCache::State::Hold || + (Cache[Pkg].Keep() == true && Cache[Pkg].Protect() == true)) fprintf(output, "Hold: yes\n"); fprintf(output, "APT-ID: %d\n", Ver->ID); fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); -- cgit v1.2.3-70-g09d2 From 575e9b5c5c82087ebdbfe1d3660de8fe7e92d5e9 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 14:05:13 +0200 Subject: add a fair round of doxygen comments to the edsp header --- apt-pkg/edsp.h | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 151 insertions(+), 3 deletions(-) diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index 95132ebd0..98a70d7f6 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -1,7 +1,9 @@ // -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -/* ###################################################################### +/** Description \file edsp.h {{{ + ###################################################################### Set of methods to help writing and reading everything needed for EDSP + with the noteable exception of reading a scenario for conversion into + a Cache as this is handled by edsp interface for listparser and friends ##################################################################### */ /*}}}*/ #ifndef PKGLIB_EDSP_H @@ -32,27 +34,173 @@ class EDSP /*{{{*/ pkgCache::VerIterator const &Ver, APT::PackageSet const &pkgset); public: + /** \brief creates the EDSP request stanza + * + * In the EDSP protocol the first thing send to the resolver is a stanza + * encoding the request. This method will write this stanza by looking at + * the given Cache and requests the installation of all packages which were + * marked for installation in it (equally for remove). + * + * \param Cache in which the request is encoded + * \param output is written to this "file" + * \param upgrade is true if it is an request like apt-get upgrade + * \param distUpgrade is true if it is a request like apt-get dist-upgrade + * \param autoRemove is true if removal of unneeded packages should be performed + * + * \return true if request was composed successfully, otherwise false + */ bool static WriteRequest(pkgDepCache &Cache, FILE* output, bool const upgrade = false, bool const distUpgrade = false, bool const autoRemove = false); + + /** \brief creates the scenario representing the package universe + * + * After the request all known information about a package are send + * to the solver. The output looks similar to a Packages or status file + * + * All packages and version included in this Cache are send, even if + * it doesn't make sense from an APT resolver point of view like versions + * with a negative pin to enable the solver to propose even that as a + * solution or at least to be able to give a hint what can be done to + * statisfy a request. + * + * \param Cache is the known package universe + * \param output is written to this "file" + * + * \return true if universe was composed successfully, otherwise false + */ bool static WriteScenario(pkgDepCache &Cache, FILE* output); + + /** \brief creates a limited scenario representing the package universe + * + * This method works similar to #WriteScenario as it works in the same + * way but doesn't send the complete universe to the solver but only + * packages included in the pkgset which will have only dependencies + * on packages which are in the given set. All other dependencies will + * be removed, so that this method can be used to create testcases + * + * \param Cache is the known package universe + * \param output is written to this "file" + * \param pkgset is a set of packages the universe should be limited to + * + * \return true if universe was composed successfully, otherwise false + */ bool static WriteLimitedScenario(pkgDepCache &Cache, FILE* output, APT::PackageSet const &pkgset); + + /** \brief waits and acts on the information returned from the solver + * + * This method takes care of interpreting whatever the solver sends + * through the standard output like a solution, progress or an error. + * The main thread should handle his control over to this method to + * wait for the solver to finish the given task + * + * \param input file descriptor with the response from the solver + * \param Cache the solution should be applied on if any + * + * \return true if a solution is found and applied correctly, otherwise false + */ bool static ReadResponse(int const input, pkgDepCache &Cache); - // ReadScenario is provided by the listparser infrastructure + /** \brief search and read the request stanza for action later + * + * This method while ignore the input up to the point it finds the + * Request: line as an indicator for the Request stanza. + * The request is stored in the parameters install and remove then, + * as the cache isn't build yet as the scenario follows the request. + * + * \param input file descriptor with the edsp input for the solver + * \param[out] install is a list which gets populated with requested installs + * \param[out] remove is a list which gets populated with requested removals + * \param[out] upgrade is true if it is a request like apt-get upgrade + * \param[out] distUpgrade is true if it is a request like apt-get dist-upgrade + * \param[out] autoRemove is true if removal of uneeded packages should be performed + * + * \return true if the request could be found and worked on, otherwise false + */ bool static ReadRequest(int const input, std::list &install, std::list &remove, bool &upgrade, bool &distUpgrade, bool &autoRemove); + + /** \brief takes the request lists and applies it on the cache + * + * The lists as created by #ReadRequest will be used to find the + * packages in question and mark them for install/remove. + * No solving is done and no auto-install/-remove. + * + * \param install is a list of packages to mark for installation + * \param remove is a list of packages to mark for removal + * \param Cache is there the markers should be set + * + * \return false if the request couldn't be applied, true otherwise + */ bool static ApplyRequest(std::list const &install, std::list const &remove, pkgDepCache &Cache); + + /** \brief encodes the changes in the Cache as a EDSP solution + * + * The markers in the Cache are observed and send to given + * file. The solution isn't checked for consistency or alike, + * so even broken solutions can be written successfully, + * but the front-end revicing it will properly fail then. + * + * \param Cache which represents the solution + * \param output to write the stanzas forming the solution to + * + * \return true if solution could be written, otherwise false + */ bool static WriteSolution(pkgDepCache &Cache, FILE* output); + + /** \brief sends a progress report + * + * \param percent of the solving completed + * \param message the solver wants the user to see + * \param output the front-end listens for progress report + */ bool static WriteProgress(unsigned short const percent, const char* const message, FILE* output); + + /** \brief sends an error report + * + * Solvers are expected to execute successfully even if + * they were unable to calculate a solution for a given task. + * Obviously they can't send a solution through, so this + * methods deals with formatting an error message correctly + * so that the front-ends can recieve and display it. + * + * The first line of the message should be a short description + * of the error so it can be used for dialog titles or alike + */ bool static WriteError(std::string const &message, FILE* output); + /** \brief executes the given solver and returns the pipe ends + * + * The given solver is executed if it can be found in one of the + * configured directories and setup for it is performed. + * + * \param solver to execute + * \param[out] solver_in will be the stdin of the solver + * \param[out] solver_out will be the stdout of the solver + * + * \return true if the solver could be started and the pipes + * are set up correctly, otherwise false and the pipes are invalid + */ bool static ExecuteSolver(const char* const solver, int *solver_in, int *solver_out); + + /** \brief call an external resolver to handle the request + * + * This method wraps all the methods above to call an external solver + * + * \param solver to execute + * \param Cache with the problem and as universe to work in + * \param upgrade is true if it is a request like apt-get upgrade + * \param distUpgrade is true if it is a request like apt-get dist-upgrade + * \param autoRemove is true if unneeded packages should be removed + * + * \return true if the solver has successfully solved the problem, + * otherwise false + */ bool static ResolveExternal(const char* const solver, pkgDepCache &Cache, bool const upgrade, bool const distUpgrade, bool const autoRemove); -- cgit v1.2.3-70-g09d2 From ff859c7f94e7ba2b698208d3db43a2b3bdbbb736 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 14:15:52 +0200 Subject: ship the apt-internal-solver in apt-utils package and link it to /usr/lib/apt/solvers so we have it available for playing as 'apt' --- debian/apt-utils.links | 1 + debian/rules | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 debian/apt-utils.links diff --git a/debian/apt-utils.links b/debian/apt-utils.links new file mode 100644 index 000000000..5bf138c4a --- /dev/null +++ b/debian/apt-utils.links @@ -0,0 +1 @@ +usr/bin/apt-internal-solver usr/lib/apt/solvers/apt diff --git a/debian/rules b/debian/rules index 640900678..c8aefee63 100755 --- a/debian/rules +++ b/debian/rules @@ -62,7 +62,7 @@ configure.in: endif # APT Programs in apt-utils -APT_UTILS=ftparchive sortpkgs extracttemplates +APT_UTILS=ftparchive sortpkgs extracttemplates internal-solver # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 -- cgit v1.2.3-70-g09d2 From df783e0aa69f70b7be2b7fb44cc593efd86f7730 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 14:17:29 +0200 Subject: add a --solver option to apt-get --- cmdline/apt-get.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index a1264f54a..2312f5a10 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -3253,6 +3253,7 @@ int main(int argc,const char *argv[]) /*{{{*/ {0,"install-recommends","APT::Install-Recommends",CommandLine::Boolean}, {0,"install-suggests","APT::Install-Suggests",CommandLine::Boolean}, {0,"fix-policy","APT::Get::Fix-Policy-Broken",0}, + {0,"solver","APT::Solver::Name",CommandLine::HasArg}, {'c',"config-file",0,CommandLine::ConfigFile}, {'o',"option",0,CommandLine::ArbItem}, {0,0,0,0}}; -- cgit v1.2.3-70-g09d2 From ee8c790a660a817417267379bca1a26e7813dfde Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 16:45:01 +0200 Subject: maybe Pre-Depends are checked if they write them as Pre-Depends and not as PreDepends (doh!) … MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apt-pkg/edsp.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 8bd0c14bb..ce9ad250c 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -21,7 +21,7 @@ // we could use pkgCache::DepType and ::Priority, but these would be localized strings… const char * const EDSP::PrioMap[] = {0, "important", "required", "standard", "optional", "extra"}; -const char * const EDSP::DepMap[] = {"", "Depends", "PreDepends", "Suggests", +const char * const EDSP::DepMap[] = {"", "Depends", "Pre-Depends", "Suggests", "Recommends" , "Conflicts", "Replaces", "Obsoletes", "Breaks", "Enhances"}; -- cgit v1.2.3-70-g09d2 From 7f4713547665e12e032501228a98586e5add48f7 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 17:27:11 +0200 Subject: add a tiny dump solver to quickly output a scenario --- cmdline/apt-dump-solver.cc | 50 ++++++++++++++++++++++++++++++++++++++++++++++ cmdline/makefile | 7 +++++++ debian/apt-utils.install | 1 + debian/apt.dirs | 1 + debian/rules | 2 +- 5 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 cmdline/apt-dump-solver.cc diff --git a/cmdline/apt-dump-solver.cc b/cmdline/apt-dump-solver.cc new file mode 100644 index 000000000..5bcfe4f06 --- /dev/null +++ b/cmdline/apt-dump-solver.cc @@ -0,0 +1,50 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ##################################################################### + + dummy solver to get quickly a scenario file out of APT + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include + +#include + +#include + /*}}}*/ + +// ShowHelp - Show a help screen /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool ShowHelp() { + + std::cout << + PACKAGE " " VERSION " for " COMMON_ARCH " compiled on " __DATE__ " " __TIME__ << std::endl << + "Usage: apt-dump-resolver\n" + "\n" + "apt-dump-resolver is a dummy solver who just dumps its input to the\n" + "file /tmp/dump.edsp and exists with a proper EDSP error.\n" + "\n" + " This dump has lost Super Cow Powers.\n"; + return true; +} + /*}}}*/ +int main(int argc,const char *argv[]) /*{{{*/ +{ + if (argc > 1 && (strcmp(argv[1], "--help") == 0 || strcmp(argv[1],"-h") == 0 || + strcmp(argv[1],"-v") == 0 || strcmp(argv[1],"--version") == 0)) { + ShowHelp(); + return 0; + } + + FILE* input = fdopen(STDIN_FILENO, "r"); + FILE* output = fopen("/tmp/dump.edsp", "w"); + char buffer[400]; + while (fgets(buffer, sizeof(buffer), input) != NULL) + fputs(buffer, output); + fclose(output); + fclose(input); + + EDSP::WriteError("I am too dumb, i can just dump!", stdout); +} diff --git a/cmdline/makefile b/cmdline/makefile index 4462ccaf4..aea5d1db5 100644 --- a/cmdline/makefile +++ b/cmdline/makefile @@ -71,3 +71,10 @@ SLIBS = -lapt-pkg $(INTLLIBS) LIB_MAKES = apt-pkg/makefile SOURCE = apt-internal-solver.cc include $(PROGRAM_H) + +# The internal solver acting as an external +PROGRAM=apt-dump-solver +SLIBS = -lapt-pkg $(INTLLIBS) +LIB_MAKES = apt-pkg/makefile +SOURCE = apt-dump-solver.cc +include $(PROGRAM_H) diff --git a/debian/apt-utils.install b/debian/apt-utils.install index d947f26d4..0c72bfdc8 100644 --- a/debian/apt-utils.install +++ b/debian/apt-utils.install @@ -1 +1,2 @@ bin/libapt-inst*.so.* usr/lib/ +bin/apt-dump-solver usr/lib/apt/solvers/dump diff --git a/debian/apt.dirs b/debian/apt.dirs index 2770d79bb..f9c0b6c3e 100644 --- a/debian/apt.dirs +++ b/debian/apt.dirs @@ -1,5 +1,6 @@ usr/bin usr/lib/apt/methods +usr/lib/apt/solvers usr/lib/dpkg/methods/apt etc/apt etc/apt/apt.conf.d diff --git a/debian/rules b/debian/rules index c8aefee63..77a7b4fdb 100755 --- a/debian/rules +++ b/debian/rules @@ -182,7 +182,7 @@ apt: build build-doc dh_install -p$@ --sourcedir=$(BLD) # Remove the bits that are in apt-utils - rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS)) + rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS) dump-solver) # https has its own package rm debian/$@/usr/lib/apt/methods/https -- cgit v1.2.3-70-g09d2 From bda94cb8432b3905f5757e92573fd16e73cb183f Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 3 May 2011 19:59:45 +0200 Subject: fix arguments for MarkInstall so packages are really marked as automatic --- apt-pkg/edsp.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index ce9ad250c..5b59373bd 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -273,7 +273,7 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { pkgCache::VerIterator Ver(Cache.GetCache(), Cache.GetCache().VerP + VerIdx[id]); Cache.SetCandidateVersion(Ver); if (type == "Install") - Cache.MarkInstall(Ver.ParentPkg(), false, false); + Cache.MarkInstall(Ver.ParentPkg(), false, 0, false); else if (type == "Remove") Cache.MarkDelete(Ver.ParentPkg(), false); else if (type == "Autoremove") { @@ -450,10 +450,10 @@ bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) /*}}}*/ // EDSP::WriteProgess - pulse to the given file descriptor /*{{{*/ bool EDSP::WriteProgress(unsigned short const percent, const char* const message, FILE* output) { - fprintf(output, "Progress: %s\n", TimeRFC1123(time(NULL)).c_str()); - fprintf(output, "Percentage: %d\n", percent); - fprintf(output, "Message: %s\n\n", message); - fflush(output); +// fprintf(output, "Progress: %s\n", TimeRFC1123(time(NULL)).c_str()); +// fprintf(output, "Percentage: %d\n", percent); +// fprintf(output, "Message: %s\n\n", message); +// fflush(output); return true; } /*}}}*/ -- cgit v1.2.3-70-g09d2 From 3d17b9ffc7c5a417d69916c282f4756cc7e938d2 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 6 May 2011 11:53:54 +0200 Subject: undo the temporary progress reporting disabling which slipped into last commit --- apt-pkg/edsp.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 5b59373bd..d604110ef 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -450,10 +450,10 @@ bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) /*}}}*/ // EDSP::WriteProgess - pulse to the given file descriptor /*{{{*/ bool EDSP::WriteProgress(unsigned short const percent, const char* const message, FILE* output) { -// fprintf(output, "Progress: %s\n", TimeRFC1123(time(NULL)).c_str()); -// fprintf(output, "Percentage: %d\n", percent); -// fprintf(output, "Message: %s\n\n", message); -// fflush(output); + fprintf(output, "Progress: %s\n", TimeRFC1123(time(NULL)).c_str()); + fprintf(output, "Percentage: %d\n", percent); + fprintf(output, "Message: %s\n\n", message); + fflush(output); return true; } /*}}}*/ -- cgit v1.2.3-70-g09d2 From ebfeeaedf5bc357170cae971c0f6a1458ff65f65 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 7 May 2011 15:49:51 +0200 Subject: implement correct error reporting --- apt-pkg/edsp.cc | 14 ++++++++++++-- apt-pkg/edsp.h | 7 ++++++- cmdline/apt-dump-solver.cc | 2 +- cmdline/apt-internal-solver.cc | 6 +++--- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index d604110ef..7ece92d2e 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -256,6 +256,11 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { else std::clog << msg << std::endl; continue; + } else if (section.Exists("Error") == true) { + std::cerr << "The solver encountered an error of type: " << section.FindS("Error") << std::endl; + std::cerr << "The following information might help you to understand what is wrong:" << std::endl; + std::cerr << SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n") << std::endl << std::endl; + break; } else if (section.Exists("Autoremove") == true) type = "Autoremove"; else @@ -457,8 +462,13 @@ bool EDSP::WriteProgress(unsigned short const percent, const char* const message return true; } /*}}}*/ -bool EDSP::WriteError(std::string const &message, FILE* output) { return false; } - +// EDSP::WriteError - format an error message to be send to file descriptor /*{{{*/ +bool EDSP::WriteError(char const * const uuid, std::string const &message, FILE* output) { + fprintf(output, "Error: %s\n", uuid); + fprintf(output, "Message: %s\n\n", SubstVar(SubstVar(message, "\n\n", "\n.\n"), "\n", "\n ").c_str()); + return true; +} + /*}}}*/ // EDSP::ExecuteSolver - fork requested solver and setup ipc pipes {{{*/ bool EDSP::ExecuteSolver(const char* const solver, int *solver_in, int *solver_out) { std::vector const solverDirs = _config->FindVector("Dir::Bin::Solvers"); diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index 98a70d7f6..210188d03 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -171,8 +171,13 @@ public: * * The first line of the message should be a short description * of the error so it can be used for dialog titles or alike + * + * \param uuid of this error message + * \param message is free form text to discribe the error + * \param output the front-end listens for error messages */ - bool static WriteError(std::string const &message, FILE* output); + bool static WriteError(char const * const uuid, std::string const &message, FILE* output); + /** \brief executes the given solver and returns the pipe ends * diff --git a/cmdline/apt-dump-solver.cc b/cmdline/apt-dump-solver.cc index 5bcfe4f06..dab0cc6fd 100644 --- a/cmdline/apt-dump-solver.cc +++ b/cmdline/apt-dump-solver.cc @@ -46,5 +46,5 @@ int main(int argc,const char *argv[]) /*{{{*/ fclose(output); fclose(input); - EDSP::WriteError("I am too dumb, i can just dump!", stdout); + EDSP::WriteError("ERR_JUST_DUMPING", "I am too dumb, i can just dump!\nPlease use one of my friends instead!", stdout); } diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc index df6a6f569..ad00a0e23 100644 --- a/cmdline/apt-internal-solver.cc +++ b/cmdline/apt-internal-solver.cc @@ -158,16 +158,16 @@ int main(int argc,const char *argv[]) /*{{{*/ if (upgrade == true) { if (pkgAllUpgrade(CacheFile) == false) { - EDSP::WriteError("An upgrade error occured", output); + EDSP::WriteError("ERR_UNSOLVABLE_UPGRADE", "An upgrade error occured", output); return 0; } } else if (distUpgrade == true) { if (pkgDistUpgrade(CacheFile) == false) { - EDSP::WriteError("An dist-upgrade error occured", output); + EDSP::WriteError("ERR_UNSOLVABLE_DIST_UPGRADE", "An dist-upgrade error occured", output); return 0; } } else if (Fix.Resolve() == false) { - EDSP::WriteError("An error occured", output); + EDSP::WriteError("ERR_UNSOLVABLE", "An error occured", output); return 0; } -- cgit v1.2.3-70-g09d2 From b57c0e355d7f27a74c860ed73700cf9241cb4e61 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 9 May 2011 18:00:28 +0200 Subject: implement proper progress report with OpProgress --- apt-pkg/algorithms.cc | 24 ++++++++++++------- apt-pkg/edsp.cc | 64 ++++++++++++++++++++++++++++++++++++--------------- apt-pkg/edsp.h | 18 +++++++++++---- 3 files changed, 74 insertions(+), 32 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 5d9fefaa6..31c3e9c28 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -333,8 +333,10 @@ bool pkgFixBroken(pkgDepCache &Cache) bool pkgDistUpgrade(pkgDepCache &Cache) { std::string const solver = _config->Find("APT::Solver::Name", "internal"); - if (solver != "internal") - return EDSP::ResolveExternal(solver.c_str(), Cache, false, true, false); + if (solver != "internal") { + OpTextProgress Prog(*_config); + return EDSP::ResolveExternal(solver.c_str(), Cache, false, true, false, &Prog); + } pkgDepCache::ActionGroup group(Cache); @@ -389,8 +391,10 @@ bool pkgDistUpgrade(pkgDepCache &Cache) bool pkgAllUpgrade(pkgDepCache &Cache) { std::string const solver = _config->Find("APT::Solver::Name", "internal"); - if (solver != "internal") - return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false); + if (solver != "internal") { + OpTextProgress Prog(*_config); + return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false, &Prog); + } pkgDepCache::ActionGroup group(Cache); @@ -748,8 +752,10 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg) bool pkgProblemResolver::Resolve(bool BrokenFix) { std::string const solver = _config->Find("APT::Solver::Name", "internal"); - if (solver != "internal") - return EDSP::ResolveExternal(solver.c_str(), Cache, false, false, false); + if (solver != "internal") { + OpTextProgress Prog(*_config); + return EDSP::ResolveExternal(solver.c_str(), Cache, false, false, false, &Prog); + } return ResolveInternal(BrokenFix); } /*}}}*/ @@ -1223,8 +1229,10 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix) bool pkgProblemResolver::ResolveByKeep() { std::string const solver = _config->Find("APT::Solver::Name", "internal"); - if (solver != "internal") - return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false); + if (solver != "internal") { + OpTextProgress Prog(*_config); + return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false, &Prog); + } return ResolveByKeepInternal(); } /*}}}*/ diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 7ece92d2e..489dd2933 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -26,29 +26,42 @@ const char * const EDSP::DepMap[] = {"", "Depends", "Pre-Depends", "Suggests", "Obsoletes", "Breaks", "Enhances"}; // EDSP::WriteScenario - to the given file descriptor /*{{{*/ -bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output) +bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output, OpProgress *Progress) { + if (Progress != NULL) + Progress->SubProgress(Cache.Head().VersionCount, _("Send scenario to solver")); + unsigned long p = 0; for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) - for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) + for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver, ++p) { WriteScenarioVersion(Cache, output, Pkg, Ver); WriteScenarioDependency(Cache, output, Pkg, Ver); fprintf(output, "\n"); + if (Progress != NULL && p % 100 == 0) + Progress->Progress(p); } return true; } /*}}}*/ // EDSP::WriteLimitedScenario - to the given file descriptor /*{{{*/ bool EDSP::WriteLimitedScenario(pkgDepCache &Cache, FILE* output, - APT::PackageSet const &pkgset) + APT::PackageSet const &pkgset, + OpProgress *Progress) { - for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg) + if (Progress != NULL) + Progress->SubProgress(Cache.Head().VersionCount, _("Send scenario to solver")); + unsigned long p = 0; + for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg, ++p) for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) { WriteScenarioVersion(Cache, output, Pkg, Ver); WriteScenarioLimitedDependency(Cache, output, Pkg, Ver, pkgset); fprintf(output, "\n"); + if (Progress != NULL && p % 100 == 0) + Progress->Progress(p); } + if (Progress != NULL) + Progress->Done(); return true; } /*}}}*/ @@ -184,11 +197,17 @@ void EDSP::WriteScenarioLimitedDependency(pkgDepCache &Cache, FILE* output, /*}}}*/ // EDSP::WriteRequest - to the given file descriptor /*{{{*/ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, - bool const DistUpgrade, bool const AutoRemove) + bool const DistUpgrade, bool const AutoRemove, + OpProgress *Progress) { + if (Progress != NULL) + Progress->SubProgress(Cache.Head().PackageCount, _("Send request to solver")); + unsigned long p = 0; string del, inst; - for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg, ++p) { + if (Progress != NULL && p % 100 == 0) + Progress->Progress(p); string* req; if (Cache[Pkg].Delete() == true) req = &del; @@ -221,7 +240,7 @@ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, } /*}}}*/ // EDSP::ReadResponse - from the given file descriptor /*{{{*/ -bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { +bool EDSP::ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progress) { /* We build an map id to mmap offset here In theory we could use the offset as ID, but then VersionCount couldn't be used to create other versionmappings anymore and it @@ -247,14 +266,14 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache) { else if (section.Exists("Remove") == true) type = "Remove"; else if (section.Exists("Progress") == true) { - std::clog << TimeRFC1123(time(NULL)) << " "; - ioprintf(std::clog, "[ %3d%% ] ", section.FindI("Percentage", 0)); - std::clog << section.FindS("Progress") << " - "; - string const msg = section.FindS("Message"); - if (msg.empty() == true) - std::clog << "Solver is still working on the solution" << std::endl; - else - std::clog << msg << std::endl; + if (Progress != NULL) { + string const msg = section.FindS("Message"); + if (msg.empty() == true) + Progress->SubProgress(100, _("Prepare for receiving solution")); + else + Progress->SubProgress(100, msg); + Progress->Progress(section.FindI("Percentage", 0)); + } continue; } else if (section.Exists("Error") == true) { std::cerr << "The solver encountered an error of type: " << section.FindS("Error") << std::endl; @@ -512,7 +531,7 @@ bool EDSP::ExecuteSolver(const char* const solver, int *solver_in, int *solver_o // EDSP::ResolveExternal - resolve problems by asking external for help {{{*/ bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache, bool const upgrade, bool const distUpgrade, - bool const autoRemove) { + bool const autoRemove, OpProgress *Progress) { int solver_in, solver_out; if (EDSP::ExecuteSolver(solver, &solver_in, &solver_out) == false) return false; @@ -520,11 +539,18 @@ bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache, FILE* output = fdopen(solver_in, "w"); if (output == NULL) return _error->Errno("Resolve", "fdopen on solver stdin failed"); - EDSP::WriteRequest(Cache, output, upgrade, distUpgrade, autoRemove); - EDSP::WriteScenario(Cache, output); + + if (Progress != NULL) + Progress->OverallProgress(0, 100, 5, _("Execute external solver")); + EDSP::WriteRequest(Cache, output, upgrade, distUpgrade, autoRemove, Progress); + if (Progress != NULL) + Progress->OverallProgress(5, 100, 20, _("Execute external solver")); + EDSP::WriteScenario(Cache, output, Progress); fclose(output); - if (EDSP::ReadResponse(solver_out, Cache) == false) + if (Progress != NULL) + Progress->OverallProgress(25, 100, 75, _("Execute external solver")); + if (EDSP::ReadResponse(solver_out, Cache, Progress) == false) return _error->Error("Reading solver response failed"); return true; diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index 210188d03..743c3f5d1 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -11,6 +11,7 @@ #include #include +#include #include @@ -46,13 +47,15 @@ public: * \param upgrade is true if it is an request like apt-get upgrade * \param distUpgrade is true if it is a request like apt-get dist-upgrade * \param autoRemove is true if removal of unneeded packages should be performed + * \param Progress is an instance to report progress to * * \return true if request was composed successfully, otherwise false */ bool static WriteRequest(pkgDepCache &Cache, FILE* output, bool const upgrade = false, bool const distUpgrade = false, - bool const autoRemove = false); + bool const autoRemove = false, + OpProgress *Progress = NULL); /** \brief creates the scenario representing the package universe * @@ -67,10 +70,11 @@ public: * * \param Cache is the known package universe * \param output is written to this "file" + * \param Progress is an instance to report progress to * * \return true if universe was composed successfully, otherwise false */ - bool static WriteScenario(pkgDepCache &Cache, FILE* output); + bool static WriteScenario(pkgDepCache &Cache, FILE* output, OpProgress *Progress = NULL); /** \brief creates a limited scenario representing the package universe * @@ -83,11 +87,13 @@ public: * \param Cache is the known package universe * \param output is written to this "file" * \param pkgset is a set of packages the universe should be limited to + * \param Progress is an instance to report progress to * * \return true if universe was composed successfully, otherwise false */ bool static WriteLimitedScenario(pkgDepCache &Cache, FILE* output, - APT::PackageSet const &pkgset); + APT::PackageSet const &pkgset, + OpProgress *Progress = NULL); /** \brief waits and acts on the information returned from the solver * @@ -98,10 +104,11 @@ public: * * \param input file descriptor with the response from the solver * \param Cache the solution should be applied on if any + * \param Progress is an instance to report progress to * * \return true if a solution is found and applied correctly, otherwise false */ - bool static ReadResponse(int const input, pkgDepCache &Cache); + bool static ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progress = NULL); /** \brief search and read the request stanza for action later * @@ -202,13 +209,14 @@ public: * \param upgrade is true if it is a request like apt-get upgrade * \param distUpgrade is true if it is a request like apt-get dist-upgrade * \param autoRemove is true if unneeded packages should be removed + * \param Progress is an instance to report progress to * * \return true if the solver has successfully solved the problem, * otherwise false */ bool static ResolveExternal(const char* const solver, pkgDepCache &Cache, bool const upgrade, bool const distUpgrade, - bool const autoRemove); + bool const autoRemove, OpProgress *Progress = NULL); }; /*}}}*/ #endif -- cgit v1.2.3-70-g09d2 From 66b6fe055a0604d2a8372e61032e492f88f49f86 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 9 May 2011 21:55:32 +0200 Subject: fix package building so 'dump' is a binary not a directory --- debian/apt-utils.dirs | 2 +- debian/apt-utils.install | 1 - debian/rules | 2 ++ 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/apt-utils.dirs b/debian/apt-utils.dirs index 14f5b95d7..681e55192 100644 --- a/debian/apt-utils.dirs +++ b/debian/apt-utils.dirs @@ -1,2 +1,2 @@ -usr/lib +usr/lib/apt/solvers usr/bin diff --git a/debian/apt-utils.install b/debian/apt-utils.install index 0c72bfdc8..d947f26d4 100644 --- a/debian/apt-utils.install +++ b/debian/apt-utils.install @@ -1,2 +1 @@ bin/libapt-inst*.so.* usr/lib/ -bin/apt-dump-solver usr/lib/apt/solvers/dump diff --git a/debian/rules b/debian/rules index 77a7b4fdb..c83796e03 100755 --- a/debian/rules +++ b/debian/rules @@ -236,8 +236,10 @@ apt-utils: build dh_installdirs -p$@ cp $(addprefix $(BLD)/bin/apt-,$(APT_UTILS)) debian/$@/usr/bin/ + cp $(BLD)/bin/apt-dump-solver debian/$@/usr/lib/apt/solvers/dump dh_install -p$@ --sourcedir=$(BLD) + dh_link -p$@ dh_installdocs -p$@ dh_installexamples -p$@ -- cgit v1.2.3-70-g09d2 From c6660a4ba95e2c8112ee5190a71bdfa6640eb35d Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 10 May 2011 12:18:08 +0200 Subject: fix SubProgress to accept a Percent parameter to update the Current with the text as otherwise the update will be ignored --- apt-pkg/contrib/progress.cc | 27 +++++++++------------------ apt-pkg/contrib/progress.h | 3 +-- apt-pkg/edsp.cc | 8 +++----- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc index 45e81edcb..84ee4c124 100644 --- a/apt-pkg/contrib/progress.cc +++ b/apt-pkg/contrib/progress.cc @@ -65,27 +65,18 @@ void OpProgress::OverallProgress(unsigned long Current, unsigned long Total, // OpProgress::SubProgress - Set the sub progress state /*{{{*/ // --------------------------------------------------------------------- /* */ -void OpProgress::SubProgress(unsigned long SubTotal,const string &Op) +void OpProgress::SubProgress(unsigned long SubTotal,const string &Op, + float const Percent) { this->SubTotal = SubTotal; - SubOp = Op; - if (Total == 0) - Percent = 0; + if (Op.empty() == false) + SubOp = Op; + if (Total == 0 || Percent == 0) + this->Percent = 0; + else if (Percent != -1) + this->Percent = this->Current += (Size*Percent)/SubTotal; else - Percent = Current*100.0/Total; - Update(); -} - /*}}}*/ -// OpProgress::SubProgress - Set the sub progress state /*{{{*/ -// --------------------------------------------------------------------- -/* */ -void OpProgress::SubProgress(unsigned long SubTotal) -{ - this->SubTotal = SubTotal; - if (Total == 0) - Percent = 0; - else - Percent = Current*100.0/Total; + this->Percent = Current*100.0/Total; Update(); } /*}}}*/ diff --git a/apt-pkg/contrib/progress.h b/apt-pkg/contrib/progress.h index 7dd004f7e..3a914d17f 100644 --- a/apt-pkg/contrib/progress.h +++ b/apt-pkg/contrib/progress.h @@ -55,8 +55,7 @@ class OpProgress public: void Progress(unsigned long Current); - void SubProgress(unsigned long SubTotal); - void SubProgress(unsigned long SubTotal,const string &Op); + void SubProgress(unsigned long SubTotal, const string &Op = "", float const Percent = -1); void OverallProgress(unsigned long Current,unsigned long Total, unsigned long Size,const string &Op); virtual void Done() {}; diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 489dd2933..0e229e1c0 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -267,12 +267,10 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progres type = "Remove"; else if (section.Exists("Progress") == true) { if (Progress != NULL) { - string const msg = section.FindS("Message"); + string msg = section.FindS("Message"); if (msg.empty() == true) - Progress->SubProgress(100, _("Prepare for receiving solution")); - else - Progress->SubProgress(100, msg); - Progress->Progress(section.FindI("Percentage", 0)); + msg = _("Prepare for receiving solution"); + Progress->SubProgress(100, msg, section.FindI("Percentage", 0)); } continue; } else if (section.Exists("Error") == true) { -- cgit v1.2.3-70-g09d2 From 27c69dd0b36e3da7b6061e597d755f5a60a0d31b Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 10 May 2011 13:00:56 +0200 Subject: send the first line of the error message to the error list and fail a bit more nicely and in order --- apt-pkg/edsp.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 0e229e1c0..218ce9f24 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -274,10 +274,18 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progres } continue; } else if (section.Exists("Error") == true) { + std::string msg = SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n"); + if (msg.empty() == true) { + msg = _("External solver failed without a proper error message"); + _error->Error(msg.c_str()); + } else + _error->Error("External solver failed with: %s", msg.substr(0,msg.find('\n')).c_str()); + if (Progress != NULL) + Progress->Done(); std::cerr << "The solver encountered an error of type: " << section.FindS("Error") << std::endl; std::cerr << "The following information might help you to understand what is wrong:" << std::endl; - std::cerr << SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n") << std::endl << std::endl; - break; + std::cerr << msg << std::endl << std::endl; + return false; } else if (section.Exists("Autoremove") == true) type = "Autoremove"; else @@ -549,7 +557,7 @@ bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache, if (Progress != NULL) Progress->OverallProgress(25, 100, 75, _("Execute external solver")); if (EDSP::ReadResponse(solver_out, Cache, Progress) == false) - return _error->Error("Reading solver response failed"); + return false; return true; } -- cgit v1.2.3-70-g09d2 From 98278a81bf554246b70b97852c9b8b92eac390ea Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 17 May 2011 17:42:01 +0200 Subject: rename option APT::Solver::Name to simply APT::Solver --- apt-pkg/algorithms.cc | 8 ++++---- apt-pkg/depcache.cc | 4 ++-- apt-pkg/edsp.cc | 2 +- cmdline/apt-get.cc | 2 +- cmdline/apt-internal-solver.cc | 2 +- doc/external-dependency-solver-protocol.txt | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 6f1f82d50..47bdd4aba 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -330,7 +330,7 @@ bool pkgFixBroken(pkgDepCache &Cache) */ bool pkgDistUpgrade(pkgDepCache &Cache) { - std::string const solver = _config->Find("APT::Solver::Name", "internal"); + std::string const solver = _config->Find("APT::Solver", "internal"); if (solver != "internal") { OpTextProgress Prog(*_config); return EDSP::ResolveExternal(solver.c_str(), Cache, false, true, false, &Prog); @@ -388,7 +388,7 @@ bool pkgDistUpgrade(pkgDepCache &Cache) to install packages not marked for install */ bool pkgAllUpgrade(pkgDepCache &Cache) { - std::string const solver = _config->Find("APT::Solver::Name", "internal"); + std::string const solver = _config->Find("APT::Solver", "internal"); if (solver != "internal") { OpTextProgress Prog(*_config); return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false, &Prog); @@ -745,7 +745,7 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg) /* */ bool pkgProblemResolver::Resolve(bool BrokenFix) { - std::string const solver = _config->Find("APT::Solver::Name", "internal"); + std::string const solver = _config->Find("APT::Solver", "internal"); if (solver != "internal") { OpTextProgress Prog(*_config); return EDSP::ResolveExternal(solver.c_str(), Cache, false, false, false, &Prog); @@ -1211,7 +1211,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix) system was non-broken previously. */ bool pkgProblemResolver::ResolveByKeep() { - std::string const solver = _config->Find("APT::Solver::Name", "internal"); + std::string const solver = _config->Find("APT::Solver", "internal"); if (solver != "internal") { OpTextProgress Prog(*_config); return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false, &Prog); diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 5cb68804d..947435706 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1046,7 +1046,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, Update(Pkg); AddSizes(Pkg); - if (AutoInst == false || _config->Find("APT::Solver::Name", "internal") != "internal") + if (AutoInst == false || _config->Find("APT::Solver", "internal") != "internal") return; if (DebugMarker == true) @@ -1605,7 +1605,7 @@ bool pkgDepCache::MarkFollowsSuggests() // pkgDepCache::MarkRequired - the main mark algorithm /*{{{*/ bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc) { - if (_config->Find("APT::Solver::Name", "internal") != "internal") + if (_config->Find("APT::Solver", "internal") != "internal") return true; bool follow_recommends; diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 218ce9f24..02ef7d04b 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -231,7 +231,7 @@ bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, if (_config->FindB("APT::Solver::Strict-Pinning", true) == false) fprintf(output, "Strict-Pinning: no\n"); string solverpref("APT::Solver::"); - solverpref.append(_config->Find("APT::Solver::Name", "internal")).append("::Preferences"); + solverpref.append(_config->Find("APT::Solver", "internal")).append("::Preferences"); if (_config->Exists(solverpref) == true) fprintf(output, "Preferences: %s\n", _config->Find(solverpref,"").c_str()); fprintf(output, "\n"); diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index fdb1033a1..d48ca18f9 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -3270,7 +3270,7 @@ int main(int argc,const char *argv[]) /*{{{*/ {0,"install-recommends","APT::Install-Recommends",CommandLine::Boolean}, {0,"install-suggests","APT::Install-Suggests",CommandLine::Boolean}, {0,"fix-policy","APT::Get::Fix-Policy-Broken",0}, - {0,"solver","APT::Solver::Name",CommandLine::HasArg}, + {0,"solver","APT::Solver",CommandLine::HasArg}, {'c',"config-file",0,CommandLine::ConfigFile}, {'o',"option",0,CommandLine::ArbItem}, {0,0,0,0}}; diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc index ad00a0e23..ef6c688fe 100644 --- a/cmdline/apt-internal-solver.cc +++ b/cmdline/apt-internal-solver.cc @@ -97,7 +97,7 @@ int main(int argc,const char *argv[]) /*{{{*/ if (_config->FindI("quiet", 0) < 1) _config->Set("Debug::EDSP::WriteSolution", true); - _config->Set("APT::Solver::Name", "internal"); + _config->Set("APT::Solver", "internal"); _config->Set("edsp::scenario", "stdin"); int input = STDIN_FILENO; FILE* output = stdout; diff --git a/doc/external-dependency-solver-protocol.txt b/doc/external-dependency-solver-protocol.txt index ae01fbc35..7a124d8f9 100644 --- a/doc/external-dependency-solver-protocol.txt +++ b/doc/external-dependency-solver-protocol.txt @@ -47,7 +47,7 @@ Several APT options can be used to affect dependency solving in APT. An overview of them is given below. Please refer to proper APT configuration documentation for more, and more up to date, information. -- **APT::Solver::Name**: the name of the solver to be used for +- **APT::Solver**: the name of the solver to be used for dependency solving. Defaults to `internal` - **APT::Solver::Strict-Pinning**: whether pinning must be strictly -- cgit v1.2.3-70-g09d2 From 894d672e9b7517573266cda333612e70441cbda8 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 17 May 2011 18:14:25 +0200 Subject: * apt-pkg/pkgcache.h: - clean up mess with the "all" handling in MultiArch to fix LP: #733741 cleanly for everyone now --- apt-pkg/cacheiterators.h | 4 +--- apt-pkg/deb/deblistparser.cc | 11 +++-------- apt-pkg/edsp.cc | 6 +++--- apt-pkg/packagemanager.cc | 4 ++-- apt-pkg/pkgcache.h | 17 ++++++++++------- debian/changelog | 6 ++++-- 6 files changed, 23 insertions(+), 25 deletions(-) diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index 0c9813c6d..535253099 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -206,9 +206,7 @@ class pkgCache::VerIterator : public Iterator { inline const char *VerStr() const {return S->VerStr == 0?0:Owner->StrP + S->VerStr;}; inline const char *Section() const {return S->Section == 0?0:Owner->StrP + S->Section;}; inline const char *Arch() const { - if (S->MultiArch == pkgCache::Version::All || - S->MultiArch == pkgCache::Version::AllForeign || - S->MultiArch == pkgCache::Version::AllAllowed) + if (S->MultiArch == pkgCache::Version::All) return "all"; return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; }; diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 4a9e94c85..a94b79f05 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -128,12 +128,7 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) } if (ArchitectureAll() == true) - switch (Ver->MultiArch) - { - case pkgCache::Version::Foreign: Ver->MultiArch = pkgCache::Version::AllForeign; break; - case pkgCache::Version::Allowed: Ver->MultiArch = pkgCache::Version::AllAllowed; break; - default: Ver->MultiArch = pkgCache::Version::All; - } + Ver->MultiArch |= pkgCache::Version::All; // Archive Size Ver->Size = Section.FindULL("Size"); @@ -687,12 +682,12 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) if (MultiArchEnabled == false) return true; - else if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) + else if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed) { string const Package = string(Ver.ParentPkg().Name()).append(":").append("any"); return NewProvidesAllArch(Ver, Package, Ver.VerStr()); } - else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) + else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) return NewProvidesAllArch(Ver, Ver.ParentPkg().Name(), Ver.VerStr()); return true; diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 02ef7d04b..4d2230613 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -82,11 +82,11 @@ void EDSP::WriteScenarioVersion(pkgDepCache &Cache, FILE* output, pkgCache::PkgI if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) fprintf(output, "Essential: yes\n"); fprintf(output, "Section: %s\n", Ver.Section()); - if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) + if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed) fprintf(output, "Multi-Arch: allowed\n"); - else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) + else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) fprintf(output, "Multi-Arch: foreign\n"); - else if (Ver->MultiArch == pkgCache::Version::Same) + else if ((Ver->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same) fprintf(output, "Multi-Arch: same\n"); signed short Pin = std::numeric_limits::min(); for (pkgCache::VerFileIterator File = Ver.FileList(); File.end() == false; ++File) { diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc index fe9f6eb68..1ae09347a 100644 --- a/apt-pkg/packagemanager.cc +++ b/apt-pkg/packagemanager.cc @@ -319,7 +319,7 @@ bool pkgPackageManager::SmartConfigure(PkgIterator Pkg) List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States); } - if (Cache[Pkg].InstVerIter(Cache)->MultiArch == pkgCache::Version::Same) + if ((Cache[Pkg].InstVerIter(Cache)->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same) for (PkgIterator P = Pkg.Group().PackageList(); P.end() == false; P = Pkg.Group().NextPkg(P)) { @@ -602,7 +602,7 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate) List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States); - if (instVer->MultiArch == pkgCache::Version::Same) + if ((instVer->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same) for (PkgIterator P = Pkg.Group().PackageList(); P.end() == false; P = Pkg.Group().NextPkg(P)) { diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h index 1b1743724..280f37bca 100644 --- a/apt-pkg/pkgcache.h +++ b/apt-pkg/pkgcache.h @@ -500,15 +500,18 @@ struct pkgCache::Version map_ptrloc VerStr; // StringItem /** \brief section this version is filled in */ map_ptrloc Section; // StringItem + + /** \brief Multi-Arch capabilities of a package version */ + enum VerMultiArch { None = 0, /*!< is the default and doesn't trigger special behaviour */ + All = (1<<0), /*!< will cause that Ver.Arch() will report "all" */ + Foreign = (1<<1), /*!< can satisfy dependencies in another architecture */ + Same = (1<<2), /*!< can be co-installed with itself from other architectures */ + Allowed = (1<<3) /*!< other packages are allowed to depend on thispkg:any */ }; /** \brief stores the MultiArch capabilities of this version - None is the default and doesn't trigger special behaviour, - Foreign means that this version can fulfill dependencies even - if it is built for another architecture as the requester. - Same indicates that builds for different architectures can - be co-installed on the system */ - /* FIXME: A bitflag would be better with the next abibreak… */ - enum {None, All, Foreign, Same, Allowed, AllForeign, AllAllowed} MultiArch; + Flags used are defined in pkgCache::Version::VerMultiArch + */ + unsigned char MultiArch; /** \brief references all the PackageFile's that this version came from diff --git a/debian/changelog b/debian/changelog index 1b691a33d..f1f076a68 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,13 +7,15 @@ apt (0.8.15) UNRELEASED; urgency=low * provide two edsp solvers in apt-utils: - 'dump' to quickly output a complete scenario and - 'apt' to use the internal as an external resolver + * apt-pkg/pkgcache.h: + - clean up mess with the "all" handling in MultiArch to + fix LP: #733741 cleanly for everyone now [ Stefano Zacchiroli ] * doc/external-dependency-solver-protocol.txt: - describe EDSP and the configuration interface around it - - -- David Kalnischkies Tue, 17 May 2011 17:34:56 +0200 + -- David Kalnischkies Tue, 17 May 2011 17:44:16 +0200 apt (0.8.14.2) UNRELEASED; urgency=low -- cgit v1.2.3-70-g09d2 From 27e8981a61bb9881154e727deb3d4adf75ad4d0a Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 17 May 2011 18:19:24 +0200 Subject: remove deprecated methods which nobody should have used anyway like pseudo-package related and/or private --- apt-pkg/cacheiterators.h | 4 ---- apt-pkg/cacheset.h | 2 -- apt-pkg/depcache.cc | 54 +----------------------------------------------- apt-pkg/depcache.h | 11 +--------- apt-pkg/pkgcache.cc | 3 --- 5 files changed, 2 insertions(+), 72 deletions(-) diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index 535253099..b97a1a589 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -210,9 +210,6 @@ class pkgCache::VerIterator : public Iterator { return "all"; return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; }; - __deprecated inline const char *Arch(bool const pseudo) const { - return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; - }; inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);}; inline DescIterator DescriptionList() const; @@ -225,7 +222,6 @@ class pkgCache::VerIterator : public Iterator { string RelStr() const; bool Automatic() const; - __deprecated bool Pseudo() const; VerFileIterator NewestFile() const; inline VerIterator(pkgCache &Owner,Version *Trg = 0) : Iterator(Owner, Trg) { diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h index eb4f04d72..061d0a2f4 100644 --- a/apt-pkg/cacheset.h +++ b/apt-pkg/cacheset.h @@ -257,7 +257,6 @@ public: /*{{{*/ inline const char *VerStr() const { return (**this).VerStr(); }; inline const char *Section() const { return (**this).Section(); }; inline const char *Arch() const { return (**this).Arch(); }; - __deprecated inline const char *Arch(bool const pseudo) const { return (**this).Arch(); }; inline pkgCache::PkgIterator ParentPkg() const { return (**this).ParentPkg(); }; inline pkgCache::DescIterator DescriptionList() const { return (**this).DescriptionList(); }; inline pkgCache::DescIterator TranslatedDescription() const { return (**this).TranslatedDescription(); }; @@ -268,7 +267,6 @@ public: /*{{{*/ inline const char *PriorityType() const { return (**this).PriorityType(); }; inline string RelStr() const { return (**this).RelStr(); }; inline bool Automatic() const { return (**this).Automatic(); }; - __deprecated inline bool Pseudo() const { return false; }; inline pkgCache::VerFileIterator NewestFile() const { return (**this).NewestFile(); }; }; /*}}}*/ diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 947435706..a91144466 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -406,58 +406,6 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res) /*}}}*/ // DepCache::AddSizes - Add the packages sizes to the counters /*{{{*/ // --------------------------------------------------------------------- -/* Call with Mult = -1 to preform the inverse opration - The Mult increases the complexity of the calulations here and is unused - - or do we really have a usecase for removing the size of a package two - times? So let us replace it with a simple bool and be done with it… */ -__deprecated void pkgDepCache::AddSizes(const PkgIterator &Pkg,signed long Mult) -{ - StateCache &P = PkgState[Pkg->ID]; - - if (Pkg->VersionList == 0) - return; - - if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure && - P.Keep() == true) - return; - - // Compute the size data - if (P.NewInstall() == true) - { - iUsrSize += (signed long long)(Mult*P.InstVerIter(*this)->InstalledSize); - iDownloadSize += (signed long long)(Mult*P.InstVerIter(*this)->Size); - return; - } - - // Upgrading - if (Pkg->CurrentVer != 0 && - (P.InstallVer != (Version *)Pkg.CurrentVer() || - (P.iFlags & ReInstall) == ReInstall) && P.InstallVer != 0) - { - iUsrSize += (signed long long)(Mult*((signed long long)P.InstVerIter(*this)->InstalledSize - - (signed long long)Pkg.CurrentVer()->InstalledSize)); - iDownloadSize += (signed long long)(Mult*P.InstVerIter(*this)->Size); - return; - } - - // Reinstall - if (Pkg.State() == pkgCache::PkgIterator::NeedsUnpack && - P.Delete() == false) - { - iDownloadSize += (signed long long)(Mult*P.InstVerIter(*this)->Size); - return; - } - - // Removing - if (Pkg->CurrentVer != 0 && P.InstallVer == 0) - { - iUsrSize -= (signed long long)(Mult*Pkg.CurrentVer()->InstalledSize); - return; - } -} - /*}}}*/ -// DepCache::AddSizes - Add the packages sizes to the counters /*{{{*/ -// --------------------------------------------------------------------- /* Call with Inverse = true to preform the inverse opration */ void pkgDepCache::AddSizes(const PkgIterator &Pkg, bool const &Inverse) { @@ -1268,7 +1216,7 @@ void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To) // DepCache::SetCandidateVersion - Change the candidate version /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgDepCache::SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo) +void pkgDepCache::SetCandidateVersion(VerIterator TargetVer) { pkgCache::PkgIterator Pkg = TargetVer.ParentPkg(); StateCache &P = PkgState[Pkg->ID]; diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index f95ad9a14..d3f9e3924 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -318,7 +318,6 @@ class pkgDepCache : protected pkgCache::Namespace // Count manipulators void AddSizes(const PkgIterator &Pkg, bool const &Invert = false); inline void RemoveSizes(const PkgIterator &Pkg) {AddSizes(Pkg, true);}; - void AddSizes(const PkgIterator &Pkg,signed long Mult) __deprecated; void AddStates(const PkgIterator &Pkg,int Add = 1); inline void RemoveStates(const PkgIterator &Pkg) {AddStates(Pkg,-1);}; @@ -399,8 +398,7 @@ class pkgDepCache : protected pkgCache::Namespace void MarkProtected(PkgIterator const &Pkg) { PkgState[Pkg->ID].iFlags |= Protected; }; void SetReInstall(PkgIterator const &Pkg,bool To); - // FIXME: Remove the unused boolean parameter on abi break - void SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo = true); + void SetCandidateVersion(VerIterator TargetVer); bool SetCandidateRelease(pkgCache::VerIterator TargetVer, std::string const &TargetRel); /** Set the candidate version for dependencies too if needed. @@ -485,13 +483,6 @@ class pkgDepCache : protected pkgCache::Namespace virtual ~pkgDepCache(); private: - // Helper for Update(OpProgress) to remove pseudoinstalled arch all packages - // FIXME: they are private so shouldn't affect abi, but just in case… - __deprecated bool RemovePseudoInstalledPkg(PkgIterator &Pkg, std::set &recheck) { return true; }; - __deprecated bool ReInstallPseudoForGroup(unsigned long const &Grp, std::set &recheck) { return true; }; - __deprecated bool ReInstallPseudoForGroup(pkgCache::PkgIterator const &P, std::set &recheck) { return true; }; - - bool IsModeChangeOk(ModeList const mode, PkgIterator const &Pkg, unsigned long const Depth, bool const FromUser); }; diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index 38e4e904e..951caeb78 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -749,9 +749,6 @@ bool pkgCache::VerIterator::Automatic() const return false; } /*}}}*/ -// VerIterator::Pseudo - deprecated no-op method /*{{{*/ -bool pkgCache::VerIterator::Pseudo() const { return false; } - /*}}}*/ // VerIterator::NewestFile - Return the newest file version relation /*{{{*/ // --------------------------------------------------------------------- /* This looks at the version numbers associated with all of the sources -- cgit v1.2.3-70-g09d2 From 6935cd05677544028e0d6baefc2e29933bf5fe8b Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 17 May 2011 18:22:18 +0200 Subject: * apt-pkg/depcache.cc: - use a boolean instead of an int for Add/Remove in AddStates similar to how it works with AddSizes --- apt-pkg/depcache.cc | 5 +++-- apt-pkg/depcache.h | 6 +++--- debian/changelog | 5 ++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index a91144466..b7b2f302f 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -407,7 +407,7 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res) // DepCache::AddSizes - Add the packages sizes to the counters /*{{{*/ // --------------------------------------------------------------------- /* Call with Inverse = true to preform the inverse opration */ -void pkgDepCache::AddSizes(const PkgIterator &Pkg, bool const &Inverse) +void pkgDepCache::AddSizes(const PkgIterator &Pkg, bool const Inverse) { StateCache &P = PkgState[Pkg->ID]; @@ -478,8 +478,9 @@ void pkgDepCache::AddSizes(const PkgIterator &Pkg, bool const &Inverse) calld Remove/Add itself. Remember, dependencies can be circular so while processing a dep for Pkg it is possible that Add/Remove will be called on Pkg */ -void pkgDepCache::AddStates(const PkgIterator &Pkg,int Add) +void pkgDepCache::AddStates(const PkgIterator &Pkg, bool const Invert) { + signed char const Add = (Invert == false) ? 1 : -1; StateCache &State = PkgState[Pkg->ID]; // The Package is broken (either minimal dep or policy dep) diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index d3f9e3924..1a982ea18 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -316,10 +316,10 @@ class pkgDepCache : protected pkgCache::Namespace void Update(PkgIterator const &P); // Count manipulators - void AddSizes(const PkgIterator &Pkg, bool const &Invert = false); + void AddSizes(const PkgIterator &Pkg, bool const Invert = false); inline void RemoveSizes(const PkgIterator &Pkg) {AddSizes(Pkg, true);}; - void AddStates(const PkgIterator &Pkg,int Add = 1); - inline void RemoveStates(const PkgIterator &Pkg) {AddStates(Pkg,-1);}; + void AddStates(const PkgIterator &Pkg, bool const Invert = false); + inline void RemoveStates(const PkgIterator &Pkg) {AddStates(Pkg,true);}; public: diff --git a/debian/changelog b/debian/changelog index f1f076a68..499f7f8d8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,12 +10,15 @@ apt (0.8.15) UNRELEASED; urgency=low * apt-pkg/pkgcache.h: - clean up mess with the "all" handling in MultiArch to fix LP: #733741 cleanly for everyone now + * apt-pkg/depcache.cc: + - use a boolean instead of an int for Add/Remove in AddStates + similar to how it works with AddSizes [ Stefano Zacchiroli ] * doc/external-dependency-solver-protocol.txt: - describe EDSP and the configuration interface around it - -- David Kalnischkies Tue, 17 May 2011 17:44:16 +0200 + -- David Kalnischkies Tue, 17 May 2011 17:51:10 +0200 apt (0.8.14.2) UNRELEASED; urgency=low -- cgit v1.2.3-70-g09d2 From 3d619a202a6fbcaaaf6a6540b06c5deb3a50a3be Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 17 May 2011 18:22:46 +0200 Subject: let the Mark methods return if their marking was successful --- apt-pkg/depcache.cc | 39 +++++++++++++++++++++------------------ apt-pkg/depcache.h | 6 +++--- debian/changelog | 3 ++- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index b7b2f302f..f84ec25ca 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -755,17 +755,17 @@ void pkgDepCache::Update(PkgIterator const &Pkg) // DepCache::MarkKeep - Put the package in the keep state /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser, +bool pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser, unsigned long Depth) { if (IsModeChangeOk(ModeKeep, Pkg, Depth, FromUser) == false) - return; + return false; /* Reject an attempt to keep a non-source broken installed package, those must be upgraded */ if (Pkg.State() == PkgIterator::NeedsUnpack && Pkg.CurrentVer().Downloadable() == false) - return; + return false; /* We changed the soft state all the time so the UI is a bit nicer to use */ @@ -773,7 +773,7 @@ void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser, // Check that it is not already kept if (P.Mode == ModeKeep) - return; + return true; if (Soft == true) P.iFlags |= AutoKept; @@ -806,31 +806,31 @@ void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser, P.InstallVer = Pkg.CurrentVer(); AddStates(Pkg); - Update(Pkg); - AddSizes(Pkg); + + return true; } /*}}}*/ // DepCache::MarkDelete - Put the package in the delete state /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge, +bool pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge, unsigned long Depth, bool FromUser) { if (IsModeChangeOk(ModeDelete, Pkg, Depth, FromUser) == false) - return; + return false; StateCache &P = PkgState[Pkg->ID]; // Check that it is not already marked for delete if ((P.Mode == ModeDelete || P.InstallVer == 0) && (Pkg.Purge() == true || rPurge == false)) - return; + return true; // check if we are allowed to remove the package if (IsDeleteOk(Pkg,rPurge,Depth,FromUser) == false) - return; + return false; P.iFlags &= ~(AutoKept | Purge); if (rPurge == true) @@ -854,6 +854,7 @@ void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge, Update(Pkg); AddSizes(Pkg); + return true; } /*}}}*/ // DepCache::IsDeleteOk - check if it is ok to remove this package /*{{{*/ @@ -934,18 +935,18 @@ bool pkgDepCache::IsModeChangeOk(ModeList const mode, PkgIterator const &Pkg, // DepCache::MarkInstall - Put the package in the install state /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, +bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, unsigned long Depth, bool FromUser, bool ForceImportantDeps) { if (IsModeChangeOk(ModeInstall, Pkg, Depth, FromUser) == false) - return; + return false; StateCache &P = PkgState[Pkg->ID]; // See if there is even any possible instalation candidate if (P.CandidateVer == 0) - return; + return false; /* Check that it is not already marked for install and that it can be installed */ @@ -954,13 +955,13 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, P.CandidateVer == (Version *)Pkg.CurrentVer())) { if (P.CandidateVer == (Version *)Pkg.CurrentVer() && P.InstallVer == 0) - MarkKeep(Pkg, false, FromUser, Depth+1); - return; + return MarkKeep(Pkg, false, FromUser, Depth+1); + return true; } // check if we are allowed to install the package if (IsInstallOk(Pkg,AutoInst,Depth,FromUser) == false) - return; + return false; ActionGroup group(*this); P.iFlags &= ~AutoKept; @@ -996,7 +997,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, AddSizes(Pkg); if (AutoInst == false || _config->Find("APT::Solver", "internal") != "internal") - return; + return true; if (DebugMarker == true) std::clog << OutputInDepth(Depth) << "MarkInstall " << Pkg << " FU=" << FromUser << std::endl; @@ -1040,7 +1041,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, continue; // if the dependency was critical, we can't install it, so remove it again MarkDelete(Pkg,false,Depth + 1, false); - return; + return false; } /* Check if any ImportantDep() (but not Critical) were added @@ -1179,6 +1180,8 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, continue; } } + + return true; } /*}}}*/ // DepCache::IsInstallOk - check if it is ok to install this package /*{{{*/ diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index 1a982ea18..2942558b0 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -388,11 +388,11 @@ class pkgDepCache : protected pkgCache::Namespace /** \name State Manipulators */ // @{ - void MarkKeep(PkgIterator const &Pkg, bool Soft = false, + bool MarkKeep(PkgIterator const &Pkg, bool Soft = false, bool FromUser = true, unsigned long Depth = 0); - void MarkDelete(PkgIterator const &Pkg, bool Purge = false, + bool MarkDelete(PkgIterator const &Pkg, bool Purge = false, unsigned long Depth = 0, bool FromUser = true); - void MarkInstall(PkgIterator const &Pkg,bool AutoInst = true, + bool MarkInstall(PkgIterator const &Pkg,bool AutoInst = true, unsigned long Depth = 0, bool FromUser = true, bool ForceImportantDeps = false); void MarkProtected(PkgIterator const &Pkg) { PkgState[Pkg->ID].iFlags |= Protected; }; diff --git a/debian/changelog b/debian/changelog index 499f7f8d8..837571173 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,12 +13,13 @@ apt (0.8.15) UNRELEASED; urgency=low * apt-pkg/depcache.cc: - use a boolean instead of an int for Add/Remove in AddStates similar to how it works with AddSizes + - let the Mark methods return if their marking was successful [ Stefano Zacchiroli ] * doc/external-dependency-solver-protocol.txt: - describe EDSP and the configuration interface around it - -- David Kalnischkies Tue, 17 May 2011 17:51:10 +0200 + -- David Kalnischkies Tue, 17 May 2011 17:53:44 +0200 apt (0.8.14.2) UNRELEASED; urgency=low -- cgit v1.2.3-70-g09d2 From a16dec4dbe7847597025f44f84027bb3f25f4f42 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 17 May 2011 18:23:20 +0200 Subject: if a Breaks can't be upgraded, remove it. If it or a Conflict can't be removed the installation of the breaker fails. --- apt-pkg/depcache.cc | 11 ++++++----- debian/changelog | 4 +++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index f84ec25ca..1d905df2e 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1172,16 +1172,17 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, continue; if (PkgState[Pkg->ID].CandidateVer != *I && - Start->Type == Dep::DpkgBreaks) - MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps); - else - MarkDelete(Pkg,false,Depth + 1, false); + Start->Type == Dep::DpkgBreaks && + MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps) == true) + continue; + else if (MarkDelete(Pkg,false,Depth + 1, false) == false) + break; } continue; } } - return true; + return Dep.end() == true; } /*}}}*/ // DepCache::IsInstallOk - check if it is ok to install this package /*{{{*/ diff --git a/debian/changelog b/debian/changelog index 837571173..9fc6dc193 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,12 +14,14 @@ apt (0.8.15) UNRELEASED; urgency=low - use a boolean instead of an int for Add/Remove in AddStates similar to how it works with AddSizes - let the Mark methods return if their marking was successful + - if a Breaks can't be upgraded, remove it. If it or a Conflict + can't be removed the installation of the breaker fails. [ Stefano Zacchiroli ] * doc/external-dependency-solver-protocol.txt: - describe EDSP and the configuration interface around it - -- David Kalnischkies Tue, 17 May 2011 17:53:44 +0200 + -- David Kalnischkies Tue, 17 May 2011 17:59:24 +0200 apt (0.8.14.2) UNRELEASED; urgency=low -- cgit v1.2.3-70-g09d2 From d953d210bb54accb416f2144104b79dcd29198ba Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 17 May 2011 20:20:46 +0200 Subject: * cmdline/apt-get.cc: - do not discard the error messages from the resolver and instead only show the general 'Broken packages' message if nothing else --- cmdline/apt-get.cc | 10 ++++++---- debian/changelog | 5 ++++- test/integration/test-handling-broken-orgroups | 4 ++-- test/integration/test-release-candidate-switching | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index d48ca18f9..65eaef0d8 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1886,8 +1886,7 @@ bool DoInstall(CommandLine &CmdL) { // Call the scored problem resolver Fix->InstallProtect(); - if (Fix->Resolve(true) == false) - ; //FIXME: is there a valid reason for? _error->Discard(); + Fix->Resolve(true); delete Fix; } @@ -1913,8 +1912,11 @@ bool DoInstall(CommandLine &CmdL) c1out << _("The following information may help to resolve the situation:") << endl; c1out << endl; ShowBroken(c1out,Cache,false); - return _error->Error(_("Broken packages")); - } + if (_error->PendingError() == true) + return false; + else + return _error->Error(_("Broken packages")); + } } if (!DoAutomaticRemove(Cache)) return false; diff --git a/debian/changelog b/debian/changelog index 9fc6dc193..71f64dc23 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,12 +16,15 @@ apt (0.8.15) UNRELEASED; urgency=low - let the Mark methods return if their marking was successful - if a Breaks can't be upgraded, remove it. If it or a Conflict can't be removed the installation of the breaker fails. + * cmdline/apt-get.cc: + - do not discard the error messages from the resolver and instead + only show the general 'Broken packages' message if nothing else [ Stefano Zacchiroli ] * doc/external-dependency-solver-protocol.txt: - describe EDSP and the configuration interface around it - -- David Kalnischkies Tue, 17 May 2011 17:59:24 +0200 + -- David Kalnischkies Tue, 17 May 2011 18:43:21 +0200 apt (0.8.14.2) UNRELEASED; urgency=low diff --git a/test/integration/test-handling-broken-orgroups b/test/integration/test-handling-broken-orgroups index d88ad0000..20b314074 100755 --- a/test/integration/test-handling-broken-orgroups +++ b/test/integration/test-handling-broken-orgroups @@ -58,7 +58,7 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: coolstuff-broken : Depends: cool2 but it is not installable or stuff2 but it is not installable -E: Broken packages' aptget install coolstuff-broken -s +E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-broken -s testequal 'Reading package lists... Building dependency tree... @@ -105,4 +105,4 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: coolstuff-provided-broken : Depends: cool2 but it is not installable or stuff-abi-2 -E: Broken packages' aptget install coolstuff-provided-broken -s +E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-provided-broken -s diff --git a/test/integration/test-release-candidate-switching b/test/integration/test-release-candidate-switching index b6dbe99db..0970cb935 100755 --- a/test/integration/test-release-candidate-switching +++ b/test/integration/test-release-candidate-switching @@ -416,4 +416,4 @@ 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 +E: Unable to correct problems, you have held broken packages." aptget install uninstallablepkg/experimental --trivial-only -V -q=0 -- cgit v1.2.3-70-g09d2 From 627e99b0328e05b13600134655253d36575f314d Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 8 Jun 2011 12:27:57 +0200 Subject: add some more dpointer placeholders --- apt-pkg/edsp/edspindexfile.h | 3 +++ apt-pkg/edsp/edspsystem.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h index 87c06557c..0053388eb 100644 --- a/apt-pkg/edsp/edspindexfile.h +++ b/apt-pkg/edsp/edspindexfile.h @@ -13,6 +13,9 @@ class edspIndex : public debStatusIndex { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + public: virtual const Type *GetType() const; diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h index bc5be61d1..ca703fa84 100644 --- a/apt-pkg/edsp/edspsystem.h +++ b/apt-pkg/edsp/edspsystem.h @@ -15,6 +15,9 @@ class edspIndex; class edspSystem : public pkgSystem { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + edspIndex *StatusFile; public: -- cgit v1.2.3-70-g09d2 From 782486e8219705249d9096c79638bd85b930522d Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 8 Jun 2011 17:12:32 +0200 Subject: initial librarification push --- configure.in | 2 +- debian/apt-utils.install | 2 +- debian/apt-utils.symbols | 123 -- debian/apt.symbols | 1320 ------------------ debian/changelog | 2 + debian/control | 15 +- debian/libapt-inst1.2.install | 1 + debian/libapt-inst1.2.symbols | 123 ++ debian/libapt-pkg4.10.install | 1 + debian/libapt-pkg4.10.symbols | 1320 ++++++++++++++++++ debian/rules | 52 +- doc/po/apt-doc.pot | 499 ++++--- doc/po/de.po | 689 ++++++--- doc/po/es.po | 690 ++++++--- doc/po/fr.po | 682 ++++++--- doc/po/it.po | 516 ++++--- doc/po/ja.po | 682 ++++++--- doc/po/pl.po | 635 ++++++--- doc/po/pt.po | 688 ++++++--- doc/po/pt_BR.po | 530 ++++--- po/apt-all.pot | 3104 ----------------------------------------- 21 files changed, 5157 insertions(+), 6519 deletions(-) delete mode 100644 debian/apt-utils.symbols delete mode 100644 debian/apt.symbols create mode 100644 debian/libapt-inst1.2.install create mode 100644 debian/libapt-inst1.2.symbols create mode 100644 debian/libapt-pkg4.10.install create mode 100644 debian/libapt-pkg4.10.symbols delete mode 100644 po/apt-all.pot diff --git a/configure.in b/configure.in index b2880c99c..3dde2fe47 100644 --- a/configure.in +++ b/configure.in @@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib) AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in) dnl -- SET THIS TO THE RELEASE VERSION -- -AC_DEFINE_UNQUOTED(VERSION,"0.8.2") +AC_DEFINE_UNQUOTED(VERSION,"0.8.15") PACKAGE="apt" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_SUBST(PACKAGE) diff --git a/debian/apt-utils.install b/debian/apt-utils.install index d947f26d4..8b1378917 100644 --- a/debian/apt-utils.install +++ b/debian/apt-utils.install @@ -1 +1 @@ -bin/libapt-inst*.so.* usr/lib/ + diff --git a/debian/apt-utils.symbols b/debian/apt-utils.symbols deleted file mode 100644 index 9ba283a51..000000000 --- a/debian/apt-utils.symbols +++ /dev/null @@ -1,123 +0,0 @@ -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, std::allocator >)@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, std::allocator >, 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, std::allocator >&)@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, std::allocator >&)@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@Base" 0.8.0 - (c++|optional)"typeinfo for pkgCache::Iterator@Base" 0.8.0 - (c++|optional)"typeinfo for pkgCache::Iterator@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@Base" 0.8.0 - (c++|optional)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 - (c++|optional)"typeinfo name for pkgCache::Iterator@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@Base" 0.8.0 - (c++|optional)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++|optional)"vtable for pkgCache::Iterator@Base" 0.8.0 -### gcc-4.4 specific -# (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 -# (c++|optional=std)"std::basic_string, std::allocator >& std::basic_string, std::allocator >::append(unsigned char*, unsigned char*)@Base" 0.8.0 -### gcc-4.6 specific - (c++|optional=std)"std::vector >::~vector()@Base" 0.8.12 1 - (c++|optional=std)"std::basic_string, std::allocator >& std::basic_string, std::allocator >::_M_replace_dispatch(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, unsigned char*, unsigned char*, std::__false_type)@Base" 0.8.0 -### try to ignore std:: template instances - (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@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 -### diff --git a/debian/apt.symbols b/debian/apt.symbols deleted file mode 100644 index bb60c22be..000000000 --- a/debian/apt.symbols +++ /dev/null @@ -1,1320 +0,0 @@ -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, std::allocator >)@Base" 0.8.0 - (c++)"IdentCdrom(std::basic_string, std::allocator >, std::basic_string, std::allocator >&, unsigned int)@Base" 0.8.0 - (c++)"ListUpdate(pkgAcquireStatus&, pkgSourceList&, int)@Base" 0.8.0 - (c++)"MountCdrom(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"ParseCWord(char const*&, std::basic_string, std::allocator >&)@Base" 0.8.0 - (c++)"ReadPinDir(pkgPolicy&, std::basic_string, std::allocator >)@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, std::allocator > const&, char const*)@Base" 0.8.0 - (c++)"ReadPinFile(pkgPolicy&, std::basic_string, std::allocator >)@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, std::allocator >)@Base" 0.8.0 - (c++)"Base64Encode(std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"ReadMessages(int, std::vector, std::allocator >, std::allocator, std::allocator > > >&)@Base" 0.8.0 - (c++)"SetCloseExec(int, bool)@Base" 0.8.0 - (c++)"StringToBool(std::basic_string, std::allocator > const&, int)@Base" 0.8.0 - (c++)"UnmountCdrom(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"_GetErrorObj()@Base" 0.8.0 - (c++)"pkgFixBroken(pkgDepCache&)@Base" 0.8.0 - (c++)"DeQuoteString(__gnu_cxx::__normal_iterator, std::allocator > > const&, __gnu_cxx::__normal_iterator, std::allocator > > const&)@Base" 0.8.0 - (c++)"DeQuoteString(std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"OutputInDepth(unsigned long, char const*)@Base" 0.8.0 - (c++)"ReadConfigDir(Configuration&, std::basic_string, std::allocator > const&, bool const&, unsigned int const&)@Base" 0.8.0 - (c++)"URItoFileName(std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"UTF8ToCodeset(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator >*)@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, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, char const*, char const*)@Base" 0.8.0 - (c++)"stringcasecmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@Base" 0.8.0 - (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@Base" 0.8.0 - (c++)"tolower_ascii(int)@Base" 0.8.0 - (c++)"ParseQuoteWord(char const*&, std::basic_string, std::allocator >&)@Base" 0.8.0 - (c++)"ReadConfigFile(Configuration&, std::basic_string, std::allocator > 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, std::allocator >)@Base" 0.8.0 - (c++)"pkgApplyStatus(pkgDepCache&)@Base" 0.8.0 - (c++)"pkgDistUpgrade(pkgDepCache&)@Base" 0.8.0 - (c++)"CheckDomainList(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"CreateDirectory(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"DirectoryExists(std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"VectorizeString(std::basic_string, std::allocator > 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, std::allocator > const&, std::vector, std::allocator >, std::allocator, std::allocator > > > const&, bool const&)@Base" 0.8.0 - (c++)"GetListOfFilesInDir(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator >, bool)@Base" 0.8.0 - (c++)"Hex2Num(std::basic_string, std::allocator > 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, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"SubstVar(std::basic_string, std::allocator >, SubstVar const*)@Base" 0.8.0 - (c++)"flNoLink(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"flNotDir(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"ioprintf(std::basic_ostream >&, char const*, ...)@Base" 0.8.0 - (c++)"IsMounted(std::basic_string, std::allocator >&)@Base" 0.8.0 - (c++)"LookupTag(std::basic_string, std::allocator > const&, char const*, char const*)@Base" 0.8.0 - (c++)"SizeToStr(double)@Base" 0.8.0 - (c++)"StrToTime(std::basic_string, std::allocator > 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, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"flNotFile(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, char const*, char const*)@Base" 0.8.0 - (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@Base" 0.8.0 - (c++)"stringcmp(char const*, char const*, char const*, char const*)@Base" 0.8.0 - (c++)"strprintf(std::basic_string, std::allocator >&, char const*, ...)@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"guard variable for pkgCacheGenerator::Dynamic::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, std::allocator >)@Base" 0.8.0 - (c++)"HashString::HashString(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@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, std::allocator > const&)@Base" 0.8.0 - (c++)"OpProgress::OverallProgress(unsigned long, unsigned long, unsigned long, std::basic_string, std::allocator > 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, std::allocator >)@Base" 0.8.0 - (c++)"SourceCopy::Type()@Base" 0.8.0 - (c++)"SourceCopy::GetFile(std::basic_string, std::allocator >&, 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, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqFile::Failed(std::basic_string, std::allocator >, 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, std::allocator >, std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator >)@Base" 0.8.0 - (c++)"pkgAcquire::Item::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcquire::Item::Start(std::basic_string, std::allocator >, unsigned long)@Base" 0.8.0 - (c++)"pkgAcquire::Item::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcquire::Item::Rename(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@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, std::allocator >)@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, std::allocator >, 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, std::allocator >, pkgAcquire*)@Base" 0.8.0 - (c++)"pkgAcquire::Queue::~Queue()@Base" 0.8.0 - (c++)"pkgAcquire::Setup(pkgAcquireStatus*, std::basic_string, std::allocator > 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, std::allocator >)@Base" 0.8.0 - (c++)"pkgAcquire::Worker::RunMessages()@Base" 0.8.0 - (c++)"pkgAcquire::Worker::Capabilities(std::basic_string, std::allocator >)@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, std::allocator >)@Base" 0.8.0 - (c++)"pkgAcquire::QueueName(std::basic_string, std::allocator >, 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 >&, GlobalError::MsgType const&, bool const&)@Base" 0.8.0 - (c++)"GlobalError::PopMessage(std::basic_string, std::allocator >&)@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 - (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, std::allocator >)@Base" 0.8.0 - (c++)"MD5SumValue::MD5SumValue(std::basic_string, std::allocator >)@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, std::allocator >)@Base" 0.8.0 - (c++)"PackageCopy::Type()@Base" 0.8.0 - (c++)"PackageCopy::GetFile(std::basic_string, std::allocator >&, 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, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqIndex::Failed(std::basic_string, std::allocator >, 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, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, HashString, std::basic_string, std::allocator >)@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::MarkFollowsRecommends()@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, std::allocator >)@Base" 0.8.0 - (c++)"pkgSimulate::Describe(pkgCache::PkgIterator, std::basic_ostream >&, 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, std::allocator >)@Base" 0.8.0 - (c++)"SHA1SumValue::SHA1SumValue(std::basic_string, std::allocator >)@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::Load(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"indexRecords::Lookup(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"indexRecords::MetaKeys()@Base" 0.8.0 - (c++)"indexRecords::indexRecords(std::basic_string, std::allocator >)@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, std::allocator >)@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, std::allocator >, 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, std::allocator > const&)@Base" 0.8.0 - (c++)"pkgAcqMethod::URIStart(pkgAcqMethod::FetchResult&)@Base" 0.8.0 - (c++)"pkgAcqMethod::MediaFail(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@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, std::allocator >*)@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, std::allocator > const&)@Base" 0.8.0 - (c++)"Configuration::Set(char const*, int const&)@Base" 0.8.0 - (c++)"Configuration::Dump(std::basic_ostream >&)@Base" 0.8.0 - (c++)"Configuration::Clear(std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"Configuration::Clear(std::basic_string, std::allocator > const&, int const&)@Base" 0.8.0 - (c++)"Configuration::Clear(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"Configuration::CndSet(char const*, std::basic_string, std::allocator > 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, std::allocator >&, std::basic_string, std::allocator >&, 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, std::allocator >)@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, std::allocator >)@Base" 0.8.0 - (c++)"debListParser::Package()@Base" 0.8.0 - (c++)"debListParser::Version()@Base" 0.8.0 - (c++)"debListParser::GrabWord(std::basic_string, std::allocator >, debListParser::WordList*, unsigned char&)@Base" 0.8.0 - (c++)"debListParser::debListParser(FileFd*, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"debListParser::~debListParser()@Base" 0.8.0 - (c++)"pkgAcqArchive::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqArchive::Failed(std::basic_string, std::allocator >, 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, std::allocator >&)@Base" 0.8.0 - (c++)"pkgAcqArchive::~pkgAcqArchive()@Base" 0.8.0 - (c++)"pkgAcqMetaSig::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqMetaSig::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqMetaSig::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqMetaSig::DescURI()@Base" 0.8.0 - (c++)"pkgAcqMetaSig::~pkgAcqMetaSig()@Base" 0.8.0 - (c++)"pkgSourceList::ReadAppend(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"pkgSourceList::ReadMainList()@Base" 0.8.0 - (c++)"pkgSourceList::ReadSourceDir(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"pkgSourceList::Read(std::basic_string, std::allocator >)@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, std::allocator >)@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::allocator >, std::allocator, std::allocator > > >)@Base" 0.8.0 - (c++)"pkgVendorList::ReadMainList()@Base" 0.8.0 - (c++)"pkgVendorList::LookupFingerprint(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"pkgVendorList::Read(std::basic_string, std::allocator >)@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, std::allocator >)@Base" 0.8.0 - (c++)"SHA256SumValue::SHA256SumValue(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"SHA256SumValue::SHA256SumValue()@Base" 0.8.0 - (c++)"debIFTypeTrans::~debIFTypeTrans()@Base" 0.8.0 - (c++)"debStatusIndex::debStatusIndex(std::basic_string, std::allocator >)@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, std::allocator >, 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, std::allocator > const&, bool const&)@Base" 0.8.0 - (c++)"debReleaseIndex::PushSectionEntry(debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 - (c++)"debReleaseIndex::PushSectionEntry(std::basic_string, std::allocator > const&, debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 - (c++)"debReleaseIndex::PushSectionEntry(std::vector, std::allocator >, std::allocator, std::allocator > > > const&, debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 - (c++)"debReleaseIndex::debReleaseIndex(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, bool)@Base" 0.8.0 - (c++)"debSourcesIndex::~debSourcesIndex()@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::ParseDiffIndex(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::DescURI()@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, 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, std::allocator >)@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::RetrievalDone(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::DescURI()@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::AuthDone(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > 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, std::allocator > const&, char const*)@Base" 0.8.0 - (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@Base" 0.8.0 - (c++)"pkgVersionMatch::MatchVer(char const*, std::basic_string, std::allocator >, bool)@Base" 0.8.0 - (c++)"pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator)@Base" 0.8.0 - (c++)"pkgVersionMatch::pkgVersionMatch(std::basic_string, std::allocator >, pkgVersionMatch::MatchType)@Base" 0.8.0 - (c++)"pkgVersionMatch::~pkgVersionMatch()@Base" 0.8.0 - (c++)"TranslationsCopy::CopyTranslations(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@Base" 0.8.0 - (c++)"debPackagesIndex::debPackagesIndex(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, bool const&, std::basic_string, std::allocator > 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, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqIndexDiffs::Failed(std::basic_string, std::allocator >, 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, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, HashString, std::basic_string, std::allocator >, std::vector >)@Base" 0.8.0 - (c++)"pkgAcqIndexDiffs::~pkgAcqIndexDiffs()@Base" 0.8.0 - (c++)"pkgAcqIndexTrans::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqIndexTrans::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >)@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, std::allocator >, pkgCache&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::ListParser::NewDepends(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, unsigned int, unsigned int)@Base" 0.8.0 - (c++)"pkgCacheGenerator::ListParser::NewProvides(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator > 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, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::NewVersion(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, unsigned long)@Base" 0.8.0 - (c++)"pkgCacheGenerator::SelectFile(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator > 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::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 - (c++)"pkgCacheGenerator::NewGroup(pkgCache::GrpIterator&, std::basic_string, std::allocator > 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, std::allocator >)@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 >&, 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 >&)@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, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, char const*)@Base" 0.8.0 - (c++)"debTranslationsIndex::~debTranslationsIndex()@Base" 0.8.0 - (c++)"APT::PackageSet::FromString(pkgCacheFile&, std::basic_string, std::allocator > 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 > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::FromName(pkgCacheFile&, std::basic_string, std::allocator > const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::FromTask(pkgCacheFile&, std::basic_string, std::allocator >, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::FromRegEx(pkgCacheFile&, std::basic_string, std::allocator >, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::~PackageSet()@Base" 0.8.0 - (c++)"APT::VersionSet::FromString(pkgCacheFile&, std::basic_string, std::allocator >, 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 > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::VersionSet::~VersionSet()@Base" 0.8.0 - (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::basic_string, std::allocator > 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, std::allocator > const&)@Base" 0.8.0 - (c++)"APT::Configuration::getCompressionTypes(bool const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindTask(pkgCacheFile&, std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindRegEx(pkgCacheFile&, std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindAllVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindPackage(pkgCacheFile&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::showTaskSelection(APT::PackageSet const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::showRegExSelection(APT::PackageSet const&, std::basic_string, std::allocator > 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, std::allocator > 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, std::allocator > const&)@Base" 0.8.0 - (c++)"URI::CopyFrom(std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"URI::SiteOnly(std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"URI::~URI()@Base" 0.8.0 - (c++)"URI::operator std::basic_string, std::allocator >()@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, std::allocator >, 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++)"FileFd::~FileFd()@Base" 0.8.0 - (c++)"Hashes::AddFD(int, unsigned long)@Base" 0.8.0 - (c++)"Vendor::CheckDist(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"Vendor::Vendor(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector >*)@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, std::allocator > 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, std::allocator > const&)@Base" 0.8.0 - (c++)"pkgCache::FindPkg(std::basic_string, std::allocator > const&)@Base" 0.8.0 - (c++)"pkgCache::FindPkg(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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::allocator >, std::allocator, std::allocator > > >&, char const*)@Base" 0.8.0 - (c++)"pkgCdrom::FindPackages(std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::basic_string, std::allocator >&, pkgCdromStatus*, unsigned int)@Base" 0.8.0 - (c++)"pkgCdrom::WriteDatabase(Configuration&)@Base" 0.8.0 - (c++)"pkgCdrom::DropBinaryArch(std::vector, std::allocator >, std::allocator, std::allocator > > >&)@Base" 0.8.0 - (c++)"pkgCdrom::WriteSourceList(std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, bool)@Base" 0.8.0 - (c++)"pkgCdrom::ReduceSourcelist(std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&)@Base" 0.8.0 - (c++)"pkgCdrom::Add(pkgCdromStatus*)@Base" 0.8.0 - (c++)"pkgCdrom::Ident(std::basic_string, std::allocator >&, pkgCdromStatus*)@Base" 0.8.0 - (c++)"pkgCdrom::Score(std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"IndexCopy::CopyPackages(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@Base" 0.8.0 - (c++)"IndexCopy::ReconstructChop(unsigned long&, std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"IndexCopy::ReconstructPrefix(std::basic_string, std::allocator >&, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"IndexCopy::ConvertToSourceList(std::basic_string, std::allocator >, std::basic_string, std::allocator >&)@Base" 0.8.0 - (c++)"IndexCopy::ChopDirs(std::basic_string, std::allocator >, unsigned int)@Base" 0.8.0 - (c++)"IndexCopy::GrabFirst(std::basic_string, std::allocator >, std::basic_string, std::allocator >&, unsigned int)@Base" 0.8.0 - (c++)"IndexCopy::~IndexCopy()@Base" 0.8.0 - (c++)"SigVerify::CopyAndVerify(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >, std::vector, std::allocator >, std::allocator, std::allocator > > >)@Base" 0.8.0 - (c++)"SigVerify::CopyMetaIndex(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 - (c++)"SigVerify::Verify(std::basic_string, std::allocator >, std::basic_string, std::allocator >, indexRecords*)@Base" 0.8.0 - (c++)"SigVerify::RunGPGV(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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 >&)@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, std::allocator > const&, std::basic_string, std::allocator >)@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, std::allocator > 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, std::allocator >)@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, std::allocator >, std::basic_string, std::allocator >, 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, std::allocator >) const@Base" 0.8.0 - (c++)"HashString::empty() const@Base" 0.8.0 - (c++)"HashString::toStr() 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 >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > 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, std::allocator > const&) const@Base" 0.8.0 - (c++)"indexRecords::GetDist() const@Base" 0.8.0 - (c++)"indexRecords::CheckDist(std::basic_string, std::allocator >) const@Base" 0.8.0 - (c++)"pkgIndexFile::ArchiveURI(std::basic_string, std::allocator >) 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, std::allocator >&) const@Base" 0.8.0 - (c++)"pkgSourceList::Type::ParseLine(std::vector >&, char const*, unsigned long const&, std::basic_string, std::allocator > 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, std::allocator > 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, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::SourceIndexURI(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::ComputeIndexTargets() const@Base" 0.8.0 - (c++)"debReleaseIndex::SourceIndexURISuffix(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::Info(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::IndexURI(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 - (c++)"debReleaseIndex::IsTrusted() const@Base" 0.8.0 - (c++)"debSLTypeDebSrc::CreateItem(std::vector >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > const&) const@Base" 0.8.0 - (c++)"debSLTypeDebian::CreateItemInternal(std::vector >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, bool const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > const&) const@Base" 0.8.0 - (c++)"debSourcesIndex::ArchiveURI(std::basic_string, std::allocator >) 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, std::allocator >) 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++)"Vendor::GetVendorID() const@Base" 0.8.0 - (c++)"Vendor::LookupFingerprint(std::basic_string, std::allocator >) 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, std::allocator >) 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, std::allocator > 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@Base" 0.8.0 - (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo for pkgCache::Iterator@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@Base" 0.8.0 - (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 - (c++)"typeinfo name for pkgCache::Iterator@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@Base" 0.8.0 - (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 - (c++)"non-virtual thunk to pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()@Base" 0.8.0 - (c++)"operator<<(std::basic_ostream >&, pkgCache::DepIterator)@Base" 0.8.0 - (c++)"operator<<(std::basic_ostream >&, 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 -### demangle strangeness - buildd report it as MISSING and as new… - (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > const*, indexRecords*)@Base" 0.8.0 -### gcc-4.4 specific -# (c++|optional=inherent)"APT::PackageSet::PackageSet(APT::PackageSet const&)@Base" 0.8.0 -# (c++|optional=inline)"stringcasecmp(char const*, char const*, char const*)@Base" 0.8.0 -# (arch=armel|c++|optional=inline)"stringcasecmp(std::basic_string, std::allocator > const&, char const*)@Base" 0.8.0 -# (c++|optional=inherent)"APT::VersionSet::insert(pkgCache::VerIterator const&)@Base" 0.8.0 -# (c++|optional=inline)"APT::VersionSet::insert(APT::VersionSet const&)@Base" 0.8.0 -# (c++|optional=private)"debTranslationsIndex::IndexFile(char const*) const@Base" 0.8.0 -# (c++|optional=inline)"pkgCache::Iterator::end() const@Base" 0.8.0 -# (c++|optional=inherent)"HashString::operator=(HashString const&)@Base" 0.8.0 -# (c++|regex|optional=std)"^std::less<[^ ]+>::operator\(\)\(.+\) const@Base$" 0.8.0 -# (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 -# (c++|regex|optional=std)"^pkgCache::(Dep|Pkg|Ver|Grp|Prv|Desc|PkgFile)Iterator\*\* std::_.+@Base$" 0.8.0 -### gcc-4.5 specific - (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 - (c++|optional=inline)"FileFd::FileFd(std::basic_string, std::allocator >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 - (c++|regex|optional=template)"^SPtrArray<[^ ]+>::~SPtrArray\(\)@Base$" 0.8.0 - (c++|optional=template)"SPtrArray::~SPtrArray()@Base" 0.8.0 -### gcc-4.6 specific - (c++|optional=template)"SPtrArray::~SPtrArray()@Base" 0.8.0 - (c++|regex|optional=std)"^std::basic_string, std::allocator >::basic_string\(.+\)@Base$" 0.8.0 - (c++|regex|optional=std)"^std::vector::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 - (c++|optional=strange)"pkgCache::VerIterator::VerIterator(pkgCache&, pkgCache::Version*)@Base" 0.8.0 -### architecture specific: va_list & size_t - (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@Base" 0.8.11.4 1 - (arch=armel armhf|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@Base" 0.8.11.4 1 - (arch=alpha|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@Base" 0.8.11.4 1 - (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@Base" 0.8.11.4 1 - (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@Base" 0.8.11.4 1 - (arch=hppa mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 1 - (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 1 - (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 1 - (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 1 - (arch=armel armhf|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 1 - (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 1 - (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@Base" 0.8.11.4 1 - (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@Base" 0.8.11.4 1 - (arch=hppa mipsel sparc|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@Base" 0.8.11.4 1 - (arch=ia64 sparc64|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@Base" 0.8.11.4 1 - (arch=sh4|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@Base" 0.8.11.4 1 -### architecture specific: size_t - (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mipsel powerpc powerpcspe sh4 sparc|c++)"_strtabexpand(char*, unsigned int)@Base" 0.8.0 - (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"_strtabexpand(char*, unsigned long)@Base" 0.8.0 - (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mipsel powerpc powerpcspe sh4 sparc|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned int&)@Base" 0.8.0 - (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned long&)@Base" 0.8.0 -### try to ignore std:: template instances - (c++|regex|optional=std)"^(void |)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)"^__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++)"Configuration::MatchAgainstConfig::clearPatterns()@Base" 0.8.1 1 - (c++)"CreateAPTDirectoryIfNeeded(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.2 1 - (c++)"FileFd::FileSize()@Base" 0.8.8 1 - (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@Base" 0.8.11 1 - (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string, std::allocator > const&, std::list, std::allocator > >&)@Base" 0.8.11 1 - (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string, std::allocator > const&)@Base" 0.8.11 1 - (c++)"RealFileExists(std::basic_string, std::allocator >)@Base" 0.8.11 1 - (c++)"StripEpoch(std::basic_string, std::allocator > const&)@Base" 0.8.11 1 - (c++)"IndexTarget::~IndexTarget()@Base" 0.8.11 1 - (c++)"pkgAcqIndex::Init(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.11 1 - (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 - (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::ParseIndex(std::basic_string, std::allocator > const&)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::Custom600Headers()@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::DescURI()@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, HashString const&)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::~pkgAcqSubIndex()@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::vector > const*, indexRecords*)@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 1 - (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 - (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 1 - (c++)"IndexTarget::IsSubIndex() const@Base" 0.8.11 1 - (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.11 1 - (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.11 1 - (c++)"typeinfo for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"typeinfo name for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"vtable for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 1 - (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 1 - (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 1 - (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 1 - (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 1 - (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 1 - (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 1 - (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.12 1 - (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 1 - (c++|optional=private)"debListParser::NewProvidesAllArch(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.13.2 1 - (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 1 - (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 1 diff --git a/debian/changelog b/debian/changelog index dc653a090..a973c0aca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -80,6 +80,8 @@ apt (0.8.15) UNRELEASED; urgency=low - ignore non http urls in the mirrors - append the dist (e.g. sid, wheezy) as a query string when asking for a suitable mirror + * debian/control: + - add libapt-pkg4.10 and libapt-inst1.2 library packages -- Michael Vogt Mon, 16 May 2011 14:57:52 +0200 diff --git a/debian/control b/debian/control index 6d0f16b70..1bad67e0a 100644 --- a/debian/control +++ b/debian/control @@ -16,7 +16,6 @@ Architecture: any Pre-Depends: ${shlibs:Depends} Depends: debian-archive-keyring, ${misc:Depends}, gnupg Replaces: manpages-pl (<< 20060617-3~) -Provides: ${libapt-pkg:provides} Conflicts: python-apt (<< 0.7.93.2~) Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt Description: Advanced front-end for dpkg @@ -27,6 +26,20 @@ Description: Advanced front-end for dpkg APT features complete installation ordering, multiple source capability and several other unique features, see the Users Guide in apt-doc. +Package: libapt-pkg4.10 +Architecture: any +Depends: ${shlibs:Depends} +Replaces: apt (<< 0.8.15) +Description: Library for apt + This package contains the library used by apt. + +Package: libapt-inst1.2 +Architecture: any +Depends: ${shlibs:Depends} +Replaces: apt-utils (<< 0.8.15) +Description: Install library for apt + This package contains the inst library used by apt. + Package: apt-doc Architecture: all Priority: optional diff --git a/debian/libapt-inst1.2.install b/debian/libapt-inst1.2.install new file mode 100644 index 000000000..575199b53 --- /dev/null +++ b/debian/libapt-inst1.2.install @@ -0,0 +1 @@ +bin/libapt-inst*.so.* usr/lib/ \ No newline at end of file diff --git a/debian/libapt-inst1.2.symbols b/debian/libapt-inst1.2.symbols new file mode 100644 index 000000000..9ba283a51 --- /dev/null +++ b/debian/libapt-inst1.2.symbols @@ -0,0 +1,123 @@ +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, std::allocator >)@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, std::allocator >, 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, std::allocator >&)@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, std::allocator >&)@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@Base" 0.8.0 + (c++|optional)"typeinfo for pkgCache::Iterator@Base" 0.8.0 + (c++|optional)"typeinfo for pkgCache::Iterator@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@Base" 0.8.0 + (c++|optional)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 + (c++|optional)"typeinfo name for pkgCache::Iterator@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@Base" 0.8.0 + (c++|optional)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++|optional)"vtable for pkgCache::Iterator@Base" 0.8.0 +### gcc-4.4 specific +# (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 +# (c++|optional=std)"std::basic_string, std::allocator >& std::basic_string, std::allocator >::append(unsigned char*, unsigned char*)@Base" 0.8.0 +### gcc-4.6 specific + (c++|optional=std)"std::vector >::~vector()@Base" 0.8.12 1 + (c++|optional=std)"std::basic_string, std::allocator >& std::basic_string, std::allocator >::_M_replace_dispatch(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, unsigned char*, unsigned char*, std::__false_type)@Base" 0.8.0 +### try to ignore std:: template instances + (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@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 +### diff --git a/debian/libapt-pkg4.10.install b/debian/libapt-pkg4.10.install new file mode 100644 index 000000000..571dc8478 --- /dev/null +++ b/debian/libapt-pkg4.10.install @@ -0,0 +1 @@ +bin/libapt-pkg*.so.* usr/lib/ \ No newline at end of file diff --git a/debian/libapt-pkg4.10.symbols b/debian/libapt-pkg4.10.symbols new file mode 100644 index 000000000..bb60c22be --- /dev/null +++ b/debian/libapt-pkg4.10.symbols @@ -0,0 +1,1320 @@ +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, std::allocator >)@Base" 0.8.0 + (c++)"IdentCdrom(std::basic_string, std::allocator >, std::basic_string, std::allocator >&, unsigned int)@Base" 0.8.0 + (c++)"ListUpdate(pkgAcquireStatus&, pkgSourceList&, int)@Base" 0.8.0 + (c++)"MountCdrom(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"ParseCWord(char const*&, std::basic_string, std::allocator >&)@Base" 0.8.0 + (c++)"ReadPinDir(pkgPolicy&, std::basic_string, std::allocator >)@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, std::allocator > const&, char const*)@Base" 0.8.0 + (c++)"ReadPinFile(pkgPolicy&, std::basic_string, std::allocator >)@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, std::allocator >)@Base" 0.8.0 + (c++)"Base64Encode(std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"ReadMessages(int, std::vector, std::allocator >, std::allocator, std::allocator > > >&)@Base" 0.8.0 + (c++)"SetCloseExec(int, bool)@Base" 0.8.0 + (c++)"StringToBool(std::basic_string, std::allocator > const&, int)@Base" 0.8.0 + (c++)"UnmountCdrom(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"_GetErrorObj()@Base" 0.8.0 + (c++)"pkgFixBroken(pkgDepCache&)@Base" 0.8.0 + (c++)"DeQuoteString(__gnu_cxx::__normal_iterator, std::allocator > > const&, __gnu_cxx::__normal_iterator, std::allocator > > const&)@Base" 0.8.0 + (c++)"DeQuoteString(std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"OutputInDepth(unsigned long, char const*)@Base" 0.8.0 + (c++)"ReadConfigDir(Configuration&, std::basic_string, std::allocator > const&, bool const&, unsigned int const&)@Base" 0.8.0 + (c++)"URItoFileName(std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"UTF8ToCodeset(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator >*)@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, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, char const*, char const*)@Base" 0.8.0 + (c++)"stringcasecmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@Base" 0.8.0 + (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@Base" 0.8.0 + (c++)"tolower_ascii(int)@Base" 0.8.0 + (c++)"ParseQuoteWord(char const*&, std::basic_string, std::allocator >&)@Base" 0.8.0 + (c++)"ReadConfigFile(Configuration&, std::basic_string, std::allocator > 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, std::allocator >)@Base" 0.8.0 + (c++)"pkgApplyStatus(pkgDepCache&)@Base" 0.8.0 + (c++)"pkgDistUpgrade(pkgDepCache&)@Base" 0.8.0 + (c++)"CheckDomainList(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"CreateDirectory(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"DirectoryExists(std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"VectorizeString(std::basic_string, std::allocator > 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, std::allocator > const&, std::vector, std::allocator >, std::allocator, std::allocator > > > const&, bool const&)@Base" 0.8.0 + (c++)"GetListOfFilesInDir(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator >, bool)@Base" 0.8.0 + (c++)"Hex2Num(std::basic_string, std::allocator > 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, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"SubstVar(std::basic_string, std::allocator >, SubstVar const*)@Base" 0.8.0 + (c++)"flNoLink(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"flNotDir(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"ioprintf(std::basic_ostream >&, char const*, ...)@Base" 0.8.0 + (c++)"IsMounted(std::basic_string, std::allocator >&)@Base" 0.8.0 + (c++)"LookupTag(std::basic_string, std::allocator > const&, char const*, char const*)@Base" 0.8.0 + (c++)"SizeToStr(double)@Base" 0.8.0 + (c++)"StrToTime(std::basic_string, std::allocator > 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, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"flNotFile(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, char const*, char const*)@Base" 0.8.0 + (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@Base" 0.8.0 + (c++)"stringcmp(char const*, char const*, char const*, char const*)@Base" 0.8.0 + (c++)"strprintf(std::basic_string, std::allocator >&, char const*, ...)@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"guard variable for pkgCacheGenerator::Dynamic::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, std::allocator >)@Base" 0.8.0 + (c++)"HashString::HashString(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@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, std::allocator > const&)@Base" 0.8.0 + (c++)"OpProgress::OverallProgress(unsigned long, unsigned long, unsigned long, std::basic_string, std::allocator > 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, std::allocator >)@Base" 0.8.0 + (c++)"SourceCopy::Type()@Base" 0.8.0 + (c++)"SourceCopy::GetFile(std::basic_string, std::allocator >&, 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, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqFile::Failed(std::basic_string, std::allocator >, 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, std::allocator >, std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator >)@Base" 0.8.0 + (c++)"pkgAcquire::Item::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcquire::Item::Start(std::basic_string, std::allocator >, unsigned long)@Base" 0.8.0 + (c++)"pkgAcquire::Item::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcquire::Item::Rename(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@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, std::allocator >)@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, std::allocator >, 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, std::allocator >, pkgAcquire*)@Base" 0.8.0 + (c++)"pkgAcquire::Queue::~Queue()@Base" 0.8.0 + (c++)"pkgAcquire::Setup(pkgAcquireStatus*, std::basic_string, std::allocator > 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, std::allocator >)@Base" 0.8.0 + (c++)"pkgAcquire::Worker::RunMessages()@Base" 0.8.0 + (c++)"pkgAcquire::Worker::Capabilities(std::basic_string, std::allocator >)@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, std::allocator >)@Base" 0.8.0 + (c++)"pkgAcquire::QueueName(std::basic_string, std::allocator >, 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 >&, GlobalError::MsgType const&, bool const&)@Base" 0.8.0 + (c++)"GlobalError::PopMessage(std::basic_string, std::allocator >&)@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 + (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, std::allocator >)@Base" 0.8.0 + (c++)"MD5SumValue::MD5SumValue(std::basic_string, std::allocator >)@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, std::allocator >)@Base" 0.8.0 + (c++)"PackageCopy::Type()@Base" 0.8.0 + (c++)"PackageCopy::GetFile(std::basic_string, std::allocator >&, 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, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqIndex::Failed(std::basic_string, std::allocator >, 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, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, HashString, std::basic_string, std::allocator >)@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::MarkFollowsRecommends()@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, std::allocator >)@Base" 0.8.0 + (c++)"pkgSimulate::Describe(pkgCache::PkgIterator, std::basic_ostream >&, 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, std::allocator >)@Base" 0.8.0 + (c++)"SHA1SumValue::SHA1SumValue(std::basic_string, std::allocator >)@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::Load(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"indexRecords::Lookup(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"indexRecords::MetaKeys()@Base" 0.8.0 + (c++)"indexRecords::indexRecords(std::basic_string, std::allocator >)@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, std::allocator >)@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, std::allocator >, 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, std::allocator > const&)@Base" 0.8.0 + (c++)"pkgAcqMethod::URIStart(pkgAcqMethod::FetchResult&)@Base" 0.8.0 + (c++)"pkgAcqMethod::MediaFail(std::basic_string, std::allocator >, std::basic_string, std::allocator >)@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, std::allocator >*)@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, std::allocator > const&)@Base" 0.8.0 + (c++)"Configuration::Set(char const*, int const&)@Base" 0.8.0 + (c++)"Configuration::Dump(std::basic_ostream >&)@Base" 0.8.0 + (c++)"Configuration::Clear(std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"Configuration::Clear(std::basic_string, std::allocator > const&, int const&)@Base" 0.8.0 + (c++)"Configuration::Clear(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"Configuration::CndSet(char const*, std::basic_string, std::allocator > 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, std::allocator >&, std::basic_string, std::allocator >&, 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, std::allocator >)@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, std::allocator >)@Base" 0.8.0 + (c++)"debListParser::Package()@Base" 0.8.0 + (c++)"debListParser::Version()@Base" 0.8.0 + (c++)"debListParser::GrabWord(std::basic_string, std::allocator >, debListParser::WordList*, unsigned char&)@Base" 0.8.0 + (c++)"debListParser::debListParser(FileFd*, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"debListParser::~debListParser()@Base" 0.8.0 + (c++)"pkgAcqArchive::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqArchive::Failed(std::basic_string, std::allocator >, 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, std::allocator >&)@Base" 0.8.0 + (c++)"pkgAcqArchive::~pkgAcqArchive()@Base" 0.8.0 + (c++)"pkgAcqMetaSig::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqMetaSig::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqMetaSig::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqMetaSig::DescURI()@Base" 0.8.0 + (c++)"pkgAcqMetaSig::~pkgAcqMetaSig()@Base" 0.8.0 + (c++)"pkgSourceList::ReadAppend(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"pkgSourceList::ReadMainList()@Base" 0.8.0 + (c++)"pkgSourceList::ReadSourceDir(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"pkgSourceList::Read(std::basic_string, std::allocator >)@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, std::allocator >)@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::allocator >, std::allocator, std::allocator > > >)@Base" 0.8.0 + (c++)"pkgVendorList::ReadMainList()@Base" 0.8.0 + (c++)"pkgVendorList::LookupFingerprint(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"pkgVendorList::Read(std::basic_string, std::allocator >)@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, std::allocator >)@Base" 0.8.0 + (c++)"SHA256SumValue::SHA256SumValue(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"SHA256SumValue::SHA256SumValue()@Base" 0.8.0 + (c++)"debIFTypeTrans::~debIFTypeTrans()@Base" 0.8.0 + (c++)"debStatusIndex::debStatusIndex(std::basic_string, std::allocator >)@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, std::allocator >, 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, std::allocator > const&, bool const&)@Base" 0.8.0 + (c++)"debReleaseIndex::PushSectionEntry(debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 + (c++)"debReleaseIndex::PushSectionEntry(std::basic_string, std::allocator > const&, debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 + (c++)"debReleaseIndex::PushSectionEntry(std::vector, std::allocator >, std::allocator, std::allocator > > > const&, debReleaseIndex::debSectionEntry const*)@Base" 0.8.0 + (c++)"debReleaseIndex::debReleaseIndex(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, bool)@Base" 0.8.0 + (c++)"debSourcesIndex::~debSourcesIndex()@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::ParseDiffIndex(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::DescURI()@Base" 0.8.0 + (c++)"pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, 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, std::allocator >)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::RetrievalDone(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::DescURI()@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::AuthDone(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > 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, std::allocator > const&, char const*)@Base" 0.8.0 + (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@Base" 0.8.0 + (c++)"pkgVersionMatch::MatchVer(char const*, std::basic_string, std::allocator >, bool)@Base" 0.8.0 + (c++)"pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator)@Base" 0.8.0 + (c++)"pkgVersionMatch::pkgVersionMatch(std::basic_string, std::allocator >, pkgVersionMatch::MatchType)@Base" 0.8.0 + (c++)"pkgVersionMatch::~pkgVersionMatch()@Base" 0.8.0 + (c++)"TranslationsCopy::CopyTranslations(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@Base" 0.8.0 + (c++)"debPackagesIndex::debPackagesIndex(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, bool const&, std::basic_string, std::allocator > 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, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::Failed(std::basic_string, std::allocator >, 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, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, HashString, std::basic_string, std::allocator >, std::vector >)@Base" 0.8.0 + (c++)"pkgAcqIndexDiffs::~pkgAcqIndexDiffs()@Base" 0.8.0 + (c++)"pkgAcqIndexTrans::Custom600Headers()@Base" 0.8.0 + (c++)"pkgAcqIndexTrans::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.0 + (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >)@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, std::allocator >, pkgCache&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::ListParser::NewDepends(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, unsigned int, unsigned int)@Base" 0.8.0 + (c++)"pkgCacheGenerator::ListParser::NewProvides(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator > 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, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewVersion(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, unsigned long)@Base" 0.8.0 + (c++)"pkgCacheGenerator::SelectFile(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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, std::allocator > 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::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::Dynamic::toReMap@Base" 0.8.0 + (c++)"pkgCacheGenerator::NewGroup(pkgCache::GrpIterator&, std::basic_string, std::allocator > 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, std::allocator >)@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 >&, 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 >&)@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, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, char const*)@Base" 0.8.0 + (c++)"debTranslationsIndex::~debTranslationsIndex()@Base" 0.8.0 + (c++)"APT::PackageSet::FromString(pkgCacheFile&, std::basic_string, std::allocator > 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 > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::FromName(pkgCacheFile&, std::basic_string, std::allocator > const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::FromTask(pkgCacheFile&, std::basic_string, std::allocator >, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::FromRegEx(pkgCacheFile&, std::basic_string, std::allocator >, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::PackageSet::~PackageSet()@Base" 0.8.0 + (c++)"APT::VersionSet::FromString(pkgCacheFile&, std::basic_string, std::allocator >, 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 > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 + (c++)"APT::VersionSet::~VersionSet()@Base" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::basic_string, std::allocator > 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, std::allocator > const&)@Base" 0.8.0 + (c++)"APT::Configuration::getCompressionTypes(bool const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindTask(pkgCacheFile&, std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindRegEx(pkgCacheFile&, std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindAllVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindPackage(pkgCacheFile&, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::showTaskSelection(APT::PackageSet const&, std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"APT::CacheSetHelper::showRegExSelection(APT::PackageSet const&, std::basic_string, std::allocator > 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, std::allocator > 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, std::allocator > const&)@Base" 0.8.0 + (c++)"URI::CopyFrom(std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"URI::SiteOnly(std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"URI::~URI()@Base" 0.8.0 + (c++)"URI::operator std::basic_string, std::allocator >()@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, std::allocator >, 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++)"FileFd::~FileFd()@Base" 0.8.0 + (c++)"Hashes::AddFD(int, unsigned long)@Base" 0.8.0 + (c++)"Vendor::CheckDist(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"Vendor::Vendor(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector >*)@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, std::allocator > 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, std::allocator > const&)@Base" 0.8.0 + (c++)"pkgCache::FindPkg(std::basic_string, std::allocator > const&)@Base" 0.8.0 + (c++)"pkgCache::FindPkg(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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::allocator >, std::allocator, std::allocator > > >&, char const*)@Base" 0.8.0 + (c++)"pkgCdrom::FindPackages(std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::basic_string, std::allocator >&, pkgCdromStatus*, unsigned int)@Base" 0.8.0 + (c++)"pkgCdrom::WriteDatabase(Configuration&)@Base" 0.8.0 + (c++)"pkgCdrom::DropBinaryArch(std::vector, std::allocator >, std::allocator, std::allocator > > >&)@Base" 0.8.0 + (c++)"pkgCdrom::WriteSourceList(std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, bool)@Base" 0.8.0 + (c++)"pkgCdrom::ReduceSourcelist(std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&)@Base" 0.8.0 + (c++)"pkgCdrom::Add(pkgCdromStatus*)@Base" 0.8.0 + (c++)"pkgCdrom::Ident(std::basic_string, std::allocator >&, pkgCdromStatus*)@Base" 0.8.0 + (c++)"pkgCdrom::Score(std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"IndexCopy::CopyPackages(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@Base" 0.8.0 + (c++)"IndexCopy::ReconstructChop(unsigned long&, std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"IndexCopy::ReconstructPrefix(std::basic_string, std::allocator >&, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"IndexCopy::ConvertToSourceList(std::basic_string, std::allocator >, std::basic_string, std::allocator >&)@Base" 0.8.0 + (c++)"IndexCopy::ChopDirs(std::basic_string, std::allocator >, unsigned int)@Base" 0.8.0 + (c++)"IndexCopy::GrabFirst(std::basic_string, std::allocator >, std::basic_string, std::allocator >&, unsigned int)@Base" 0.8.0 + (c++)"IndexCopy::~IndexCopy()@Base" 0.8.0 + (c++)"SigVerify::CopyAndVerify(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >, std::vector, std::allocator >, std::allocator, std::allocator > > >)@Base" 0.8.0 + (c++)"SigVerify::CopyMetaIndex(std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >)@Base" 0.8.0 + (c++)"SigVerify::Verify(std::basic_string, std::allocator >, std::basic_string, std::allocator >, indexRecords*)@Base" 0.8.0 + (c++)"SigVerify::RunGPGV(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > 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 >&)@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, std::allocator > const&, std::basic_string, std::allocator >)@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, std::allocator > 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, std::allocator >)@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, std::allocator >, std::basic_string, std::allocator >, 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, std::allocator >) const@Base" 0.8.0 + (c++)"HashString::empty() const@Base" 0.8.0 + (c++)"HashString::toStr() 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 >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > 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, std::allocator > const&) const@Base" 0.8.0 + (c++)"indexRecords::GetDist() const@Base" 0.8.0 + (c++)"indexRecords::CheckDist(std::basic_string, std::allocator >) const@Base" 0.8.0 + (c++)"pkgIndexFile::ArchiveURI(std::basic_string, std::allocator >) 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, std::allocator >&) const@Base" 0.8.0 + (c++)"pkgSourceList::Type::ParseLine(std::vector >&, char const*, unsigned long const&, std::basic_string, std::allocator > 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, std::allocator > 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, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::SourceIndexURI(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::ComputeIndexTargets() const@Base" 0.8.0 + (c++)"debReleaseIndex::SourceIndexURISuffix(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::Info(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::IndexURI(char const*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) const@Base" 0.8.0 + (c++)"debReleaseIndex::IsTrusted() const@Base" 0.8.0 + (c++)"debSLTypeDebSrc::CreateItem(std::vector >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > const&) const@Base" 0.8.0 + (c++)"debSLTypeDebian::CreateItemInternal(std::vector >&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, bool const&, std::map, std::allocator >, std::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::basic_string, std::allocator > > > > const&) const@Base" 0.8.0 + (c++)"debSourcesIndex::ArchiveURI(std::basic_string, std::allocator >) 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, std::allocator >) 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++)"Vendor::GetVendorID() const@Base" 0.8.0 + (c++)"Vendor::LookupFingerprint(std::basic_string, std::allocator >) 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, std::allocator >) 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, std::allocator > 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@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo for pkgCache::Iterator@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@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator@Base" 0.8.0 + (c++)"typeinfo name for pkgCache::Iterator@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@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++)"vtable for pkgCache::Iterator@Base" 0.8.0 + (c++)"non-virtual thunk to pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()@Base" 0.8.0 + (c++)"operator<<(std::basic_ostream >&, pkgCache::DepIterator)@Base" 0.8.0 + (c++)"operator<<(std::basic_ostream >&, 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 +### demangle strangeness - buildd report it as MISSING and as new… + (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::basic_string, std::allocator >, std::vector > const*, indexRecords*)@Base" 0.8.0 +### gcc-4.4 specific +# (c++|optional=inherent)"APT::PackageSet::PackageSet(APT::PackageSet const&)@Base" 0.8.0 +# (c++|optional=inline)"stringcasecmp(char const*, char const*, char const*)@Base" 0.8.0 +# (arch=armel|c++|optional=inline)"stringcasecmp(std::basic_string, std::allocator > const&, char const*)@Base" 0.8.0 +# (c++|optional=inherent)"APT::VersionSet::insert(pkgCache::VerIterator const&)@Base" 0.8.0 +# (c++|optional=inline)"APT::VersionSet::insert(APT::VersionSet const&)@Base" 0.8.0 +# (c++|optional=private)"debTranslationsIndex::IndexFile(char const*) const@Base" 0.8.0 +# (c++|optional=inline)"pkgCache::Iterator::end() const@Base" 0.8.0 +# (c++|optional=inherent)"HashString::operator=(HashString const&)@Base" 0.8.0 +# (c++|regex|optional=std)"^std::less<[^ ]+>::operator\(\)\(.+\) const@Base$" 0.8.0 +# (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 +# (c++|regex|optional=std)"^pkgCache::(Dep|Pkg|Ver|Grp|Prv|Desc|PkgFile)Iterator\*\* std::_.+@Base$" 0.8.0 +### gcc-4.5 specific + (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 + (c++|optional=inline)"FileFd::FileFd(std::basic_string, std::allocator >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 + (c++|regex|optional=template)"^SPtrArray<[^ ]+>::~SPtrArray\(\)@Base$" 0.8.0 + (c++|optional=template)"SPtrArray::~SPtrArray()@Base" 0.8.0 +### gcc-4.6 specific + (c++|optional=template)"SPtrArray::~SPtrArray()@Base" 0.8.0 + (c++|regex|optional=std)"^std::basic_string, std::allocator >::basic_string\(.+\)@Base$" 0.8.0 + (c++|regex|optional=std)"^std::vector::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 + (c++|optional=strange)"pkgCache::VerIterator::VerIterator(pkgCache&, pkgCache::Version*)@Base" 0.8.0 +### architecture specific: va_list & size_t + (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@Base" 0.8.11.4 1 + (arch=armel armhf|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@Base" 0.8.11.4 1 + (arch=alpha|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@Base" 0.8.11.4 1 + (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@Base" 0.8.11.4 1 + (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@Base" 0.8.11.4 1 + (arch=hppa mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 1 + (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 1 + (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 1 + (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 1 + (arch=armel armhf|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 1 + (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 1 + (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@Base" 0.8.11.4 1 + (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@Base" 0.8.11.4 1 + (arch=hppa mipsel sparc|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@Base" 0.8.11.4 1 + (arch=ia64 sparc64|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@Base" 0.8.11.4 1 + (arch=sh4|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@Base" 0.8.11.4 1 +### architecture specific: size_t + (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mipsel powerpc powerpcspe sh4 sparc|c++)"_strtabexpand(char*, unsigned int)@Base" 0.8.0 + (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"_strtabexpand(char*, unsigned long)@Base" 0.8.0 + (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mipsel powerpc powerpcspe sh4 sparc|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned int&)@Base" 0.8.0 + (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned long&)@Base" 0.8.0 +### try to ignore std:: template instances + (c++|regex|optional=std)"^(void |)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)"^__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++)"Configuration::MatchAgainstConfig::clearPatterns()@Base" 0.8.1 1 + (c++)"CreateAPTDirectoryIfNeeded(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.2 1 + (c++)"FileFd::FileSize()@Base" 0.8.8 1 + (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@Base" 0.8.11 1 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string, std::allocator > const&, std::list, std::allocator > >&)@Base" 0.8.11 1 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string, std::allocator > const&)@Base" 0.8.11 1 + (c++)"RealFileExists(std::basic_string, std::allocator >)@Base" 0.8.11 1 + (c++)"StripEpoch(std::basic_string, std::allocator > const&)@Base" 0.8.11 1 + (c++)"IndexTarget::~IndexTarget()@Base" 0.8.11 1 + (c++)"pkgAcqIndex::Init(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.11 1 + (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 + (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 1 + (c++)"pkgAcqSubIndex::ParseIndex(std::basic_string, std::allocator > const&)@Base" 0.8.11 1 + (c++)"pkgAcqSubIndex::Custom600Headers()@Base" 0.8.11 1 + (c++)"pkgAcqSubIndex::Done(std::basic_string, std::allocator >, unsigned long, std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 + (c++)"pkgAcqSubIndex::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 + (c++)"pkgAcqSubIndex::DescURI()@Base" 0.8.11 1 + (c++)"pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, HashString const&)@Base" 0.8.11 1 + (c++)"pkgAcqSubIndex::~pkgAcqSubIndex()@Base" 0.8.11 1 + (c++)"pkgAcqMetaClearSig::Failed(std::basic_string, std::allocator >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 + (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::vector > const*, indexRecords*)@Base" 0.8.11 1 + (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 1 + (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 + (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 1 + (c++)"IndexTarget::IsSubIndex() const@Base" 0.8.11 1 + (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.11 1 + (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string, std::allocator > const&) const@Base" 0.8.11 1 + (c++)"typeinfo for pkgAcqSubIndex@Base" 0.8.11 1 + (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 1 + (c++)"typeinfo name for pkgAcqSubIndex@Base" 0.8.11 1 + (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 1 + (c++)"vtable for pkgAcqSubIndex@Base" 0.8.11 1 + (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 1 + (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 1 + (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 1 + (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 1 + (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 1 + (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 1 + (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 1 + (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 1 + (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.12 1 + (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 1 + (c++|optional=private)"debListParser::NewProvidesAllArch(pkgCache::VerIterator&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)@Base" 0.8.13.2 1 + (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 1 + (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 1 diff --git a/debian/rules b/debian/rules index 0544b2b8e..24fb3b9be 100755 --- a/debian/rules +++ b/debian/rules @@ -70,10 +70,6 @@ APT_UTILS=ftparchive sortpkgs extracttemplates # Find the libapt-pkg major version for use in other control files include buildlib/libversion.mak -# Determine which package we should provide in the control files -LIBAPTPKG_PROVIDE=libapt-pkg$(LIBAPTPKG_MAJOR) -LIBAPTINST_PROVIDE=libapt-inst$(LIBAPTINST_MAJOR) - # do not fail as we are just experimenting with symbol files for now export DPKG_GENSYMBOLS_CHECK_LEVEL=0 @@ -137,7 +133,7 @@ libapt-pkg-doc: build-doc dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) + dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ @@ -165,7 +161,7 @@ apt-doc: build-doc # Build architecture-dependent files here. -binary-arch: apt libapt-pkg-dev apt-utils apt-transport-https +binary-arch: libapt-pkg4.10 libapt-inst1.2 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 dh_testdir -p$@ @@ -207,8 +203,8 @@ apt: build build-doc dh_fixperms -p$@ dh_makeshlibs -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib - dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) + dh_shlibdeps -p$@ -l$(CURDIR)/debian/libapt-inst2.1/usr/lib:$(CURDIR)/debian/libapt-pkg4.10/usr/lib + dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ @@ -227,7 +223,7 @@ libapt-pkg-dev: build dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE) + dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ @@ -253,8 +249,42 @@ apt-utils: build dh_fixperms -p$@ dh_makeshlibs -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib - dh_gencontrol -p$@ -- -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE) + dh_shlibdeps -p$@ -l$(CURDIR)/debian/libapt-inst2.1/usr/lib:$(CURDIR)/debian/libapt-pkg4.10/usr/lib + dh_gencontrol -p$@ + dh_md5sums -p$@ + dh_builddeb -p$@ + +libapt-pkg4.10: build + dh_testdir -p$@ + dh_testroot -p$@ + dh_prep -p$@ + dh_installdirs -p$@ + + dh_install -p$@ --sourcedir=$(BLD) + dh_installchangelogs -p$@ + dh_strip -p$@ + dh_compress -p$@ + dh_fixperms -p$@ + dh_installdeb -p$@ + dh_shlibdeps -p$@ + dh_gencontrol -p$@ + dh_md5sums -p$@ + dh_builddeb -p$@ + +libapt-inst1.2: build + dh_testdir -p$@ + dh_testroot -p$@ + dh_prep -p$@ + dh_installdirs -p$@ + + dh_install -p$@ --sourcedir=$(BLD) + dh_installchangelogs -p$@ + dh_strip -p$@ + dh_compress -p$@ + dh_fixperms -p$@ + dh_installdeb -p$@ + dh_shlibdeps -p$@ -l$(CURDIR)/debian/libapt-pkg4.10/usr/lib + dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot index 159f86e6a..cc60e5497 100644 --- a/doc/po/apt-doc.pot +++ b/doc/po/apt-doc.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -566,7 +566,7 @@ msgid "" msgstr "" #. type: Content of: -#: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 sources.list.5.xml:36 +#: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 sources.list.5.xml:36 msgid "Description" msgstr "" @@ -944,7 +944,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 +#: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "" @@ -967,7 +967,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 apt-sortpkgs.1.xml:61 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "" @@ -987,12 +987,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "" @@ -1091,7 +1091,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "" @@ -1187,12 +1187,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 apt-sortpkgs.1.xml:67 +#: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "" @@ -1202,7 +1202,7 @@ msgid "&file-sourceslist; &file-statelists;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 sources.list.5.xml:234 +#: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 sources.list.5.xml:234 msgid "See Also" msgstr "" @@ -1212,7 +1212,7 @@ msgid "&apt-conf;, &sources-list;, &apt-get;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "" @@ -1311,12 +1311,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "" @@ -1519,7 +1519,7 @@ msgid "Just show the contents of the configuration space." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 apt-sortpkgs.1.xml:73 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "" @@ -2432,31 +2432,37 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" +msgid "<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: " +"<literal>APT::FTPArchive::<replaceable>Checksum</replaceable></literal> and " +"<literal>APT::FTPArchive::<replaceable>Index</replaceable>::<replaceable>Checksum</replaceable></literal> " +"where <literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, " +"<literal>SHA1</literal> or <literal>SHA256</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -2465,12 +2471,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -2479,12 +2485,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -2494,12 +2500,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: " @@ -2507,24 +2513,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: " "<literal>APT::FTPArchive::ReadOnlyDB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -2533,12 +2539,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -2552,12 +2558,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -2567,12 +2573,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 sources.list.5.xml:198 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 sources.list.5.xml:198 msgid "Examples" msgstr "" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "" "<command>apt-ftparchive</command> packages " @@ -2581,14 +2587,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3610,20 +3616,34 @@ msgid "" "from the keyring the archive keys which are no longer valid." msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +msgid "net-update" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch " +"from. APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -3634,42 +3654,42 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "" @@ -3677,8 +3697,8 @@ msgstr "" #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" #. type: Content of: <refentry><refnamediv><refname> @@ -3697,21 +3717,21 @@ msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> " "<arg><option>-f=<replaceable>FILENAME</replaceable></option></arg> <group " "choice=\"plain\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg " -"choice=\"plain\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> " +"choice=\"plain\">auto</arg> <arg choice=\"plain\">manual</arg> <arg " +"choice=\"plain\">showauto</arg> <arg choice=\"plain\">showmanual</arg> " "</group> <arg choice=\"plain\" " -"rep=\"repeat\"><replaceable>package</replaceable></arg> </arg> <arg " -"choice=\"plain\">showauto</arg> </group>" +"rep=\"repeat\"><replaceable>package</replaceable></arg> </arg> </group>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -3721,104 +3741,128 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +msgid "auto" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 -msgid "showauto" +#: apt-mark.8.xml:85 +msgid "hold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:86 msgid "" -"<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg " +"--set-selections</command> and the state is therefore maintained by &dpkg; " +"and not effected by the <option>--filename</option> option." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml:96 -msgid "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" +msgid "" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 -msgid "<option>--file=<filename><replaceable>FILENAME</replaceable></filename></option>" +#: apt-mark.8.xml:101 +msgid "showauto" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:102 msgid "" -"Read/Write package stats from " -"<filename><replaceable>FILENAME</replaceable></filename> instead of the " -"default location, which is <filename>extended_status</filename> in the " -"directory defined by the Configuration Item: <literal>Dir::State</literal>." +"<literal>showauto</literal> is used to print a list of automatically " +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" +#: apt-mark.8.xml:109 +msgid "showmanual" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" +#: apt-mark.8.xml:116 +msgid "showhold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." +#: apt-mark.8.xml:117 +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" +#: apt-mark.8.xml:130 +msgid "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" +#: apt-mark.8.xml:131 +msgid "<option>--file=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." +#: apt-mark.8.xml:134 +msgid "" +"Read/Write package stats from " +"<filename><replaceable>FILENAME</replaceable></filename> instead of the " +"default location, which is <filename>extended_status</filename> in the " +"directory defined by the Configuration Item: <literal>Dir::State</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -5874,39 +5918,44 @@ msgstr "" #: apt_preferences.5.xml:107 msgid "" "to the versions coming from archives which in their " -"<filename>Release</filename> files are marked as \"NotAutomatic: yes\" like " -"the debian experimental archive." +"<filename>Release</filename> files are marked as \"NotAutomatic: yes\" but " +"<emphasis>not</emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 msgid "priority 100" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -msgid "to the version that is already installed (if any)." +#: apt_preferences.5.xml:114 +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 msgid "priority 500" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 msgid "" "to the versions that are not installed and do not belong to the target " "release." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 msgid "priority 990" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 msgid "to the versions that are not installed and belong to the target release." msgstr "" @@ -5919,24 +5968,25 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 msgid "" "APT then applies the following rules, listed in order of precedence, to " "determine which version of a package to install." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " "(\"Downgrading\" is installing a less recent version of a package in place " @@ -5946,19 +5996,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 msgid "Install the highest priority version." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 msgid "" "If two or more versions have the same priority, install the most recent one " "(that is, the one with the higher version number)." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 msgid "" "If two or more versions have the same priority and version number but either " "the packages differ in some of their metadata or the " @@ -5966,7 +6016,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 msgid "" "In a typical situation, the installed version of a package (priority 100) " "is not as recent as one of the versions available from the sources listed in " @@ -5977,7 +6027,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " "recent than any of the other available versions. The package will not be " @@ -5987,7 +6037,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 msgid "" "Sometimes the installed version of a package is more recent than the version " "belonging to the target release, but not as recent as a version belonging to " @@ -5999,12 +6049,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 msgid "The Effect of APT Preferences" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 msgid "" "The APT preferences file allows the system administrator to control the " "assignment of priorities. The file consists of one or more multi-line " @@ -6013,7 +6063,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " "specified packages and specified version or version range. For example, the " @@ -6023,7 +6073,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, no-wrap msgid "" "Package: perl\n" @@ -6032,7 +6082,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 msgid "" "The general form assigns a priority to all of the package versions in a " "given distribution (that is, to all the versions of packages that are listed " @@ -6042,7 +6092,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 msgid "" "This general-form entry in the APT preferences file applies only to groups " "of packages. For example, the following record assigns a high priority to " @@ -6050,7 +6100,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, no-wrap msgid "" "Package: *\n" @@ -6059,7 +6109,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -6068,7 +6118,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, no-wrap msgid "" "Package: *\n" @@ -6077,7 +6127,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " "distribution as specified in a <filename>Release</filename> file. What " @@ -6087,7 +6137,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 msgid "" "The following record assigns a low priority to all package versions " "belonging to any distribution whose Archive name is " @@ -6095,7 +6145,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, no-wrap msgid "" "Package: *\n" @@ -6104,7 +6154,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 msgid "" "The following record assigns a high priority to all package versions " "belonging to any distribution whose Codename is " @@ -6112,7 +6162,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, no-wrap msgid "" "Package: *\n" @@ -6121,7 +6171,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 msgid "" "The following record assigns a high priority to all package versions " "belonging to any release whose Archive name is \"<literal>stable</literal>\" " @@ -6129,7 +6179,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, no-wrap msgid "" "Package: *\n" @@ -6138,82 +6188,133 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a " +"glob()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, no-wrap +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, no-wrap +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +msgid "Package" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:306 msgid "How APT Interprets Priorities" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 msgid "P > 1000" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 msgid "" "causes a version to be installed even if this constitutes a downgrade of the " "package" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 msgid "990 < P <=1000" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 msgid "" "causes a version to be installed even if it does not come from the target " "release, unless the installed version is more recent" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 msgid "500 < P <=990" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 msgid "" "causes a version to be installed unless there is a version available " "belonging to the target release or the installed version is more recent" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 msgid "100 < P <=500" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 msgid "" "causes a version to be installed unless there is a version available " "belonging to some other distribution or the installed version is more recent" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 msgid "0 < P <=100" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 msgid "" "causes a version to be installed only if there is no installed version of " "the package" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 msgid "P < 0" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 msgid "prevents the version from being installed" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " "negative integers. They are interpreted as follows (roughly speaking): " @@ -6221,7 +6322,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 msgid "" "If any specific-form records match an available package version then the " "first such record determines the priority of the package version. Failing " @@ -6230,14 +6331,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 msgid "" "For example, suppose the APT preferences file contains the three records " "presented earlier:" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, no-wrap msgid "" "Package: perl\n" @@ -6254,12 +6355,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 msgid "" "The most recent available version of the <literal>perl</literal> package " "will be installed, so long as that version's version number begins with " @@ -6269,7 +6370,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 msgid "" "A version of any package other than <literal>perl</literal> that is " "available from the local system has priority over other versions, even " @@ -6277,7 +6378,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 msgid "" "A version of a package whose origin is not the local system but some other " "site listed in &sources-list; and which belongs to an " @@ -6286,12 +6387,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 msgid "Determination of Package Version and Distribution Properties" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 msgid "" "The locations listed in the &sources-list; file should provide " "<filename>Packages</filename> and <filename>Release</filename> files to " @@ -6299,27 +6400,27 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 msgid "the <literal>Package:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 msgid "gives the package name" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 msgid "the <literal>Version:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 msgid "gives the version number for the named package" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 msgid "" "The <filename>Packages</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable>/<replaceable>component</replaceable>/<replaceable>arch</replaceable></filename>: " @@ -6331,12 +6432,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 msgid "" "names the archive to which all the packages in the directory tree belong. " "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies " @@ -6347,18 +6448,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, no-wrap msgid "Pin: release a=stable\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 msgid "the <literal>Codename:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 msgid "" "names the codename to which all the packages in the directory tree belong. " "For example, the line \"Codename: &testing-codename;\" specifies that all of " @@ -6369,13 +6470,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, no-wrap msgid "Pin: release n=&testing-codename;\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 msgid "" "names the release version. For example, the packages in the tree might " "belong to Debian GNU/Linux release version 3.0. Note that there is normally " @@ -6386,7 +6487,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, no-wrap msgid "" "Pin: release v=3.0\n" @@ -6395,12 +6496,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 msgid "the <literal>Component:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 msgid "" "names the licensing component associated with the packages in the directory " "tree of the <filename>Release</filename> file. For example, the line " @@ -6412,18 +6513,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, no-wrap msgid "Pin: release c=main\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 msgid "the <literal>Origin:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 msgid "" "names the originator of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is " @@ -6432,18 +6533,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, no-wrap msgid "Pin: release o=Debian\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 msgid "the <literal>Label:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 msgid "" "names the label of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is " @@ -6452,13 +6553,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, no-wrap msgid "Pin: release l=Debian\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 msgid "" "The <filename>Release</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for " @@ -6472,7 +6573,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " "files retrieved from locations listed in the &sources-list; file are stored " @@ -6487,12 +6588,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 msgid "Optional Lines in an APT Preferences Record" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 msgid "" "Each record in the APT preferences file can optionally begin with one or " "more lines beginning with the word <literal>Explanation:</literal>. This " @@ -6500,12 +6601,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 msgid "Tracking Stable" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -6520,7 +6621,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -6530,7 +6631,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 apt_preferences.5.xml:675 #, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -6539,7 +6640,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -6548,13 +6649,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>testing</literal> distribution; the package " @@ -6563,12 +6664,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 msgid "Tracking Testing or Unstable" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, no-wrap msgid "" "Package: *\n" @@ -6585,7 +6686,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 msgid "" "The following APT preferences file will cause APT to assign a high priority " "to package versions from the <literal>testing</literal> distribution, a " @@ -6596,7 +6697,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -6605,13 +6706,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>unstable</literal> distribution. " @@ -6623,12 +6724,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package " @@ -6650,7 +6751,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -6665,7 +6766,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest version(s) in " @@ -6674,13 +6775,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>sid</literal> distribution. Thereafter, " @@ -6692,12 +6793,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 msgid "&file-preferences;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "" diff --git a/doc/po/de.po b/doc/po/de.po index 891e69964..565b43585 100644 --- a/doc/po/de.po +++ b/doc/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 0.7.25.3\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-09-16 19:04+0100\n" "Last-Translator: Chris Leick <c.leick@vollbio.de>\n" "Language-Team: German <debian-l10n-german@lists.debian.org>\n" @@ -763,7 +763,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 #: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 -#: apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 +#: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 msgid "Description" @@ -1282,7 +1282,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 #: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "Optionen" @@ -1310,7 +1310,7 @@ msgstr "" "pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1338,12 +1338,12 @@ msgstr "" "srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1458,7 +1458,7 @@ msgstr "" "Konfigurationselement: <literal>APT::Cache::ShowFull</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1575,14 +1575,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 -#: apt-sortpkgs.1.xml:67 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 +#: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 -#: apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Dateien" @@ -1593,9 +1593,9 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 -#: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 #: sources.list.5.xml:234 msgid "See Also" msgstr "Siehe auch" @@ -1607,8 +1607,8 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 -#: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 +#: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnose" @@ -1737,12 +1737,12 @@ msgstr "" "<placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Optionen" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1996,7 +1996,7 @@ msgid "Just show the contents of the configuration space." msgstr "Nur der Inhalt des Konfigurationsbereichs wird angezeigt." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -3144,27 +3144,49 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" -msgstr "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 -msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." +msgid "" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" -"Generiert MD5-Summen. Dies ist standardmäßig an, wenn es ausgeschaltet ist, " -"haben die generierten Indexdateien keine MD5Sum-Felder, sofern dies möglich " -"ist. Konfigurationselement: <literal>APT::FTPArchive::MD5</literal>" +"Werte für zusätzliche Metadatenfelder in der Release-Datei werden den " +"entsprechenden Variablen unter <literal>APT::FTPArchive::Release</literal> " +"entnommen, z.B. <literal>APT::FTPArchive::Release::Origin</literal>. Die " +"unterstützten Felder sind: <literal>Origin</literal>, <literal>Label</" +"literal>, <literal>Suite</literal>, <literal>Version</literal>, " +"<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-Until</" +"literal>, <literal>Architectures</literal>, <literal>Components</literal>, " +"<literal>Description</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3174,7 +3196,7 @@ msgstr "" "DB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3188,12 +3210,12 @@ msgstr "" "Konfigurationselement: <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3207,12 +3229,12 @@ msgstr "" "DeLinkAct</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3228,12 +3250,12 @@ msgstr "" "Konfigurationselement: <literal>APT::FTPArchive::Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3244,12 +3266,12 @@ msgstr "" "SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3258,12 +3280,12 @@ msgstr "" "<literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3277,12 +3299,12 @@ msgstr "" "Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3306,12 +3328,12 @@ msgstr "" "haben sollte und all diese zusätzlichen Prüfungen daher nutzlos sind." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3327,19 +3349,19 @@ msgstr "" "werden kann." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 #: sources.list.5.xml:198 msgid "Examples" msgstr "Beispiele" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> Pakete <replaceable>Verzeichnis</replaceable> | <command>gzip</command> > <filename>Pakete.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3349,7 +3371,7 @@ msgstr "" ">" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -4714,8 +4736,24 @@ msgstr "" "aktualisieren und aus dem Schlüsselbund die Archivschlüssel entfernen, die " "nicht länger gültig sind." +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +#, fuzzy +#| msgid "update" +msgid "net-update" +msgstr "update" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch from. " +"APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4724,12 +4762,12 @@ msgstr "" "Befehlen definiert sein müssen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>Dateiname</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -4746,54 +4784,58 @@ msgstr "" "Schlüssel werden zu diesem hinzugefügt." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Lokale Datenbank vertrauenswürdiger Archivschlüssel." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Schlüsselbund vertrauenswürdiger Schlüssel des Debian-Archivs." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "" "Schlüsselbund entfernter vertrauenswürdiger Schlüssel des Debian-Archivs." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" #. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 +#, fuzzy +#| msgid "" +#| "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " +#| "August 2009</date>" msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9. " "August 2009</date>" @@ -4812,13 +4854,22 @@ msgstr "" #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #: apt-mark.8.xml:39 +#, fuzzy +#| msgid "" +#| " <command>apt-mark</command> <arg><option>-hv</option></arg> " +#| "<arg><option>-f=<replaceable>FILENAME</replaceable></option></arg> <group " +#| "choice=\"plain\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg " +#| "choice=\"plain\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </" +#| "group> <arg choice=\"plain\" rep=\"repeat\"><replaceable>package</" +#| "replaceable></arg> </arg> <arg choice=\"plain\">showauto</arg> </group>" msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" "\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain" -"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg " +"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain" +"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg " "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" -"arg> <arg choice=\"plain\">showauto</arg> </group>" +"arg> </group>" msgstr "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>DATEINAME</replaceable></option></arg> <group choice=\"plain" @@ -4828,7 +4879,7 @@ msgstr "" "arg> <arg choice=\"plain\">showauto</arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." @@ -4837,7 +4888,7 @@ msgstr "" "installiert markiert ist." #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -4853,14 +4904,21 @@ msgstr "" "<command>aptitude</command> entfernt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +#, fuzzy +#| msgid "markauto" +msgid "auto" msgstr "markauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 +#, fuzzy +#| msgid "" +#| "<literal>markauto</literal> is used to mark a package as being " +#| "automatically installed, which will cause the package to be removed when " +#| "no more manually installed packages depend on this package." msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" @@ -4869,14 +4927,19 @@ msgstr "" "keine manuell installierten Pakete von ihm abhängen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" -msgstr "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 +#, fuzzy +#| msgid "" +#| "<literal>unmarkauto</literal> is used to mark a package as being manually " +#| "installed, which will prevent the package from being automatically " +#| "removed if no other packages depend on it." msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" @@ -4885,28 +4948,102 @@ msgstr "" "entfernt wird, wenn kein anderes Paket von ihm abhängt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 +#: apt-mark.8.xml:85 +msgid "hold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:86 +msgid "" +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg --set-" +"selections</command> and the state is therefore maintained by &dpkg; and not " +"effected by the <option>--filename</option> option." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:96 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." +msgstr "" +"<literal>showauto</literal> wird benutzt, um eine Liste automatisch " +"installierter Pakete mit einem Paket in jeder neuen Zeile, auszugeben." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:101 msgid "showauto" msgstr "showauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:102 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." msgid "" "<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" "<literal>showauto</literal> wird benutzt, um eine Liste automatisch " "installierter Pakete mit einem Paket in jeder neuen Zeile, auszugeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:96 +#: apt-mark.8.xml:109 +#, fuzzy +#| msgid "showauto" +msgid "showmanual" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:116 +#, fuzzy +#| msgid "showauto" +msgid "showhold" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:117 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." +msgstr "" +"<literal>showauto</literal> wird benutzt, um eine Liste automatisch " +"installierter Pakete mit einem Paket in jeder neuen Zeile, auszugeben." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:130 msgid "" "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" "<option>-f=<filename><replaceable>DATEINAME</replaceable></filename></option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 +#: apt-mark.8.xml:131 msgid "" "<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" "option>" @@ -4915,7 +5052,7 @@ msgstr "" "option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:134 msgid "" "Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" "filename> instead of the default location, which is " @@ -4927,48 +5064,18 @@ msgstr "" "filename> im von Konfigurationselement <literal>Dir::State</literal> " "definierten Verzeichnis, ist." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" -msgstr "<option>-h</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" -msgstr "<option>--help</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." -msgstr "Eine kurze Zusammenfassung anzeigen." - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" -msgstr "<option>-v</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" -msgstr "<option>--version</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." -msgstr "Die Programmversion anzeigen." - #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr " &file-extended_states;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "&apt-get;,&aptitude;,&apt-conf;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -7895,32 +8002,50 @@ msgstr "Priorität 1" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #: apt_preferences.5.xml:107 +#, fuzzy +#| msgid "" +#| "to the versions coming from archives which in their <filename>Release</" +#| "filename> files are marked as \"NotAutomatic: yes\" like the debian " +#| "experimental archive." msgid "" "to the versions coming from archives which in their <filename>Release</" -"filename> files are marked as \"NotAutomatic: yes\" like the debian " -"experimental archive." +"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" +"emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" "zu den Versionen, die von Archiven kommen, deren <filename>Release</" "filename>-Dateien als »NotAutomatic: yes« markiert sind, wie das Debian-" "Experimental-Archiv." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 msgid "priority 100" msgstr "Priorität 100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -msgid "to the version that is already installed (if any)." -msgstr "zu der Version, die bereits installiert ist (wenn vorhanden)." +#: apt_preferences.5.xml:114 +#, fuzzy +#| msgid "" +#| "to the versions coming from archives which in their <filename>Release</" +#| "filename> files are marked as \"NotAutomatic: yes\" like the debian " +#| "experimental archive." +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." +msgstr "" +"zu den Versionen, die von Archiven kommen, deren <filename>Release</" +"filename>-Dateien als »NotAutomatic: yes« markiert sind, wie das Debian-" +"Experimental-Archiv." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 msgid "priority 500" msgstr "Priorität 500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 msgid "" "to the versions that are not installed and do not belong to the target " "release." @@ -7929,12 +8054,12 @@ msgstr "" "gehören." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 msgid "priority 990" msgstr "Priorität 990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 msgid "" "to the versions that are not installed and belong to the target release." msgstr "" @@ -7952,13 +8077,21 @@ msgstr "" "Zuweisung: <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 +#, fuzzy +#| msgid "" +#| "If the target release has not been specified then APT simply assigns " +#| "priority 100 to all installed package versions and priority 500 to all " +#| "uninstalled package versions, expect versions coming from archives which " +#| "in their <filename>Release</filename> files are marked as \"NotAutomatic: " +#| "yes\" - these versions get the priority 1." msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" "Wenn das Ziel-Release nicht angegeben wurde, dann weist APT einfach allen " "installierten Paketversionen eine Priorität von 100 und allen nicht " @@ -7967,7 +8100,7 @@ msgstr "" "ist – diese Versionen erhalten die Prirität 1." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 msgid "" "APT then applies the following rules, listed in order of precedence, to " "determine which version of a package to install." @@ -7977,7 +8110,7 @@ msgstr "" "ist." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " "(\"Downgrading\" is installing a less recent version of a package in place " @@ -7993,12 +8126,12 @@ msgstr "" "Downgrading eines Paketes riskant sein kann.)" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 msgid "Install the highest priority version." msgstr "Die Version mit der höchsten Priorität installieren." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 msgid "" "If two or more versions have the same priority, install the most recent one " "(that is, the one with the higher version number)." @@ -8007,7 +8140,7 @@ msgstr "" "aktuellste installiert (das ist die mit der höheren Versionsnummer)." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 msgid "" "If two or more versions have the same priority and version number but either " "the packages differ in some of their metadata or the <literal>--reinstall</" @@ -8019,7 +8152,7 @@ msgstr "" "installierte installiert." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 msgid "" "In a typical situation, the installed version of a package (priority 100) " "is not as recent as one of the versions available from the sources listed in " @@ -8035,7 +8168,7 @@ msgstr "" "upgrade</command> ausgeführt wird." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " "recent than any of the other available versions. The package will not be " @@ -8049,7 +8182,7 @@ msgstr "" "upgrade</command> ausgeführt wird." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 msgid "" "Sometimes the installed version of a package is more recent than the version " "belonging to the target release, but not as recent as a version belonging to " @@ -8069,12 +8202,12 @@ msgstr "" "hat." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 msgid "The Effect of APT Preferences" msgstr "Die Auswirkungen von APT-Einstellungen" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 msgid "" "The APT preferences file allows the system administrator to control the " "assignment of priorities. The file consists of one or more multi-line " @@ -8088,7 +8221,7 @@ msgstr "" "allgemeine Gestalt." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " "specified packages and specified version or version range. For example, the " @@ -8104,7 +8237,7 @@ msgstr "" "können durch Leerzeichen getrennt werden." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, no-wrap msgid "" "Package: perl\n" @@ -8116,7 +8249,7 @@ msgstr "" "Pin-Priority: 1001\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 msgid "" "The general form assigns a priority to all of the package versions in a " "given distribution (that is, to all the versions of packages that are listed " @@ -8131,7 +8264,7 @@ msgstr "" "ausgebildeten Domänennamen identifiziert wird, eine Priorität zu." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 msgid "" "This general-form entry in the APT preferences file applies only to groups " "of packages. For example, the following record assigns a high priority to " @@ -8142,7 +8275,7 @@ msgstr "" "Paketversionen eine hohe Priorität zu, die lokal liegen." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, no-wrap msgid "" "Package: *\n" @@ -8154,7 +8287,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -8168,7 +8301,7 @@ msgstr "" "de.debian.org« identifiziert wird." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, no-wrap msgid "" "Package: *\n" @@ -8180,7 +8313,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " "distribution as specified in a <filename>Release</filename> file. What " @@ -8195,7 +8328,7 @@ msgstr "" "oder »Ximian«." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 msgid "" "The following record assigns a low priority to all package versions " "belonging to any distribution whose Archive name is \"<literal>unstable</" @@ -8206,7 +8339,7 @@ msgstr "" "Priorität zu." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, no-wrap msgid "" "Package: *\n" @@ -8218,7 +8351,7 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 msgid "" "The following record assigns a high priority to all package versions " "belonging to any distribution whose Codename is \"<literal>&testing-codename;" @@ -8229,7 +8362,7 @@ msgstr "" "hohe Priorität zu." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, no-wrap msgid "" "Package: *\n" @@ -8241,7 +8374,7 @@ msgstr "" "Pin-Priority: 900\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 msgid "" "The following record assigns a high priority to all package versions " "belonging to any release whose Archive name is \"<literal>stable</literal>\" " @@ -8252,7 +8385,7 @@ msgstr "" "Nummer »<literal>3.0</literal>« ist, eine hohe Priorität zu." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, no-wrap msgid "" "Package: *\n" @@ -8264,17 +8397,84 @@ msgstr "" "Pin-Priority: 500\n" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a glob" +"()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +#, fuzzy +#| msgid "Packages" +msgid "Package" +msgstr "Packages" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:306 msgid "How APT Interprets Priorities" msgstr "Wie APT Prioritäten interpretiert" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 msgid "P > 1000" msgstr "P > 1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 msgid "" "causes a version to be installed even if this constitutes a downgrade of the " "package" @@ -8283,12 +8483,12 @@ msgstr "" "des Pakets durchführt" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 msgid "990 < P <=1000" msgstr "990 < P <=1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 msgid "" "causes a version to be installed even if it does not come from the target " "release, unless the installed version is more recent" @@ -8297,12 +8497,12 @@ msgstr "" "Ziel-Release kommt, außer wenn die installierte Version aktueller ist" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 msgid "500 < P <=990" msgstr "500 < P <=990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 msgid "" "causes a version to be installed unless there is a version available " "belonging to the target release or the installed version is more recent" @@ -8312,12 +8512,12 @@ msgstr "" "neuer ist" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 msgid "100 < P <=500" msgstr "100 < P <=500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 msgid "" "causes a version to be installed unless there is a version available " "belonging to some other distribution or the installed version is more recent" @@ -8327,12 +8527,12 @@ msgstr "" "installierte Version neuer ist" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 msgid "0 < P <=100" msgstr "0 < P <=100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 msgid "" "causes a version to be installed only if there is no installed version of " "the package" @@ -8341,17 +8541,17 @@ msgstr "" "installierte Version des Pakets gibt" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 msgid "P < 0" msgstr "P < 0" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 msgid "prevents the version from being installed" msgstr "verhindert das Installieren der Version" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " "negative integers. They are interpreted as follows (roughly speaking): " @@ -8362,7 +8562,7 @@ msgstr "" "(grob gesagt): <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 msgid "" "If any specific-form records match an available package version then the " "first such record determines the priority of the package version. Failing " @@ -8376,7 +8576,7 @@ msgstr "" "erste dieser Datensätze die Priorität der Paketversion fest." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 msgid "" "For example, suppose the APT preferences file contains the three records " "presented earlier:" @@ -8385,7 +8585,7 @@ msgstr "" "bereits gezeigten Datensätze:" #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, no-wrap msgid "" "Package: perl\n" @@ -8413,12 +8613,12 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "Dann:" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 msgid "" "The most recent available version of the <literal>perl</literal> package " "will be installed, so long as that version's version number begins with " @@ -8433,7 +8633,7 @@ msgstr "" "dann wird von <literal>perl</literal> ein Downgrade durchgeführt." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 msgid "" "A version of any package other than <literal>perl</literal> that is " "available from the local system has priority over other versions, even " @@ -8444,7 +8644,7 @@ msgstr "" "sogar wenn diese Versionen zum Ziel-Release gehören." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 msgid "" "A version of a package whose origin is not the local system but some other " "site listed in &sources-list; and which belongs to an <literal>unstable</" @@ -8458,12 +8658,12 @@ msgstr "" "Pakets installiert ist." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 msgid "Determination of Package Version and Distribution Properties" msgstr "Festlegung von Paketversion und Distributions-Eigenschaften" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 msgid "" "The locations listed in the &sources-list; file should provide " "<filename>Packages</filename> and <filename>Release</filename> files to " @@ -8474,27 +8674,27 @@ msgstr "" "bereitstellen, um die an diesem Ort verfügbaren Pakete zu beschreiben." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 msgid "the <literal>Package:</literal> line" msgstr "die <literal>Package:</literal>-Zeile" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 msgid "gives the package name" msgstr "gibt den Paketnamen an" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 msgid "the <literal>Version:</literal> line" msgstr "die <literal>Version:</literal>-Zeile" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 msgid "gives the version number for the named package" msgstr "gibt die Versionsnummer für das genannte Paket an" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 msgid "" "The <filename>Packages</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable>/" @@ -8515,12 +8715,12 @@ msgstr "" "Prioritäten relevant: <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "die <literal>Archive:</literal>- oder <literal>Suite:</literal>-Zeile" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 msgid "" "names the archive to which all the packages in the directory tree belong. " "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies " @@ -8537,18 +8737,18 @@ msgstr "" "die folgende Zeile benötigen:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, no-wrap msgid "Pin: release a=stable\n" msgstr "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 msgid "the <literal>Codename:</literal> line" msgstr "die <literal>Codename:</literal>-Zeile" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 msgid "" "names the codename to which all the packages in the directory tree belong. " "For example, the line \"Codename: &testing-codename;\" specifies that all of " @@ -8565,13 +8765,13 @@ msgstr "" "anzugeben würde die folgende Zeile benötigen:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, no-wrap msgid "Pin: release n=&testing-codename;\n" msgstr "Pin: release n=&testing-codename;\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 msgid "" "names the release version. For example, the packages in the tree might " "belong to Debian GNU/Linux release version 3.0. Note that there is normally " @@ -8587,7 +8787,7 @@ msgstr "" "eine der folgenden Zeilen benötigen:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, no-wrap msgid "" "Pin: release v=3.0\n" @@ -8599,12 +8799,12 @@ msgstr "" "Pin: release 3.0\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 msgid "the <literal>Component:</literal> line" msgstr "die <literal>Component:</literal>-Zeile" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 msgid "" "names the licensing component associated with the packages in the directory " "tree of the <filename>Release</filename> file. For example, the line " @@ -8622,18 +8822,18 @@ msgstr "" "Zeilen benötigen:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, no-wrap msgid "Pin: release c=main\n" msgstr "Pin: release c=main\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 msgid "the <literal>Origin:</literal> line" msgstr "die <literal>Origin:</literal>-Zeile" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 msgid "" "names the originator of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8645,18 +8845,18 @@ msgstr "" "in der APT-Einstellungsdatei anzugeben würde die folgende Zeile benötigen:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, no-wrap msgid "Pin: release o=Debian\n" msgstr "Pin: release o=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 msgid "the <literal>Label:</literal> line" msgstr "die <literal>Label:</literal>-Zeile" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 msgid "" "names the label of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8669,13 +8869,13 @@ msgstr "" "die folgende Zeile benötigen:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, no-wrap msgid "Pin: release l=Debian\n" msgstr "Pin: release l=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 msgid "" "The <filename>Release</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for " @@ -8698,7 +8898,7 @@ msgstr "" "APT-Prioritäten relevant: <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " "files retrieved from locations listed in the &sources-list; file are stored " @@ -8724,12 +8924,12 @@ msgstr "" "Distribution heruntergeladen wurde." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 msgid "Optional Lines in an APT Preferences Record" msgstr "Optionale Zeilen in einem APT-Einstellungsdatensatz" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 msgid "" "Each record in the APT preferences file can optionally begin with one or " "more lines beginning with the word <literal>Explanation:</literal>. This " @@ -8740,12 +8940,12 @@ msgstr "" "anfangen. Dieses stellt einen Platz für Kommentare bereit." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 msgid "Tracking Stable" msgstr "Stable verfolgen" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -8769,7 +8969,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8784,8 +8984,8 @@ msgstr "" "Distributionen gehören. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 -#: apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 +#: apt_preferences.5.xml:675 #, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -8797,7 +8997,7 @@ msgstr "" "apt-get dist-upgrade\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8810,13 +9010,13 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "apt-get install <replaceable>Paket</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>testing</literal> distribution; the package " @@ -8830,12 +9030,12 @@ msgstr "" "\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 msgid "Tracking Testing or Unstable" msgstr "Testing oder Unstable verfolgen" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, no-wrap msgid "" "Package: *\n" @@ -8863,7 +9063,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 msgid "" "The following APT preferences file will cause APT to assign a high priority " "to package versions from the <literal>testing</literal> distribution, a " @@ -8880,7 +9080,7 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8893,13 +9093,13 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "apt-get install <replaceable>Paket</replaceable>/unstable\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>unstable</literal> distribution. " @@ -8919,12 +9119,12 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "Die Entwicklung eines Codename-Releases verfolgen" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package versions\n" @@ -8959,7 +9159,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8985,7 +9185,7 @@ msgstr "" "benutzen. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest version(s) in " @@ -8998,13 +9198,13 @@ msgstr "" "literal> durchzuführen. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "apt-get install <replaceable>Paket</replaceable>/sid\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>sid</literal> distribution. Thereafter, " @@ -9024,12 +9224,12 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 msgid "&file-preferences;" msgstr "&file-preferences;" #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -11097,6 +11297,43 @@ msgstr " # apt-get -o dir::cache::archives=\"/Platte/\" dist-upgrade" msgid "Which will use the already fetched archives on the disc." msgstr "Es wird die bereits auf die Platte heruntergeladenen Archive benutzen." +#~ msgid "<option>--md5</option>" +#~ msgstr "<option>--md5</option>" + +#~ msgid "" +#~ "Generate MD5 sums. This defaults to on, when turned off the generated " +#~ "index files will not have MD5Sum fields where possible. Configuration " +#~ "Item: <literal>APT::FTPArchive::MD5</literal>" +#~ msgstr "" +#~ "Generiert MD5-Summen. Dies ist standardmäßig an, wenn es ausgeschaltet " +#~ "ist, haben die generierten Indexdateien keine MD5Sum-Felder, sofern dies " +#~ "möglich ist. Konfigurationselement: <literal>APT::FTPArchive::MD5</" +#~ "literal>" + +#~ msgid "unmarkauto" +#~ msgstr "unmarkauto" + +#~ msgid "<option>-h</option>" +#~ msgstr "<option>-h</option>" + +#~ msgid "<option>--help</option>" +#~ msgstr "<option>--help</option>" + +#~ msgid "Show a short usage summary." +#~ msgstr "Eine kurze Zusammenfassung anzeigen." + +#~ msgid "<option>-v</option>" +#~ msgstr "<option>-v</option>" + +#~ msgid "<option>--version</option>" +#~ msgstr "<option>--version</option>" + +#~ msgid "Show the program version." +#~ msgstr "Die Programmversion anzeigen." + +#~ msgid "to the version that is already installed (if any)." +#~ msgstr "zu der Version, die bereits installiert ist (wenn vorhanden)." + #~ msgid "APT package handling utility -- cache manipulator" #~ msgstr "" #~ "APT-Werkzeug zur Handhabung von Paketen -- Zwischenspeichermanipulierer" @@ -11157,8 +11394,12 @@ msgstr "Es wird die bereits auf die Platte heruntergeladenen Archive benutzen." #~ "Benutzt HTTP, um auf das Archiv auf nonus.debian.org unter dem debian-non-" #~ "US-Verzeichnis zuzugreifen." -#~ msgid "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" -#~ msgstr "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" +#~ msgid "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" +#~ msgstr "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" #~ msgid "OPTIONS" #~ msgstr "OPTIONEN" diff --git a/doc/po/es.po b/doc/po/es.po index 63e0e8a6e..635133ed3 100644 --- a/doc/po/es.po +++ b/doc/po/es.po @@ -36,7 +36,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.25\n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-08-25 03:25+0200\n" "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n" "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n" @@ -810,7 +810,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 #: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 -#: apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 +#: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 msgid "Description" @@ -1327,7 +1327,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 #: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "Opciones" @@ -1354,7 +1354,7 @@ msgstr "" "configuración: <literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1380,12 +1380,12 @@ msgstr "" "Opción de configuración: <literal>Dir::Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1500,7 +1500,7 @@ msgstr "" "Opción de configuración: <literal>APT::Cache::ShowFull</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1617,14 +1617,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 -#: apt-sortpkgs.1.xml:67 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 +#: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 -#: apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Ficheros" @@ -1635,9 +1635,9 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 -#: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 #: sources.list.5.xml:234 msgid "See Also" msgstr "Véase también" @@ -1649,8 +1649,8 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 -#: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 +#: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnósticos" @@ -1779,12 +1779,12 @@ msgstr "" "option>. <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Opciones" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -2041,7 +2041,7 @@ msgid "Just show the contents of the configuration space." msgstr "Sólo muestra el contenido del espacio de configuración." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -3192,28 +3192,49 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" -msgstr "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 -msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." +msgid "" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" -"Genera una suma de control MD5. Está activado de forma predeterminada, " -"cuando se desactiva los ficheros de índices generados no tendrán los campos " -"MD5Sum cuando sea posible. Opción de configuración: <literal>APT::" -"FTPArchive::MD5</literal>" +"Los valores para los campos de metadatos adicionales en el fichero «Release» " +"se toman de las variables correspondientes en <literal>APT::FTPArchive::" +"Release</literal>, por ejemplo <literal>APT::FTPArchive::Release::Origin</" +"literal>. Los campos permitidos son: <literal>Origin</literal>, " +"<literal>Label</literal>, <literal>Suite</literal>, <literal>Version</" +"literal>, <literal>Codename</literal>, <literal>Date</literal>, " +"<literal>Valid-Until</literal>, <literal>Architectures</literal>, " +"<literal>Components</literal> y <literal>Description</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3222,7 +3243,7 @@ msgstr "" "«generate». Opción de configuración: <literal>APT::FTPArchive::DB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3236,12 +3257,12 @@ msgstr "" "configuración. Opción de configuración: <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3254,12 +3275,12 @@ msgstr "" "Opción de configuración: <literal>APT::FTPArchive::DeLinkAct</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3276,12 +3297,12 @@ msgstr "" "Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3292,12 +3313,12 @@ msgstr "" "FTPArchive::SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3306,12 +3327,12 @@ msgstr "" "Opción de configuración: <literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3325,12 +3346,12 @@ msgstr "" "FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3354,12 +3375,12 @@ msgstr "" "comprobaciones adicionales son innecesarias." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3375,19 +3396,19 @@ msgstr "" "con la orden «generate»." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 #: sources.list.5.xml:198 msgid "Examples" msgstr "Ejemplos" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> packages <replaceable>directorio</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3396,7 +3417,7 @@ msgstr "" "paquetes binarios («.deb»): <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -4750,8 +4771,24 @@ msgstr "" "Actualiza el registro de claves local con el registro de claves del archivo " "Debian, y elimina del registro las claves del archivo que ya no son válidas." +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +#, fuzzy +#| msgid "update" +msgid "net-update" +msgstr "update" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch from. " +"APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4760,12 +4797,12 @@ msgstr "" "descritas en el sección anterior." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>nombre-de-fichero</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -4782,53 +4819,57 @@ msgstr "" "esto es, por ejemplo, que las claves nuevas se añaden a este fichero." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Base de datos local de las claves de confianza de archivos Debian" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Registro de las claves de confianza del archivo de Debian." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "Registro de las claves de confianza eliminadas del archivo de Debian." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" #. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 +#, fuzzy +#| msgid "" +#| "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " +#| "August 2009</date>" msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 de " "Agosto de 2009</date>" @@ -4845,13 +4886,22 @@ msgstr "Marca o desmarca un paquete como instalado automáticamente" #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #: apt-mark.8.xml:39 +#, fuzzy +#| msgid "" +#| " <command>apt-mark</command> <arg><option>-hv</option></arg> " +#| "<arg><option>-f=<replaceable>FILENAME</replaceable></option></arg> <group " +#| "choice=\"plain\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg " +#| "choice=\"plain\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </" +#| "group> <arg choice=\"plain\" rep=\"repeat\"><replaceable>package</" +#| "replaceable></arg> </arg> <arg choice=\"plain\">showauto</arg> </group>" msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" "\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain" -"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg " +"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain" +"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg " "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" -"arg> <arg choice=\"plain\">showauto</arg> </group>" +"arg> </group>" msgstr "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>nombre-de-fichero</replaceable></option></arg> <group choice=" @@ -4861,7 +4911,7 @@ msgstr "" "arg> <arg choice=\"plain\">showauto</arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." @@ -4870,7 +4920,7 @@ msgstr "" "o no." #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -4886,14 +4936,21 @@ msgstr "" "eliminará." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +#, fuzzy +#| msgid "markauto" +msgid "auto" msgstr "markauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 +#, fuzzy +#| msgid "" +#| "<literal>markauto</literal> is used to mark a package as being " +#| "automatically installed, which will cause the package to be removed when " +#| "no more manually installed packages depend on this package." msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" @@ -4902,14 +4959,19 @@ msgstr "" "paquete instalado manualmente dependa de este paquete." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" -msgstr "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 +#, fuzzy +#| msgid "" +#| "<literal>unmarkauto</literal> is used to mark a package as being manually " +#| "installed, which will prevent the package from being automatically " +#| "removed if no other packages depend on it." msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" @@ -4918,21 +4980,95 @@ msgstr "" "ningún otro depende de él." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 +#: apt-mark.8.xml:85 +msgid "hold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:86 +msgid "" +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg --set-" +"selections</command> and the state is therefore maintained by &dpkg; and not " +"effected by the <option>--filename</option> option." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:96 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." +msgstr "" +"<literal>showauto</literal> se usa para mostrar una lista de paquetes " +"instalados automáticamente, un paquete por línea." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:101 msgid "showauto" msgstr "showauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:102 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." msgid "" "<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" "<literal>showauto</literal> se usa para mostrar una lista de paquetes " "instalados automáticamente, un paquete por línea." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:96 +#: apt-mark.8.xml:109 +#, fuzzy +#| msgid "showauto" +msgid "showmanual" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:116 +#, fuzzy +#| msgid "showauto" +msgid "showhold" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:117 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." +msgstr "" +"<literal>showauto</literal> se usa para mostrar una lista de paquetes " +"instalados automáticamente, un paquete por línea." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:130 msgid "" "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" @@ -4940,7 +5076,7 @@ msgstr "" "filename></option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 +#: apt-mark.8.xml:131 msgid "" "<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" "option>" @@ -4949,7 +5085,7 @@ msgstr "" "filename></option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:134 msgid "" "Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" "filename> instead of the default location, which is " @@ -4962,48 +5098,18 @@ msgstr "" "en el directorio definido en la opción de configuración: <literal>Dir::" "State</literal>." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" -msgstr "<option>-h</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" -msgstr "<option>--help</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." -msgstr "Muestra un breve resumen de uso." - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" -msgstr "<option>-v</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" -msgstr "<option>--version</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." -msgstr "Muestra la versión del programa." - #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr " &file-extended_states;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "&apt-get;,&aptitude;,&apt-conf;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -7892,32 +7998,50 @@ msgstr "priority 1" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #: apt_preferences.5.xml:107 +#, fuzzy +#| msgid "" +#| "to the versions coming from archives which in their <filename>Release</" +#| "filename> files are marked as \"NotAutomatic: yes\" like the debian " +#| "experimental archive." msgid "" "to the versions coming from archives which in their <filename>Release</" -"filename> files are marked as \"NotAutomatic: yes\" like the debian " -"experimental archive." +"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" +"emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" "para las versiones procedentes de archivos que en sus ficheros " "<filename>Release</filename> están marcados como «NotAutomatic:yes», como en " "el archivo «experimental» de Debian." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 msgid "priority 100" msgstr "prioridad 100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -msgid "to the version that is already installed (if any)." -msgstr "a la versión instalada (de existir)." +#: apt_preferences.5.xml:114 +#, fuzzy +#| msgid "" +#| "to the versions coming from archives which in their <filename>Release</" +#| "filename> files are marked as \"NotAutomatic: yes\" like the debian " +#| "experimental archive." +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." +msgstr "" +"para las versiones procedentes de archivos que en sus ficheros " +"<filename>Release</filename> están marcados como «NotAutomatic:yes», como en " +"el archivo «experimental» de Debian." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 msgid "priority 500" msgstr "prioridad 500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 msgid "" "to the versions that are not installed and do not belong to the target " "release." @@ -7926,12 +8050,12 @@ msgstr "" "objetivo." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 msgid "priority 990" msgstr "prioridad 990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 msgid "" "to the versions that are not installed and belong to the target release." msgstr "" @@ -7950,13 +8074,21 @@ msgstr "" "Asignar: <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 +#, fuzzy +#| msgid "" +#| "If the target release has not been specified then APT simply assigns " +#| "priority 100 to all installed package versions and priority 500 to all " +#| "uninstalled package versions, expect versions coming from archives which " +#| "in their <filename>Release</filename> files are marked as \"NotAutomatic: " +#| "yes\" - these versions get the priority 1." msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" "Si no se especifica ninguna distribución objetivo APT asigna prioridad 100 a " "todas las versiones de los paquetes instalados y 500 a las versiones no " @@ -7965,7 +8097,7 @@ msgstr "" "- estas versiones reciben la prioridad 1." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 msgid "" "APT then applies the following rules, listed in order of precedence, to " "determine which version of a package to install." @@ -7974,7 +8106,7 @@ msgstr "" "determinar qué versión del paquete debe instalar." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " "(\"Downgrading\" is installing a less recent version of a package in place " @@ -7991,12 +8123,12 @@ msgstr "" "ser peligroso)." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 msgid "Install the highest priority version." msgstr "Instala la versión de mayor prioridad." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 msgid "" "If two or more versions have the same priority, install the most recent one " "(that is, the one with the higher version number)." @@ -8005,7 +8137,7 @@ msgstr "" "(esto es, la que tiene un número de versión mayor)." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 msgid "" "If two or more versions have the same priority and version number but either " "the packages differ in some of their metadata or the <literal>--reinstall</" @@ -8016,7 +8148,7 @@ msgstr "" "<literal>--reinstall</literal>, se instalará la que no está instalada." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 msgid "" "In a typical situation, the installed version of a package (priority 100) " "is not as recent as one of the versions available from the sources listed in " @@ -8031,7 +8163,7 @@ msgstr "" "command> o <command>apt-get upgrade</command>." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " "recent than any of the other available versions. The package will not be " @@ -8045,7 +8177,7 @@ msgstr "" "upgrade</command>." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 msgid "" "Sometimes the installed version of a package is more recent than the version " "belonging to the target release, but not as recent as a version belonging to " @@ -8064,12 +8196,12 @@ msgstr "" "versión instalada." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 msgid "The Effect of APT Preferences" msgstr "El efecto de las preferencias sobre APT" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 msgid "" "The APT preferences file allows the system administrator to control the " "assignment of priorities. The file consists of one or more multi-line " @@ -8082,7 +8214,7 @@ msgstr "" "registros pueden tener una de estos dos formatos: el específico o el general." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " "specified packages and specified version or version range. For example, the " @@ -8098,7 +8230,7 @@ msgstr "" "separados por espacios." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, no-wrap msgid "" "Package: perl\n" @@ -8110,7 +8242,7 @@ msgstr "" "Pin-Priority: 1001\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 msgid "" "The general form assigns a priority to all of the package versions in a " "given distribution (that is, to all the versions of packages that are listed " @@ -8125,7 +8257,7 @@ msgstr "" "identificado por su nombre de dominio." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 msgid "" "This general-form entry in the APT preferences file applies only to groups " "of packages. For example, the following record assigns a high priority to " @@ -8136,7 +8268,7 @@ msgstr "" "prioridad alta a todas las versiones disponibles desde un sitio local." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, no-wrap msgid "" "Package: *\n" @@ -8148,7 +8280,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -8162,7 +8294,7 @@ msgstr "" "debian.org»." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, no-wrap msgid "" "Package: *\n" @@ -8174,7 +8306,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " "distribution as specified in a <filename>Release</filename> file. What " @@ -8189,7 +8321,7 @@ msgstr "" "sino el autor o el nombre del proveedor, tales como «Debian» o «Ximian»." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 msgid "" "The following record assigns a low priority to all package versions " "belonging to any distribution whose Archive name is \"<literal>unstable</" @@ -8200,7 +8332,7 @@ msgstr "" "archivo de paquetes «<literal>unstable</literal>» (inestable)." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, no-wrap msgid "" "Package: *\n" @@ -8212,7 +8344,7 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 msgid "" "The following record assigns a high priority to all package versions " "belonging to any distribution whose Codename is \"<literal>&testing-codename;" @@ -8223,7 +8355,7 @@ msgstr "" "«<literal>&testing-codename;</literal>»." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, no-wrap msgid "" "Package: *\n" @@ -8235,7 +8367,7 @@ msgstr "" "Pin-Priority: 900\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 msgid "" "The following record assigns a high priority to all package versions " "belonging to any release whose Archive name is \"<literal>stable</literal>\" " @@ -8247,7 +8379,7 @@ msgstr "" "«<literal>3.0</literal>»." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, no-wrap msgid "" "Package: *\n" @@ -8259,17 +8391,84 @@ msgstr "" "Pin-Priority: 500\n" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a glob" +"()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +#, fuzzy +#| msgid "Packages" +msgid "Package" +msgstr "Packages" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:306 msgid "How APT Interprets Priorities" msgstr "¿Cómo interpreta APT las prioridades?" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 msgid "P > 1000" msgstr "P > 1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 msgid "" "causes a version to be installed even if this constitutes a downgrade of the " "package" @@ -8278,12 +8477,12 @@ msgstr "" "el sistema." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 msgid "990 < P <=1000" msgstr "990 < P <=1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 msgid "" "causes a version to be installed even if it does not come from the target " "release, unless the installed version is more recent" @@ -8292,12 +8491,12 @@ msgstr "" "que la versión instalada sea más reciente." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 msgid "500 < P <=990" msgstr "500 < P <=990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 msgid "" "causes a version to be installed unless there is a version available " "belonging to the target release or the installed version is more recent" @@ -8307,12 +8506,12 @@ msgstr "" "más reciente." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 msgid "100 < P <=500" msgstr "100 < P <=500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 msgid "" "causes a version to be installed unless there is a version available " "belonging to some other distribution or the installed version is more recent" @@ -8321,12 +8520,12 @@ msgstr "" "perteneciente a otra distribución, o si la versión instalada es más reciente." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 msgid "0 < P <=100" msgstr "0 < P <=100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 msgid "" "causes a version to be installed only if there is no installed version of " "the package" @@ -8334,17 +8533,17 @@ msgstr "" "La versión sólo se instala si no hay ninguna versión del paquete instalada." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 msgid "P < 0" msgstr "P < 0" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 msgid "prevents the version from being installed" msgstr "Evita la instalación de la versión." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " "negative integers. They are interpreted as follows (roughly speaking): " @@ -8355,7 +8554,7 @@ msgstr "" "siguiente modo: <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 msgid "" "If any specific-form records match an available package version then the " "first such record determines the priority of the package version. Failing " @@ -8369,7 +8568,7 @@ msgstr "" "versión del paquete." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 msgid "" "For example, suppose the APT preferences file contains the three records " "presented earlier:" @@ -8378,7 +8577,7 @@ msgstr "" "registros antes mencionados:" #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, no-wrap msgid "" "Package: perl\n" @@ -8406,12 +8605,12 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "Por ello:" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 msgid "" "The most recent available version of the <literal>perl</literal> package " "will be installed, so long as that version's version number begins with " @@ -8426,7 +8625,7 @@ msgstr "" "la versión 5.8*, desactualizando el paquete." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 msgid "" "A version of any package other than <literal>perl</literal> that is " "available from the local system has priority over other versions, even " @@ -8437,7 +8636,7 @@ msgstr "" "versiones, incluso sobre los pertenecientes a la distribución objetivo." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 msgid "" "A version of a package whose origin is not the local system but some other " "site listed in &sources-list; and which belongs to an <literal>unstable</" @@ -8450,12 +8649,12 @@ msgstr "" "hay ninguna versión del paquete ya instalado." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 msgid "Determination of Package Version and Distribution Properties" msgstr "Determinar la versión del paquete y las propiedades de la distribución" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 msgid "" "The locations listed in the &sources-list; file should provide " "<filename>Packages</filename> and <filename>Release</filename> files to " @@ -8466,27 +8665,27 @@ msgstr "" "describen los paquetes disponibles en cada uno de los sitios." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 msgid "the <literal>Package:</literal> line" msgstr "La línea <literal>Package:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 msgid "gives the package name" msgstr "indica el nombre del paquete." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 msgid "the <literal>Version:</literal> line" msgstr "La línea <literal>Version:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 msgid "gives the version number for the named package" msgstr "indica el número de versión del paquete." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 msgid "" "The <filename>Packages</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable>/" @@ -8507,12 +8706,12 @@ msgstr "" "de APT: <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "Las líneas <literal>Archive:</literal> o <literal>Suite:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 msgid "" "names the archive to which all the packages in the directory tree belong. " "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies " @@ -8530,18 +8729,18 @@ msgstr "" "línea en el fichero de preferencias de APT:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, no-wrap msgid "Pin: release a=stable\n" msgstr "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 msgid "the <literal>Codename:</literal> line" msgstr "La línea <literal>Codename:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 msgid "" "names the codename to which all the packages in the directory tree belong. " "For example, the line \"Codename: &testing-codename;\" specifies that all of " @@ -8560,13 +8759,13 @@ msgstr "" "de APT:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, no-wrap msgid "Pin: release n=&testing-codename;\n" msgstr "Pin: release n=&testing-codename;\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 msgid "" "names the release version. For example, the packages in the tree might " "belong to Debian GNU/Linux release version 3.0. Note that there is normally " @@ -8582,7 +8781,7 @@ msgstr "" "siguientes línea en el fichero de preferencias de APT:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, no-wrap msgid "" "Pin: release v=3.0\n" @@ -8594,12 +8793,12 @@ msgstr "" "Pin: release 3.0\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 msgid "the <literal>Component:</literal> line" msgstr "La línea <literal>Component:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 msgid "" "names the licensing component associated with the packages in the directory " "tree of the <filename>Release</filename> file. For example, the line " @@ -8618,18 +8817,18 @@ msgstr "" "de APT:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, no-wrap msgid "Pin: release c=main\n" msgstr "Pin: release c=main\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 msgid "the <literal>Origin:</literal> line" msgstr "La línea <literal>Origin:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 msgid "" "names the originator of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8642,18 +8841,18 @@ msgstr "" "mediante la siguiente línea:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, no-wrap msgid "Pin: release o=Debian\n" msgstr "Pin: release o=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 msgid "the <literal>Label:</literal> line" msgstr "La línea <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 msgid "" "names the label of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8666,13 +8865,13 @@ msgstr "" "siguiente línea:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, no-wrap msgid "Pin: release l=Debian\n" msgstr "Pin: release l=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 msgid "" "The <filename>Release</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for " @@ -8695,7 +8894,7 @@ msgstr "" "\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " "files retrieved from locations listed in the &sources-list; file are stored " @@ -8720,12 +8919,12 @@ msgstr "" "la distribución «<literal>unstable</literal>» (inestable)." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 msgid "Optional Lines in an APT Preferences Record" msgstr "Líneas opcionales en el registro de preferencias de APT" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 msgid "" "Each record in the APT preferences file can optionally begin with one or " "more lines beginning with the word <literal>Explanation:</literal>. This " @@ -8736,12 +8935,12 @@ msgstr "" "Útil para comentarios." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 msgid "Tracking Stable" msgstr "Seguir la distribución «stable» (estable)" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -8765,7 +8964,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8780,8 +8979,8 @@ msgstr "" "<literal>Debian</literal>. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 -#: apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 +#: apt_preferences.5.xml:675 #, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -8793,7 +8992,7 @@ msgstr "" "apt-get dist-upgrade\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8807,13 +9006,13 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "apt-get install <replaceable>paquete</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>testing</literal> distribution; the package " @@ -8826,12 +9025,12 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 msgid "Tracking Testing or Unstable" msgstr "Seguir la distribución «testing» (en pruebas) o «unstable» (inestable)" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, no-wrap msgid "" "Package: *\n" @@ -8859,7 +9058,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 msgid "" "The following APT preferences file will cause APT to assign a high priority " "to package versions from the <literal>testing</literal> distribution, a " @@ -8876,7 +9075,7 @@ msgstr "" ">" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8889,13 +9088,13 @@ msgstr "" "<placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "apt-get install <replaceable>paquete</replaceable>/unstable\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>unstable</literal> distribution. " @@ -8914,12 +9113,12 @@ msgstr "" "instalada. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "Seguir la evolución de una publicación por el nombre" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package versions\n" @@ -8953,7 +9152,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8980,7 +9179,7 @@ msgstr "" "\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest version(s) in " @@ -8994,13 +9193,13 @@ msgstr "" "id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "apt-get install <replaceable>paquete</replaceable>/sid\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>sid</literal> distribution. Thereafter, " @@ -9019,12 +9218,12 @@ msgstr "" "instalada. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 msgid "&file-preferences;" msgstr "&file-preferences;" #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -11048,6 +11247,43 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" msgid "Which will use the already fetched archives on the disc." msgstr "Ésto usará los archivos del disco previamente obtenidos." +#~ msgid "<option>--md5</option>" +#~ msgstr "<option>--md5</option>" + +#~ msgid "" +#~ "Generate MD5 sums. This defaults to on, when turned off the generated " +#~ "index files will not have MD5Sum fields where possible. Configuration " +#~ "Item: <literal>APT::FTPArchive::MD5</literal>" +#~ msgstr "" +#~ "Genera una suma de control MD5. Está activado de forma predeterminada, " +#~ "cuando se desactiva los ficheros de índices generados no tendrán los " +#~ "campos MD5Sum cuando sea posible. Opción de configuración: <literal>APT::" +#~ "FTPArchive::MD5</literal>" + +#~ msgid "unmarkauto" +#~ msgstr "unmarkauto" + +#~ msgid "<option>-h</option>" +#~ msgstr "<option>-h</option>" + +#~ msgid "<option>--help</option>" +#~ msgstr "<option>--help</option>" + +#~ msgid "Show a short usage summary." +#~ msgstr "Muestra un breve resumen de uso." + +#~ msgid "<option>-v</option>" +#~ msgstr "<option>-v</option>" + +#~ msgid "<option>--version</option>" +#~ msgstr "<option>--version</option>" + +#~ msgid "Show the program version." +#~ msgstr "Muestra la versión del programa." + +#~ msgid "to the version that is already installed (if any)." +#~ msgstr "a la versión instalada (de existir)." + #~ msgid "APT package handling utility -- cache manipulator" #~ msgstr "" #~ "Herramienta para la gestión de paquetes APT -- manipulador de la caché" @@ -11107,8 +11343,12 @@ msgstr "Ésto usará los archivos del disco previamente obtenidos." #~ "Usa HTTP para acceder al archivo de Debian en «nonus.debian.org», bajo el " #~ "directorio debian-non-US." -#~ msgid "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" -#~ msgstr "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" +#~ msgid "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" +#~ msgstr "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" #~ msgid "OPTIONS" #~ msgstr "OPCIONES" diff --git a/doc/po/fr.po b/doc/po/fr.po index 33a118036..71cc73b45 100644 --- a/doc/po/fr.po +++ b/doc/po/fr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2011-02-17 07:50+0100\n" "Last-Translator: Christian Perrier <bubulle@debian.org>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n" @@ -731,7 +731,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 #: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 -#: apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 +#: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 msgid "Description" @@ -1250,7 +1250,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 #: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "options" @@ -1277,7 +1277,7 @@ msgstr "" "<literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1304,12 +1304,12 @@ msgstr "" "<literal>Dir::Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1425,7 +1425,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1545,14 +1545,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 -#: apt-sortpkgs.1.xml:67 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 +#: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 -#: apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Fichiers" @@ -1563,9 +1563,9 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 -#: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 #: sources.list.5.xml:234 msgid "See Also" msgstr "Voir aussi" @@ -1577,8 +1577,8 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;." #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 -#: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 +#: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnostics" @@ -1707,12 +1707,12 @@ msgstr "" "\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Options" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1969,7 +1969,7 @@ msgid "Just show the contents of the configuration space." msgstr "Affiche seulement le contenu de l'espace de configuration." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -3120,28 +3120,49 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" -msgstr "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 -msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." +msgid "" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" -"Créer la somme de contrôle MD5. Cette option est activée par défaut. Quand " -"elle est désactivée, les fichiers d'index n'ont pas les champs MD5Sum là où " -"c'est possible. Élément de configuration : <literal>APT::FTPArchive::MD5</" -"literal>." +"La valeur des autres champs de métadonnées du fichier Release sont tirées de " +"la valeur correspondante dans <literal>APT::FTPArchive::Release</literal>, " +"p. ex. <literal>APT::FTPArchive::Release::Origin</literal>. Les champs " +"reconnus sont : <literal>Origin</literal>, <literal>Label</literal>, " +"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</" +"literal>, <literal>Date</literal>, <literal>Valid-Until</literal>, " +"<literal>Architectures</literal>, <literal>Components</literal>, " +"<literal>Description</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3151,7 +3172,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3166,12 +3187,12 @@ msgstr "" "configuration : <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3185,12 +3206,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3206,12 +3227,12 @@ msgstr "" "de configuration : <literal>APT::FTPArchive::Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3222,12 +3243,12 @@ msgstr "" "FTPArchive::SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3236,12 +3257,12 @@ msgstr "" "configuration : <literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3255,12 +3276,12 @@ msgstr "" "<literal>APT::FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3283,12 +3304,12 @@ msgstr "" "survenir et l'ensemble de ces contrôles devient inutile." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3304,19 +3325,19 @@ msgstr "" "generate." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 #: sources.list.5.xml:198 msgid "Examples" msgstr "Exemples" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> packages <replaceable>répertoire</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3325,7 +3346,7 @@ msgstr "" "des paquets binaires (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -4688,8 +4709,24 @@ msgstr "" "Mettre à jour le trousseau de clés local avec le trousseau de clés de " "l'archive Debian et supprimer les clés qui y sont périmées." +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +#, fuzzy +#| msgid "update" +msgid "net-update" +msgstr "update" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch from. " +"APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4698,12 +4735,12 @@ msgstr "" "décrites dans la section suivante." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>fichier</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -4720,53 +4757,57 @@ msgstr "" "les nouvelles clés y seront ajoutées." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Base de données locale de fiabilité des clés de l'archive." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Trousseau des clés fiables de l'archive Debian." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "Trousseau des clés fiables supprimées de l'archive Debian." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" #. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 +#, fuzzy +#| msgid "" +#| "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " +#| "August 2009</date>" msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " "août 2009</date>" @@ -4783,13 +4824,22 @@ msgstr "Indiquer si un paquet a été installé automatiquement ou non" #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #: apt-mark.8.xml:39 +#, fuzzy +#| msgid "" +#| " <command>apt-mark</command> <arg><option>-hv</option></arg> " +#| "<arg><option>-f=<replaceable>FILENAME</replaceable></option></arg> <group " +#| "choice=\"plain\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg " +#| "choice=\"plain\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </" +#| "group> <arg choice=\"plain\" rep=\"repeat\"><replaceable>package</" +#| "replaceable></arg> </arg> <arg choice=\"plain\">showauto</arg> </group>" msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" "\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain" -"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg " +"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain" +"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg " "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" -"arg> <arg choice=\"plain\">showauto</arg> </group>" +"arg> </group>" msgstr "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FICHIER</replaceable></option></arg> <group choice=\"plain\"> " @@ -4799,7 +4849,7 @@ msgstr "" "arg> <arg choice=\"plain\">showauto</arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." @@ -4808,7 +4858,7 @@ msgstr "" "a été automatiquement installé ou pas." #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -4824,14 +4874,21 @@ msgstr "" "command>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +#, fuzzy +#| msgid "markauto" +msgid "auto" msgstr "markauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 +#, fuzzy +#| msgid "" +#| "<literal>markauto</literal> is used to mark a package as being " +#| "automatically installed, which will cause the package to be removed when " +#| "no more manually installed packages depend on this package." msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" @@ -4840,14 +4897,19 @@ msgstr "" "que plus aucun paquet installé manuellement ne dépend de lui." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" -msgstr "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 +#, fuzzy +#| msgid "" +#| "<literal>unmarkauto</literal> is used to mark a package as being manually " +#| "installed, which will prevent the package from being automatically " +#| "removed if no other packages depend on it." msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" @@ -4856,28 +4918,102 @@ msgstr "" "aucun autre paquet n'en dépend." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 +#: apt-mark.8.xml:85 +msgid "hold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:86 +msgid "" +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg --set-" +"selections</command> and the state is therefore maintained by &dpkg; and not " +"effected by the <option>--filename</option> option." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:96 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." +msgstr "" +"<literal>showauto</literal>, affiche les paquets installés automatiquement, " +"un paquet par ligne." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:101 msgid "showauto" msgstr "showauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:102 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." msgid "" "<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" "<literal>showauto</literal>, affiche les paquets installés automatiquement, " "un paquet par ligne." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:96 +#: apt-mark.8.xml:109 +#, fuzzy +#| msgid "showauto" +msgid "showmanual" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:116 +#, fuzzy +#| msgid "showauto" +msgid "showhold" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:117 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." +msgstr "" +"<literal>showauto</literal>, affiche les paquets installés automatiquement, " +"un paquet par ligne." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:130 msgid "" "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" "<option>-f=<filename><replaceable>FICHIER</replaceable></filename></option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 +#: apt-mark.8.xml:131 msgid "" "<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" "option>" @@ -4886,7 +5022,7 @@ msgstr "" "option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:134 msgid "" "Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" "filename> instead of the default location, which is " @@ -4898,48 +5034,18 @@ msgstr "" "par défaut (<filename>extended_status</filename> dans le répertoire défini " "par l'élément de configuration <literal>Dir::State</literal>)." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" -msgstr "<option>-h</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" -msgstr "<option>--help</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." -msgstr "Affiche un résumé de l'aide" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" -msgstr "<option>-v</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" -msgstr "<option>--version</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." -msgstr "Affiche la version du programme." - #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr " &file-extended_states;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "&apt-get;,&aptitude;,&apt-conf;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -7818,32 +7924,50 @@ msgstr "priorité 1" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #: apt_preferences.5.xml:107 +#, fuzzy +#| msgid "" +#| "to the versions coming from archives which in their <filename>Release</" +#| "filename> files are marked as \"NotAutomatic: yes\" like the debian " +#| "experimental archive." msgid "" "to the versions coming from archives which in their <filename>Release</" -"filename> files are marked as \"NotAutomatic: yes\" like the debian " -"experimental archive." +"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" +"emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" "pour les versions issues d'archives dont le fichier <filename>Release</" "filename> comporte la mention « NotAutomatic: yes » comme, par exemple, " "l'archive « experimental » de Debian." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 msgid "priority 100" msgstr "une priorité égale à 100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -msgid "to the version that is already installed (if any)." -msgstr "est affectée à la version déjà installée (si elle existe)." +#: apt_preferences.5.xml:114 +#, fuzzy +#| msgid "" +#| "to the versions coming from archives which in their <filename>Release</" +#| "filename> files are marked as \"NotAutomatic: yes\" like the debian " +#| "experimental archive." +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." +msgstr "" +"pour les versions issues d'archives dont le fichier <filename>Release</" +"filename> comporte la mention « NotAutomatic: yes » comme, par exemple, " +"l'archive « experimental » de Debian." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 msgid "priority 500" msgstr "une priorité égale à 500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 msgid "" "to the versions that are not installed and do not belong to the target " "release." @@ -7852,12 +7976,12 @@ msgstr "" "pas à la distribution par défaut." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 msgid "priority 990" msgstr "une priorité égale à 990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 msgid "" "to the versions that are not installed and belong to the target release." msgstr "" @@ -7876,13 +8000,21 @@ msgstr "" "type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 +#, fuzzy +#| msgid "" +#| "If the target release has not been specified then APT simply assigns " +#| "priority 100 to all installed package versions and priority 500 to all " +#| "uninstalled package versions, expect versions coming from archives which " +#| "in their <filename>Release</filename> files are marked as \"NotAutomatic: " +#| "yes\" - these versions get the priority 1." msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" "Quand aucune distribution par défaut n'a été indiquée, APT affecte " "simplement une priorité égale à 100 à toute version installée d'un paquet et " @@ -7892,7 +8024,7 @@ msgstr "" "priorité égale à 1." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 msgid "" "APT then applies the following rules, listed in order of precedence, to " "determine which version of a package to install." @@ -7901,7 +8033,7 @@ msgstr "" "qu'il faut installer (par ordre de priorité) :" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " "(\"Downgrading\" is installing a less recent version of a package in place " @@ -7917,12 +8049,12 @@ msgstr "" "arrière." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 msgid "Install the highest priority version." msgstr "Installer la version qui possède la priorité la plus haute." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 msgid "" "If two or more versions have the same priority, install the most recent one " "(that is, the one with the higher version number)." @@ -7931,7 +8063,7 @@ msgstr "" "plus récente (c.-à-d. celle dont le numéro de version est le plus grand)." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 msgid "" "If two or more versions have the same priority and version number but either " "the packages differ in some of their metadata or the <literal>--reinstall</" @@ -7943,7 +8075,7 @@ msgstr "" "qui n'est pas installée." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 msgid "" "In a typical situation, the installed version of a package (priority 100) " "is not as recent as one of the versions available from the sources listed in " @@ -7958,7 +8090,7 @@ msgstr "" "replaceable></command> ou <command>apt-get dist-upgrade</command>." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " "recent than any of the other available versions. The package will not be " @@ -7971,7 +8103,7 @@ msgstr "" "<command>apt-get upgrade</command> ne provoquent pas de retour en arrière." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 msgid "" "Sometimes the installed version of a package is more recent than the version " "belonging to the target release, but not as recent as a version belonging to " @@ -7990,12 +8122,12 @@ msgstr "" "priorité que celle de la version installée." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 msgid "The Effect of APT Preferences" msgstr "Conséquences des préférences" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 msgid "" "The APT preferences file allows the system administrator to control the " "assignment of priorities. The file consists of one or more multi-line " @@ -8008,7 +8140,7 @@ msgstr "" "formes, une forme particulière et une forme générale." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " "specified packages and specified version or version range. For example, the " @@ -8023,7 +8155,7 @@ msgstr "" "dont le numéro de version commence par <literal>5.8</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, no-wrap msgid "" "Package: perl\n" @@ -8035,7 +8167,7 @@ msgstr "" "Pin-Priority: 1001\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 msgid "" "The general form assigns a priority to all of the package versions in a " "given distribution (that is, to all the versions of packages that are listed " @@ -8050,7 +8182,7 @@ msgstr "" "un nom complètement qualifié." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 msgid "" "This general-form entry in the APT preferences file applies only to groups " "of packages. For example, the following record assigns a high priority to " @@ -8061,7 +8193,7 @@ msgstr "" "priorité haute à toutes les versions disponibles dans le site local." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, no-wrap msgid "" "Package: *\n" @@ -8073,7 +8205,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -8086,7 +8218,7 @@ msgstr "" "serveur identifié par l' nom d'hôte « ftp.de.debian.org »." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, no-wrap msgid "" "Package: *\n" @@ -8098,7 +8230,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " "distribution as specified in a <filename>Release</filename> file. What " @@ -8113,7 +8245,7 @@ msgstr "" "mais le nom d'un auteur ou d'un distributeur, comme « Debian » ou « Ximian »." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 msgid "" "The following record assigns a low priority to all package versions " "belonging to any distribution whose Archive name is \"<literal>unstable</" @@ -8124,7 +8256,7 @@ msgstr "" "<literal>unstable</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, no-wrap msgid "" "Package: *\n" @@ -8136,7 +8268,7 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 msgid "" "The following record assigns a high priority to all package versions " "belonging to any distribution whose Codename is \"<literal>&testing-codename;" @@ -8147,7 +8279,7 @@ msgstr "" "<literal>&testing-codename;</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, no-wrap msgid "" "Package: *\n" @@ -8159,7 +8291,7 @@ msgstr "" "Pin-Priority: 900\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 msgid "" "The following record assigns a high priority to all package versions " "belonging to any release whose Archive name is \"<literal>stable</literal>\" " @@ -8171,7 +8303,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, no-wrap msgid "" "Package: *\n" @@ -8183,17 +8315,84 @@ msgstr "" "Pin-Priority: 500\n" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a glob" +"()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +#, fuzzy +#| msgid "Packages" +msgid "Package" +msgstr "Packages" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:306 msgid "How APT Interprets Priorities" msgstr "Méthode d'interprétation des priorités par APT" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 msgid "P > 1000" msgstr "P > 1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 msgid "" "causes a version to be installed even if this constitutes a downgrade of the " "package" @@ -8202,12 +8401,12 @@ msgstr "" "retour en arrière." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 msgid "990 < P <=1000" msgstr "990 < P <=1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 msgid "" "causes a version to be installed even if it does not come from the target " "release, unless the installed version is more recent" @@ -8217,12 +8416,12 @@ msgstr "" "plus récente." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 msgid "500 < P <=990" msgstr "500 < P <=990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 msgid "" "causes a version to be installed unless there is a version available " "belonging to the target release or the installed version is more recent" @@ -8231,12 +8430,12 @@ msgstr "" "distribution par défaut ou si la version installée est plus récente." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 msgid "100 < P <=500" msgstr "100 < P <=500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 msgid "" "causes a version to be installed unless there is a version available " "belonging to some other distribution or the installed version is more recent" @@ -8245,29 +8444,29 @@ msgstr "" "autre distribution ou si la version installée est plus récente." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 msgid "0 < P <=100" msgstr "0 < P <=100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 msgid "" "causes a version to be installed only if there is no installed version of " "the package" msgstr "la version sera installée si aucune version du paquet n'est installée." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 msgid "P < 0" msgstr "P < 0" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 msgid "prevents the version from being installed" msgstr "cette priorité empêche l'installation de la version." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " "negative integers. They are interpreted as follows (roughly speaking): " @@ -8278,7 +8477,7 @@ msgstr "" "<placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 msgid "" "If any specific-form records match an available package version then the " "first such record determines the priority of the package version. Failing " @@ -8292,7 +8491,7 @@ msgstr "" "trouvée détermine la priorité." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 msgid "" "For example, suppose the APT preferences file contains the three records " "presented earlier:" @@ -8301,7 +8500,7 @@ msgstr "" "entrées décrites ci-dessous :" #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, no-wrap msgid "" "Package: perl\n" @@ -8329,12 +8528,12 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "Alors :" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 msgid "" "The most recent available version of the <literal>perl</literal> package " "will be installed, so long as that version's version number begins with " @@ -8348,7 +8547,7 @@ msgstr "" "installée est une version 5.9*, il y aura un retour en arrière." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 msgid "" "A version of any package other than <literal>perl</literal> that is " "available from the local system has priority over other versions, even " @@ -8359,7 +8558,7 @@ msgstr "" "appartenant à la distribution par défaut." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 msgid "" "A version of a package whose origin is not the local system but some other " "site listed in &sources-list; and which belongs to an <literal>unstable</" @@ -8372,13 +8571,13 @@ msgstr "" "paquet n'est déjà installée." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 msgid "Determination of Package Version and Distribution Properties" msgstr "" "Détermination de la version des paquets et des propriétés des distributions" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 msgid "" "The locations listed in the &sources-list; file should provide " "<filename>Packages</filename> and <filename>Release</filename> files to " @@ -8389,27 +8588,27 @@ msgstr "" "décrivent les paquets disponibles à cet endroit." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 msgid "the <literal>Package:</literal> line" msgstr "la ligne <literal>Package:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 msgid "gives the package name" msgstr "donne le nom du paquet" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 msgid "the <literal>Version:</literal> line" msgstr "la ligne <literal>Version:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 msgid "gives the version number for the named package" msgstr "donne le numéro de version du paquet" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 msgid "" "The <filename>Packages</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable>/" @@ -8430,12 +8629,12 @@ msgstr "" "\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "La ligne <literal>Archive:</literal> ou <literal>Suite:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 msgid "" "names the archive to which all the packages in the directory tree belong. " "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies " @@ -8452,18 +8651,18 @@ msgstr "" "préférences demanderait cette ligne :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, no-wrap msgid "Pin: release a=stable\n" msgstr "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 msgid "the <literal>Codename:</literal> line" msgstr "la ligne <literal>Codename:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 msgid "" "names the codename to which all the packages in the directory tree belong. " "For example, the line \"Codename: &testing-codename;\" specifies that all of " @@ -8481,13 +8680,13 @@ msgstr "" "ligne :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, no-wrap msgid "Pin: release n=&testing-codename;\n" msgstr "Pin: release n=&testing-codename;\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 msgid "" "names the release version. For example, the packages in the tree might " "belong to Debian GNU/Linux release version 3.0. Note that there is normally " @@ -8503,7 +8702,7 @@ msgstr "" "préférences demanderait ces lignes :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, no-wrap msgid "" "Pin: release v=3.0\n" @@ -8515,12 +8714,12 @@ msgstr "" "Pin: release 3.0\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 msgid "the <literal>Component:</literal> line" msgstr "La ligne <literal>Component:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 msgid "" "names the licensing component associated with the packages in the directory " "tree of the <filename>Release</filename> file. For example, the line " @@ -8538,18 +8737,18 @@ msgstr "" "fichier des préférences demanderait cette ligne :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, no-wrap msgid "Pin: release c=main\n" msgstr "Pin: release c=main\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 msgid "the <literal>Origin:</literal> line" msgstr "La ligne <literal>Origin:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 msgid "" "names the originator of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8562,18 +8761,18 @@ msgstr "" "ligne :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, no-wrap msgid "Pin: release o=Debian\n" msgstr "Pin: release o=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 msgid "the <literal>Label:</literal> line" msgstr "La ligne <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 msgid "" "names the label of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8586,13 +8785,13 @@ msgstr "" "préférences demanderait cette ligne :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, no-wrap msgid "Pin: release l=Debian\n" msgstr "Pin: release l=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 msgid "" "The <filename>Release</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for " @@ -8616,7 +8815,7 @@ msgstr "" "\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " "files retrieved from locations listed in the &sources-list; file are stored " @@ -8641,12 +8840,12 @@ msgstr "" "<literal>unstable</literal>." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 msgid "Optional Lines in an APT Preferences Record" msgstr "Lignes facultatives dans le fichier des préférences" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 msgid "" "Each record in the APT preferences file can optionally begin with one or " "more lines beginning with the word <literal>Explanation:</literal>. This " @@ -8657,12 +8856,12 @@ msgstr "" "commentaires." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 msgid "Tracking Stable" msgstr "Méthode pour suivre Stable" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -8686,7 +8885,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8701,8 +8900,8 @@ msgstr "" "literal>. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 -#: apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 +#: apt_preferences.5.xml:675 #, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -8714,7 +8913,7 @@ msgstr "" "apt-get dist-upgrade\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8727,13 +8926,13 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "apt-get install <replaceable>paquet</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>testing</literal> distribution; the package " @@ -8746,12 +8945,12 @@ msgstr "" "de relancer la commande. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 msgid "Tracking Testing or Unstable" msgstr "Méthode pour suivre Testing ou Unstable" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, no-wrap msgid "" "Package: *\n" @@ -8779,7 +8978,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 msgid "" "The following APT preferences file will cause APT to assign a high priority " "to package versions from the <literal>testing</literal> distribution, a " @@ -8796,7 +8995,7 @@ msgstr "" "<placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8809,13 +9008,13 @@ msgstr "" "type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "apt-get install <replaceable>paquet</replaceable>/unstable\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>unstable</literal> distribution. " @@ -8834,12 +9033,12 @@ msgstr "" "installée. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "Suivre l'évolution d'une version par son nom de code" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package versions\n" @@ -8873,7 +9072,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8897,7 +9096,7 @@ msgstr "" "exemples précédents. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest version(s) in " @@ -8910,13 +9109,13 @@ msgstr "" "<placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "apt-get install <replaceable>paquet</replaceable>/sid\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>sid</literal> distribution. Thereafter, " @@ -8935,12 +9134,12 @@ msgstr "" "<placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 msgid "&file-preferences;" msgstr "&file-preferences;" #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -10986,6 +11185,43 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" msgid "Which will use the already fetched archives on the disc." msgstr "Cette commande utilisera les fichiers récupérés sur le disque." +#~ msgid "<option>--md5</option>" +#~ msgstr "<option>--md5</option>" + +#~ msgid "" +#~ "Generate MD5 sums. This defaults to on, when turned off the generated " +#~ "index files will not have MD5Sum fields where possible. Configuration " +#~ "Item: <literal>APT::FTPArchive::MD5</literal>" +#~ msgstr "" +#~ "Créer la somme de contrôle MD5. Cette option est activée par défaut. " +#~ "Quand elle est désactivée, les fichiers d'index n'ont pas les champs " +#~ "MD5Sum là où c'est possible. Élément de configuration : <literal>APT::" +#~ "FTPArchive::MD5</literal>." + +#~ msgid "unmarkauto" +#~ msgstr "unmarkauto" + +#~ msgid "<option>-h</option>" +#~ msgstr "<option>-h</option>" + +#~ msgid "<option>--help</option>" +#~ msgstr "<option>--help</option>" + +#~ msgid "Show a short usage summary." +#~ msgstr "Affiche un résumé de l'aide" + +#~ msgid "<option>-v</option>" +#~ msgstr "<option>-v</option>" + +#~ msgid "<option>--version</option>" +#~ msgstr "<option>--version</option>" + +#~ msgid "Show the program version." +#~ msgstr "Affiche la version du programme." + +#~ msgid "to the version that is already installed (if any)." +#~ msgstr "est affectée à la version déjà installée (si elle existe)." + #~ msgid "APT package handling utility -- cache manipulator" #~ msgstr "Gestionnaire de paquets APT - manipulation du cache" diff --git a/doc/po/it.po b/doc/po/it.po index 94cc9bb76..f109d98f9 100644 --- a/doc/po/it.po +++ b/doc/po/it.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2003-04-26 23:26+0100\n" "Last-Translator: Traduzione di Eugenia Franzoni <eugenia@linuxcare.com>\n" "Language-Team: <debian-l10n-italian@lists.debian.org>\n" @@ -532,7 +532,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 #: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 -#: apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 +#: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 msgid "Description" @@ -910,7 +910,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 #: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "" @@ -934,7 +934,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "" @@ -955,12 +955,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "" @@ -1059,7 +1059,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "" @@ -1155,14 +1155,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 -#: apt-sortpkgs.1.xml:67 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 +#: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 -#: apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "" @@ -1173,9 +1173,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 -#: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 #: sources.list.5.xml:234 msgid "See Also" msgstr "" @@ -1187,8 +1187,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 -#: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 +#: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "" @@ -1287,12 +1287,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "" @@ -1496,7 +1496,7 @@ msgid "Just show the contents of the configuration space." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "" @@ -2407,31 +2407,38 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -2440,12 +2447,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -2454,12 +2461,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -2469,12 +2476,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -2482,24 +2489,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -2508,12 +2515,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -2527,12 +2534,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -2542,26 +2549,26 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 #: sources.list.5.xml:198 msgid "Examples" msgstr "" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3579,20 +3586,35 @@ msgid "" "from the keyring the archive keys which are no longer valid." msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +#, fuzzy +msgid "net-update" +msgstr "upgrade" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch from. " +"APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -3603,43 +3625,43 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "" @@ -3647,8 +3669,8 @@ msgstr "" #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" #. type: Content of: <refentry><refnamediv><refname> @@ -3667,20 +3689,21 @@ msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" "\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain" -"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg " +"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain" +"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg " "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" -"arg> <arg choice=\"plain\">showauto</arg> </group>" +"arg> </group>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -3690,107 +3713,131 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +msgid "auto" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 -msgid "showauto" +#: apt-mark.8.xml:85 +msgid "hold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:86 msgid "" -"<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg --set-" +"selections</command> and the state is therefore maintained by &dpkg; and not " +"effected by the <option>--filename</option> option." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml:96 msgid "" -"<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 -msgid "" -"<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" -"option>" +#: apt-mark.8.xml:101 +msgid "showauto" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:102 msgid "" -"Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" -"filename> instead of the default location, which is " -"<filename>extended_status</filename> in the directory defined by the " -"Configuration Item: <literal>Dir::State</literal>." +"<literal>showauto</literal> is used to print a list of automatically " +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" +#: apt-mark.8.xml:109 +msgid "showmanual" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" +#: apt-mark.8.xml:116 +msgid "showhold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." +#: apt-mark.8.xml:117 +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" +#: apt-mark.8.xml:130 +msgid "" +"<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" +#: apt-mark.8.xml:131 +msgid "" +"<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" +"option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." +#: apt-mark.8.xml:134 +msgid "" +"Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" +"filename> instead of the default location, which is " +"<filename>extended_status</filename> in the directory defined by the " +"Configuration Item: <literal>Dir::State</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -5833,39 +5880,44 @@ msgstr "" #: apt_preferences.5.xml:107 msgid "" "to the versions coming from archives which in their <filename>Release</" -"filename> files are marked as \"NotAutomatic: yes\" like the debian " -"experimental archive." +"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" +"emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 msgid "priority 100" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -msgid "to the version that is already installed (if any)." +#: apt_preferences.5.xml:114 +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 msgid "priority 500" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 msgid "" "to the versions that are not installed and do not belong to the target " "release." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 msgid "priority 990" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 msgid "" "to the versions that are not installed and belong to the target release." msgstr "" @@ -5879,24 +5931,25 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 msgid "" "APT then applies the following rules, listed in order of precedence, to " "determine which version of a package to install." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " "(\"Downgrading\" is installing a less recent version of a package in place " @@ -5906,19 +5959,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 msgid "Install the highest priority version." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 msgid "" "If two or more versions have the same priority, install the most recent one " "(that is, the one with the higher version number)." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 msgid "" "If two or more versions have the same priority and version number but either " "the packages differ in some of their metadata or the <literal>--reinstall</" @@ -5926,7 +5979,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 msgid "" "In a typical situation, the installed version of a package (priority 100) " "is not as recent as one of the versions available from the sources listed in " @@ -5936,7 +5989,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " "recent than any of the other available versions. The package will not be " @@ -5945,7 +5998,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 msgid "" "Sometimes the installed version of a package is more recent than the version " "belonging to the target release, but not as recent as a version belonging to " @@ -5957,12 +6010,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 msgid "The Effect of APT Preferences" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 msgid "" "The APT preferences file allows the system administrator to control the " "assignment of priorities. The file consists of one or more multi-line " @@ -5971,7 +6024,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " "specified packages and specified version or version range. For example, the " @@ -5981,7 +6034,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, no-wrap msgid "" "Package: perl\n" @@ -5990,7 +6043,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 msgid "" "The general form assigns a priority to all of the package versions in a " "given distribution (that is, to all the versions of packages that are listed " @@ -6000,7 +6053,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 msgid "" "This general-form entry in the APT preferences file applies only to groups " "of packages. For example, the following record assigns a high priority to " @@ -6008,7 +6061,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, no-wrap msgid "" "Package: *\n" @@ -6017,7 +6070,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -6026,7 +6079,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, no-wrap msgid "" "Package: *\n" @@ -6035,7 +6088,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " "distribution as specified in a <filename>Release</filename> file. What " @@ -6045,7 +6098,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 msgid "" "The following record assigns a low priority to all package versions " "belonging to any distribution whose Archive name is \"<literal>unstable</" @@ -6053,7 +6106,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, no-wrap msgid "" "Package: *\n" @@ -6062,7 +6115,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 msgid "" "The following record assigns a high priority to all package versions " "belonging to any distribution whose Codename is \"<literal>&testing-codename;" @@ -6070,7 +6123,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, no-wrap msgid "" "Package: *\n" @@ -6079,7 +6132,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 msgid "" "The following record assigns a high priority to all package versions " "belonging to any release whose Archive name is \"<literal>stable</literal>\" " @@ -6087,7 +6140,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, no-wrap msgid "" "Package: *\n" @@ -6096,82 +6149,133 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a glob" +"()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, no-wrap +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, no-wrap +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +msgid "Package" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:306 msgid "How APT Interprets Priorities" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 msgid "P > 1000" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 msgid "" "causes a version to be installed even if this constitutes a downgrade of the " "package" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 msgid "990 < P <=1000" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 msgid "" "causes a version to be installed even if it does not come from the target " "release, unless the installed version is more recent" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 msgid "500 < P <=990" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 msgid "" "causes a version to be installed unless there is a version available " "belonging to the target release or the installed version is more recent" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 msgid "100 < P <=500" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 msgid "" "causes a version to be installed unless there is a version available " "belonging to some other distribution or the installed version is more recent" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 msgid "0 < P <=100" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 msgid "" "causes a version to be installed only if there is no installed version of " "the package" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 msgid "P < 0" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 msgid "prevents the version from being installed" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " "negative integers. They are interpreted as follows (roughly speaking): " @@ -6179,7 +6283,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 msgid "" "If any specific-form records match an available package version then the " "first such record determines the priority of the package version. Failing " @@ -6188,14 +6292,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 msgid "" "For example, suppose the APT preferences file contains the three records " "presented earlier:" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, no-wrap msgid "" "Package: perl\n" @@ -6212,12 +6316,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 msgid "" "The most recent available version of the <literal>perl</literal> package " "will be installed, so long as that version's version number begins with " @@ -6227,7 +6331,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 msgid "" "A version of any package other than <literal>perl</literal> that is " "available from the local system has priority over other versions, even " @@ -6235,7 +6339,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 msgid "" "A version of a package whose origin is not the local system but some other " "site listed in &sources-list; and which belongs to an <literal>unstable</" @@ -6244,12 +6348,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 msgid "Determination of Package Version and Distribution Properties" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 msgid "" "The locations listed in the &sources-list; file should provide " "<filename>Packages</filename> and <filename>Release</filename> files to " @@ -6257,27 +6361,27 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 msgid "the <literal>Package:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 msgid "gives the package name" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 msgid "the <literal>Version:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 msgid "gives the version number for the named package" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 msgid "" "The <filename>Packages</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable>/" @@ -6290,12 +6394,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 msgid "" "names the archive to which all the packages in the directory tree belong. " "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies " @@ -6306,18 +6410,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, no-wrap msgid "Pin: release a=stable\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 msgid "the <literal>Codename:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 msgid "" "names the codename to which all the packages in the directory tree belong. " "For example, the line \"Codename: &testing-codename;\" specifies that all of " @@ -6328,13 +6432,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, no-wrap msgid "Pin: release n=&testing-codename;\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 msgid "" "names the release version. For example, the packages in the tree might " "belong to Debian GNU/Linux release version 3.0. Note that there is normally " @@ -6344,7 +6448,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, no-wrap msgid "" "Pin: release v=3.0\n" @@ -6353,12 +6457,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 msgid "the <literal>Component:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 msgid "" "names the licensing component associated with the packages in the directory " "tree of the <filename>Release</filename> file. For example, the line " @@ -6369,18 +6473,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, no-wrap msgid "Pin: release c=main\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 msgid "the <literal>Origin:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 msgid "" "names the originator of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -6389,18 +6493,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, no-wrap msgid "Pin: release o=Debian\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 msgid "the <literal>Label:</literal> line" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 msgid "" "names the label of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -6409,13 +6513,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, no-wrap msgid "Pin: release l=Debian\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 msgid "" "The <filename>Release</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for " @@ -6429,7 +6533,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " "files retrieved from locations listed in the &sources-list; file are stored " @@ -6444,12 +6548,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 msgid "Optional Lines in an APT Preferences Record" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 msgid "" "Each record in the APT preferences file can optionally begin with one or " "more lines beginning with the word <literal>Explanation:</literal>. This " @@ -6457,12 +6561,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 msgid "Tracking Stable" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -6477,7 +6581,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -6487,8 +6591,8 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 -#: apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 +#: apt_preferences.5.xml:675 #, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -6497,7 +6601,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -6506,13 +6610,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>testing</literal> distribution; the package " @@ -6521,12 +6625,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 msgid "Tracking Testing or Unstable" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, no-wrap msgid "" "Package: *\n" @@ -6543,7 +6647,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 msgid "" "The following APT preferences file will cause APT to assign a high priority " "to package versions from the <literal>testing</literal> distribution, a " @@ -6554,7 +6658,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -6563,13 +6667,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>unstable</literal> distribution. " @@ -6581,12 +6685,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package versions\n" @@ -6606,7 +6710,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -6621,7 +6725,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest version(s) in " @@ -6630,13 +6734,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>sid</literal> distribution. Thereafter, " @@ -6648,12 +6752,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 msgid "&file-preferences;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "" diff --git a/doc/po/ja.po b/doc/po/ja.po index 3a0db1bbf..839242cc8 100644 --- a/doc/po/ja.po +++ b/doc/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.25.3\n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-09-07 07:38+0900\n" "Last-Translator: KURASAWA Nozomu <nabetaro@caldron.jp>\n" "Language-Team: Debian Japanese List <debian-japanese@lists.debian.org>\n" @@ -792,7 +792,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 #: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 -#: apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 +#: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 msgid "Description" @@ -1329,7 +1329,7 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 #: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "オプション" @@ -1357,7 +1357,7 @@ msgstr "" "pkgcache</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1384,12 +1384,12 @@ msgstr "" "<literal>Dir::Cache::srcpkgcache</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1505,7 +1505,7 @@ msgstr "" "ShowFull</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1627,15 +1627,15 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 -#: apt-sortpkgs.1.xml:67 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 +#: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 -#: apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "ファイル" @@ -1647,9 +1647,9 @@ msgstr "&file-sourceslist; &file-statelists;" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 -#: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 #: sources.list.5.xml:234 msgid "See Also" msgstr "関連項目" @@ -1663,8 +1663,8 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 -#: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 +#: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "診断メッセージ" @@ -1800,12 +1800,12 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "オプション" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -2075,7 +2075,7 @@ msgstr "設定箇所の内容を表示するだけです。" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -3286,29 +3286,49 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" -msgstr "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" +msgstr "" -# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 -msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." +msgid "" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" -"MD5 sum を生成します。デフォルトで on になっており、off にすると生成したイン" -"デックスファイルに MD5Sum フィールドがありません。設定項目 - <literal>APT::" -"FTPArchive::MD5</literal>" +"Release ファイルの追加メタデータフィールドの値は、<literal>APT::FTPArchive::" +"Release</literal> 以下の相当する値 (例: <literal>APT::FTPArchive::Release::" +"Origin</literal>) をとります。サポートするフィールドは、<literal>Origin</" +"literal>, <literal>Label</literal>, <literal>Suite</literal>, " +"<literal>Version</literal>, <literal>Codename</literal>, <literal>Date</" +"literal>, <literal>Valid-Until</literal>, <literal>Architectures</literal>, " +"<literal>Components</literal>, <literal>Description</literal> です。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3318,7 +3338,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3331,13 +3351,13 @@ msgstr "" "<literal>quiet</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3350,13 +3370,13 @@ msgstr "" "<literal>APT::FTPArchive::DeLinkAct</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3371,13 +3391,13 @@ msgstr "" "<literal>APT::FTPArchive::Contents</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3387,13 +3407,13 @@ msgstr "" "選択します。設定項目 - <literal>APT::FTPArchive::SourceOverride</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3402,13 +3422,13 @@ msgstr "" "FTPArchive::ReadOnlyDB</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 #, fuzzy msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " @@ -3422,12 +3442,12 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>--version</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3441,12 +3461,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 #, fuzzy msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " @@ -3462,14 +3482,14 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 #: sources.list.5.xml:198 msgid "Examples" msgstr "サンプル" # type: Content of: <refentry><refsect1><para><programlisting> #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "" @@ -3478,7 +3498,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3488,7 +3508,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -4864,8 +4884,24 @@ msgstr "" "Debian アーカイブキーで、ローカルキーリングを更新し、もう有効でないキーをキー" "リングから削除します。" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +#, fuzzy +#| msgid "update" +msgid "net-update" +msgstr "update" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch from. " +"APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4875,12 +4911,12 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>filename</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -4896,35 +4932,35 @@ msgstr "" "加されます。" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "アーカイブキーのローカル信頼データベースです。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Debian アーカイブ信頼キーのキーリングです。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" @@ -4932,22 +4968,26 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "削除された Debian アーカイブ信頼キーのキーリングです。" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" #. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 +#, fuzzy +#| msgid "" +#| "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " +#| "August 2009</date>" msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " "August 2009</date>" @@ -4967,13 +5007,22 @@ msgstr "パッケージが自動的にインストールされたかどうかの # type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #: apt-mark.8.xml:39 +#, fuzzy +#| msgid "" +#| " <command>apt-mark</command> <arg><option>-hv</option></arg> " +#| "<arg><option>-f=<replaceable>FILENAME</replaceable></option></arg> <group " +#| "choice=\"plain\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg " +#| "choice=\"plain\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </" +#| "group> <arg choice=\"plain\" rep=\"repeat\"><replaceable>package</" +#| "replaceable></arg> </arg> <arg choice=\"plain\">showauto</arg> </group>" msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" "\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain" -"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg " +"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain" +"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg " "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" -"arg> <arg choice=\"plain\">showauto</arg> </group>" +"arg> </group>" msgstr "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" @@ -4984,7 +5033,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." @@ -4994,7 +5043,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -5009,15 +5058,22 @@ msgstr "" "command> や <command>aptitude</command> により削除されます。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +#, fuzzy +#| msgid "markauto" +msgid "auto" msgstr "markauto" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 +#, fuzzy +#| msgid "" +#| "<literal>markauto</literal> is used to mark a package as being " +#| "automatically installed, which will cause the package to be removed when " +#| "no more manually installed packages depend on this package." msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" @@ -5026,15 +5082,20 @@ msgstr "" "なくなると、このパッケージを削除します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" -msgstr "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" +msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 +#, fuzzy +#| msgid "" +#| "<literal>unmarkauto</literal> is used to mark a package as being manually " +#| "installed, which will prevent the package from being automatically " +#| "removed if no other packages depend on it." msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" @@ -5043,29 +5104,105 @@ msgstr "" "ケージを自動的に削除するのを防ぎます。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 +#: apt-mark.8.xml:85 +msgid "hold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:86 +msgid "" +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg --set-" +"selections</command> and the state is therefore maintained by &dpkg; and not " +"effected by the <option>--filename</option> option." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:96 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." +msgstr "" +"<literal>showauto</literal> は、自動的にインストールされたパッケージを、パッ" +"ケージごとに改行して表示します。" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:101 msgid "showauto" msgstr "showauto" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:102 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." msgid "" "<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" "<literal>showauto</literal> は、自動的にインストールされたパッケージを、パッ" "ケージごとに改行して表示します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:96 +#: apt-mark.8.xml:109 +#, fuzzy +#| msgid "showauto" +msgid "showmanual" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:116 +#, fuzzy +#| msgid "showauto" +msgid "showhold" +msgstr "showauto" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:117 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." +msgstr "" +"<literal>showauto</literal> は、自動的にインストールされたパッケージを、パッ" +"ケージごとに改行して表示します。" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:130 msgid "" "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 +#: apt-mark.8.xml:131 msgid "" "<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" "option>" @@ -5075,7 +5212,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:134 msgid "" "Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" "filename> instead of the default location, which is " @@ -5086,52 +5223,20 @@ msgstr "" "トリの <filename>extended_status</filename>) に代えて、<filename>FILENAME</" "filename> からパッケージの統計を読み書きします。" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" -msgstr "<option>-h</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" -msgstr "<option>--help</option>" - -# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." -msgstr "短い使用方法を表示します。" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" -msgstr "<option>-v</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" -msgstr "<option>--version</option>" - -# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." -msgstr "プログラムのバージョン情報を表示します" - #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr " &file-extended_states;" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "&apt-get;,&aptitude;,&apt-conf;" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -7854,31 +7959,35 @@ msgstr "priority 1" #: apt_preferences.5.xml:107 msgid "" "to the versions coming from archives which in their <filename>Release</" -"filename> files are marked as \"NotAutomatic: yes\" like the debian " -"experimental archive." +"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" +"emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 msgid "priority 100" msgstr "priority 100" -# type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -msgid "to the version that is already installed (if any)." -msgstr "(あるならば) 既にインストールされているバージョン。" +#: apt_preferences.5.xml:114 +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." +msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 msgid "priority 500" msgstr "priority 500" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 msgid "" "to the versions that are not installed and do not belong to the target " "release." @@ -7886,13 +7995,13 @@ msgstr "インストールされておらず、ターゲットリリースに含 # type: <tag></tag> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 msgid "priority 990" msgstr "priority 990" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 msgid "" "to the versions that are not installed and belong to the target release." msgstr "インストールされておらず、ターゲットリリースに含まれるバージョン。" @@ -7911,14 +8020,15 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 #, fuzzy msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" "ターゲットリリースが指定されていなければ、APT は単純にインストールしている" "パッケージのバージョンには 100 を、インストールしていないパッケージのバージョ" @@ -7926,7 +8036,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 msgid "" "APT then applies the following rules, listed in order of precedence, to " "determine which version of a package to install." @@ -7936,7 +8046,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " "(\"Downgrading\" is installing a less recent version of a package in place " @@ -7952,13 +8062,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 msgid "Install the highest priority version." msgstr "最も高い優先度のバージョンをインストールします。" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 msgid "" "If two or more versions have the same priority, install the most recent one " "(that is, the one with the higher version number)." @@ -7968,7 +8078,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 msgid "" "If two or more versions have the same priority and version number but either " "the packages differ in some of their metadata or the <literal>--reinstall</" @@ -7980,7 +8090,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 msgid "" "In a typical situation, the installed version of a package (priority 100) " "is not as recent as one of the versions available from the sources listed in " @@ -7996,7 +8106,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " "recent than any of the other available versions. The package will not be " @@ -8010,7 +8120,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 msgid "" "Sometimes the installed version of a package is more recent than the version " "belonging to the target release, but not as recent as a version belonging to " @@ -8030,13 +8140,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 msgid "The Effect of APT Preferences" msgstr "APT 設定の効果" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 msgid "" "The APT preferences file allows the system administrator to control the " "assignment of priorities. The file consists of one or more multi-line " @@ -8049,7 +8159,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " "specified packages and specified version or version range. For example, the " @@ -8064,7 +8174,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, no-wrap msgid "" "Package: perl\n" @@ -8078,7 +8188,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 msgid "" "The general form assigns a priority to all of the package versions in a " "given distribution (that is, to all the versions of packages that are listed " @@ -8093,7 +8203,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 msgid "" "This general-form entry in the APT preferences file applies only to groups " "of packages. For example, the following record assigns a high priority to " @@ -8105,7 +8215,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, no-wrap msgid "" "Package: *\n" @@ -8118,7 +8228,7 @@ msgstr "" "\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -8128,7 +8238,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, no-wrap msgid "" "Package: *\n" @@ -8141,7 +8251,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 #, fuzzy msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " @@ -8158,7 +8268,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 msgid "" "The following record assigns a low priority to all package versions " "belonging to any distribution whose Archive name is \"<literal>unstable</" @@ -8169,7 +8279,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, no-wrap msgid "" "Package: *\n" @@ -8183,7 +8293,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 #, fuzzy msgid "" "The following record assigns a high priority to all package versions " @@ -8195,7 +8305,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, no-wrap msgid "" "Package: *\n" @@ -8208,7 +8318,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 msgid "" "The following record assigns a high priority to all package versions " "belonging to any release whose Archive name is \"<literal>stable</literal>\" " @@ -8220,7 +8330,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, no-wrap msgid "" "Package: *\n" @@ -8232,20 +8342,92 @@ msgstr "" "Pin-Priority: 500\n" "\n" +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a glob" +"()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +# type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" +"\n" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +# type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" +"\n" + +# type: <tag></tag> +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +#, fuzzy +#| msgid "Packages" +msgid "Package" +msgstr "Packages" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:306 msgid "How APT Interprets Priorities" msgstr "APT が優先度に割り込む方法" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 msgid "P > 1000" msgstr "P > 1000" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 msgid "" "causes a version to be installed even if this constitutes a downgrade of the " "package" @@ -8253,13 +8435,13 @@ msgstr "" "パッケージがダウングレードしても、このバージョンのパッケージをインストール" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 msgid "990 < P <=1000" msgstr "990 < P <=1000" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 msgid "" "causes a version to be installed even if it does not come from the target " "release, unless the installed version is more recent" @@ -8268,13 +8450,13 @@ msgstr "" "含まれなくても、このバージョンのパッケージをインストール" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 msgid "500 < P <=990" msgstr "500 < P <=990" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 msgid "" "causes a version to be installed unless there is a version available " "belonging to the target release or the installed version is more recent" @@ -8283,13 +8465,13 @@ msgstr "" "ジョンの方が新しいのでなければ、このバージョンのパッケージをインストール" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 msgid "100 < P <=500" msgstr "100 < P <=500" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 msgid "" "causes a version to be installed unless there is a version available " "belonging to some other distribution or the installed version is more recent" @@ -8299,13 +8481,13 @@ msgstr "" "ル" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 msgid "0 < P <=100" msgstr "0 < P <=100" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 msgid "" "causes a version to be installed only if there is no installed version of " "the package" @@ -8314,19 +8496,19 @@ msgstr "" "ンストール" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 msgid "P < 0" msgstr "P < 0" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 msgid "prevents the version from being installed" msgstr "このバージョンのインストール禁止" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " "negative integers. They are interpreted as follows (roughly speaking): " @@ -8338,7 +8520,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 msgid "" "If any specific-form records match an available package version then the " "first such record determines the priority of the package version. Failing " @@ -8352,7 +8534,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 msgid "" "For example, suppose the APT preferences file contains the three records " "presented earlier:" @@ -8362,7 +8544,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><programlisting> #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, no-wrap msgid "" "Package: perl\n" @@ -8392,13 +8574,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "すると、以下のように動作します。" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 msgid "" "The most recent available version of the <literal>perl</literal> package " "will be installed, so long as that version's version number begins with " @@ -8413,7 +8595,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 msgid "" "A version of any package other than <literal>perl</literal> that is " "available from the local system has priority over other versions, even " @@ -8425,7 +8607,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 msgid "" "A version of a package whose origin is not the local system but some other " "site listed in &sources-list; and which belongs to an <literal>unstable</" @@ -8439,13 +8621,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 msgid "Determination of Package Version and Distribution Properties" msgstr "パッケージのバージョンとディストリビューションプロパティの決定" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 msgid "" "The locations listed in the &sources-list; file should provide " "<filename>Packages</filename> and <filename>Release</filename> files to " @@ -8456,30 +8638,30 @@ msgstr "" "filename> ファイルを提供します。" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 msgid "the <literal>Package:</literal> line" msgstr "<literal>Package:</literal> 行" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 msgid "gives the package name" msgstr "パッケージ名" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 msgid "the <literal>Version:</literal> line" msgstr "<literal>Version:</literal> 行" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 msgid "gives the version number for the named package" msgstr "その名前のパッケージのバージョン番号" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 msgid "" "The <filename>Packages</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable>/" @@ -8499,13 +8681,13 @@ msgstr "" "type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "<literal>Archive:</literal> 行や <literal>Suite:</literal> 行" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 msgid "" "names the archive to which all the packages in the directory tree belong. " "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies " @@ -8522,19 +8704,19 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, no-wrap msgid "Pin: release a=stable\n" msgstr "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 msgid "the <literal>Codename:</literal> line" msgstr "<literal>Codename:</literal> 行" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 #, fuzzy msgid "" "names the codename to which all the packages in the directory tree belong. " @@ -8552,14 +8734,14 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, no-wrap msgid "Pin: release n=&testing-codename;\n" msgstr "Pin: release n=&testing-codename;\n" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 msgid "" "names the release version. For example, the packages in the tree might " "belong to Debian GNU/Linux release version 3.0. Note that there is normally " @@ -8575,7 +8757,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, no-wrap msgid "" "Pin: release v=3.0\n" @@ -8588,13 +8770,13 @@ msgstr "" "\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 msgid "the <literal>Component:</literal> line" msgstr "<literal>Component:</literal> 行" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 msgid "" "names the licensing component associated with the packages in the directory " "tree of the <filename>Release</filename> file. For example, the line " @@ -8612,19 +8794,19 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, no-wrap msgid "Pin: release c=main\n" msgstr "Pin: release c=main\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 msgid "the <literal>Origin:</literal> line" msgstr "<literal>Origin:</literal> 行" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 msgid "" "names the originator of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8637,7 +8819,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, no-wrap msgid "Pin: release o=Debian\n" msgstr "" @@ -8645,13 +8827,13 @@ msgstr "" "\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 msgid "the <literal>Label:</literal> line" msgstr "<literal>Label:</literal> 行" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 msgid "" "names the label of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8664,7 +8846,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, no-wrap msgid "Pin: release l=Debian\n" msgstr "" @@ -8673,7 +8855,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 #, fuzzy msgid "" "The <filename>Release</filename> file is normally found in the directory " @@ -8697,7 +8879,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " "files retrieved from locations listed in the &sources-list; file are stored " @@ -8723,13 +8905,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 msgid "Optional Lines in an APT Preferences Record" msgstr "APT 設定レコードのオプション行" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 msgid "" "Each record in the APT preferences file can optionally begin with one or " "more lines beginning with the word <literal>Explanation:</literal>. This " @@ -8740,13 +8922,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 msgid "Tracking Stable" msgstr "安定版の追跡" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -8772,7 +8954,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8788,8 +8970,8 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 -#: apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 +#: apt_preferences.5.xml:675 #, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -8802,7 +8984,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8815,14 +8997,14 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "apt-get install <replaceable>package</replaceable>/testing\n" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>testing</literal> distribution; the package " @@ -8836,13 +9018,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 msgid "Tracking Testing or Unstable" msgstr "テスト版や不安定版の追跡" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, no-wrap msgid "" "Package: *\n" @@ -8871,7 +9053,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 msgid "" "The following APT preferences file will cause APT to assign a high priority " "to package versions from the <literal>testing</literal> distribution, a " @@ -8889,7 +9071,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8902,14 +9084,14 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "apt-get install <replaceable>package</replaceable>/unstable\n" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>unstable</literal> distribution. " @@ -8928,13 +9110,13 @@ msgstr "" "\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "コード名リリースの進化の追跡" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package versions\n" @@ -8968,7 +9150,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8992,7 +9174,7 @@ msgstr "" "id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest version(s) in " @@ -9005,14 +9187,14 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "apt-get install <replaceable>package</replaceable>/sid\n" # type: Content of: <refentry><refsect1><refsect2><para> #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 #, fuzzy msgid "" "The following command will cause APT to upgrade the specified package to the " @@ -9032,13 +9214,13 @@ msgstr "" # type: Content of: <refentry><refnamediv><refname> #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 msgid "&file-preferences;" msgstr "&file-preferences;" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -10742,6 +10924,46 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" msgid "Which will use the already fetched archives on the disc." msgstr "これで、disc にある取得済みのアーカイブを使用するようになります。" +#~ msgid "<option>--md5</option>" +#~ msgstr "<option>--md5</option>" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#~ msgid "" +#~ "Generate MD5 sums. This defaults to on, when turned off the generated " +#~ "index files will not have MD5Sum fields where possible. Configuration " +#~ "Item: <literal>APT::FTPArchive::MD5</literal>" +#~ msgstr "" +#~ "MD5 sum を生成します。デフォルトで on になっており、off にすると生成したイ" +#~ "ンデックスファイルに MD5Sum フィールドがありません。設定項目 - " +#~ "<literal>APT::FTPArchive::MD5</literal>" + +#~ msgid "unmarkauto" +#~ msgstr "unmarkauto" + +#~ msgid "<option>-h</option>" +#~ msgstr "<option>-h</option>" + +#~ msgid "<option>--help</option>" +#~ msgstr "<option>--help</option>" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#~ msgid "Show a short usage summary." +#~ msgstr "短い使用方法を表示します。" + +#~ msgid "<option>-v</option>" +#~ msgstr "<option>-v</option>" + +#~ msgid "<option>--version</option>" +#~ msgstr "<option>--version</option>" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#~ msgid "Show the program version." +#~ msgstr "プログラムのバージョン情報を表示します" + +# type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> +#~ msgid "to the version that is already installed (if any)." +#~ msgstr "(あるならば) 既にインストールされているバージョン。" + # type: Content of: <refentry><refnamediv><refpurpose> #~ msgid "APT package handling utility -- cache manipulator" #~ msgstr "APT パッケージ操作ユーティリティ -- キャッシュ操作ツール" @@ -10803,8 +11025,12 @@ msgstr "これで、disc にある取得済みのアーカイブを使用する #~ "nonus.debian.org のアーカイブに HTTP アクセスし、debian-non-US ディレクト" #~ "リ以下を使用します。" -#~ msgid "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" -#~ msgstr "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" +#~ msgid "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" +#~ msgstr "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" # type: SH #~ msgid "OPTIONS" diff --git a/doc/po/pl.po b/doc/po/pl.po index 7c98ac229..eae5c89c3 100644 --- a/doc/po/pl.po +++ b/doc/po/pl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.25.3\n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-03-18 22:00+0100\n" "Last-Translator: Robert Luberda <robert@debian.org>\n" "Language-Team: <debian-l10n-polish@lists.debian.org>\n" @@ -788,7 +788,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 #: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 -#: apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 +#: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 msgid "Description" @@ -1335,7 +1335,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 #: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "opcje" @@ -1363,7 +1363,7 @@ msgstr "" "<literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1391,12 +1391,12 @@ msgstr "" "Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1534,7 +1534,7 @@ msgstr "" "konfiguracyjnym: <literal>APT::Cache::ShowFull</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1660,14 +1660,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 -#: apt-sortpkgs.1.xml:67 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 +#: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 -#: apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Pliki" @@ -1678,9 +1678,9 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 -#: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 #: sources.list.5.xml:234 msgid "See Also" msgstr "Zobacz także" @@ -1693,8 +1693,8 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 -#: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 +#: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnostyka" @@ -1837,12 +1837,12 @@ msgstr "" "\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Opcje" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -2105,7 +2105,7 @@ msgid "Just show the contents of the configuration space." msgstr "Wyświetla zawartość przestrzeni konfiguracji." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -3094,25 +3094,32 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" -msgstr "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 #, fuzzy msgid "" "Use a binary caching DB. This has no effect on the generate command. " @@ -3123,7 +3130,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3137,13 +3144,13 @@ msgstr "" "pliku konfiguracyjnym: <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 #, fuzzy msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " @@ -3157,12 +3164,12 @@ msgstr "" "<literal>APT::Cache::Generate</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3172,13 +3179,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 #, fuzzy msgid "" "Select the source override file to use with the <literal>sources</literal> " @@ -3190,13 +3197,13 @@ msgstr "" "konfiguracyjnym: <literal>APT::Cache::Installed</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 #, fuzzy msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" @@ -3206,14 +3213,14 @@ msgstr "" "pliku konfiguracyjnym: <literal>APT::Cache::NamesOnly</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 #, fuzzy #| msgid "<option>-a</option>" msgid "<option>--arch</option>" msgstr "<option>-a</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 #, fuzzy #| msgid "" #| "If the command is either <literal>install</literal> or <literal>remove</" @@ -3233,13 +3240,13 @@ msgstr "" "AutomaticRemove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 #, fuzzy msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>--version</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3253,13 +3260,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 #, fuzzy msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>--version</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3269,19 +3276,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 #: sources.list.5.xml:198 msgid "Examples" msgstr "Przykłady" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> packages <replaceable>katalog</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3289,7 +3296,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -4746,8 +4753,24 @@ msgstr "" "Aktualizuje lokalną składnicę kluczy używając składnicy kluczy archiwum " "Debiana i usuwa z lokalnej składnicy nieaktualne już klucze archiwów Debiana." +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +#, fuzzy +#| msgid "update" +msgid "net-update" +msgstr "update" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch from. " +"APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4756,12 +4779,12 @@ msgstr "" "opisanymi w poprzednim rozdziale." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>nazwa_pliku</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -4777,53 +4800,57 @@ msgstr "" "kluczy, co oznacza na przykład to, że nowe klucze będą dodawane właśnie tam." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Lokalna składnica zaufanych kluczy archiwum." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Składnica zaufanych kluczy archiwum Debiana." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "Składnica usuniętych zaufanych kluczy archiwum Debiana." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" #. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 +#, fuzzy +#| msgid "" +#| "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " +#| "August 2009</date>" msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; " "<date>9 sierpnia 2009</date>" @@ -4840,13 +4867,22 @@ msgstr "Zaznaczanie/odznaczanie pakietu jako zainstalowanego automatycznie." #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #: apt-mark.8.xml:39 +#, fuzzy +#| msgid "" +#| " <command>apt-mark</command> <arg><option>-hv</option></arg> " +#| "<arg><option>-f=<replaceable>FILENAME</replaceable></option></arg> <group " +#| "choice=\"plain\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg " +#| "choice=\"plain\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </" +#| "group> <arg choice=\"plain\" rep=\"repeat\"><replaceable>package</" +#| "replaceable></arg> </arg> <arg choice=\"plain\">showauto</arg> </group>" msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" "\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain" -"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg " +"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain" +"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg " "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" -"arg> <arg choice=\"plain\">showauto</arg> </group>" +"arg> </group>" msgstr "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>NAZWA_PLIKU</replaceable></option></arg> <group choice=\"plain" @@ -4856,7 +4892,7 @@ msgstr "" "arg> <arg choice=\"plain\">showauto</arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." @@ -4865,7 +4901,7 @@ msgstr "" "zainstalowany automatycznie." #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -4881,14 +4917,21 @@ msgstr "" "get</command> lub <command>aptitude</command>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +#, fuzzy +#| msgid "markauto" +msgid "auto" msgstr "markauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 +#, fuzzy +#| msgid "" +#| "<literal>markauto</literal> is used to mark a package as being " +#| "automatically installed, which will cause the package to be removed when " +#| "no more manually installed packages depend on this package." msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" @@ -4897,14 +4940,19 @@ msgstr "" "żaden inny ręcznie zainstalowany pakiet nie będzie od niego zależał." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" -msgstr "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 +#, fuzzy +#| msgid "" +#| "<literal>unmarkauto</literal> is used to mark a package as being manually " +#| "installed, which will prevent the package from being automatically " +#| "removed if no other packages depend on it." msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" @@ -4913,22 +4961,98 @@ msgstr "" "sytuacji gdy żaden inny pakiet nie będzie od niego zależał." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 +#: apt-mark.8.xml:85 +msgid "hold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:86 +msgid "" +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg --set-" +"selections</command> and the state is therefore maintained by &dpkg; and not " +"effected by the <option>--filename</option> option." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:96 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." +msgstr "" +"<literal>showauto</literal> jest używane do wypisania listy wszystkich " +"pakietów zainstalowanych automatycznie. Każdy pakiet jest wypisywany w " +"osobnej linii." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:101 msgid "showauto" msgstr "showauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:102 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." msgid "" "<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" "<literal>showauto</literal> jest używane do wypisania listy wszystkich " "pakietów zainstalowanych automatycznie. Każdy pakiet jest wypisywany w " "osobnej linii." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:96 +#: apt-mark.8.xml:109 +#, fuzzy +#| msgid "showauto" +msgid "showmanual" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:116 +#, fuzzy +#| msgid "showauto" +msgid "showhold" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:117 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." +msgstr "" +"<literal>showauto</literal> jest używane do wypisania listy wszystkich " +"pakietów zainstalowanych automatycznie. Każdy pakiet jest wypisywany w " +"osobnej linii." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:130 msgid "" "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" @@ -4936,7 +5060,7 @@ msgstr "" "option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 +#: apt-mark.8.xml:131 msgid "" "<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" "option>" @@ -4945,7 +5069,7 @@ msgstr "" "option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:134 msgid "" "Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" "filename> instead of the default location, which is " @@ -4957,51 +5081,19 @@ msgstr "" "domyślny plik <filename>extended_status</filename> znajdujący się w katalogu " "określonym w pliku konfiguracyjnym w pozycji<literal>Dir::State</literal>." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" -msgstr "<option>-h</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" -msgstr "<option>--help</option>" - -# -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." -msgstr "Wyświetla krótkie informacje na temat użytkowania." - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" -msgstr "<option>-v</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" -msgstr "<option>--version</option>" - -# -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." -msgstr "Wyświetla wersję programu." - #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "&apt-get;,&aptitude;,&apt-conf;" # #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -7100,39 +7192,44 @@ msgstr "priorytet 100" #: apt_preferences.5.xml:107 msgid "" "to the versions coming from archives which in their <filename>Release</" -"filename> files are marked as \"NotAutomatic: yes\" like the debian " -"experimental archive." +"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" +"emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 msgid "priority 100" msgstr "priorytet 100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -msgid "to the version that is already installed (if any)." +#: apt_preferences.5.xml:114 +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 msgid "priority 500" msgstr "priorytet 500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 msgid "" "to the versions that are not installed and do not belong to the target " "release." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 msgid "priority 990" msgstr "priorytet 990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 msgid "" "to the versions that are not installed and belong to the target release." msgstr "" @@ -7146,24 +7243,25 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 msgid "" "APT then applies the following rules, listed in order of precedence, to " "determine which version of a package to install." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " "(\"Downgrading\" is installing a less recent version of a package in place " @@ -7173,19 +7271,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 msgid "Install the highest priority version." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 msgid "" "If two or more versions have the same priority, install the most recent one " "(that is, the one with the higher version number)." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 msgid "" "If two or more versions have the same priority and version number but either " "the packages differ in some of their metadata or the <literal>--reinstall</" @@ -7193,7 +7291,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 msgid "" "In a typical situation, the installed version of a package (priority 100) " "is not as recent as one of the versions available from the sources listed in " @@ -7203,7 +7301,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " "recent than any of the other available versions. The package will not be " @@ -7212,7 +7310,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 msgid "" "Sometimes the installed version of a package is more recent than the version " "belonging to the target release, but not as recent as a version belonging to " @@ -7224,12 +7322,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 msgid "The Effect of APT Preferences" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 msgid "" "The APT preferences file allows the system administrator to control the " "assignment of priorities. The file consists of one or more multi-line " @@ -7238,7 +7336,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " "specified packages and specified version or version range. For example, the " @@ -7248,7 +7346,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, no-wrap msgid "" "Package: perl\n" @@ -7260,7 +7358,7 @@ msgstr "" "Pin-Priority: 1001\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 msgid "" "The general form assigns a priority to all of the package versions in a " "given distribution (that is, to all the versions of packages that are listed " @@ -7270,7 +7368,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 msgid "" "This general-form entry in the APT preferences file applies only to groups " "of packages. For example, the following record assigns a high priority to " @@ -7278,7 +7376,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, no-wrap msgid "" "Package: *\n" @@ -7290,7 +7388,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -7299,7 +7397,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, fuzzy, no-wrap #| msgid "" #| "Package: *\n" @@ -7315,7 +7413,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " "distribution as specified in a <filename>Release</filename> file. What " @@ -7325,7 +7423,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 msgid "" "The following record assigns a low priority to all package versions " "belonging to any distribution whose Archive name is \"<literal>unstable</" @@ -7333,7 +7431,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, no-wrap msgid "" "Package: *\n" @@ -7345,7 +7443,7 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 msgid "" "The following record assigns a high priority to all package versions " "belonging to any distribution whose Codename is \"<literal>&testing-codename;" @@ -7353,7 +7451,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, fuzzy, no-wrap #| msgid "" #| "Package: *\n" @@ -7369,7 +7467,7 @@ msgstr "" "Pin-Priority: 900\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 msgid "" "The following record assigns a high priority to all package versions " "belonging to any release whose Archive name is \"<literal>stable</literal>\" " @@ -7377,7 +7475,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, no-wrap msgid "" "Package: *\n" @@ -7389,17 +7487,82 @@ msgstr "" "Pin-Priority: 500\n" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a glob" +"()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +msgid "Package" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:306 msgid "How APT Interprets Priorities" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 msgid "P > 1000" msgstr "P > 1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 #, fuzzy msgid "" "causes a version to be installed even if this constitutes a downgrade of the " @@ -7409,12 +7572,12 @@ msgstr "" "pakietu nie jest jeszcze zainstalowana" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 msgid "990 < P <=1000" msgstr "990 < P <=1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 #, fuzzy msgid "" "causes a version to be installed even if it does not come from the target " @@ -7424,12 +7587,12 @@ msgstr "" "pakietu nie jest jeszcze zainstalowana" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 msgid "500 < P <=990" msgstr "500 < P <=990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 #, fuzzy msgid "" "causes a version to be installed unless there is a version available " @@ -7439,12 +7602,12 @@ msgstr "" "pakietu nie jest jeszcze zainstalowana" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 msgid "100 < P <=500" msgstr "100 < P <=500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 #, fuzzy msgid "" "causes a version to be installed unless there is a version available " @@ -7454,12 +7617,12 @@ msgstr "" "pakietu nie jest jeszcze zainstalowana" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 msgid "0 < P <=100" msgstr "0 < P <=100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 msgid "" "causes a version to be installed only if there is no installed version of " "the package" @@ -7468,17 +7631,17 @@ msgstr "" "pakietu nie jest jeszcze zainstalowana" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 msgid "P < 0" msgstr "P < 0" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 msgid "prevents the version from being installed" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " "negative integers. They are interpreted as follows (roughly speaking): " @@ -7486,7 +7649,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 msgid "" "If any specific-form records match an available package version then the " "first such record determines the priority of the package version. Failing " @@ -7495,14 +7658,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 msgid "" "For example, suppose the APT preferences file contains the three records " "presented earlier:" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, no-wrap msgid "" "Package: perl\n" @@ -7530,12 +7693,12 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "Wtedy:" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 msgid "" "The most recent available version of the <literal>perl</literal> package " "will be installed, so long as that version's version number begins with " @@ -7545,7 +7708,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 msgid "" "A version of any package other than <literal>perl</literal> that is " "available from the local system has priority over other versions, even " @@ -7553,7 +7716,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 msgid "" "A version of a package whose origin is not the local system but some other " "site listed in &sources-list; and which belongs to an <literal>unstable</" @@ -7562,12 +7725,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 msgid "Determination of Package Version and Distribution Properties" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 msgid "" "The locations listed in the &sources-list; file should provide " "<filename>Packages</filename> and <filename>Release</filename> files to " @@ -7575,27 +7738,27 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 msgid "the <literal>Package:</literal> line" msgstr "linia <literal>Package:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 msgid "gives the package name" msgstr "podaje nazwę pakietu" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 msgid "the <literal>Version:</literal> line" msgstr "linia <literal>Version:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 msgid "gives the version number for the named package" msgstr "podaje numer wersji danego pakietu" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 msgid "" "The <filename>Packages</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable>/" @@ -7608,12 +7771,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "linia <literal>Archive:</literal> lub <literal>Suite:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 msgid "" "names the archive to which all the packages in the directory tree belong. " "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies " @@ -7624,18 +7787,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, no-wrap msgid "Pin: release a=stable\n" msgstr "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 msgid "the <literal>Codename:</literal> line" msgstr "linia <literal>Codename:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 msgid "" "names the codename to which all the packages in the directory tree belong. " "For example, the line \"Codename: &testing-codename;\" specifies that all of " @@ -7646,14 +7809,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, fuzzy, no-wrap #| msgid "Pin: release a=stable\n" msgid "Pin: release n=&testing-codename;\n" msgstr "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 msgid "" "names the release version. For example, the packages in the tree might " "belong to Debian GNU/Linux release version 3.0. Note that there is normally " @@ -7663,7 +7826,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, no-wrap msgid "" "Pin: release v=3.0\n" @@ -7675,12 +7838,12 @@ msgstr "" "Pin: release 3.0\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 msgid "the <literal>Component:</literal> line" msgstr "linia <literal>Component:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 msgid "" "names the licensing component associated with the packages in the directory " "tree of the <filename>Release</filename> file. For example, the line " @@ -7691,18 +7854,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, no-wrap msgid "Pin: release c=main\n" msgstr "Pin: release c=main\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 msgid "the <literal>Origin:</literal> line" msgstr "linia <literal>Origin:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 msgid "" "names the originator of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -7711,18 +7874,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, no-wrap msgid "Pin: release o=Debian\n" msgstr "Pin: release o=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 msgid "the <literal>Label:</literal> line" msgstr "linia <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 msgid "" "names the label of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -7731,13 +7894,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, no-wrap msgid "Pin: release l=Debian\n" msgstr "Pin: release l=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 msgid "" "The <filename>Release</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for " @@ -7751,7 +7914,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " "files retrieved from locations listed in the &sources-list; file are stored " @@ -7766,12 +7929,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 msgid "Optional Lines in an APT Preferences Record" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 msgid "" "Each record in the APT preferences file can optionally begin with one or " "more lines beginning with the word <literal>Explanation:</literal>. This " @@ -7779,12 +7942,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 msgid "Tracking Stable" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, fuzzy, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -7808,7 +7971,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -7818,8 +7981,8 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 -#: apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 +#: apt_preferences.5.xml:675 #, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -7831,7 +7994,7 @@ msgstr "" "apt-get dist-upgrade\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -7840,13 +8003,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "apt-get install <replaceable>pakiet</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>testing</literal> distribution; the package " @@ -7855,12 +8018,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 msgid "Tracking Testing or Unstable" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, no-wrap msgid "" "Package: *\n" @@ -7888,7 +8051,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 msgid "" "The following APT preferences file will cause APT to assign a high priority " "to package versions from the <literal>testing</literal> distribution, a " @@ -7899,7 +8062,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -7908,13 +8071,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "apt-get install <replaceable>pakiet</replaceable>/unstable\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>unstable</literal> distribution. " @@ -7926,12 +8089,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, fuzzy, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package versions\n" @@ -7965,7 +8128,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -7980,7 +8143,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest version(s) in " @@ -7989,13 +8152,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "apt-get install <replaceable>pakiet</replaceable>/sid\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>sid</literal> distribution. Thereafter, " @@ -8007,12 +8170,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 msgid "&file-preferences;" msgstr "&file-preferences;" #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -10054,6 +10217,32 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" msgid "Which will use the already fetched archives on the disc." msgstr "Które użyje pobranych uprzednio archiwów z dysku." +#~ msgid "<option>--md5</option>" +#~ msgstr "<option>--md5</option>" + +#~ msgid "unmarkauto" +#~ msgstr "unmarkauto" + +#~ msgid "<option>-h</option>" +#~ msgstr "<option>-h</option>" + +#~ msgid "<option>--help</option>" +#~ msgstr "<option>--help</option>" + +# +#~ msgid "Show a short usage summary." +#~ msgstr "Wyświetla krótkie informacje na temat użytkowania." + +#~ msgid "<option>-v</option>" +#~ msgstr "<option>-v</option>" + +#~ msgid "<option>--version</option>" +#~ msgstr "<option>--version</option>" + +# +#~ msgid "Show the program version." +#~ msgstr "Wyświetla wersję programu." + # #~ msgid "APT package handling utility -- cache manipulator" #~ msgstr "Narzędzie zarządzania pakietami APT -- manipulator bufora" @@ -10085,8 +10274,12 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku." #~ "Użycie HTTP do uzyskania dostępu do archiwum na komputerze nonus.debian." #~ "org, w katalogu debian-non-US." -#~ msgid "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" -#~ msgstr "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" +#~ msgid "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" +#~ msgstr "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" #~ msgid "OPTIONS" #~ msgstr "OPCJE" diff --git a/doc/po/pt.po b/doc/po/pt.po index ca1252475..69a19afa1 100644 --- a/doc/po/pt.po +++ b/doc/po/pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.8.0~pre1\n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-08-25 23:07+0100\n" "Last-Translator: Américo Monteiro <a_monteiro@netcabo.pt>\n" "Language-Team: Portuguese <traduz@debianpt.org>\n" @@ -763,7 +763,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 #: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 -#: apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 +#: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 msgid "Description" @@ -1279,7 +1279,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 #: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "opções" @@ -1306,7 +1306,7 @@ msgstr "" "<literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1332,12 +1332,12 @@ msgstr "" "pacote. Item de Configuração: <literal>Dir::Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1451,7 +1451,7 @@ msgstr "" "<literal>APT::Cache::ShowFull</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1568,14 +1568,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 -#: apt-sortpkgs.1.xml:67 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 +#: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 -#: apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Ficheiros" @@ -1586,9 +1586,9 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 -#: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 #: sources.list.5.xml:234 msgid "See Also" msgstr "Veja também" @@ -1600,8 +1600,8 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 -#: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 +#: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnóstico" @@ -1730,12 +1730,12 @@ msgstr "" "\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Opções" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1988,7 +1988,7 @@ msgid "Just show the contents of the configuration space." msgstr "Apenas mostra o conteúdo do espaço de configuração." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -3131,27 +3131,49 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" -msgstr "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 -msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." +msgid "" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" -"Gera sumários MD5. A predefinição é ligado, quando desligado os ficheiros " -"índice gerados não terão campos MD5Sum onde possíveis. Item de Configuração: " -"<literal>APT::FTPArchive::MD5</literal>" +"Valores para os campos de metadados adicionais no ficheiro Release são " +"tomados a partir das variáveis correspondentes sob <literal>APT::FTPArchive::" +"Release</literal>, ex. <literal>APT::FTPArchive::Release::Origin</literal>. " +"Os campos suportados são: <literal>Origin</literal>, <literal>Label</" +"literal>, <literal>Suite</literal>, <literal>Version</literal>, " +"<literal>Codename</literal>, <literal>Date</literal>, " +"<literal>Architectures</literal>, <literal>Components</literal>, " +"<literal>Description</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3160,7 +3182,7 @@ msgstr "" "generate. Item de configuração: <literal>APT::FTPArchive::DB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3174,12 +3196,12 @@ msgstr "" "<literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3192,12 +3214,12 @@ msgstr "" "option>. Item de Configuração: <literal>APT::FTPArchive::DeLinkAct</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3213,12 +3235,12 @@ msgstr "" "de Configuração: <literal>APT::FTPArchive::Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3229,12 +3251,12 @@ msgstr "" "SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3243,12 +3265,12 @@ msgstr "" "<literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3262,12 +3284,12 @@ msgstr "" "FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3291,12 +3313,12 @@ msgstr "" "as verificações extras serão desnecessárias." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3311,19 +3333,19 @@ msgstr "" "<filename>Translation-en</filename> só pode ser criado no comando generate." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 #: sources.list.5.xml:198 msgid "Examples" msgstr "Examples" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> pacotes <replaceable>directório</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3332,7 +3354,7 @@ msgstr "" "pacotes binários (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -4672,8 +4694,24 @@ msgstr "" "Actualiza o chaveiro local com o chaveiro das chaves de arquivos Debian e " "remove do chaveiro as chaves de arquivo que já não são válidas." +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +#, fuzzy +#| msgid "update" +msgid "net-update" +msgstr "update" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch from. " +"APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4682,12 +4720,12 @@ msgstr "" "secção prévia." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>nome-de-ficheiro</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -4704,53 +4742,57 @@ msgstr "" "chaves são adicionadas a este." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Base de dados local de confiança de chaves de arquivos." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Chaveiro das chaves de confiança dos arquivos Debian." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "Chaveiro das chaves de confiança removidas dos arquivos Debian." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" #. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 +#, fuzzy +#| msgid "" +#| "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " +#| "August 2009</date>" msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " "Agosto 2009</date>" @@ -4767,13 +4809,22 @@ msgstr "marca/desmarca um pacote como sendo instalado automaticamente" #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #: apt-mark.8.xml:39 +#, fuzzy +#| msgid "" +#| " <command>apt-mark</command> <arg><option>-hv</option></arg> " +#| "<arg><option>-f=<replaceable>FILENAME</replaceable></option></arg> <group " +#| "choice=\"plain\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg " +#| "choice=\"plain\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </" +#| "group> <arg choice=\"plain\" rep=\"repeat\"><replaceable>package</" +#| "replaceable></arg> </arg> <arg choice=\"plain\">showauto</arg> </group>" msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" "\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain" -"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg " +"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain" +"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg " "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" -"arg> <arg choice=\"plain\">showauto</arg> </group>" +"arg> </group>" msgstr "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>NOME DE FICHEIRO</replaceable></option></arg> <group choice=" @@ -4783,7 +4834,7 @@ msgstr "" "arg> <arg choice=\"plain\">showauto</arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." @@ -4792,7 +4843,7 @@ msgstr "" "sendo instalado automaticamente." #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -4808,14 +4859,21 @@ msgstr "" "command> ou <command>aptitude</command> (exemplos)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +#, fuzzy +#| msgid "markauto" +msgid "auto" msgstr "markauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 +#, fuzzy +#| msgid "" +#| "<literal>markauto</literal> is used to mark a package as being " +#| "automatically installed, which will cause the package to be removed when " +#| "no more manually installed packages depend on this package." msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" @@ -4824,14 +4882,19 @@ msgstr "" "nenhum pacote instalado manualmente depender deste pacote." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" -msgstr "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 +#, fuzzy +#| msgid "" +#| "<literal>unmarkauto</literal> is used to mark a package as being manually " +#| "installed, which will prevent the package from being automatically " +#| "removed if no other packages depend on it." msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" @@ -4840,21 +4903,95 @@ msgstr "" "automaticamente se nenhum outro pacote depender dele." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 +#: apt-mark.8.xml:85 +msgid "hold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:86 +msgid "" +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg --set-" +"selections</command> and the state is therefore maintained by &dpkg; and not " +"effected by the <option>--filename</option> option." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:96 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." +msgstr "" +"<literal>showauto</literal> é usado para escrever uma lista dos pacotes " +"instalados automaticamente com cada pacote numa linha nova." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:101 msgid "showauto" msgstr "showauto" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:102 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." msgid "" "<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" "<literal>showauto</literal> é usado para escrever uma lista dos pacotes " "instalados automaticamente com cada pacote numa linha nova." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:96 +#: apt-mark.8.xml:109 +#, fuzzy +#| msgid "showauto" +msgid "showmanual" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:116 +#, fuzzy +#| msgid "showauto" +msgid "showhold" +msgstr "showauto" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:117 +#, fuzzy +#| msgid "" +#| "<literal>showauto</literal> is used to print a list of automatically " +#| "installed packages with each package on a new line." +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." +msgstr "" +"<literal>showauto</literal> é usado para escrever uma lista dos pacotes " +"instalados automaticamente com cada pacote numa linha nova." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:130 msgid "" "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" @@ -4862,7 +4999,7 @@ msgstr "" "option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 +#: apt-mark.8.xml:131 msgid "" "<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" "option>" @@ -4871,7 +5008,7 @@ msgstr "" "filename></option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:134 msgid "" "Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" "filename> instead of the default location, which is " @@ -4883,48 +5020,18 @@ msgstr "" "localização predefinida, a qual é <filename>extended_status</filename> no " "directório definido pelo Item de Configuração: <literal>Dir::State</literal>." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" -msgstr "<option>-h</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" -msgstr "<option>--help</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." -msgstr "Mostra um curto sumário de utilização." - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" -msgstr "<option>-v</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" -msgstr "<option>--version</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." -msgstr "Mostra a versão do programa." - #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr " &file-extended_states;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "&apt-get;,&aptitude;,&apt-conf;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -7787,32 +7894,50 @@ msgstr "priority 1" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #: apt_preferences.5.xml:107 +#, fuzzy +#| msgid "" +#| "to the versions coming from archives which in their <filename>Release</" +#| "filename> files are marked as \"NotAutomatic: yes\" like the debian " +#| "experimental archive." msgid "" "to the versions coming from archives which in their <filename>Release</" -"filename> files are marked as \"NotAutomatic: yes\" like the debian " -"experimental archive." +"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" +"emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" "para as versões vindas de arquivos cujos ficheiros <filename>Release</" "filename> estejam marcados como \"NotAutomatic: yes\" como o arquivo " "experimental da debian." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 msgid "priority 100" msgstr "priority 100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -msgid "to the version that is already installed (if any)." -msgstr "para a versão que já está instalada (se alguma)." +#: apt_preferences.5.xml:114 +#, fuzzy +#| msgid "" +#| "to the versions coming from archives which in their <filename>Release</" +#| "filename> files are marked as \"NotAutomatic: yes\" like the debian " +#| "experimental archive." +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." +msgstr "" +"para as versões vindas de arquivos cujos ficheiros <filename>Release</" +"filename> estejam marcados como \"NotAutomatic: yes\" como o arquivo " +"experimental da debian." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 msgid "priority 500" msgstr "priority 500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 msgid "" "to the versions that are not installed and do not belong to the target " "release." @@ -7821,12 +7946,12 @@ msgstr "" "destinado." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 msgid "priority 990" msgstr "priority 990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 msgid "" "to the versions that are not installed and belong to the target release." msgstr "" @@ -7844,13 +7969,21 @@ msgstr "" "<placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 +#, fuzzy +#| msgid "" +#| "If the target release has not been specified then APT simply assigns " +#| "priority 100 to all installed package versions and priority 500 to all " +#| "uninstalled package versions, expect versions coming from archives which " +#| "in their <filename>Release</filename> files are marked as \"NotAutomatic: " +#| "yes\" - these versions get the priority 1." msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" "Se o lançamento de destino não foi especificado, então o APT simplesmente " "atribui prioridade 100 a todas as versões de pacotes instalados e prioridade " @@ -7859,7 +7992,7 @@ msgstr "" "marcados como \"NotAutomatic: yes\" - estas versões ficam com prioridade 1." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 msgid "" "APT then applies the following rules, listed in order of precedence, to " "determine which version of a package to install." @@ -7868,7 +8001,7 @@ msgstr "" "para determinar qual versão de um pacote deve instalar." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " "(\"Downgrading\" is installing a less recent version of a package in place " @@ -7884,12 +8017,12 @@ msgstr "" "arriscado.)" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 msgid "Install the highest priority version." msgstr "Instala a versão de prioridade mais alta." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 msgid "" "If two or more versions have the same priority, install the most recent one " "(that is, the one with the higher version number)." @@ -7898,7 +8031,7 @@ msgstr "" "(isto é, aquela com o número de versão mais alto)." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 msgid "" "If two or more versions have the same priority and version number but either " "the packages differ in some of their metadata or the <literal>--reinstall</" @@ -7909,7 +8042,7 @@ msgstr "" "reinstall</literal> é fornecida, instala a que foi desinstalada." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 msgid "" "In a typical situation, the installed version of a package (priority 100) " "is not as recent as one of the versions available from the sources listed in " @@ -7924,7 +8057,7 @@ msgstr "" "replaceable></command> ou <command>apt-get upgrade</command>." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " "recent than any of the other available versions. The package will not be " @@ -7938,7 +8071,7 @@ msgstr "" "get upgrade</command>." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 msgid "" "Sometimes the installed version of a package is more recent than the version " "belonging to the target release, but not as recent as a version belonging to " @@ -7957,12 +8090,12 @@ msgstr "" "prioridade mais alta que a versão instalada." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 msgid "The Effect of APT Preferences" msgstr "O Efeito das Preferências do APT" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 msgid "" "The APT preferences file allows the system administrator to control the " "assignment of priorities. The file consists of one or more multi-line " @@ -7975,7 +8108,7 @@ msgstr "" "um ou dois formatos, um formato específico e um formato geral." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " "specified packages and specified version or version range. For example, the " @@ -7991,7 +8124,7 @@ msgstr "" "espaços." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, no-wrap msgid "" "Package: perl\n" @@ -8003,7 +8136,7 @@ msgstr "" "Pin-Priority: 1001\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 msgid "" "The general form assigns a priority to all of the package versions in a " "given distribution (that is, to all the versions of packages that are listed " @@ -8018,7 +8151,7 @@ msgstr "" "nome de domínio totalmente qualificado do site." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 msgid "" "This general-form entry in the APT preferences file applies only to groups " "of packages. For example, the following record assigns a high priority to " @@ -8030,7 +8163,7 @@ msgstr "" "local." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, no-wrap msgid "" "Package: *\n" @@ -8042,7 +8175,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -8055,7 +8188,7 @@ msgstr "" "servidor identificadas pelo nome de máquina \"ftp.de.debian.org\"" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, no-wrap msgid "" "Package: *\n" @@ -8067,7 +8200,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " "distribution as specified in a <filename>Release</filename> file. What " @@ -8082,7 +8215,7 @@ msgstr "" "como \"Debian\" ou \"Ximian\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 msgid "" "The following record assigns a low priority to all package versions " "belonging to any distribution whose Archive name is \"<literal>unstable</" @@ -8093,7 +8226,7 @@ msgstr "" "\"<literal>unstable</literal>\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, no-wrap msgid "" "Package: *\n" @@ -8105,7 +8238,7 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 msgid "" "The following record assigns a high priority to all package versions " "belonging to any distribution whose Codename is \"<literal>&testing-codename;" @@ -8116,7 +8249,7 @@ msgstr "" "\"<literal>&testing-codename;</literal>\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, no-wrap msgid "" "Package: *\n" @@ -8128,7 +8261,7 @@ msgstr "" "Pin-Priority: 900\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 msgid "" "The following record assigns a high priority to all package versions " "belonging to any release whose Archive name is \"<literal>stable</literal>\" " @@ -8140,7 +8273,7 @@ msgstr "" "\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, no-wrap msgid "" "Package: *\n" @@ -8152,17 +8285,84 @@ msgstr "" "Pin-Priority: 500\n" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a glob" +"()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, fuzzy, no-wrap +#| msgid "" +#| "Package: *\n" +#| "Pin: release a=unstable\n" +#| "Pin-Priority: 50\n" +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +#, fuzzy +#| msgid "Packages" +msgid "Package" +msgstr "Packages" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:306 msgid "How APT Interprets Priorities" msgstr "Como o APT Interpreta as Prioridades" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 msgid "P > 1000" msgstr "P > 1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 msgid "" "causes a version to be installed even if this constitutes a downgrade of the " "package" @@ -8171,12 +8371,12 @@ msgstr "" "na versão do pacote (downgrade)" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 msgid "990 < P <=1000" msgstr "990 < P <=1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 msgid "" "causes a version to be installed even if it does not come from the target " "release, unless the installed version is more recent" @@ -8185,12 +8385,12 @@ msgstr "" "destino, a menos que a versão instalada seja mais recente" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 msgid "500 < P <=990" msgstr "500 < P <=990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 msgid "" "causes a version to be installed unless there is a version available " "belonging to the target release or the installed version is more recent" @@ -8200,12 +8400,12 @@ msgstr "" "mais recente" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 msgid "100 < P <=500" msgstr "100 < P <=500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 msgid "" "causes a version to be installed unless there is a version available " "belonging to some other distribution or the installed version is more recent" @@ -8215,12 +8415,12 @@ msgstr "" "recente" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 msgid "0 < P <=100" msgstr "0 < P <=100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 msgid "" "causes a version to be installed only if there is no installed version of " "the package" @@ -8229,17 +8429,17 @@ msgstr "" "instalada do pacote" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 msgid "P < 0" msgstr "P < 0" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 msgid "prevents the version from being installed" msgstr "previne a instalação da versão" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " "negative integers. They are interpreted as follows (roughly speaking): " @@ -8250,7 +8450,7 @@ msgstr "" "(falando grosso): <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 msgid "" "If any specific-form records match an available package version then the " "first such record determines the priority of the package version. Failing " @@ -8264,7 +8464,7 @@ msgstr "" "determina a prioridade da versão de pacote." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 msgid "" "For example, suppose the APT preferences file contains the three records " "presented earlier:" @@ -8273,7 +8473,7 @@ msgstr "" "registos apresentados atrás:" #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, no-wrap msgid "" "Package: perl\n" @@ -8301,12 +8501,12 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "Então:" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 msgid "" "The most recent available version of the <literal>perl</literal> package " "will be installed, so long as that version's version number begins with " @@ -8321,7 +8521,7 @@ msgstr "" "downgrade ao <literal>perl</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 msgid "" "A version of any package other than <literal>perl</literal> that is " "available from the local system has priority over other versions, even " @@ -8332,7 +8532,7 @@ msgstr "" "versões, mesmo versões que pertencem ao lançamento de destino." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 msgid "" "A version of a package whose origin is not the local system but some other " "site listed in &sources-list; and which belongs to an <literal>unstable</" @@ -8345,12 +8545,12 @@ msgstr "" "instalação e se nenhuma versão do pacote já estiver instalada." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 msgid "Determination of Package Version and Distribution Properties" msgstr "Determinação da Versão do Pacote e Propriedades da Distribuição" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 msgid "" "The locations listed in the &sources-list; file should provide " "<filename>Packages</filename> and <filename>Release</filename> files to " @@ -8361,27 +8561,27 @@ msgstr "" "descrever os pacotes disponíveis nessa localização." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 msgid "the <literal>Package:</literal> line" msgstr "a linha <literal>Package:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 msgid "gives the package name" msgstr "fornece o nome do pacote" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 msgid "the <literal>Version:</literal> line" msgstr "a linha <literal>Version:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 msgid "gives the version number for the named package" msgstr "fornece o número de versão do pacote nomeado" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 msgid "" "The <filename>Packages</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable>/" @@ -8402,12 +8602,12 @@ msgstr "" "definir prioridades do APT: <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "a linha <literal>Archive:</literal> ou <literal>Suite:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 msgid "" "names the archive to which all the packages in the directory tree belong. " "For example, the line \"Archive: stable\" or \"Suite: stable\" specifies " @@ -8424,18 +8624,18 @@ msgstr "" "requerer a linha:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, no-wrap msgid "Pin: release a=stable\n" msgstr "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 msgid "the <literal>Codename:</literal> line" msgstr "a linha <literal>Codename:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 msgid "" "names the codename to which all the packages in the directory tree belong. " "For example, the line \"Codename: &testing-codename;\" specifies that all of " @@ -8452,13 +8652,13 @@ msgstr "" "preferências do APT requer a linha:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, no-wrap msgid "Pin: release n=&testing-codename;\n" msgstr "Pin: release n=&testing-codename;\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 msgid "" "names the release version. For example, the packages in the tree might " "belong to Debian GNU/Linux release version 3.0. Note that there is normally " @@ -8474,7 +8674,7 @@ msgstr "" "seguintes linhas:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, no-wrap msgid "" "Pin: release v=3.0\n" @@ -8486,12 +8686,12 @@ msgstr "" "Pin: release 3.0\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 msgid "the <literal>Component:</literal> line" msgstr "a linha <literal>Component:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 msgid "" "names the licensing component associated with the packages in the directory " "tree of the <filename>Release</filename> file. For example, the line " @@ -8509,18 +8709,18 @@ msgstr "" "a linha:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, no-wrap msgid "Pin: release c=main\n" msgstr "Pin: release c=main\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 msgid "the <literal>Origin:</literal> line" msgstr "a linha <literal>Origin:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 msgid "" "names the originator of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8533,18 +8733,18 @@ msgstr "" "linha:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, no-wrap msgid "Pin: release o=Debian\n" msgstr "Pin: release o=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 msgid "the <literal>Label:</literal> line" msgstr "a linha <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 msgid "" "names the label of the packages in the directory tree of the " "<filename>Release</filename> file. Most commonly, this is <literal>Debian</" @@ -8557,13 +8757,13 @@ msgstr "" "linha:" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, no-wrap msgid "Pin: release l=Debian\n" msgstr "Pin: release l=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 msgid "" "The <filename>Release</filename> file is normally found in the directory " "<filename>.../dists/<replaceable>dist-name</replaceable></filename>: for " @@ -8586,7 +8786,7 @@ msgstr "" "APT: <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " "files retrieved from locations listed in the &sources-list; file are stored " @@ -8611,12 +8811,12 @@ msgstr "" "literal> da distribuição <literal>unstable</literal>." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 msgid "Optional Lines in an APT Preferences Record" msgstr "Linhas Opcionais num Registo de Preferências do APT" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 msgid "" "Each record in the APT preferences file can optionally begin with one or " "more lines beginning with the word <literal>Explanation:</literal>. This " @@ -8627,12 +8827,12 @@ msgstr "" "literal>. Isto disponibiliza um espaço para comentários." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 msgid "Tracking Stable" msgstr "Acompanhando Stable" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -8656,7 +8856,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8672,8 +8872,8 @@ msgstr "" "\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 -#: apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 +#: apt_preferences.5.xml:675 #, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -8685,7 +8885,7 @@ msgstr "" "apt-get dist-upgrade\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8698,13 +8898,13 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "apt-get install <replaceable>pacote</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>testing</literal> distribution; the package " @@ -8717,12 +8917,12 @@ msgstr "" "outra vez. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 msgid "Tracking Testing or Unstable" msgstr "Acompanhando Testing ou Unstable" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, no-wrap msgid "" "Package: *\n" @@ -8750,7 +8950,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 msgid "" "The following APT preferences file will cause APT to assign a high priority " "to package versions from the <literal>testing</literal> distribution, a " @@ -8767,7 +8967,7 @@ msgstr "" "<placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest " @@ -8780,13 +8980,13 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "apt-get install <replaceable>pacote</replaceable>/unstable\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>unstable</literal> distribution. " @@ -8805,12 +9005,12 @@ msgstr "" "versão instalada. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "Acompanhando a evolução de um nome de código de lançamento" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package versions\n" @@ -8844,7 +9044,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -8870,7 +9070,7 @@ msgstr "" "<placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 msgid "" "With a suitable &sources-list; file and the above preferences file, any of " "the following commands will cause APT to upgrade to the latest version(s) in " @@ -8883,13 +9083,13 @@ msgstr "" "codename;</literal>. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "apt-get install <replaceable>pacote</replaceable>/sid\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 msgid "" "The following command will cause APT to upgrade the specified package to the " "latest version from the <literal>sid</literal> distribution. Thereafter, " @@ -8908,12 +9108,12 @@ msgstr "" "instalada. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 msgid "&file-preferences;" msgstr "&file-preferences;" #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -10930,6 +11130,42 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" msgid "Which will use the already fetched archives on the disc." msgstr "O qual irá usar os arquivos já obtidos e que estão no disco." +#~ msgid "<option>--md5</option>" +#~ msgstr "<option>--md5</option>" + +#~ msgid "" +#~ "Generate MD5 sums. This defaults to on, when turned off the generated " +#~ "index files will not have MD5Sum fields where possible. Configuration " +#~ "Item: <literal>APT::FTPArchive::MD5</literal>" +#~ msgstr "" +#~ "Gera sumários MD5. A predefinição é ligado, quando desligado os ficheiros " +#~ "índice gerados não terão campos MD5Sum onde possíveis. Item de " +#~ "Configuração: <literal>APT::FTPArchive::MD5</literal>" + +#~ msgid "unmarkauto" +#~ msgstr "unmarkauto" + +#~ msgid "<option>-h</option>" +#~ msgstr "<option>-h</option>" + +#~ msgid "<option>--help</option>" +#~ msgstr "<option>--help</option>" + +#~ msgid "Show a short usage summary." +#~ msgstr "Mostra um curto sumário de utilização." + +#~ msgid "<option>-v</option>" +#~ msgstr "<option>-v</option>" + +#~ msgid "<option>--version</option>" +#~ msgstr "<option>--version</option>" + +#~ msgid "Show the program version." +#~ msgstr "Mostra a versão do programa." + +#~ msgid "to the version that is already installed (if any)." +#~ msgstr "para a versão que já está instalada (se alguma)." + #~ msgid "APT package handling utility -- cache manipulator" #~ msgstr "" #~ "Utilitário de manuseamento de pacotes do APT -- manipulador de cache" @@ -10989,8 +11225,12 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco." #~ "Usa HTTP para aceder ao arquivo em nonus.debian.org, sob o directório " #~ "debian-non-US." -#~ msgid "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" -#~ msgstr "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" +#~ msgid "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" +#~ msgstr "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" #~ msgid "OPTIONS" #~ msgstr "OPÇÕES" diff --git a/doc/po/pt_BR.po b/doc/po/pt_BR.po index 0b98064b9..43ae0ca42 100644 --- a/doc/po/pt_BR.po +++ b/doc/po/pt_BR.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2004-09-20 17:02+0000\n" "Last-Translator: André Luís Lopes <andrelop@debian.org>\n" "Language-Team: <debian-l10n-portuguese@lists.debian.org>\n" @@ -578,7 +578,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 #: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 -#: apt-key.8.xml:38 apt-mark.8.xml:55 apt-secure.8.xml:43 +#: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 #, fuzzy @@ -960,7 +960,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:92 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 #: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "" @@ -984,7 +984,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "" @@ -1005,12 +1005,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "" @@ -1109,7 +1109,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "" @@ -1205,14 +1205,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 -#: apt-sortpkgs.1.xml:67 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 +#: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:156 apt-mark.8.xml:125 -#: apt.conf.5.xml:1093 apt_preferences.5.xml:649 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "" @@ -1223,9 +1223,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 -#: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 #: sources.list.5.xml:234 #, fuzzy msgid "See Also" @@ -1238,8 +1238,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 -#: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 +#: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "" @@ -1338,12 +1338,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:142 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "" @@ -1548,7 +1548,7 @@ msgid "Just show the contents of the configuration space." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 #, fuzzy msgid "&apt-conf;" @@ -2466,31 +2466,38 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -2499,12 +2506,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -2513,12 +2520,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -2528,12 +2535,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -2541,24 +2548,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -2567,12 +2574,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -2586,12 +2593,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -2601,27 +2608,27 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 #: sources.list.5.xml:198 #, fuzzy msgid "Examples" msgstr "Exemplos" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3632,15 +3639,29 @@ msgid "" "from the keyring the archive keys which are no longer valid." msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-key.8.xml:140 +msgid "net-update" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-key.8.xml:144 +msgid "" +"Update the local keyring with the keys of a key server and removes from the " +"keyring the archive keys which are no longer valid. This requires an " +"installed wget and an APT build configured to have a server to fetch from. " +"APT in Debian does not support this command, but Ubuntu's APT does." +msgstr "" + #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:143 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:145 +#: apt-key.8.xml:161 #, fuzzy msgid "--keyring <replaceable>filename</replaceable>" msgstr "" @@ -3648,7 +3669,7 @@ msgstr "" "apt-get install <replaceable>pacote</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:146 +#: apt-key.8.xml:162 msgid "" "With this option it is possible to specify a specific keyring file the " "command should operate on. The default is that a command is executed on the " @@ -3659,44 +3680,44 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:159 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:161 +#: apt-key.8.xml:177 #, fuzzy msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt.conf</>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:165 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:166 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:169 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:170 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:179 +#: apt-key.8.xml:195 #, fuzzy msgid "&apt-get;, &apt-secure;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -3705,8 +3726,8 @@ msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 msgid "" -"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 " -"August 2009</date>" +"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 " +"April 2011</date>" msgstr "" #. type: Content of: <refentry><refnamediv><refname> @@ -3725,20 +3746,21 @@ msgid "" " <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-" "f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain" "\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain" -"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg " +"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain" +"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg " "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" -"arg> <arg choice=\"plain\">showauto</arg> </group>" +"arg> </group>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:56 +#: apt-mark.8.xml:57 msgid "" "<command>apt-mark</command> will change whether a package has been marked as " "being automatically installed." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:60 +#: apt-mark.8.xml:61 msgid "" "When you request that a package is installed, and as a result other packages " "are installed to satisfy its dependencies, the dependencies are marked as " @@ -3748,108 +3770,132 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:68 -msgid "markauto" +#: apt-mark.8.xml:69 +msgid "auto" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:69 +#: apt-mark.8.xml:70 msgid "" -"<literal>markauto</literal> is used to mark a package as being automatically " +"<literal>auto</literal> is used to mark a package as being automatically " "installed, which will cause the package to be removed when no more manually " "installed packages depend on this package." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:76 -msgid "unmarkauto" +#: apt-mark.8.xml:77 +msgid "manual" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:77 +#: apt-mark.8.xml:78 msgid "" -"<literal>unmarkauto</literal> is used to mark a package as being manually " +"<literal>manual</literal> is used to mark a package as being manually " "installed, which will prevent the package from being automatically removed " "if no other packages depend on it." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:84 -msgid "showauto" +#: apt-mark.8.xml:85 +msgid "hold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:85 +#: apt-mark.8.xml:86 msgid "" -"<literal>showauto</literal> is used to print a list of automatically " -"installed packages with each package on a new line." +"<literal>hold</literal> is used to mark a package as hold back, which will " +"prevent the package from being automatically installed, upgraded or " +"removed. The command is only a wrapper around <command>dpkg --set-" +"selections</command> and the state is therefore maintained by &dpkg; and not " +"effected by the <option>--filename</option> option." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-mark.8.xml:95 +msgid "unhold" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml:96 msgid "" -"<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" +"<literal>unhold</literal> is used to cancel a previously set hold on a " +"package to allow all actions again." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:97 -msgid "" -"<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" -"option>" +#: apt-mark.8.xml:101 +msgid "showauto" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:100 +#: apt-mark.8.xml:102 msgid "" -"Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" -"filename> instead of the default location, which is " -"<filename>extended_status</filename> in the directory defined by the " -"Configuration Item: <literal>Dir::State</literal>." +"<literal>showauto</literal> is used to print a list of automatically " +"installed packages with each package on a new line. All automatically " +"installed packages will be listed if no package is given. If packages are " +"given only those which are automatically installed will be shown." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:106 -msgid "<option>-h</option>" +#: apt-mark.8.xml:109 +msgid "showmanual" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-mark.8.xml:110 +msgid "" +"<literal>showmanual</literal> can be used in the same way as " +"<literal>showauto</literal> except that it will print a list of manually " +"installed packages instead." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:107 -msgid "<option>--help</option>" +#: apt-mark.8.xml:116 +msgid "showhold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:108 -msgid "Show a short usage summary." +#: apt-mark.8.xml:117 +msgid "" +"<literal>showhold</literal> is used to print a list of packages on hold in " +"the same way as for the other show commands." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:114 -msgid "<option>-v</option>" +#: apt-mark.8.xml:130 +msgid "" +"<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-mark.8.xml:115 -msgid "<option>--version</option>" +#: apt-mark.8.xml:131 +msgid "" +"<option>--file=<filename><replaceable>FILENAME</replaceable></filename></" +"option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-mark.8.xml:116 -msgid "Show the program version." +#: apt-mark.8.xml:134 +msgid "" +"Read/Write package stats from <filename><replaceable>FILENAME</replaceable></" +"filename> instead of the default location, which is " +"<filename>extended_status</filename> in the directory defined by the " +"Configuration Item: <literal>Dir::State</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-mark.8.xml:127 +#: apt-mark.8.xml:146 msgid " &file-extended_states;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:132 +#: apt-mark.8.xml:151 #, fuzzy msgid "&apt-get;,&aptitude;,&apt-conf;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" #. type: Content of: <refentry><refsect1><para> -#: apt-mark.8.xml:136 +#: apt-mark.8.xml:155 msgid "" "<command>apt-mark</command> returns zero on normal operation, non-zero on " "error." @@ -5950,30 +5996,34 @@ msgstr "prioridade 100" #: apt_preferences.5.xml:107 msgid "" "to the versions coming from archives which in their <filename>Release</" -"filename> files are marked as \"NotAutomatic: yes\" like the debian " -"experimental archive." +"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" +"emphasis> as \"ButAutomaticUpgrades: yes\" like the debian " +"<literal>experimental</literal> archive." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:112 +#: apt_preferences.5.xml:113 #, fuzzy msgid "priority 100" msgstr "prioridade 100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:113 -#, fuzzy -msgid "to the version that is already installed (if any)." -msgstr "para a instância que já esteja instalada (caso exista)." +#: apt_preferences.5.xml:114 +msgid "" +"to the version that is already installed (if any) and to the versions coming " +"from archives which in their <filename>Release</filename> files are marked " +"as \"NotAutomatic: yes\" and \"ButAutomaticUpgrades: yes\" like the debian " +"backports archive since <literal>squeeze-backports</literal>." +msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:117 +#: apt_preferences.5.xml:121 #, fuzzy msgid "priority 500" msgstr "prioridade 500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:118 +#: apt_preferences.5.xml:122 #, fuzzy msgid "" "to the versions that are not installed and do not belong to the target " @@ -5982,13 +6032,13 @@ msgstr "" "para as instâncias que não estã instaladas e que não pertencem a versão alvo." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:122 +#: apt_preferences.5.xml:126 #, fuzzy msgid "priority 990" msgstr "prioridade 990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:123 +#: apt_preferences.5.xml:127 #, fuzzy msgid "" "to the versions that are not installed and belong to the target release." @@ -6008,21 +6058,22 @@ msgstr "" "Atribuirá :" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:128 +#: apt_preferences.5.xml:132 #, fuzzy msgid "" "If the target release has not been specified then APT simply assigns " "priority 100 to all installed package versions and priority 500 to all " -"uninstalled package versions, expect versions coming from archives which in " +"uninstalled package versions, except versions coming from archives which in " "their <filename>Release</filename> files are marked as \"NotAutomatic: yes\" " -"- these versions get the priority 1." +"- these versions get the priority 1 or priority 100 if it is additionally " +"marked as \"ButAutomaticUpgrades: yes\"." msgstr "" "Caso nenhuma versão alvo tenha sido especificada, o APT simplesmente irá " "atribuir a prioridade 100 para todas as instâncias de pacotes instaladas e a " "prioridade 500 para todas as instâncias de pacotes não instaladas." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:134 +#: apt_preferences.5.xml:139 #, fuzzy msgid "" "APT then applies the following rules, listed in order of precedence, to " @@ -6032,7 +6083,7 @@ msgstr "" "determinar qual instância de um pacote instalar." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:137 +#: apt_preferences.5.xml:142 #, fuzzy msgid "" "Never downgrade unless the priority of an available version exceeds 1000. " @@ -6049,13 +6100,13 @@ msgstr "" "\"downgrade\" pode ser arriscado.)" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:143 +#: apt_preferences.5.xml:148 #, fuzzy msgid "Install the highest priority version." msgstr "Instala a instância de prioridade mais alta." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:144 +#: apt_preferences.5.xml:149 #, fuzzy msgid "" "If two or more versions have the same priority, install the most recent one " @@ -6065,7 +6116,7 @@ msgstr "" "mais recente (ou seja, aquela com o maior número de versão)." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:147 +#: apt_preferences.5.xml:152 #, fuzzy msgid "" "If two or more versions have the same priority and version number but either " @@ -6077,7 +6128,7 @@ msgstr "" "<literal>--reinstall</literal> seja fornecida, instala aquela desinstalada." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:153 +#: apt_preferences.5.xml:158 #, fuzzy msgid "" "In a typical situation, the installed version of a package (priority 100) " @@ -6094,7 +6145,7 @@ msgstr "" "forem executados." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:160 +#: apt_preferences.5.xml:165 #, fuzzy msgid "" "More rarely, the installed version of a package is <emphasis>more</emphasis> " @@ -6109,7 +6160,7 @@ msgstr "" "upgrade</command> forem executados." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:165 +#: apt_preferences.5.xml:170 #, fuzzy msgid "" "Sometimes the installed version of a package is more recent than the version " @@ -6129,13 +6180,13 @@ msgstr "" "disponíveis possuir uma prioridade maior do que a versão instalada." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:174 +#: apt_preferences.5.xml:179 #, fuzzy msgid "The Effect of APT Preferences" msgstr "O Efeito das Preferências do APT" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:176 +#: apt_preferences.5.xml:181 #, fuzzy msgid "" "The APT preferences file allows the system administrator to control the " @@ -6149,7 +6200,7 @@ msgstr "" "das duas formas, uma forma específica e uma forma geral." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:182 +#: apt_preferences.5.xml:187 #, fuzzy msgid "" "The specific form assigns a priority (a \"Pin-Priority\") to one or more " @@ -6165,7 +6216,7 @@ msgstr "" "com \"<literal>5.8</literal>\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:189 +#: apt_preferences.5.xml:194 #, fuzzy, no-wrap msgid "" "Package: perl\n" @@ -6178,7 +6229,7 @@ msgstr "" "Pin-Priority: 1001\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:195 +#: apt_preferences.5.xml:200 #, fuzzy msgid "" "The general form assigns a priority to all of the package versions in a " @@ -6194,7 +6245,7 @@ msgstr "" "identificado pelo nome de domínio totalmente qualificado do site Internet." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:201 +#: apt_preferences.5.xml:206 #, fuzzy msgid "" "This general-form entry in the APT preferences file applies only to groups " @@ -6207,7 +6258,7 @@ msgstr "" "no site local." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:206 +#: apt_preferences.5.xml:211 #, fuzzy, no-wrap msgid "" "Package: *\n" @@ -6220,7 +6271,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:211 +#: apt_preferences.5.xml:216 msgid "" "A note of caution: the keyword used here is \"<literal>origin</literal>\" " "which can be used to match a hostname. The following record will assign a " @@ -6229,7 +6280,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:215 +#: apt_preferences.5.xml:220 #, fuzzy, no-wrap msgid "" "Package: *\n" @@ -6242,7 +6293,7 @@ msgstr "" "Pin-Priority: 999\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:219 +#: apt_preferences.5.xml:224 #, fuzzy msgid "" "This should <emphasis>not</emphasis> be confused with the Origin of a " @@ -6259,7 +6310,7 @@ msgstr "" "como \"Debian\" ou \"Ximian\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:224 +#: apt_preferences.5.xml:229 #, fuzzy msgid "" "The following record assigns a low priority to all package versions " @@ -6271,7 +6322,7 @@ msgstr "" "\"<literal>unstable</literal>\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:228 +#: apt_preferences.5.xml:233 #, fuzzy, no-wrap msgid "" "Package: *\n" @@ -6284,7 +6335,7 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:233 +#: apt_preferences.5.xml:238 #, fuzzy msgid "" "The following record assigns a high priority to all package versions " @@ -6296,7 +6347,7 @@ msgstr "" "\"<literal>unstable</literal>\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:237 +#: apt_preferences.5.xml:242 #, fuzzy, no-wrap msgid "" "Package: *\n" @@ -6309,7 +6360,7 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:242 +#: apt_preferences.5.xml:247 #, fuzzy msgid "" "The following record assigns a high priority to all package versions " @@ -6322,7 +6373,7 @@ msgstr "" "literal>\"." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> -#: apt_preferences.5.xml:247 +#: apt_preferences.5.xml:252 #, fuzzy, no-wrap msgid "" "Package: *\n" @@ -6335,19 +6386,78 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:258 +#: apt_preferences.5.xml:262 +msgid "Regular expressions and glob() syntax" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:264 +msgid "" +"APT also supports pinning by glob() expressions and regular expressions " +"surrounded by /. For example, the following example assigns the priority 500 " +"to all packages from experimental where the name starts with gnome (as a glob" +"()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:273 +#, fuzzy, no-wrap +msgid "" +"Package: gnome* /kde/\n" +"Pin: release n=experimental\n" +"Pin-Priority: 500\n" +msgstr "" +"<programlisting>\n" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><para> +#: apt_preferences.5.xml:279 +msgid "" +"The rule for those expressions is that they can occur anywhere where a " +"string can occur. Those, the following pin assigns the priority 990 to all " +"packages from a release starting with karmic." +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><programlisting> +#: apt_preferences.5.xml:285 +#, fuzzy, no-wrap +msgid "" +"Package: *\n" +"Pin: release n=karmic*\n" +"Pin-Priority: 990\n" +msgstr "" +"<programlisting>\n" +"Package: *\n" +"Pin: release a=unstable\n" +"Pin-Priority: 50\n" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:290 +msgid "Package" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><literal> +#: apt_preferences.5.xml:296 +msgid "*" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><title> +#: apt_preferences.5.xml:306 #, fuzzy msgid "How APT Interprets Priorities" msgstr "Como o APT Interpreta Prioridades" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:266 +#: apt_preferences.5.xml:314 #, fuzzy msgid "P > 1000" msgstr "P > 1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:267 +#: apt_preferences.5.xml:315 #, fuzzy msgid "" "causes a version to be installed even if this constitutes a downgrade of the " @@ -6357,13 +6467,13 @@ msgstr "" "dowgrade do pacote" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:271 +#: apt_preferences.5.xml:319 #, fuzzy msgid "990 < P <=1000" msgstr "990 < P <=1000" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:272 +#: apt_preferences.5.xml:320 #, fuzzy msgid "" "causes a version to be installed even if it does not come from the target " @@ -6373,13 +6483,13 @@ msgstr "" "versão alvo, a menos que a versão instalada seja mais recente" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:277 +#: apt_preferences.5.xml:325 #, fuzzy msgid "500 < P <=990" msgstr "500 < P <=990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:278 +#: apt_preferences.5.xml:326 #, fuzzy msgid "" "causes a version to be installed unless there is a version available " @@ -6389,13 +6499,13 @@ msgstr "" "disponível pertencente a versão alvo ou a versão instalada seja mais recente" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:283 +#: apt_preferences.5.xml:331 #, fuzzy msgid "100 < P <=500" msgstr "100 < P <=500" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:284 +#: apt_preferences.5.xml:332 #, fuzzy msgid "" "causes a version to be installed unless there is a version available " @@ -6406,13 +6516,13 @@ msgstr "" "seja mais recente" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:289 +#: apt_preferences.5.xml:337 #, fuzzy msgid "0 < P <=100" msgstr "0 <= P <=100" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:290 +#: apt_preferences.5.xml:338 #, fuzzy msgid "" "causes a version to be installed only if there is no installed version of " @@ -6422,19 +6532,19 @@ msgstr "" "instalada do pacote" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:294 +#: apt_preferences.5.xml:342 #, fuzzy msgid "P < 0" msgstr "P < 0" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:295 +#: apt_preferences.5.xml:343 #, fuzzy msgid "prevents the version from being installed" msgstr "impede a versão de ser instalada" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:261 +#: apt_preferences.5.xml:309 #, fuzzy msgid "" "Priorities (P) assigned in the APT preferences file must be positive or " @@ -6446,7 +6556,7 @@ msgstr "" "seguir (a grosso modo):" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:300 +#: apt_preferences.5.xml:348 #, fuzzy msgid "" "If any specific-form records match an available package version then the " @@ -6462,7 +6572,7 @@ msgstr "" "determinará a prioridade da versão do pacote." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:306 +#: apt_preferences.5.xml:354 #, fuzzy msgid "" "For example, suppose the APT preferences file contains the three records " @@ -6472,7 +6582,7 @@ msgstr "" "registros apresentados anteriormente :" #. type: Content of: <refentry><refsect1><refsect2><programlisting> -#: apt_preferences.5.xml:310 +#: apt_preferences.5.xml:358 #, fuzzy, no-wrap msgid "" "Package: perl\n" @@ -6501,12 +6611,12 @@ msgstr "" "Pin-Priority: 50\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:323 +#: apt_preferences.5.xml:371 msgid "Then:" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:325 +#: apt_preferences.5.xml:373 #, fuzzy msgid "" "The most recent available version of the <literal>perl</literal> package " @@ -6522,7 +6632,7 @@ msgstr "" "será feito um downgrade do <literal>perl</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:330 +#: apt_preferences.5.xml:378 #, fuzzy msgid "" "A version of any package other than <literal>perl</literal> that is " @@ -6534,7 +6644,7 @@ msgstr "" "mesmo versões pertencentes a versão alvo." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> -#: apt_preferences.5.xml:334 +#: apt_preferences.5.xml:382 #, fuzzy msgid "" "A version of a package whose origin is not the local system but some other " @@ -6549,13 +6659,13 @@ msgstr "" "instalada." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:344 +#: apt_preferences.5.xml:392 #, fuzzy msgid "Determination of Package Version and Distribution Properties" msgstr "Determinação da Versão do Pacote e Propriedades da Distribuição" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:346 +#: apt_preferences.5.xml:394 #, fuzzy msgid "" "The locations listed in the &sources-list; file should provide " @@ -6567,31 +6677,31 @@ msgstr "" "os pacotes disponíveis nessas localidades." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:358 +#: apt_preferences.5.xml:406 #, fuzzy msgid "the <literal>Package:</literal> line" msgstr "a linha <literal>Package:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:359 +#: apt_preferences.5.xml:407 #, fuzzy msgid "gives the package name" msgstr "informa o nome do pacote" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:362 apt_preferences.5.xml:412 +#: apt_preferences.5.xml:410 apt_preferences.5.xml:460 #, fuzzy msgid "the <literal>Version:</literal> line" msgstr "a linha <literal>Version:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:363 +#: apt_preferences.5.xml:411 #, fuzzy msgid "gives the version number for the named package" msgstr "informa o número de versão do pacote" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:350 +#: apt_preferences.5.xml:398 #, fuzzy msgid "" "The <filename>Packages</filename> file is normally found in the directory " @@ -6613,13 +6723,13 @@ msgstr "" "do APT :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:379 +#: apt_preferences.5.xml:427 #, fuzzy msgid "the <literal>Archive:</literal> or <literal>Suite:</literal> line" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:380 +#: apt_preferences.5.xml:428 #, fuzzy msgid "" "names the archive to which all the packages in the directory tree belong. " @@ -6637,7 +6747,7 @@ msgstr "" "requerer a linha :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:390 +#: apt_preferences.5.xml:438 #, fuzzy, no-wrap msgid "Pin: release a=stable\n" msgstr "" @@ -6645,13 +6755,13 @@ msgstr "" "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:396 +#: apt_preferences.5.xml:444 #, fuzzy msgid "the <literal>Codename:</literal> line" msgstr "a linha <literal>Component:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:397 +#: apt_preferences.5.xml:445 #, fuzzy msgid "" "names the codename to which all the packages in the directory tree belong. " @@ -6669,7 +6779,7 @@ msgstr "" "requerer a linha :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:406 +#: apt_preferences.5.xml:454 #, fuzzy, no-wrap msgid "Pin: release n=&testing-codename;\n" msgstr "" @@ -6677,7 +6787,7 @@ msgstr "" "Pin: release a=stable\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:413 +#: apt_preferences.5.xml:461 #, fuzzy msgid "" "names the release version. For example, the packages in the tree might " @@ -6694,7 +6804,7 @@ msgstr "" "das linhas a seguir." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:422 +#: apt_preferences.5.xml:470 #, fuzzy, no-wrap msgid "" "Pin: release v=3.0\n" @@ -6707,13 +6817,13 @@ msgstr "" "Pin: release 3.0\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:431 +#: apt_preferences.5.xml:479 #, fuzzy msgid "the <literal>Component:</literal> line" msgstr "a linha <literal>Component:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:432 +#: apt_preferences.5.xml:480 #, fuzzy msgid "" "names the licensing component associated with the packages in the directory " @@ -6732,7 +6842,7 @@ msgstr "" "requerer a linha :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:441 +#: apt_preferences.5.xml:489 #, fuzzy, no-wrap msgid "Pin: release c=main\n" msgstr "" @@ -6740,13 +6850,13 @@ msgstr "" "Pin: release c=main\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:447 +#: apt_preferences.5.xml:495 #, fuzzy msgid "the <literal>Origin:</literal> line" msgstr "a linha <literal>Origin:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:448 +#: apt_preferences.5.xml:496 #, fuzzy msgid "" "names the originator of the packages in the directory tree of the " @@ -6760,7 +6870,7 @@ msgstr "" "requerer a linha :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:454 +#: apt_preferences.5.xml:502 #, fuzzy, no-wrap msgid "Pin: release o=Debian\n" msgstr "" @@ -6768,13 +6878,13 @@ msgstr "" "Pin: release o=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> -#: apt_preferences.5.xml:460 +#: apt_preferences.5.xml:508 #, fuzzy msgid "the <literal>Label:</literal> line" msgstr "a linha <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> -#: apt_preferences.5.xml:461 +#: apt_preferences.5.xml:509 #, fuzzy msgid "" "names the label of the packages in the directory tree of the " @@ -6787,7 +6897,7 @@ msgstr "" "arquivo de preferências do APT iria requerer a linha :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> -#: apt_preferences.5.xml:467 +#: apt_preferences.5.xml:515 #, fuzzy, no-wrap msgid "Pin: release l=Debian\n" msgstr "" @@ -6795,7 +6905,7 @@ msgstr "" "Pin: release l=Debian\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:368 +#: apt_preferences.5.xml:416 #, fuzzy msgid "" "The <filename>Release</filename> file is normally found in the directory " @@ -6819,7 +6929,7 @@ msgstr "" "do APT :" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:474 +#: apt_preferences.5.xml:522 #, fuzzy msgid "" "All of the <filename>Packages</filename> and <filename>Release</filename> " @@ -6845,13 +6955,13 @@ msgstr "" "<literal>unstable</literal>." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:487 +#: apt_preferences.5.xml:535 #, fuzzy msgid "Optional Lines in an APT Preferences Record" msgstr "Linhas Opcionais em um Registro de Preferências do APT" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:489 +#: apt_preferences.5.xml:537 #, fuzzy msgid "" "Each record in the APT preferences file can optionally begin with one or " @@ -6863,13 +6973,13 @@ msgstr "" "</literal>. Isto oferece um local para inserir comentários." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:498 +#: apt_preferences.5.xml:546 #, fuzzy msgid "Tracking Stable" msgstr "Acompanhando a Stable" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:506 +#: apt_preferences.5.xml:554 #, fuzzy, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated\n" @@ -6894,7 +7004,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:500 +#: apt_preferences.5.xml:548 #, fuzzy msgid "" "The following APT preferences file will cause APT to assign a priority " @@ -6910,8 +7020,8 @@ msgstr "" "outras distribuições <literal>Debian</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:523 apt_preferences.5.xml:569 -#: apt_preferences.5.xml:627 +#: apt_preferences.5.xml:571 apt_preferences.5.xml:617 +#: apt_preferences.5.xml:675 #, fuzzy, no-wrap msgid "" "apt-get install <replaceable>package-name</replaceable>\n" @@ -6924,7 +7034,7 @@ msgstr "" "apt-get dist-upgrade\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:518 +#: apt_preferences.5.xml:566 #, fuzzy msgid "" "With a suitable &sources-list; file and the above preferences file, any of " @@ -6937,7 +7047,7 @@ msgstr "" "ulítma(s) versão(ôes) <literal>stable</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:535 +#: apt_preferences.5.xml:583 #, fuzzy, no-wrap msgid "apt-get install <replaceable>package</replaceable>/testing\n" msgstr "" @@ -6945,7 +7055,7 @@ msgstr "" "apt-get install <replaceable>pacote</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:529 +#: apt_preferences.5.xml:577 #, fuzzy msgid "" "The following command will cause APT to upgrade the specified package to the " @@ -6958,13 +7068,13 @@ msgstr "" "atualizado novamente a menos que esse comando seja executado novamente." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:541 +#: apt_preferences.5.xml:589 #, fuzzy msgid "Tracking Testing or Unstable" msgstr "Acompanhando a Testing" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:550 +#: apt_preferences.5.xml:598 #, fuzzy, no-wrap msgid "" "Package: *\n" @@ -6993,7 +7103,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:543 +#: apt_preferences.5.xml:591 #, fuzzy msgid "" "The following APT preferences file will cause APT to assign a high priority " @@ -7010,7 +7120,7 @@ msgstr "" "versões de pacotes de outras distribuições <literal>Debian</literal>." #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:564 +#: apt_preferences.5.xml:612 #, fuzzy msgid "" "With a suitable &sources-list; file and the above preferences file, any of " @@ -7023,7 +7133,7 @@ msgstr "" "(s) última(s) versão(ões) <literal>testing</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:584 +#: apt_preferences.5.xml:632 #, fuzzy, no-wrap msgid "apt-get install <replaceable>package</replaceable>/unstable\n" msgstr "" @@ -7031,7 +7141,7 @@ msgstr "" "apt-get install <replaceable>pacote</replaceable>/unstable\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:575 +#: apt_preferences.5.xml:623 #, fuzzy msgid "" "The following command will cause APT to upgrade the specified package to the " @@ -7051,12 +7161,12 @@ msgstr "" "recente que a versão instalada." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt_preferences.5.xml:591 +#: apt_preferences.5.xml:639 msgid "Tracking the evolution of a codename release" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:605 +#: apt_preferences.5.xml:653 #, fuzzy, no-wrap msgid "" "Explanation: Uninstall or do not install any Debian-originated package versions\n" @@ -7086,7 +7196,7 @@ msgstr "" "Pin-Priority: -10\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:593 +#: apt_preferences.5.xml:641 msgid "" "The following APT preferences file will cause APT to assign a priority " "higher than the default (500) to all package versions belonging to a " @@ -7101,7 +7211,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:622 +#: apt_preferences.5.xml:670 #, fuzzy msgid "" "With a suitable &sources-list; file and the above preferences file, any of " @@ -7114,7 +7224,7 @@ msgstr "" "ulítma(s) versão(ôes) <literal>stable</literal>." #. type: Content of: <refentry><refsect1><refsect2><para><programlisting> -#: apt_preferences.5.xml:642 +#: apt_preferences.5.xml:690 #, fuzzy, no-wrap msgid "apt-get install <replaceable>package</replaceable>/sid\n" msgstr "" @@ -7122,7 +7232,7 @@ msgstr "" "apt-get install <replaceable>pacote</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt_preferences.5.xml:633 +#: apt_preferences.5.xml:681 #, fuzzy msgid "" "The following command will cause APT to upgrade the specified package to the " @@ -7142,13 +7252,13 @@ msgstr "" "recente que a versão instalada." #. type: Content of: <refentry><refsect1><variablelist> -#: apt_preferences.5.xml:651 +#: apt_preferences.5.xml:699 #, fuzzy msgid "&file-preferences;" msgstr "apt_preferences" #. type: Content of: <refentry><refsect1><para> -#: apt_preferences.5.xml:657 +#: apt_preferences.5.xml:705 #, fuzzy msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -8562,6 +8672,10 @@ msgstr "" msgid "Which will use the already fetched archives on the disc." msgstr "" +#, fuzzy +#~ msgid "to the version that is already installed (if any)." +#~ msgstr "para a instância que já esteja instalada (caso exista)." + #, fuzzy #~ msgid "" #~ "The <literal>Pin-Priority:</literal> line in each APT preferences record " diff --git a/po/apt-all.pot b/po/apt-all.pot deleted file mode 100644 index 73ed82195..000000000 --- a/po/apt-all.pot +++ /dev/null @@ -1,3104 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-12 17:42+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: cmdline/apt-cache.cc:156 -#, c-format -msgid "Package %s version %s has an unmet dep:\n" -msgstr "" - -#: cmdline/apt-cache.cc:284 -msgid "Total package names: " -msgstr "" - -#: cmdline/apt-cache.cc:286 -msgid "Total package structures: " -msgstr "" - -#: cmdline/apt-cache.cc:326 -msgid " Normal packages: " -msgstr "" - -#: cmdline/apt-cache.cc:327 -msgid " Pure virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:328 -msgid " Single virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:329 -msgid " Mixed virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:330 -msgid " Missing: " -msgstr "" - -#: cmdline/apt-cache.cc:332 -msgid "Total distinct versions: " -msgstr "" - -#: cmdline/apt-cache.cc:334 -msgid "Total distinct descriptions: " -msgstr "" - -#: cmdline/apt-cache.cc:336 -msgid "Total dependencies: " -msgstr "" - -#: cmdline/apt-cache.cc:339 -msgid "Total ver/file relations: " -msgstr "" - -#: cmdline/apt-cache.cc:341 -msgid "Total Desc/File relations: " -msgstr "" - -#: cmdline/apt-cache.cc:343 -msgid "Total Provides mappings: " -msgstr "" - -#: cmdline/apt-cache.cc:355 -msgid "Total globbed strings: " -msgstr "" - -#: cmdline/apt-cache.cc:369 -msgid "Total dependency version space: " -msgstr "" - -#: cmdline/apt-cache.cc:374 -msgid "Total slack space: " -msgstr "" - -#: cmdline/apt-cache.cc:382 -msgid "Total space accounted for: " -msgstr "" - -#: cmdline/apt-cache.cc:513 cmdline/apt-cache.cc:1194 -#, c-format -msgid "Package file %s is out of sync." -msgstr "" - -#: cmdline/apt-cache.cc:1273 -msgid "You must give at least one search pattern" -msgstr "" - -#: cmdline/apt-cache.cc:1429 cmdline/apt-cache.cc:1431 -#: cmdline/apt-cache.cc:1508 -msgid "No packages found" -msgstr "" - -#: cmdline/apt-cache.cc:1503 apt-pkg/cacheset.cc:440 -#, c-format -msgid "Unable to locate package %s" -msgstr "" - -#: cmdline/apt-cache.cc:1533 -msgid "Package files:" -msgstr "" - -#: cmdline/apt-cache.cc:1540 cmdline/apt-cache.cc:1638 -msgid "Cache is out of sync, can't x-ref a package file" -msgstr "" - -#. Show any packages have explicit pins -#: cmdline/apt-cache.cc:1554 -msgid "Pinned packages:" -msgstr "" - -#: cmdline/apt-cache.cc:1566 cmdline/apt-cache.cc:1618 -msgid "(not found)" -msgstr "" - -#: cmdline/apt-cache.cc:1575 -msgid " Installed: " -msgstr "" - -#: cmdline/apt-cache.cc:1576 -msgid " Candidate: " -msgstr "" - -#: cmdline/apt-cache.cc:1600 cmdline/apt-cache.cc:1608 -msgid "(none)" -msgstr "" - -#: cmdline/apt-cache.cc:1615 -msgid " Package pin: " -msgstr "" - -#. Show the priority tables -#: cmdline/apt-cache.cc:1624 -msgid " Version table:" -msgstr "" - -#: 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 -#: cmdline/apt-get.cc:2793 cmdline/apt-sortpkgs.cc:144 -#, c-format -msgid "%s %s for %s compiled on %s %s\n" -msgstr "" - -#: cmdline/apt-cache.cc:1745 -msgid "" -"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" -"\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" -" stats - Show some basic statistics\n" -" dump - Show the entire file in a terse form\n" -" dumpavail - Print an available file to stdout\n" -" unmet - Show unmet dependencies\n" -" search - Search the package list for a regex pattern\n" -" show - Show a readable record for the package\n" -" showauto - Display a list of automatically installed packages\n" -" depends - Show raw dependency information for a package\n" -" rdepends - Show reverse dependency information for a package\n" -" pkgnames - List the names of all packages in the system\n" -" dotty - Generate package graphs for GraphViz\n" -" xvcg - Generate package graphs for xvcg\n" -" policy - Show policy settings\n" -"\n" -"Options:\n" -" -h This help text.\n" -" -p=? The package cache.\n" -" -s=? The source cache.\n" -" -q Disable progress indicator.\n" -" -i Show only important deps for the unmet command.\n" -" -c=? Read this configuration file\n" -" -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 "" - -#: cmdline/apt-cdrom.cc:77 -msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'" -msgstr "" - -#: cmdline/apt-cdrom.cc:92 -msgid "Please insert a Disc in the drive and press enter" -msgstr "" - -#: cmdline/apt-cdrom.cc:127 -#, c-format -msgid "Failed to mount '%s' to '%s'" -msgstr "" - -#: cmdline/apt-cdrom.cc:162 -msgid "Repeat this process for the rest of the CDs in your set." -msgstr "" - -#: cmdline/apt-config.cc:41 -msgid "Arguments not in pairs" -msgstr "" - -#: cmdline/apt-config.cc:76 -msgid "" -"Usage: apt-config [options] command\n" -"\n" -"apt-config is a simple tool to read the APT config file\n" -"\n" -"Commands:\n" -" shell - Shell mode\n" -" dump - Show the configuration\n" -"\n" -"Options:\n" -" -h This help text.\n" -" -c=? Read this configuration file\n" -" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" -msgstr "" - -#: cmdline/apt-extracttemplates.cc:98 -#, c-format -msgid "%s not a valid DEB package." -msgstr "" - -#: cmdline/apt-extracttemplates.cc:232 -msgid "" -"Usage: apt-extracttemplates file1 [file2 ...]\n" -"\n" -"apt-extracttemplates is a tool to extract config and template info\n" -"from debian packages\n" -"\n" -"Options:\n" -" -h This help text\n" -" -t Set the temp dir\n" -" -c=? Read this configuration file\n" -" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" -msgstr "" - -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1171 -#, c-format -msgid "Unable to write to %s" -msgstr "" - -#: cmdline/apt-extracttemplates.cc:309 -msgid "Cannot get debconf version. Is debconf installed?" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:170 ftparchive/apt-ftparchive.cc:347 -msgid "Package extension list is too long" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:172 ftparchive/apt-ftparchive.cc:189 -#: ftparchive/apt-ftparchive.cc:212 ftparchive/apt-ftparchive.cc:262 -#: ftparchive/apt-ftparchive.cc:276 ftparchive/apt-ftparchive.cc:298 -#, c-format -msgid "Error processing directory %s" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:260 -msgid "Source extension list is too long" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:377 -msgid "Error writing header to contents file" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:407 -#, c-format -msgid "Error processing contents %s" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:595 -msgid "" -"Usage: apt-ftparchive [options] command\n" -"Commands: packages binarypath [overridefile [pathprefix]]\n" -" sources srcpath [overridefile [pathprefix]]\n" -" contents path\n" -" release path\n" -" generate config [groups]\n" -" clean config\n" -"\n" -"apt-ftparchive generates index files for Debian archives. It supports\n" -"many styles of generation from fully automated to functional replacements\n" -"for dpkg-scanpackages and dpkg-scansources\n" -"\n" -"apt-ftparchive generates Package files from a tree of .debs. The\n" -"Package file contains the contents of all the control fields from\n" -"each package as well as the MD5 hash and filesize. An override file\n" -"is supported to force the value of Priority and Section.\n" -"\n" -"Similarly apt-ftparchive generates Sources files from a tree of .dscs.\n" -"The --source-override option can be used to specify a src override file\n" -"\n" -"The 'packages' and 'sources' command should be run in the root of the\n" -"tree. BinaryPath should point to the base of the recursive search and \n" -"override file should contain the override flags. Pathprefix is\n" -"appended to the filename fields if present. Example usage from the \n" -"Debian archive:\n" -" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n" -" dists/potato/main/binary-i386/Packages\n" -"\n" -"Options:\n" -" -h This help text\n" -" --md5 Control MD5 generation\n" -" -s=? Source override file\n" -" -q Quiet\n" -" -d=? Select the optional caching database\n" -" --no-delink Enable delinking debug mode\n" -" --contents Control contents file generation\n" -" -c=? Read this configuration file\n" -" -o=? Set an arbitrary configuration option" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:801 -msgid "No selections matched" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:879 -#, c-format -msgid "Some files are missing in the package file group `%s'" -msgstr "" - -#: ftparchive/cachedb.cc:43 -#, c-format -msgid "DB was corrupted, file renamed to %s.old" -msgstr "" - -#: ftparchive/cachedb.cc:61 -#, c-format -msgid "DB is old, attempting to upgrade %s" -msgstr "" - -#: ftparchive/cachedb.cc:72 -msgid "" -"DB format is invalid. If you upgraded from an older version of apt, please " -"remove and re-create the database." -msgstr "" - -#: ftparchive/cachedb.cc:77 -#, c-format -msgid "Unable to open DB file %s: %s" -msgstr "" - -#: ftparchive/cachedb.cc:123 apt-inst/extract.cc:178 apt-inst/extract.cc:190 -#: apt-inst/extract.cc:207 apt-inst/deb/dpkgdb.cc:117 -#, c-format -msgid "Failed to stat %s" -msgstr "" - -#: ftparchive/cachedb.cc:242 -msgid "Archive has no control record" -msgstr "" - -#: ftparchive/cachedb.cc:448 -msgid "Unable to get a cursor" -msgstr "" - -#: ftparchive/writer.cc:73 -#, c-format -msgid "W: Unable to read directory %s\n" -msgstr "" - -#: ftparchive/writer.cc:78 -#, c-format -msgid "W: Unable to stat %s\n" -msgstr "" - -#: ftparchive/writer.cc:134 -msgid "E: " -msgstr "" - -#: ftparchive/writer.cc:136 -msgid "W: " -msgstr "" - -#: ftparchive/writer.cc:143 -msgid "E: Errors apply to file " -msgstr "" - -#: ftparchive/writer.cc:161 ftparchive/writer.cc:193 -#, c-format -msgid "Failed to resolve %s" -msgstr "" - -#: ftparchive/writer.cc:174 -msgid "Tree walking failed" -msgstr "" - -#: ftparchive/writer.cc:201 -#, c-format -msgid "Failed to open %s" -msgstr "" - -#: ftparchive/writer.cc:260 -#, c-format -msgid " DeLink %s [%s]\n" -msgstr "" - -#: ftparchive/writer.cc:268 -#, c-format -msgid "Failed to readlink %s" -msgstr "" - -#: ftparchive/writer.cc:272 -#, c-format -msgid "Failed to unlink %s" -msgstr "" - -#: ftparchive/writer.cc:279 -#, c-format -msgid "*** Failed to link %s to %s" -msgstr "" - -#: ftparchive/writer.cc:289 -#, c-format -msgid " DeLink limit of %sB hit.\n" -msgstr "" - -#: ftparchive/writer.cc:393 -msgid "Archive had no package field" -msgstr "" - -#: ftparchive/writer.cc:401 ftparchive/writer.cc:688 -#, c-format -msgid " %s has no override entry\n" -msgstr "" - -#: ftparchive/writer.cc:464 ftparchive/writer.cc:793 -#, c-format -msgid " %s maintainer is %s not %s\n" -msgstr "" - -#: ftparchive/writer.cc:698 -#, c-format -msgid " %s has no source override entry\n" -msgstr "" - -#: ftparchive/writer.cc:702 -#, c-format -msgid " %s has no binary override entry either\n" -msgstr "" - -#: ftparchive/contents.cc:321 -#, c-format -msgid "Internal error, could not locate member %s" -msgstr "" - -#: ftparchive/contents.cc:358 ftparchive/contents.cc:389 -msgid "realloc - Failed to allocate memory" -msgstr "" - -#: ftparchive/override.cc:34 ftparchive/override.cc:142 -#, c-format -msgid "Unable to open %s" -msgstr "" - -#: ftparchive/override.cc:60 ftparchive/override.cc:166 -#, c-format -msgid "Malformed override %s line %lu #1" -msgstr "" - -#: ftparchive/override.cc:74 ftparchive/override.cc:178 -#, c-format -msgid "Malformed override %s line %lu #2" -msgstr "" - -#: ftparchive/override.cc:88 ftparchive/override.cc:191 -#, c-format -msgid "Malformed override %s line %lu #3" -msgstr "" - -#: ftparchive/override.cc:127 ftparchive/override.cc:201 -#, c-format -msgid "Failed to read the override file %s" -msgstr "" - -#: ftparchive/multicompress.cc:72 -#, c-format -msgid "Unknown compression algorithm '%s'" -msgstr "" - -#: ftparchive/multicompress.cc:102 -#, c-format -msgid "Compressed output %s needs a compression set" -msgstr "" - -#: ftparchive/multicompress.cc:169 methods/rsh.cc:91 -msgid "Failed to create IPC pipe to subprocess" -msgstr "" - -#: ftparchive/multicompress.cc:195 -msgid "Failed to create FILE*" -msgstr "" - -#: ftparchive/multicompress.cc:198 -msgid "Failed to fork" -msgstr "" - -#: ftparchive/multicompress.cc:212 -msgid "Compress child" -msgstr "" - -#: ftparchive/multicompress.cc:235 -#, c-format -msgid "Internal error, failed to create %s" -msgstr "" - -#: ftparchive/multicompress.cc:286 -msgid "Failed to create subprocess IPC" -msgstr "" - -#: ftparchive/multicompress.cc:321 -msgid "Failed to exec compressor " -msgstr "" - -#: ftparchive/multicompress.cc:360 -msgid "decompressor" -msgstr "" - -#: ftparchive/multicompress.cc:403 -msgid "IO to subprocess/file failed" -msgstr "" - -#: ftparchive/multicompress.cc:455 -msgid "Failed to read while computing MD5" -msgstr "" - -#: ftparchive/multicompress.cc:472 -#, c-format -msgid "Problem unlinking %s" -msgstr "" - -#: ftparchive/multicompress.cc:487 apt-inst/extract.cc:185 -#, c-format -msgid "Failed to rename %s to %s" -msgstr "" - -#: cmdline/apt-get.cc:135 -msgid "Y" -msgstr "" - -#: cmdline/apt-get.cc:157 apt-pkg/cachefilter.cc:29 -#, c-format -msgid "Regex compilation error - %s" -msgstr "" - -#: cmdline/apt-get.cc:252 -msgid "The following packages have unmet dependencies:" -msgstr "" - -#: cmdline/apt-get.cc:342 -#, c-format -msgid "but %s is installed" -msgstr "" - -#: cmdline/apt-get.cc:344 -#, c-format -msgid "but %s is to be installed" -msgstr "" - -#: cmdline/apt-get.cc:351 -msgid "but it is not installable" -msgstr "" - -#: cmdline/apt-get.cc:353 -msgid "but it is a virtual package" -msgstr "" - -#: cmdline/apt-get.cc:356 -msgid "but it is not installed" -msgstr "" - -#: cmdline/apt-get.cc:356 -msgid "but it is not going to be installed" -msgstr "" - -#: cmdline/apt-get.cc:361 -msgid " or" -msgstr "" - -#: cmdline/apt-get.cc:392 -msgid "The following NEW packages will be installed:" -msgstr "" - -#: cmdline/apt-get.cc:420 -msgid "The following packages will be REMOVED:" -msgstr "" - -#: cmdline/apt-get.cc:442 -msgid "The following packages have been kept back:" -msgstr "" - -#: cmdline/apt-get.cc:465 -msgid "The following packages will be upgraded:" -msgstr "" - -#: cmdline/apt-get.cc:488 -msgid "The following packages will be DOWNGRADED:" -msgstr "" - -#: cmdline/apt-get.cc:508 -msgid "The following held packages will be changed:" -msgstr "" - -#: cmdline/apt-get.cc:563 -#, c-format -msgid "%s (due to %s) " -msgstr "" - -#: cmdline/apt-get.cc:571 -msgid "" -"WARNING: The following essential packages will be removed.\n" -"This should NOT be done unless you know exactly what you are doing!" -msgstr "" - -#: cmdline/apt-get.cc:605 -#, c-format -msgid "%lu upgraded, %lu newly installed, " -msgstr "" - -#: cmdline/apt-get.cc:609 -#, c-format -msgid "%lu reinstalled, " -msgstr "" - -#: cmdline/apt-get.cc:611 -#, c-format -msgid "%lu downgraded, " -msgstr "" - -#: cmdline/apt-get.cc:613 -#, c-format -msgid "%lu to remove and %lu not upgraded.\n" -msgstr "" - -#: cmdline/apt-get.cc:617 -#, c-format -msgid "%lu not fully installed or removed.\n" -msgstr "" - -#: cmdline/apt-get.cc:639 -#, c-format -msgid "Note, selecting '%s' for task '%s'\n" -msgstr "" - -#: cmdline/apt-get.cc:645 -#, c-format -msgid "Note, selecting '%s' for regex '%s'\n" -msgstr "" - -#: cmdline/apt-get.cc:662 -#, c-format -msgid "Package %s is a virtual package provided by:\n" -msgstr "" - -#: cmdline/apt-get.cc:673 -msgid " [Installed]" -msgstr "" - -#: cmdline/apt-get.cc:682 -msgid " [Not candidate version]" -msgstr "" - -#: cmdline/apt-get.cc:684 -msgid "You should explicitly select one to install." -msgstr "" - -#: cmdline/apt-get.cc:687 -#, c-format -msgid "" -"Package %s is not available, but is referred to by another package.\n" -"This may mean that the package is missing, has been obsoleted, or\n" -"is only available from another source\n" -msgstr "" - -#: cmdline/apt-get.cc:705 -msgid "However the following packages replace it:" -msgstr "" - -#: cmdline/apt-get.cc:717 -#, c-format -msgid "Package '%s' has no installation candidate" -msgstr "" - -#: cmdline/apt-get.cc:728 -#, c-format -msgid "Virtual packages like '%s' can't be removed\n" -msgstr "" - -#: cmdline/apt-get.cc:759 -#, c-format -msgid "Note, selecting '%s' instead of '%s'\n" -msgstr "" - -#: cmdline/apt-get.cc:789 -#, c-format -msgid "Skipping %s, it is already installed and upgrade is not set.\n" -msgstr "" - -#: cmdline/apt-get.cc:793 -#, c-format -msgid "Skipping %s, it is not installed and only upgrades are requested.\n" -msgstr "" - -#: cmdline/apt-get.cc:803 -#, c-format -msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n" -msgstr "" - -#: cmdline/apt-get.cc:808 -#, c-format -msgid "%s is already the newest version.\n" -msgstr "" - -#: cmdline/apt-get.cc:827 cmdline/apt-get.cc:2027 -#, c-format -msgid "%s set to manually installed.\n" -msgstr "" - -#: cmdline/apt-get.cc:853 -#, c-format -msgid "Selected version '%s' (%s) for '%s'\n" -msgstr "" - -#: cmdline/apt-get.cc:858 -#, c-format -msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" -msgstr "" - -#: cmdline/apt-get.cc:898 -#, c-format -msgid "Package %s is not installed, so not removed\n" -msgstr "" - -#: cmdline/apt-get.cc:973 -msgid "Correcting dependencies..." -msgstr "" - -#: cmdline/apt-get.cc:976 -msgid " failed." -msgstr "" - -#: cmdline/apt-get.cc:979 -msgid "Unable to correct dependencies" -msgstr "" - -#: cmdline/apt-get.cc:982 -msgid "Unable to minimize the upgrade set" -msgstr "" - -#: cmdline/apt-get.cc:984 -msgid " Done" -msgstr "" - -#: cmdline/apt-get.cc:988 -msgid "You might want to run 'apt-get -f install' to correct these." -msgstr "" - -#: cmdline/apt-get.cc:991 -msgid "Unmet dependencies. Try using -f." -msgstr "" - -#: cmdline/apt-get.cc:1016 -msgid "WARNING: The following packages cannot be authenticated!" -msgstr "" - -#: cmdline/apt-get.cc:1020 -msgid "Authentication warning overridden.\n" -msgstr "" - -#: cmdline/apt-get.cc:1027 -msgid "Install these packages without verification [y/N]? " -msgstr "" - -#: cmdline/apt-get.cc:1029 -msgid "Some packages could not be authenticated" -msgstr "" - -#: cmdline/apt-get.cc:1038 cmdline/apt-get.cc:1199 -msgid "There are problems and -y was used without --force-yes" -msgstr "" - -#: cmdline/apt-get.cc:1079 -msgid "Internal error, InstallPackages was called with broken packages!" -msgstr "" - -#: cmdline/apt-get.cc:1088 -msgid "Packages need to be removed but remove is disabled." -msgstr "" - -#: cmdline/apt-get.cc:1099 -msgid "Internal error, Ordering didn't finish" -msgstr "" - -#: cmdline/apt-get.cc:1137 -msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" -msgstr "" - -#. 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 -#: cmdline/apt-get.cc:1144 -#, c-format -msgid "Need to get %sB/%sB of archives.\n" -msgstr "" - -#. 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:1149 -#, c-format -msgid "Need to get %sB of archives.\n" -msgstr "" - -#. 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:1156 -#, c-format -msgid "After this operation, %sB of additional disk space will be used.\n" -msgstr "" - -#. 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:1161 -#, c-format -msgid "After this operation, %sB disk space will be freed.\n" -msgstr "" - -#: cmdline/apt-get.cc:1176 cmdline/apt-get.cc:1179 cmdline/apt-get.cc:2367 -#: cmdline/apt-get.cc:2370 -#, c-format -msgid "Couldn't determine free space in %s" -msgstr "" - -#: cmdline/apt-get.cc:1189 -#, c-format -msgid "You don't have enough free space in %s." -msgstr "" - -#: cmdline/apt-get.cc:1205 cmdline/apt-get.cc:1225 -msgid "Trivial Only specified but this is not a trivial operation." -msgstr "" - -#: cmdline/apt-get.cc:1207 -msgid "Yes, do as I say!" -msgstr "" - -#: cmdline/apt-get.cc:1209 -#, c-format -msgid "" -"You are about to do something potentially harmful.\n" -"To continue type in the phrase '%s'\n" -" ?] " -msgstr "" - -#: cmdline/apt-get.cc:1215 cmdline/apt-get.cc:1234 -msgid "Abort." -msgstr "" - -#: cmdline/apt-get.cc:1230 -msgid "Do you want to continue [Y/n]? " -msgstr "" - -#: cmdline/apt-get.cc:1302 cmdline/apt-get.cc:2427 apt-pkg/algorithms.cc:1470 -#, c-format -msgid "Failed to fetch %s %s\n" -msgstr "" - -#: cmdline/apt-get.cc:1320 -msgid "Some files failed to download" -msgstr "" - -#: cmdline/apt-get.cc:1321 cmdline/apt-get.cc:2436 -msgid "Download complete and in download only mode" -msgstr "" - -#: cmdline/apt-get.cc:1327 -msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" -"missing?" -msgstr "" - -#: cmdline/apt-get.cc:1331 -msgid "--fix-missing and media swapping is not currently supported" -msgstr "" - -#: cmdline/apt-get.cc:1336 -msgid "Unable to correct missing packages." -msgstr "" - -#: cmdline/apt-get.cc:1337 -msgid "Aborting install." -msgstr "" - -#: cmdline/apt-get.cc:1365 -msgid "" -"The following package disappeared from your system as\n" -"all files have been overwritten by other packages:" -msgid_plural "" -"The following packages disappeared from your system as\n" -"all files have been overwritten by other packages:" -msgstr[0] "" -msgstr[1] "" - -#: cmdline/apt-get.cc:1369 -msgid "Note: This is done automatic and on purpose by dpkg." -msgstr "" - -#: cmdline/apt-get.cc:1499 -#, c-format -msgid "Ignore unavailable target release '%s' of package '%s'" -msgstr "" - -#: cmdline/apt-get.cc:1531 -#, c-format -msgid "Picking '%s' as source package instead of '%s'\n" -msgstr "" - -#. if (VerTag.empty() == false && Last == 0) -#: cmdline/apt-get.cc:1569 -#, c-format -msgid "Ignore unavailable version '%s' of package '%s'" -msgstr "" - -#: cmdline/apt-get.cc:1585 -msgid "The update command takes no arguments" -msgstr "" - -#: cmdline/apt-get.cc:1647 -msgid "We are not supposed to delete stuff, can't start AutoRemover" -msgstr "" - -#: cmdline/apt-get.cc:1699 -msgid "" -"Hmm, seems like the AutoRemover destroyed something which really\n" -"shouldn't happen. Please file a bug report against apt." -msgstr "" - -#. -#. if (Packages == 1) -#. { -#. c1out << endl; -#. c1out << -#. _("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.") << endl; -#. } -#. -#: cmdline/apt-get.cc:1702 cmdline/apt-get.cc:1858 -msgid "The following information may help to resolve the situation:" -msgstr "" - -#: cmdline/apt-get.cc:1706 -msgid "Internal Error, AutoRemover broke stuff" -msgstr "" - -#: cmdline/apt-get.cc:1713 -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] "" -msgstr[1] "" - -#: cmdline/apt-get.cc:1717 -#, 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] "" -msgstr[1] "" - -#: cmdline/apt-get.cc:1719 -msgid "Use 'apt-get autoremove' to remove them." -msgstr "" - -#: cmdline/apt-get.cc:1738 -msgid "Internal error, AllUpgrade broke stuff" -msgstr "" - -#: cmdline/apt-get.cc:1828 -msgid "You might want to run 'apt-get -f install' to correct these:" -msgstr "" - -#: cmdline/apt-get.cc:1831 -msgid "" -"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " -"solution)." -msgstr "" - -#: cmdline/apt-get.cc:1843 -msgid "" -"Some packages could not be installed. This may mean that you have\n" -"requested an impossible situation or if you are using the unstable\n" -"distribution that some required packages have not yet been created\n" -"or been moved out of Incoming." -msgstr "" - -#: cmdline/apt-get.cc:1861 -msgid "Broken packages" -msgstr "" - -#: cmdline/apt-get.cc:1889 -msgid "The following extra packages will be installed:" -msgstr "" - -#: cmdline/apt-get.cc:1979 -msgid "Suggested packages:" -msgstr "" - -#: cmdline/apt-get.cc:1980 -msgid "Recommended packages:" -msgstr "" - -#: cmdline/apt-get.cc:2022 -#, c-format -msgid "Couldn't find package %s" -msgstr "" - -#: cmdline/apt-get.cc:2029 -#, c-format -msgid "%s set to automatically installed.\n" -msgstr "" - -#: cmdline/apt-get.cc:2050 -msgid "Calculating upgrade... " -msgstr "" - -#: cmdline/apt-get.cc:2053 methods/ftp.cc:707 methods/connect.cc:111 -msgid "Failed" -msgstr "" - -#: cmdline/apt-get.cc:2058 -msgid "Done" -msgstr "" - -#: cmdline/apt-get.cc:2125 cmdline/apt-get.cc:2133 -msgid "Internal error, problem resolver broke stuff" -msgstr "" - -#: cmdline/apt-get.cc:2157 cmdline/apt-get.cc:2190 -msgid "Unable to lock the download directory" -msgstr "" - -#: cmdline/apt-get.cc:2233 -msgid "Must specify at least one package to fetch source for" -msgstr "" - -#: cmdline/apt-get.cc:2273 cmdline/apt-get.cc:2554 -#, c-format -msgid "Unable to find a source package for %s" -msgstr "" - -#: cmdline/apt-get.cc:2289 -#, c-format -msgid "" -"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" -"%s\n" -msgstr "" - -#: cmdline/apt-get.cc:2294 -#, c-format -msgid "" -"Please use:\n" -"bzr get %s\n" -"to retrieve the latest (possibly unreleased) updates to the package.\n" -msgstr "" - -#: cmdline/apt-get.cc:2345 -#, c-format -msgid "Skipping already downloaded file '%s'\n" -msgstr "" - -#: cmdline/apt-get.cc:2380 -#, c-format -msgid "You don't have enough free space in %s" -msgstr "" - -#. 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 -#: cmdline/apt-get.cc:2388 -#, c-format -msgid "Need to get %sB/%sB of source archives.\n" -msgstr "" - -#. 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:2393 -#, c-format -msgid "Need to get %sB of source archives.\n" -msgstr "" - -#: cmdline/apt-get.cc:2399 -#, c-format -msgid "Fetch source %s\n" -msgstr "" - -#: cmdline/apt-get.cc:2432 -msgid "Failed to fetch some archives." -msgstr "" - -#: cmdline/apt-get.cc:2462 -#, c-format -msgid "Skipping unpack of already unpacked source in %s\n" -msgstr "" - -#: cmdline/apt-get.cc:2474 -#, c-format -msgid "Unpack command '%s' failed.\n" -msgstr "" - -#: cmdline/apt-get.cc:2475 -#, c-format -msgid "Check if the 'dpkg-dev' package is installed.\n" -msgstr "" - -#: cmdline/apt-get.cc:2492 -#, c-format -msgid "Build command '%s' failed.\n" -msgstr "" - -#: cmdline/apt-get.cc:2512 -msgid "Child process failed" -msgstr "" - -#: cmdline/apt-get.cc:2528 -msgid "Must specify at least one package to check builddeps for" -msgstr "" - -#: cmdline/apt-get.cc:2559 -#, c-format -msgid "Unable to get build-dependency information for %s" -msgstr "" - -#: cmdline/apt-get.cc:2579 -#, c-format -msgid "%s has no build depends.\n" -msgstr "" - -#: cmdline/apt-get.cc:2630 -#, c-format -msgid "" -"%s dependency for %s cannot be satisfied because the package %s cannot be " -"found" -msgstr "" - -#: cmdline/apt-get.cc:2683 -#, c-format -msgid "" -"%s dependency for %s cannot be satisfied because no available versions of " -"package %s can satisfy version requirements" -msgstr "" - -#: cmdline/apt-get.cc:2719 -#, c-format -msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" -msgstr "" - -#: cmdline/apt-get.cc:2746 -#, c-format -msgid "Failed to satisfy %s dependency for %s: %s" -msgstr "" - -#: cmdline/apt-get.cc:2762 -#, c-format -msgid "Build-dependencies for %s could not be satisfied." -msgstr "" - -#: cmdline/apt-get.cc:2767 -msgid "Failed to process build dependencies" -msgstr "" - -#: cmdline/apt-get.cc:2798 -msgid "Supported modules:" -msgstr "" - -#: cmdline/apt-get.cc:2839 -msgid "" -"Usage: apt-get [options] command\n" -" apt-get [options] install|remove pkg1 [pkg2 ...]\n" -" apt-get [options] source pkg1 [pkg2 ...]\n" -"\n" -"apt-get is a simple command line interface for downloading and\n" -"installing packages. The most frequently used commands are update\n" -"and install.\n" -"\n" -"Commands:\n" -" update - Retrieve new lists of packages\n" -" upgrade - Perform an upgrade\n" -" install - Install new packages (pkg is libc6 not libc6.deb)\n" -" remove - Remove packages\n" -" autoremove - Remove automatically all unused packages\n" -" purge - Remove packages and config files\n" -" source - Download source archives\n" -" build-dep - Configure build-dependencies for source packages\n" -" dist-upgrade - Distribution upgrade, see apt-get(8)\n" -" dselect-upgrade - Follow dselect selections\n" -" clean - Erase downloaded archive files\n" -" autoclean - Erase old downloaded archive files\n" -" check - Verify that there are no broken dependencies\n" -" markauto - Mark the given packages as automatically installed\n" -" unmarkauto - Mark the given packages as manually installed\n" -"\n" -"Options:\n" -" -h This help text.\n" -" -q Loggable output - no progress indicator\n" -" -qq No output except for errors\n" -" -d Download only - do NOT install or unpack archives\n" -" -s No-act. Perform ordering simulation\n" -" -y Assume Yes to all queries and do not prompt\n" -" -f Attempt to correct a system with broken dependencies in place\n" -" -m Attempt to continue if archives are unlocatable\n" -" -u Show a list of upgraded packages as well\n" -" -b Build the source package after fetching it\n" -" -V Show verbose version numbers\n" -" -c=? Read this configuration file\n" -" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" -"See the apt-get(8), sources.list(5) and apt.conf(5) manual\n" -"pages for more information and options.\n" -" This APT has Super Cow Powers.\n" -msgstr "" - -#: cmdline/apt-get.cc:2995 -msgid "" -"NOTE: This is only a simulation!\n" -" apt-get needs root privileges for real execution.\n" -" Keep also in mind that locking is deactivated,\n" -" so don't depend on the relevance to the real current situation!" -msgstr "" - -#: cmdline/acqprogress.cc:57 -msgid "Hit " -msgstr "" - -#: cmdline/acqprogress.cc:81 -msgid "Get:" -msgstr "" - -#: cmdline/acqprogress.cc:112 -msgid "Ign " -msgstr "" - -#: cmdline/acqprogress.cc:116 -msgid "Err " -msgstr "" - -#: cmdline/acqprogress.cc:137 -#, c-format -msgid "Fetched %sB in %s (%sB/s)\n" -msgstr "" - -#: cmdline/acqprogress.cc:227 -#, c-format -msgid " [Working]" -msgstr "" - -#: 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 "" - -#: cmdline/apt-sortpkgs.cc:86 -msgid "Unknown package record!" -msgstr "" - -#: cmdline/apt-sortpkgs.cc:150 -msgid "" -"Usage: apt-sortpkgs [options] file1 [file2 ...]\n" -"\n" -"apt-sortpkgs is a simple tool to sort package files. The -s option is used\n" -"to indicate what kind of file it is.\n" -"\n" -"Options:\n" -" -h This help text\n" -" -s Use source file sorting\n" -" -c=? Read this configuration file\n" -" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" -msgstr "" - -#: dselect/install:32 -msgid "Bad default setting!" -msgstr "" - -#: dselect/install:51 dselect/install:83 dselect/install:87 dselect/install:94 -#: dselect/install:105 dselect/update:45 -msgid "Press enter to continue." -msgstr "" - -#: dselect/install:91 -msgid "Do you want to erase any previously downloaded .deb files?" -msgstr "" - -#: dselect/install:101 -msgid "Some errors occurred while unpacking. Packages that were installed" -msgstr "" - -#: dselect/install:102 -msgid "will be configured. This may result in duplicate errors" -msgstr "" - -#: dselect/install:103 -msgid "or errors caused by missing dependencies. This is OK, only the errors" -msgstr "" - -#: dselect/install:104 -msgid "" -"above this message are important. Please fix them and run [I]nstall again" -msgstr "" - -#: dselect/update:30 -msgid "Merging available information" -msgstr "" - -#: apt-inst/contrib/extracttar.cc:114 -msgid "Failed to create pipes" -msgstr "" - -#: apt-inst/contrib/extracttar.cc:141 -msgid "Failed to exec gzip " -msgstr "" - -#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:204 -msgid "Corrupted archive" -msgstr "" - -#: apt-inst/contrib/extracttar.cc:193 -msgid "Tar checksum failed, archive corrupted" -msgstr "" - -#: apt-inst/contrib/extracttar.cc:296 -#, c-format -msgid "Unknown TAR header type %u, member %s" -msgstr "" - -#: apt-inst/contrib/arfile.cc:70 -msgid "Invalid archive signature" -msgstr "" - -#: apt-inst/contrib/arfile.cc:78 -msgid "Error reading archive member header" -msgstr "" - -#: apt-inst/contrib/arfile.cc:90 -#, c-format -msgid "Invalid archive member header %s" -msgstr "" - -#: apt-inst/contrib/arfile.cc:102 -msgid "Invalid archive member header" -msgstr "" - -#: apt-inst/contrib/arfile.cc:128 -msgid "Archive is too short" -msgstr "" - -#: apt-inst/contrib/arfile.cc:132 -msgid "Failed to read the archive headers" -msgstr "" - -#: apt-inst/filelist.cc:380 -msgid "DropNode called on still linked node" -msgstr "" - -#: apt-inst/filelist.cc:412 -msgid "Failed to locate the hash element!" -msgstr "" - -#: apt-inst/filelist.cc:459 -msgid "Failed to allocate diversion" -msgstr "" - -#: apt-inst/filelist.cc:464 -msgid "Internal error in AddDiversion" -msgstr "" - -#: apt-inst/filelist.cc:477 -#, c-format -msgid "Trying to overwrite a diversion, %s -> %s and %s/%s" -msgstr "" - -#: apt-inst/filelist.cc:506 -#, c-format -msgid "Double add of diversion %s -> %s" -msgstr "" - -#: apt-inst/filelist.cc:549 -#, c-format -msgid "Duplicate conf file %s/%s" -msgstr "" - -#: apt-inst/dirstream.cc:41 apt-inst/dirstream.cc:46 apt-inst/dirstream.cc:49 -#, c-format -msgid "Failed to write file %s" -msgstr "" - -#: apt-inst/dirstream.cc:92 apt-inst/dirstream.cc:100 -#, c-format -msgid "Failed to close file %s" -msgstr "" - -#: apt-inst/extract.cc:93 apt-inst/extract.cc:164 -#, c-format -msgid "The path %s is too long" -msgstr "" - -#: apt-inst/extract.cc:124 -#, c-format -msgid "Unpacking %s more than once" -msgstr "" - -#: apt-inst/extract.cc:134 -#, c-format -msgid "The directory %s is diverted" -msgstr "" - -#: apt-inst/extract.cc:144 -#, c-format -msgid "The package is trying to write to the diversion target %s/%s" -msgstr "" - -#: apt-inst/extract.cc:154 apt-inst/extract.cc:297 -msgid "The diversion path is too long" -msgstr "" - -#: apt-inst/extract.cc:240 -#, c-format -msgid "The directory %s is being replaced by a non-directory" -msgstr "" - -#: apt-inst/extract.cc:280 -msgid "Failed to locate node in its hash bucket" -msgstr "" - -#: apt-inst/extract.cc:284 -msgid "The path is too long" -msgstr "" - -#: apt-inst/extract.cc:414 -#, c-format -msgid "Overwrite package match with no version for %s" -msgstr "" - -#: apt-inst/extract.cc:431 -#, c-format -msgid "File %s/%s overwrites the one in the package %s" -msgstr "" - -#. Only warn if there are no sources.list.d. -#. Only warn if there is no sources.list file. -#: apt-inst/extract.cc:464 apt-pkg/contrib/cdromutl.cc:179 -#: apt-pkg/contrib/fileutl.cc:329 apt-pkg/sourcelist.cc:204 -#: apt-pkg/sourcelist.cc:210 apt-pkg/acquire.cc:450 apt-pkg/init.cc:100 -#: apt-pkg/init.cc:108 apt-pkg/clean.cc:33 apt-pkg/policy.cc:307 -#: methods/mirror.cc:87 -#, c-format -msgid "Unable to read %s" -msgstr "" - -#: apt-inst/extract.cc:491 -#, c-format -msgid "Unable to stat %s" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:51 apt-inst/deb/dpkgdb.cc:57 -#, c-format -msgid "Failed to remove %s" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:106 apt-inst/deb/dpkgdb.cc:108 -#, c-format -msgid "Unable to create %s" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:114 -#, c-format -msgid "Failed to stat %sinfo" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:119 -msgid "The info and temp directories need to be on the same filesystem" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1070 -#: apt-pkg/pkgcachegen.cc:1174 apt-pkg/pkgcachegen.cc:1180 -#: apt-pkg/pkgcachegen.cc:1326 -msgid "Reading package lists" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:176 -#, c-format -msgid "Failed to change to the admin dir %sinfo" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:197 apt-inst/deb/dpkgdb.cc:351 -#: apt-inst/deb/dpkgdb.cc:444 -msgid "Internal error getting a package name" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:201 apt-inst/deb/dpkgdb.cc:382 -msgid "Reading file listing" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:212 -#, c-format -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 "" - -#: apt-inst/deb/dpkgdb.cc:225 apt-inst/deb/dpkgdb.cc:238 -#, c-format -msgid "Failed reading the list file %sinfo/%s" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:262 -msgid "Internal error getting a node" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:305 -#, c-format -msgid "Failed to open the diversions file %sdiversions" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:320 -msgid "The diversion file is corrupted" -msgstr "" - -#: 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 "" - -#: apt-inst/deb/dpkgdb.cc:358 -msgid "Internal error adding a diversion" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:379 -msgid "The pkg cache must be initialized first" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:439 -#, c-format -msgid "Failed to find a Package: header, offset %lu" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:461 -#, c-format -msgid "Bad ConfFile section in the status file. Offset %lu" -msgstr "" - -#: apt-inst/deb/dpkgdb.cc:466 -#, c-format -msgid "Error parsing MD5. Offset %lu" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: apt-inst/deb/debfile.cc:110 -#, c-format -msgid "Couldn't change to %s" -msgstr "" - -#: apt-inst/deb/debfile.cc:140 -msgid "Internal error, could not locate member" -msgstr "" - -#: apt-inst/deb/debfile.cc:173 -msgid "Failed to locate a valid control file" -msgstr "" - -#: apt-inst/deb/debfile.cc:258 -msgid "Unparsable control file" -msgstr "" - -#: methods/bzip2.cc:65 -#, c-format -msgid "Couldn't open pipe for %s" -msgstr "" - -#: methods/bzip2.cc:109 -#, c-format -msgid "Read error from %s process" -msgstr "" - -#: methods/bzip2.cc:141 methods/bzip2.cc:150 methods/copy.cc:43 -#: methods/gzip.cc:93 methods/gzip.cc:102 methods/rred.cc:486 -#: methods/rred.cc:495 -msgid "Failed to stat" -msgstr "" - -#: methods/bzip2.cc:147 methods/copy.cc:80 methods/gzip.cc:99 -#: methods/rred.cc:492 -msgid "Failed to set modification time" -msgstr "" - -#: methods/cdrom.cc:199 -#, c-format -msgid "Unable to read the cdrom database %s" -msgstr "" - -#: methods/cdrom.cc:208 -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 "" - -#: methods/cdrom.cc:218 -msgid "Wrong CD-ROM" -msgstr "" - -#: methods/cdrom.cc:245 -#, c-format -msgid "Unable to unmount the CD-ROM in %s, it may still be in use." -msgstr "" - -#: methods/cdrom.cc:250 -msgid "Disk not found." -msgstr "" - -#: methods/cdrom.cc:258 methods/file.cc:79 methods/rsh.cc:264 -msgid "File not found" -msgstr "" - -#: methods/file.cc:44 -msgid "Invalid URI, local URIS must not start with //" -msgstr "" - -#. Login must be before getpeername otherwise dante won't work. -#: methods/ftp.cc:168 -msgid "Logging in" -msgstr "" - -#: methods/ftp.cc:174 -msgid "Unable to determine the peer name" -msgstr "" - -#: methods/ftp.cc:179 -msgid "Unable to determine the local name" -msgstr "" - -#: methods/ftp.cc:210 methods/ftp.cc:238 -#, c-format -msgid "The server refused the connection and said: %s" -msgstr "" - -#: methods/ftp.cc:216 -#, c-format -msgid "USER failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:223 -#, c-format -msgid "PASS failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:243 -msgid "" -"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin " -"is empty." -msgstr "" - -#: methods/ftp.cc:271 -#, c-format -msgid "Login script command '%s' failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:297 -#, c-format -msgid "TYPE failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226 -msgid "Connection timeout" -msgstr "" - -#: methods/ftp.cc:341 -msgid "Server closed the connection" -msgstr "" - -#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:802 methods/rsh.cc:190 -msgid "Read error" -msgstr "" - -#: methods/ftp.cc:351 methods/rsh.cc:197 -msgid "A response overflowed the buffer." -msgstr "" - -#: methods/ftp.cc:368 methods/ftp.cc:380 -msgid "Protocol corruption" -msgstr "" - -#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:844 methods/rsh.cc:232 -msgid "Write error" -msgstr "" - -#: methods/ftp.cc:692 methods/ftp.cc:698 methods/ftp.cc:734 -msgid "Could not create a socket" -msgstr "" - -#: methods/ftp.cc:703 -msgid "Could not connect data socket, connection timed out" -msgstr "" - -#: methods/ftp.cc:709 -msgid "Could not connect passive socket." -msgstr "" - -#: methods/ftp.cc:727 -msgid "getaddrinfo was unable to get a listening socket" -msgstr "" - -#: methods/ftp.cc:741 -msgid "Could not bind a socket" -msgstr "" - -#: methods/ftp.cc:745 -msgid "Could not listen on the socket" -msgstr "" - -#: methods/ftp.cc:752 -msgid "Could not determine the socket's name" -msgstr "" - -#: methods/ftp.cc:784 -msgid "Unable to send PORT command" -msgstr "" - -#: methods/ftp.cc:794 -#, c-format -msgid "Unknown address family %u (AF_*)" -msgstr "" - -#: methods/ftp.cc:803 -#, c-format -msgid "EPRT failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:823 -msgid "Data socket connect timed out" -msgstr "" - -#: methods/ftp.cc:830 -msgid "Unable to accept connection" -msgstr "" - -#: methods/ftp.cc:869 methods/http.cc:1006 methods/rsh.cc:302 -msgid "Problem hashing file" -msgstr "" - -#: methods/ftp.cc:882 -#, c-format -msgid "Unable to fetch file, server said '%s'" -msgstr "" - -#: methods/ftp.cc:897 methods/rsh.cc:321 -msgid "Data socket timed out" -msgstr "" - -#: methods/ftp.cc:927 -#, c-format -msgid "Data transfer failed, server said '%s'" -msgstr "" - -#. Get the files information -#: methods/ftp.cc:1004 -msgid "Query" -msgstr "" - -#: methods/ftp.cc:1116 -msgid "Unable to invoke " -msgstr "" - -#: methods/connect.cc:71 -#, c-format -msgid "Connecting to %s (%s)" -msgstr "" - -#: methods/connect.cc:82 -#, c-format -msgid "[IP: %s %s]" -msgstr "" - -#: methods/connect.cc:89 -#, c-format -msgid "Could not create a socket for %s (f=%u t=%u p=%u)" -msgstr "" - -#: methods/connect.cc:95 -#, c-format -msgid "Cannot initiate the connection to %s:%s (%s)." -msgstr "" - -#: methods/connect.cc:103 -#, c-format -msgid "Could not connect to %s:%s (%s), connection timed out" -msgstr "" - -#: methods/connect.cc:121 -#, c-format -msgid "Could not connect to %s:%s (%s)." -msgstr "" - -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc:149 methods/rsh.cc:424 -#, c-format -msgid "Connecting to %s" -msgstr "" - -#: methods/connect.cc:168 methods/connect.cc:187 -#, c-format -msgid "Could not resolve '%s'" -msgstr "" - -#: methods/connect.cc:193 -#, c-format -msgid "Temporary failure resolving '%s'" -msgstr "" - -#: methods/connect.cc:196 -#, c-format -msgid "Something wicked happened resolving '%s:%s' (%i - %s)" -msgstr "" - -#: methods/connect.cc:243 -#, c-format -msgid "Unable to connect to %s:%s:" -msgstr "" - -#. TRANSLATOR: %s is the trusted keyring parts directory -#: methods/gpgv.cc:71 -#, c-format -msgid "No keyring installed in %s." -msgstr "" - -#: methods/gpgv.cc:163 -msgid "" -"Internal error: Good signature, but could not determine key fingerprint?!" -msgstr "" - -#: methods/gpgv.cc:168 -msgid "At least one invalid signature was encountered." -msgstr "" - -#: methods/gpgv.cc:172 -msgid "Could not execute 'gpgv' to verify signature (is gpgv installed?)" -msgstr "" - -#: methods/gpgv.cc:177 -msgid "Unknown error executing gpgv" -msgstr "" - -#: methods/gpgv.cc:211 methods/gpgv.cc:218 -msgid "The following signatures were invalid:\n" -msgstr "" - -#: methods/gpgv.cc:225 -msgid "" -"The following signatures couldn't be verified because the public key is not " -"available:\n" -msgstr "" - -#: methods/http.cc:385 -msgid "Waiting for headers" -msgstr "" - -#: methods/http.cc:531 -#, c-format -msgid "Got a single header line over %u chars" -msgstr "" - -#: methods/http.cc:539 -msgid "Bad header line" -msgstr "" - -#: methods/http.cc:564 methods/http.cc:571 -msgid "The HTTP server sent an invalid reply header" -msgstr "" - -#: methods/http.cc:600 -msgid "The HTTP server sent an invalid Content-Length header" -msgstr "" - -#: methods/http.cc:615 -msgid "The HTTP server sent an invalid Content-Range header" -msgstr "" - -#: methods/http.cc:617 -msgid "This HTTP server has broken range support" -msgstr "" - -#: methods/http.cc:641 -msgid "Unknown date format" -msgstr "" - -#: methods/http.cc:799 -msgid "Select failed" -msgstr "" - -#: methods/http.cc:804 -msgid "Connection timed out" -msgstr "" - -#: methods/http.cc:827 -msgid "Error writing to output file" -msgstr "" - -#: methods/http.cc:858 -msgid "Error writing to file" -msgstr "" - -#: methods/http.cc:886 -msgid "Error writing to the file" -msgstr "" - -#: methods/http.cc:900 -msgid "Error reading from server. Remote end closed connection" -msgstr "" - -#: methods/http.cc:902 -msgid "Error reading from server" -msgstr "" - -#: methods/http.cc:991 apt-pkg/contrib/mmap.cc:281 -msgid "Failed to truncate file" -msgstr "" - -#: methods/http.cc:1160 -msgid "Bad header data" -msgstr "" - -#: methods/http.cc:1177 methods/http.cc:1232 -msgid "Connection failed" -msgstr "" - -#: methods/http.cc:1324 -msgid "Internal error" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:77 -msgid "Can't mmap an empty file" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:89 -#, c-format -msgid "Couldn't duplicate file descriptor %i" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:97 apt-pkg/contrib/mmap.cc:250 -#, c-format -msgid "Couldn't make mmap of %lu bytes" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:124 -msgid "Unable to close mmap" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:152 apt-pkg/contrib/mmap.cc:180 -msgid "Unable to synchronize mmap" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: apt-pkg/contrib/mmap.cc:402 -msgid "" -"Unable to increase size of the MMap as automatic growing is disabled by user." -msgstr "" - -#. 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 "" - -#. h means hours, min means minutes, s means seconds -#: apt-pkg/contrib/strutl.cc:378 -#, c-format -msgid "%lih %limin %lis" -msgstr "" - -#. min means minutes, s means seconds -#: apt-pkg/contrib/strutl.cc:385 -#, c-format -msgid "%limin %lis" -msgstr "" - -#. s means seconds -#: apt-pkg/contrib/strutl.cc:390 -#, c-format -msgid "%lis" -msgstr "" - -#: apt-pkg/contrib/strutl.cc:1119 -#, c-format -msgid "Selection %s not found" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:452 -#, c-format -msgid "Unrecognized type abbreviation: '%c'" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:510 -#, c-format -msgid "Opening configuration file %s" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:678 -#, c-format -msgid "Syntax error %s:%u: Block starts with no name." -msgstr "" - -#: apt-pkg/contrib/configuration.cc:697 -#, c-format -msgid "Syntax error %s:%u: Malformed tag" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:714 -#, c-format -msgid "Syntax error %s:%u: Extra junk after value" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:754 -#, c-format -msgid "Syntax error %s:%u: Directives can only be done at the top level" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:761 -#, c-format -msgid "Syntax error %s:%u: Too many nested includes" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:765 apt-pkg/contrib/configuration.cc:770 -#, c-format -msgid "Syntax error %s:%u: Included from here" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:774 -#, c-format -msgid "Syntax error %s:%u: Unsupported directive '%s'" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:777 -#, c-format -msgid "Syntax error %s:%u: clear directive requires an option tree as argument" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:827 -#, c-format -msgid "Syntax error %s:%u: Extra junk at end of file" -msgstr "" - -#: apt-pkg/contrib/progress.cc:153 -#, c-format -msgid "%c%s... Error!" -msgstr "" - -#: apt-pkg/contrib/progress.cc:155 -#, c-format -msgid "%c%s... Done" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:77 -#, c-format -msgid "Command line option '%c' [from %s] is not known." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:103 apt-pkg/contrib/cmndline.cc:111 -#: apt-pkg/contrib/cmndline.cc:119 -#, c-format -msgid "Command line option %s is not understood" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:124 -#, c-format -msgid "Command line option %s is not boolean" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:165 apt-pkg/contrib/cmndline.cc:186 -#, c-format -msgid "Option %s requires an argument." -msgstr "" - -#: 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 "" - -#: apt-pkg/contrib/cmndline.cc:236 -#, c-format -msgid "Option %s requires an integer argument, not '%s'" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:267 -#, c-format -msgid "Option '%s' is too long" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:300 -#, c-format -msgid "Sense %s is not understood, try true or false." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:350 -#, c-format -msgid "Invalid operation %s" -msgstr "" - -#: apt-pkg/contrib/cdromutl.cc:52 -#, c-format -msgid "Unable to stat the mount point %s" -msgstr "" - -#: 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 -#: methods/mirror.cc:93 -#, c-format -msgid "Unable to change to %s" -msgstr "" - -#: apt-pkg/contrib/cdromutl.cc:217 -msgid "Failed to stat the cdrom" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:154 -#, c-format -msgid "Not using locking for read only lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:159 -#, c-format -msgid "Could not open lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:177 -#, c-format -msgid "Not using locking for nfs mounted lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:181 -#, c-format -msgid "Could not get lock %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:321 -#, c-format -msgid "List of files can't be created as '%s' is not a directory" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:661 -#, c-format -msgid "Waited for %s but it wasn't there" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:673 -#, c-format -msgid "Sub-process %s received a segmentation fault." -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:675 -#, c-format -msgid "Sub-process %s received signal %u." -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:679 -#, c-format -msgid "Sub-process %s returned an error code (%u)" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:681 -#, c-format -msgid "Sub-process %s exited unexpectedly" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:746 -#, c-format -msgid "Could not open file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:763 -#, c-format -msgid "Could not open file descriptor %d" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:823 -#, c-format -msgid "read, still have %lu to read but none left" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:856 -#, c-format -msgid "write, still have %lu to write but couldn't" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:985 -#, c-format -msgid "Problem closing the gzip file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:988 -#, c-format -msgid "Problem closing the file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:993 -#, c-format -msgid "Problem renaming the file %s to %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1004 -#, c-format -msgid "Problem unlinking the file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1017 -msgid "Problem syncing the file" -msgstr "" - -#: apt-pkg/pkgcache.cc:145 -msgid "Empty package cache" -msgstr "" - -#: apt-pkg/pkgcache.cc:151 -msgid "The package cache file is corrupted" -msgstr "" - -#: apt-pkg/pkgcache.cc:156 -msgid "The package cache file is an incompatible version" -msgstr "" - -#: apt-pkg/pkgcache.cc:161 -#, c-format -msgid "This APT does not support the versioning system '%s'" -msgstr "" - -#: apt-pkg/pkgcache.cc:166 -msgid "The package cache was built for a different architecture" -msgstr "" - -#: apt-pkg/pkgcache.cc:293 -msgid "Depends" -msgstr "" - -#: apt-pkg/pkgcache.cc:293 -msgid "PreDepends" -msgstr "" - -#: apt-pkg/pkgcache.cc:293 -msgid "Suggests" -msgstr "" - -#: apt-pkg/pkgcache.cc:294 -msgid "Recommends" -msgstr "" - -#: apt-pkg/pkgcache.cc:294 -msgid "Conflicts" -msgstr "" - -#: apt-pkg/pkgcache.cc:294 -msgid "Replaces" -msgstr "" - -#: apt-pkg/pkgcache.cc:295 -msgid "Obsoletes" -msgstr "" - -#: apt-pkg/pkgcache.cc:295 -msgid "Breaks" -msgstr "" - -#: apt-pkg/pkgcache.cc:295 -msgid "Enhances" -msgstr "" - -#: apt-pkg/pkgcache.cc:306 -msgid "important" -msgstr "" - -#: apt-pkg/pkgcache.cc:306 -msgid "required" -msgstr "" - -#: apt-pkg/pkgcache.cc:306 -msgid "standard" -msgstr "" - -#: apt-pkg/pkgcache.cc:307 -msgid "optional" -msgstr "" - -#: apt-pkg/pkgcache.cc:307 -msgid "extra" -msgstr "" - -#: apt-pkg/depcache.cc:125 apt-pkg/depcache.cc:154 -msgid "Building dependency tree" -msgstr "" - -#: apt-pkg/depcache.cc:126 -msgid "Candidate versions" -msgstr "" - -#: apt-pkg/depcache.cc:155 -msgid "Dependency generation" -msgstr "" - -#: apt-pkg/depcache.cc:175 apt-pkg/depcache.cc:208 apt-pkg/depcache.cc:212 -msgid "Reading state information" -msgstr "" - -#: apt-pkg/depcache.cc:237 -#, c-format -msgid "Failed to open StateFile %s" -msgstr "" - -#: apt-pkg/depcache.cc:243 -#, c-format -msgid "Failed to write temporary StateFile %s" -msgstr "" - -#: apt-pkg/depcache.cc:922 -#, c-format -msgid "Internal error, group '%s' has no installable pseudo package" -msgstr "" - -#: apt-pkg/tagfile.cc:102 -#, c-format -msgid "Unable to parse package file %s (1)" -msgstr "" - -#: apt-pkg/tagfile.cc:189 -#, c-format -msgid "Unable to parse package file %s (2)" -msgstr "" - -#: apt-pkg/sourcelist.cc:92 -#, c-format -msgid "Malformed line %lu in source list %s ([option] unparseable)" -msgstr "" - -#: apt-pkg/sourcelist.cc:95 -#, c-format -msgid "Malformed line %lu in source list %s ([option] too short)" -msgstr "" - -#: apt-pkg/sourcelist.cc:106 -#, c-format -msgid "Malformed line %lu in source list %s ([%s] is not an assignment)" -msgstr "" - -#: apt-pkg/sourcelist.cc:112 -#, c-format -msgid "Malformed line %lu in source list %s ([%s] has no key)" -msgstr "" - -#: apt-pkg/sourcelist.cc:115 -#, c-format -msgid "Malformed line %lu in source list %s ([%s] key %s has no value)" -msgstr "" - -#: apt-pkg/sourcelist.cc:128 -#, c-format -msgid "Malformed line %lu in source list %s (URI)" -msgstr "" - -#: apt-pkg/sourcelist.cc:130 -#, c-format -msgid "Malformed line %lu in source list %s (dist)" -msgstr "" - -#: apt-pkg/sourcelist.cc:133 -#, c-format -msgid "Malformed line %lu in source list %s (URI parse)" -msgstr "" - -#: apt-pkg/sourcelist.cc:139 -#, c-format -msgid "Malformed line %lu in source list %s (absolute dist)" -msgstr "" - -#: apt-pkg/sourcelist.cc:146 -#, c-format -msgid "Malformed line %lu in source list %s (dist parse)" -msgstr "" - -#: apt-pkg/sourcelist.cc:244 -#, c-format -msgid "Opening %s" -msgstr "" - -#: apt-pkg/sourcelist.cc:261 apt-pkg/cdrom.cc:438 -#, c-format -msgid "Line %u too long in source list %s." -msgstr "" - -#: apt-pkg/sourcelist.cc:281 -#, c-format -msgid "Malformed line %u in source list %s (type)" -msgstr "" - -#: apt-pkg/sourcelist.cc:285 -#, c-format -msgid "Type '%s' is not known on line %u in source list %s" -msgstr "" - -#: 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 "" - -#: apt-pkg/packagemanager.cc:452 -#, c-format -msgid "" -"This installation run will require temporarily removing the essential " -"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 "" - -#: 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 "" - -#: apt-pkg/pkgrecords.cc:32 -#, c-format -msgid "Index file type '%s' is not supported" -msgstr "" - -#: apt-pkg/algorithms.cc:292 -#, c-format -msgid "" -"The package %s needs to be reinstalled, but I can't find an archive for it." -msgstr "" - -#: apt-pkg/algorithms.cc:1218 -msgid "" -"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " -"held packages." -msgstr "" - -#: apt-pkg/algorithms.cc:1220 -msgid "Unable to correct problems, you have held broken packages." -msgstr "" - -#: 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 "" - -#: apt-pkg/acquire.cc:79 -#, c-format -msgid "List directory %spartial is missing." -msgstr "" - -#: apt-pkg/acquire.cc:83 -#, c-format -msgid "Archives directory %spartial is missing." -msgstr "" - -#: apt-pkg/acquire.cc:91 -#, c-format -msgid "Unable to lock directory %s" -msgstr "" - -#. only show the ETA if it makes sense -#. two days -#: apt-pkg/acquire.cc:857 -#, c-format -msgid "Retrieving file %li of %li (%s remaining)" -msgstr "" - -#: apt-pkg/acquire.cc:859 -#, c-format -msgid "Retrieving file %li of %li" -msgstr "" - -#: apt-pkg/acquire-worker.cc:110 -#, c-format -msgid "The method driver %s could not be found." -msgstr "" - -#: apt-pkg/acquire-worker.cc:159 -#, c-format -msgid "Method %s did not start correctly" -msgstr "" - -#: apt-pkg/acquire-worker.cc:413 -#, c-format -msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." -msgstr "" - -#: apt-pkg/init.cc:143 -#, c-format -msgid "Packaging system '%s' is not supported" -msgstr "" - -#: apt-pkg/init.cc:159 -msgid "Unable to determine a suitable packaging system type" -msgstr "" - -#: apt-pkg/clean.cc:56 -#, c-format -msgid "Unable to stat %s." -msgstr "" - -#: apt-pkg/srcrecords.cc:44 -msgid "You must put some 'source' URIs in your sources.list" -msgstr "" - -#: apt-pkg/cachefile.cc:84 -msgid "The package lists or status file could not be parsed or opened." -msgstr "" - -#: apt-pkg/cachefile.cc:88 -msgid "You may want to run apt-get update to correct these problems" -msgstr "" - -#: apt-pkg/cachefile.cc:106 -msgid "The list of sources could not be read." -msgstr "" - -#: apt-pkg/policy.cc:344 -#, c-format -msgid "Invalid record in the preferences file %s, no Package header" -msgstr "" - -#: apt-pkg/policy.cc:366 -#, c-format -msgid "Did not understand pin type %s" -msgstr "" - -#: apt-pkg/policy.cc:374 -msgid "No priority (or zero) specified for pin" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:80 -msgid "Cache has an incompatible versioning system" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:198 -#, c-format -msgid "Error occurred while processing %s (NewPackage)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:215 -#, c-format -msgid "Error occurred while processing %s (UsePackage1)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:253 -#, c-format -msgid "Error occurred while processing %s (NewFileDesc1)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:285 -#, c-format -msgid "Error occurred while processing %s (UsePackage2)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:289 -#, c-format -msgid "Error occurred while processing %s (NewFileVer1)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:306 apt-pkg/pkgcachegen.cc:316 -#: apt-pkg/pkgcachegen.cc:324 -#, c-format -msgid "Error occurred while processing %s (NewVersion%d)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:320 -#, c-format -msgid "Error occurred while processing %s (UsePackage3)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:353 -#, c-format -msgid "Error occurred while processing %s (NewFileDesc2)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:360 -msgid "Wow, you exceeded the number of package names this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:363 -msgid "Wow, you exceeded the number of versions this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:366 -msgid "Wow, you exceeded the number of descriptions this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:369 -msgid "Wow, you exceeded the number of dependencies this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:398 -#, c-format -msgid "Error occurred while processing %s (FindPkg)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:412 -#, c-format -msgid "Error occurred while processing %s (CollectFileProvides)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:418 -#, c-format -msgid "Package %s %s was not found while processing file dependencies" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:982 -#, c-format -msgid "Couldn't stat source package list %s" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:1087 -msgid "Collecting File Provides" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:1265 apt-pkg/pkgcachegen.cc:1272 -msgid "IO Error saving source cache" -msgstr "" - -#: apt-pkg/acquire-item.cc:136 -#, c-format -msgid "rename failed, %s (%s -> %s)." -msgstr "" - -#: apt-pkg/acquire-item.cc:484 -msgid "MD5Sum mismatch" -msgstr "" - -#: apt-pkg/acquire-item.cc:746 apt-pkg/acquire-item.cc:1574 -#: apt-pkg/acquire-item.cc:1717 -msgid "Hash Sum mismatch" -msgstr "" - -#: apt-pkg/acquire-item.cc:1244 -msgid "There is no public key available for the following key IDs:\n" -msgstr "" - -#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is -#. the time since then the file is invalid - formated in the same way as in -#. the download progress display (e.g. 7d 3h 42min 1s) -#: apt-pkg/acquire-item.cc:1281 -#, c-format -msgid "Release file expired, ignoring %s (invalid since %s)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1302 -#, c-format -msgid "Conflicting distribution: %s (expected %s but got %s)" -msgstr "" - -#: 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 "" - -#: apt-pkg/acquire-item.cc:1337 -#, c-format -msgid "GPG error: %s: %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:1365 -#, c-format -msgid "" -"I wasn't able to locate a file for the %s package. This might mean you need " -"to manually fix this package. (due to missing arch)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1424 -#, c-format -msgid "" -"I wasn't able to locate a file for the %s package. This might mean you need " -"to manually fix this package." -msgstr "" - -#: apt-pkg/acquire-item.cc:1479 -#, c-format -msgid "" -"The package index files are corrupted. No Filename: field for package %s." -msgstr "" - -#: apt-pkg/acquire-item.cc:1566 -msgid "Size mismatch" -msgstr "" - -#: apt-pkg/indexrecords.cc:53 -#, c-format -msgid "Unable to parse Release file %s" -msgstr "" - -#: apt-pkg/indexrecords.cc:60 -#, c-format -msgid "No sections in Release file %s" -msgstr "" - -#: apt-pkg/indexrecords.cc:94 -#, c-format -msgid "No Hash entry in Release file %s" -msgstr "" - -#: apt-pkg/indexrecords.cc:107 -#, c-format -msgid "Invalid 'Valid-Until' entry in Release file %s" -msgstr "" - -#: apt-pkg/indexrecords.cc:122 -#, c-format -msgid "Invalid 'Date' entry in Release file %s" -msgstr "" - -#: apt-pkg/vendorlist.cc:66 -#, c-format -msgid "Vendor block %s contains no fingerprint" -msgstr "" - -#: apt-pkg/cdrom.cc:518 -#, c-format -msgid "" -"Using CD-ROM mount point %s\n" -"Mounting CD-ROM\n" -msgstr "" - -#: apt-pkg/cdrom.cc:527 apt-pkg/cdrom.cc:615 -msgid "Identifying.. " -msgstr "" - -#: apt-pkg/cdrom.cc:552 -#, c-format -msgid "Stored label: %s\n" -msgstr "" - -#: apt-pkg/cdrom.cc:559 apt-pkg/cdrom.cc:827 -msgid "Unmounting CD-ROM...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:578 -#, c-format -msgid "Using CD-ROM mount point %s\n" -msgstr "" - -#: apt-pkg/cdrom.cc:596 -msgid "Unmounting CD-ROM\n" -msgstr "" - -#: apt-pkg/cdrom.cc:600 -msgid "Waiting for disc...\n" -msgstr "" - -#. Mount the new CDROM -#: apt-pkg/cdrom.cc:608 -msgid "Mounting CD-ROM...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:626 -msgid "Scanning disc for index files..\n" -msgstr "" - -#: apt-pkg/cdrom.cc:666 -#, c-format -msgid "" -"Found %zu package indexes, %zu source indexes, %zu translation indexes and " -"%zu signatures\n" -msgstr "" - -#: apt-pkg/cdrom.cc:677 -msgid "" -"Unable to locate any package files, perhaps this is not a Debian Disc or the " -"wrong architecture?" -msgstr "" - -#: apt-pkg/cdrom.cc:703 -#, c-format -msgid "Found label '%s'\n" -msgstr "" - -#: apt-pkg/cdrom.cc:732 -msgid "That is not a valid name, try again.\n" -msgstr "" - -#: apt-pkg/cdrom.cc:748 -#, c-format -msgid "" -"This disc is called: \n" -"'%s'\n" -msgstr "" - -#: apt-pkg/cdrom.cc:752 -msgid "Copying package lists..." -msgstr "" - -#: apt-pkg/cdrom.cc:778 -msgid "Writing new source list\n" -msgstr "" - -#: apt-pkg/cdrom.cc:787 -msgid "Source list entries for this disc are:\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:908 -#, c-format -msgid "Wrote %i records.\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:910 -#, c-format -msgid "Wrote %i records with %i missing files.\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:913 -#, c-format -msgid "Wrote %i records with %i mismatched files\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:916 -#, c-format -msgid "Wrote %i records with %i missing files and %i mismatched files\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:537 -#, c-format -msgid "Skipping nonexistent file %s" -msgstr "" - -#: apt-pkg/indexcopy.cc:543 -#, c-format -msgid "Can't find authentication record for: %s" -msgstr "" - -#: apt-pkg/indexcopy.cc:549 -#, c-format -msgid "Hash mismatch for: %s" -msgstr "" - -#: apt-pkg/cacheset.cc:337 -#, c-format -msgid "Release '%s' for '%s' was not found" -msgstr "" - -#: apt-pkg/cacheset.cc:340 -#, c-format -msgid "Version '%s' for '%s' was not found" -msgstr "" - -#: apt-pkg/cacheset.cc:447 -#, c-format -msgid "Couldn't find task '%s'" -msgstr "" - -#: apt-pkg/cacheset.cc:454 -#, c-format -msgid "Couldn't find any package by regex '%s'" -msgstr "" - -#: apt-pkg/cacheset.cc:467 -#, c-format -msgid "Can't select versions from package '%s' as it is purely virtual" -msgstr "" - -#: 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 "" - -#: apt-pkg/cacheset.cc:491 -#, c-format -msgid "Can't select newest version from package '%s' as it is purely virtual" -msgstr "" - -#: apt-pkg/cacheset.cc:499 -#, c-format -msgid "Can't select candidate version from package %s as it has no candidate" -msgstr "" - -#: apt-pkg/cacheset.cc:507 -#, c-format -msgid "Can't select installed version from package %s as it is not installed" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:52 -#, c-format -msgid "Installing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:53 apt-pkg/deb/dpkgpm.cc:823 -#, c-format -msgid "Configuring %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:54 apt-pkg/deb/dpkgpm.cc:830 -#, c-format -msgid "Removing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:55 -#, c-format -msgid "Completely removing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:56 -#, c-format -msgid "Noting disappearance of %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:57 -#, c-format -msgid "Running post-installation trigger %s" -msgstr "" - -#. FIXME: use a better string after freeze -#: apt-pkg/deb/dpkgpm.cc:646 -#, c-format -msgid "Directory '%s' missing" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:661 apt-pkg/deb/dpkgpm.cc:675 -#, c-format -msgid "Could not open file '%s'" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:816 -#, c-format -msgid "Preparing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:817 -#, c-format -msgid "Unpacking %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:822 -#, c-format -msgid "Preparing to configure %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:824 -#, c-format -msgid "Installed %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:829 -#, c-format -msgid "Preparing for removal of %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:831 -#, c-format -msgid "Removed %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:836 -#, c-format -msgid "Preparing to completely remove %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:837 -#, c-format -msgid "Completely removed %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1043 -msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1074 -msgid "Running dpkg" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1277 -msgid "No apport report written because MaxReports is reached already" -msgstr "" - -#. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:1282 -msgid "dependency problems - leaving unconfigured" -msgstr "" - -#: 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 "" - -#: apt-pkg/deb/dpkgpm.cc:1290 -msgid "" -"No apport report written because the error message indicates a disk full " -"error" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1296 -msgid "" -"No apport report written because the error message indicates a out of memory " -"error" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1303 -msgid "" -"No apport report written because the error message indicates a dpkg I/O error" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:69 -#, c-format -msgid "" -"Unable to lock the administration directory (%s), is another process using " -"it?" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:72 -#, c-format -msgid "Unable to lock the administration directory (%s), are you root?" -msgstr "" - -#. TRANSLATORS: the %s contains the recovery command, usually -#. dpkg --configure -a -#: apt-pkg/deb/debsystem.cc:88 -#, c-format -msgid "" -"dpkg was interrupted, you must manually run '%s' to correct the problem. " -msgstr "" - -#: apt-pkg/deb/debsystem.cc:106 -msgid "Not locked" -msgstr "" - -#. 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 "" - -#: methods/mirror.cc:343 -#, c-format -msgid "[Mirror: %s]" -msgstr "" - -#: 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 "" - -#: 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 "" - -#: methods/rsh.cc:329 -msgid "Connection closed prematurely" -msgstr "" -- cgit v1.2.3-70-g09d2 From f521559b96d303970f50daa2f9d64c6651861d7e Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Wed, 8 Jun 2011 17:38:55 +0200 Subject: do not include libapt-pkg* in apt itself, add missing dh_makeshlibs calls --- debian/apt.install | 1 - debian/rules | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/apt.install b/debian/apt.install index 979e04ce2..ba57f7efa 100644 --- a/debian/apt.install +++ b/debian/apt.install @@ -1,5 +1,4 @@ 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/debian/rules b/debian/rules index 24fb3b9be..a466fbf8f 100755 --- a/debian/rules +++ b/debian/rules @@ -201,7 +201,6 @@ apt: build build-doc dh_strip -p$@ dh_compress -p$@ dh_fixperms -p$@ - dh_makeshlibs -p$@ dh_installdeb -p$@ dh_shlibdeps -p$@ -l$(CURDIR)/debian/libapt-inst2.1/usr/lib:$(CURDIR)/debian/libapt-pkg4.10/usr/lib dh_gencontrol -p$@ @@ -266,6 +265,7 @@ libapt-pkg4.10: build dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ + dh_makeshlibs -p$@ dh_shlibdeps -p$@ dh_gencontrol -p$@ dh_md5sums -p$@ @@ -283,6 +283,7 @@ libapt-inst1.2: build dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ + dh_makeshlibs -p$@ dh_shlibdeps -p$@ -l$(CURDIR)/debian/libapt-pkg4.10/usr/lib dh_gencontrol -p$@ dh_md5sums -p$@ -- cgit v1.2.3-70-g09d2 From bd5e34e8cf0673248a3ab386c25b062247f10370 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Wed, 8 Jun 2011 17:59:07 +0200 Subject: remove -l from dh_shlibdeps, that is no longer needed with recent shlibdeps --- debian/control | 3 +-- debian/rules | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/debian/control b/debian/control index 1bad67e0a..f4e874201 100644 --- a/debian/control +++ b/debian/control @@ -52,7 +52,7 @@ Description: Documentation for APT Package: libapt-pkg-dev Architecture: any Priority: optional -Depends: apt (= ${binary:Version}), apt-utils (= ${binary:Version}), ${libapt-pkg:provides}, ${libapt-inst:provides}, ${misc:Depends}, zlib1g-dev | zlib-dev +Depends: libapt-pkg4.10, libapt-inst1.2, ${misc:Depends}, zlib1g-dev | zlib-dev Section: libdevel Description: Development files for APT's libapt-pkg and libapt-inst This package contains the header files and libraries for @@ -74,7 +74,6 @@ Description: Documentation for APT development Package: apt-utils Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: ${libapt-inst:provides} Description: APT utility programs This package contains some APT utility programs such as apt-ftparchive, apt-sortpkgs and apt-extracttemplates. diff --git a/debian/rules b/debian/rules index a466fbf8f..7405f8601 100755 --- a/debian/rules +++ b/debian/rules @@ -202,7 +202,7 @@ apt: build build-doc dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/libapt-inst2.1/usr/lib:$(CURDIR)/debian/libapt-pkg4.10/usr/lib + dh_shlibdeps -p$@ dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ @@ -248,7 +248,7 @@ apt-utils: build dh_fixperms -p$@ dh_makeshlibs -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/libapt-inst2.1/usr/lib:$(CURDIR)/debian/libapt-pkg4.10/usr/lib + dh_shlibdeps -p$@ dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ @@ -284,7 +284,7 @@ libapt-inst1.2: build dh_fixperms -p$@ dh_installdeb -p$@ dh_makeshlibs -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/libapt-pkg4.10/usr/lib + dh_shlibdeps -p$@ dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ @@ -307,7 +307,7 @@ apt-transport-https: build libapt-pkg-dev dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib + dh_shlibdeps -p$@ dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ -- cgit v1.2.3-70-g09d2 From 08c9b19106097fda61ab2df703c68a65131277a2 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Wed, 8 Jun 2011 18:18:06 +0200 Subject: fix lintian issues --- debian/control | 6 +++--- debian/libapt-inst1.2.symbols | 2 +- debian/libapt-pkg4.10.symbols | 2 +- debian/rules | 6 ++++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/debian/control b/debian/control index f4e874201..9aefcde8d 100644 --- a/debian/control +++ b/debian/control @@ -28,14 +28,14 @@ Description: Advanced front-end for dpkg Package: libapt-pkg4.10 Architecture: any -Depends: ${shlibs:Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt (<< 0.8.15) Description: Library for apt This package contains the library used by apt. Package: libapt-inst1.2 Architecture: any -Depends: ${shlibs:Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt-utils (<< 0.8.15) Description: Install library for apt This package contains the inst library used by apt. @@ -52,7 +52,7 @@ Description: Documentation for APT Package: libapt-pkg-dev Architecture: any Priority: optional -Depends: libapt-pkg4.10, libapt-inst1.2, ${misc:Depends}, zlib1g-dev | zlib-dev +Depends: libapt-pkg4.10 (= ${binary:Version}), libapt-inst1.2 (= ${binary:Version}), ${misc:Depends}, zlib1g-dev | zlib-dev Section: libdevel Description: Development files for APT's libapt-pkg and libapt-inst This package contains the header files and libraries for diff --git a/debian/libapt-inst1.2.symbols b/debian/libapt-inst1.2.symbols index 9ba283a51..091a3b185 100644 --- a/debian/libapt-inst1.2.symbols +++ b/debian/libapt-inst1.2.symbols @@ -1,5 +1,5 @@ libapt-inst.so.1.2 libapt-inst1.2 -| apt-utils #MINVER# +| libapt-inst1.2 #MINVER# * Build-Depends-Package: libapt-pkg-dev (c++)"ExtractTar::Done(bool)@Base" 0.8.0 (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0 diff --git a/debian/libapt-pkg4.10.symbols b/debian/libapt-pkg4.10.symbols index bb60c22be..a93e09f59 100644 --- a/debian/libapt-pkg4.10.symbols +++ b/debian/libapt-pkg4.10.symbols @@ -1,5 +1,5 @@ libapt-pkg.so.4.10 libapt-pkg4.10 -| apt #MINVER# +| libapt-pkg4.10 #MINVER# * Build-Depends-Package: libapt-pkg-dev TFRewritePackageOrder@Base 0.8.0 TFRewriteSourceOrder@Base 0.8.0 diff --git a/debian/rules b/debian/rules index 7405f8601..e67f17237 100755 --- a/debian/rules +++ b/debian/rules @@ -260,12 +260,13 @@ libapt-pkg4.10: build dh_installdirs -p$@ dh_install -p$@ --sourcedir=$(BLD) + dh_installdocs -p$@ dh_installchangelogs -p$@ dh_strip -p$@ dh_compress -p$@ dh_fixperms -p$@ - dh_installdeb -p$@ dh_makeshlibs -p$@ + dh_installdeb -p$@ dh_shlibdeps -p$@ dh_gencontrol -p$@ dh_md5sums -p$@ @@ -278,12 +279,13 @@ libapt-inst1.2: build dh_installdirs -p$@ dh_install -p$@ --sourcedir=$(BLD) + dh_installdocs -p$@ dh_installchangelogs -p$@ dh_strip -p$@ dh_compress -p$@ dh_fixperms -p$@ - dh_installdeb -p$@ dh_makeshlibs -p$@ + dh_installdeb -p$@ dh_shlibdeps -p$@ dh_gencontrol -p$@ dh_md5sums -p$@ -- cgit v1.2.3-70-g09d2 From 7eee083af5c4121ca74f3bbed23f04d3ca20d342 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Thu, 9 Jun 2011 14:46:31 +0200 Subject: do not hardcode the libnames --- debian/rules | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index e67f17237..fd894b73b 100755 --- a/debian/rules +++ b/debian/rules @@ -70,6 +70,10 @@ APT_UTILS=ftparchive sortpkgs extracttemplates # Find the libapt-pkg major version for use in other control files include buildlib/libversion.mak +# Determine which library package names to use +LIBAPT_PKG=libapt-pkg$(LIBAPTPKG_MAJOR) +LIBAPT_INST=libapt-inst$(LIBAPTINST_MAJOR) + # do not fail as we are just experimenting with symbol files for now export DPKG_GENSYMBOLS_CHECK_LEVEL=0 @@ -161,7 +165,7 @@ apt-doc: build-doc # Build architecture-dependent files here. -binary-arch: libapt-pkg4.10 libapt-inst1.2 apt libapt-pkg-dev apt-utils apt-transport-https +binary-arch: $(LIBAPT_PKG) $(LIBAPT_INST) 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 dh_testdir -p$@ @@ -253,7 +257,7 @@ apt-utils: build dh_md5sums -p$@ dh_builddeb -p$@ -libapt-pkg4.10: build +$(LIBAPT_PKG): build dh_testdir -p$@ dh_testroot -p$@ dh_prep -p$@ @@ -272,7 +276,7 @@ libapt-pkg4.10: build dh_md5sums -p$@ dh_builddeb -p$@ -libapt-inst1.2: build +$(LIBAPT_INST): build dh_testdir -p$@ dh_testroot -p$@ dh_prep -p$@ -- cgit v1.2.3-70-g09d2 From 04080cf5a15382f577552fe4ce3e5202dfb24959 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Thu, 9 Jun 2011 15:02:33 +0200 Subject: simplify symbol files a wee bit --- debian/libapt-inst1.2.symbols | 1 - debian/libapt-pkg4.10.symbols | 1 - 2 files changed, 2 deletions(-) diff --git a/debian/libapt-inst1.2.symbols b/debian/libapt-inst1.2.symbols index 091a3b185..73e6c8928 100644 --- a/debian/libapt-inst1.2.symbols +++ b/debian/libapt-inst1.2.symbols @@ -1,5 +1,4 @@ libapt-inst.so.1.2 libapt-inst1.2 -| libapt-inst1.2 #MINVER# * Build-Depends-Package: libapt-pkg-dev (c++)"ExtractTar::Done(bool)@Base" 0.8.0 (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0 diff --git a/debian/libapt-pkg4.10.symbols b/debian/libapt-pkg4.10.symbols index a93e09f59..039535cf9 100644 --- a/debian/libapt-pkg4.10.symbols +++ b/debian/libapt-pkg4.10.symbols @@ -1,5 +1,4 @@ libapt-pkg.so.4.10 libapt-pkg4.10 -| libapt-pkg4.10 #MINVER# * Build-Depends-Package: libapt-pkg-dev TFRewritePackageOrder@Base 0.8.0 TFRewriteSourceOrder@Base 0.8.0 -- cgit v1.2.3-70-g09d2 From 84736cfa351ec734f13cc0016f61108c81dc67e3 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Fri, 10 Jun 2011 14:43:06 +0200 Subject: include mo files in the right packages --- debian/apt.install | 2 +- debian/libapt-inst1.2.install | 3 ++- debian/libapt-pkg4.10.install | 3 ++- debian/rules | 4 ++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/debian/apt.install b/debian/apt.install index ba57f7efa..9d4008fab 100644 --- a/debian/apt.install +++ b/debian/apt.install @@ -1,4 +1,4 @@ bin/apt-* usr/bin/ bin/methods/* usr/lib/apt/methods/ scripts/dselect/* usr/lib/dpkg/methods/apt/ -locale usr/share/ +usr/share/locale/*/*/apt.mo diff --git a/debian/libapt-inst1.2.install b/debian/libapt-inst1.2.install index 575199b53..b7b63be81 100644 --- a/debian/libapt-inst1.2.install +++ b/debian/libapt-inst1.2.install @@ -1 +1,2 @@ -bin/libapt-inst*.so.* usr/lib/ \ No newline at end of file +bin/libapt-inst*.so.* usr/lib/ +usr/share/locale/*/*/libapt-inst*.mo diff --git a/debian/libapt-pkg4.10.install b/debian/libapt-pkg4.10.install index 571dc8478..91b39a31b 100644 --- a/debian/libapt-pkg4.10.install +++ b/debian/libapt-pkg4.10.install @@ -1 +1,2 @@ -bin/libapt-pkg*.so.* usr/lib/ \ No newline at end of file +bin/libapt-pkg*.so.* usr/lib/ +usr/share/locale/*/*/libapt-pkg*.mo diff --git a/debian/rules b/debian/rules index fd894b73b..22eb82ca4 100755 --- a/debian/rules +++ b/debian/rules @@ -97,6 +97,10 @@ build/configure-stamp: configure build/build-stamp: build/configure-stamp # Add here commands to compile the package. $(MAKE) binary + # compat symlink for the locale split + mkdir -p build/usr/share + cd build/usr/share && ln -f -s ../../locale . + # done here touch $@ build/build-doc-stamp: build/configure-stamp -- cgit v1.2.3-70-g09d2 From 2cc4999b21d6a4db4e6e08fd3bb760b6030d38cc Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Fri, 10 Jun 2011 14:48:57 +0200 Subject: generate debiandencies for libapt-pkg-dev automatically via deb-substvars --- debian/control | 2 +- debian/rules | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index 9aefcde8d..cf7be1ee5 100644 --- a/debian/control +++ b/debian/control @@ -52,7 +52,7 @@ Description: Documentation for APT Package: libapt-pkg-dev Architecture: any Priority: optional -Depends: libapt-pkg4.10 (= ${binary:Version}), libapt-inst1.2 (= ${binary:Version}), ${misc:Depends}, zlib1g-dev | zlib-dev +Depends: ${libapt-pkg-name} (= ${binary:Version}), ${libapt-inst-name} (= ${binary:Version}), ${misc:Depends}, zlib1g-dev | zlib-dev Section: libdevel Description: Development files for APT's libapt-pkg and libapt-inst This package contains the header files and libraries for diff --git a/debian/rules b/debian/rules index 22eb82ca4..c55435315 100755 --- a/debian/rules +++ b/debian/rules @@ -230,7 +230,7 @@ libapt-pkg-dev: build dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_gencontrol -p$@ + dh_gencontrol -p$@ -Vlibapt-pkg-name=$(LIBAPT_PKG) -Vlibapt-inst-name=$(LIBAPT_INST) dh_md5sums -p$@ dh_builddeb -p$@ -- cgit v1.2.3-70-g09d2 From ceab242d7547968fa358b5c549207be209c381ef Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Fri, 10 Jun 2011 15:28:39 +0200 Subject: debian/rules: use substvars properly --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index c55435315..b6f45a38e 100755 --- a/debian/rules +++ b/debian/rules @@ -230,7 +230,7 @@ libapt-pkg-dev: build dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_gencontrol -p$@ -Vlibapt-pkg-name=$(LIBAPT_PKG) -Vlibapt-inst-name=$(LIBAPT_INST) + dh_gencontrol -p$@ -- -Vlibapt-pkg-name=$(LIBAPT_PKG) -Vlibapt-inst-name=$(LIBAPT_INST) dh_md5sums -p$@ dh_builddeb -p$@ -- cgit v1.2.3-70-g09d2 From 06e18b140238809e6537c13303ca8f561a9c5b55 Mon Sep 17 00:00:00 2001 From: Michael Vogt <mvo@debian.org> Date: Fri, 10 Jun 2011 15:45:04 +0200 Subject: releasing version 0.8.15~exp1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0b81acb01..a286d4b8f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -apt (0.8.15~exp1) UNRELEASED; urgency=low +apt (0.8.15~exp1) experimental; urgency=low [ Julian Andres Klode ] * apt-pkg/depcache.cc: @@ -84,7 +84,7 @@ apt (0.8.15~exp1) UNRELEASED; urgency=low * debian/control: - add libapt-pkg4.10 and libapt-inst1.2 library packages - -- Michael Vogt <mvo@debian.org> Mon, 16 May 2011 14:57:52 +0200 + -- Michael Vogt <mvo@debian.org> Fri, 10 Jun 2011 15:32:07 +0200 apt (0.8.14.1) unstable; urgency=low -- cgit v1.2.3-70-g09d2 From 92ea25520e6beed1ed6f74620023f42efd4cdc28 Mon Sep 17 00:00:00 2001 From: Michael Vogt <mvo@debian.org> Date: Wed, 15 Jun 2011 17:21:41 +0200 Subject: * debian/control: - fix incorrect Replaces (closes: #630204) for libapt-inst1.2 --- debian/changelog | 7 +++++++ debian/control | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a286d4b8f..1696c9e49 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +apt (0.8.15~exp2) experimental; urgency=low + + * debian/control: + - fix incorrect Replaces (closes: #630204) for libapt-inst1.2 + + -- Michael Vogt <mvo@debian.org> Wed, 15 Jun 2011 16:51:14 +0200 + apt (0.8.15~exp1) experimental; urgency=low [ Julian Andres Klode ] diff --git a/debian/control b/debian/control index cf7be1ee5..ea7946133 100644 --- a/debian/control +++ b/debian/control @@ -36,7 +36,7 @@ Description: Library for apt Package: libapt-inst1.2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Replaces: apt-utils (<< 0.8.15) +Replaces: apt-utils (<< 0.8.15), apt (<< 0.8.15) Description: Install library for apt This package contains the inst library used by apt. -- cgit v1.2.3-70-g09d2 From a0088ddd5a6924445eb5716c955aa332ab9362a9 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Fri, 17 Jun 2011 21:49:52 +0200 Subject: * debian/control: - add Breaks: 0.8.15~exp3) for libapt-pkg4.10 and libapt-inst1.2 (thanks to Jonathan Nieder, closes: #630214) --- debian/changelog | 8 ++++++++ debian/control | 2 ++ 2 files changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1696c9e49..a0098e517 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +apt (0.8.15~exp3) experimental; urgency=low + + * debian/control: + - add Breaks: 0.8.15~exp3) for libapt-pkg4.10 and + libapt-inst1.2 (thanks to Jonathan Nieder, closes: #630214) + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 17 Jun 2011 17:39:25 +0200 + apt (0.8.15~exp2) experimental; urgency=low * debian/control: diff --git a/debian/control b/debian/control index ea7946133..82d54d9b1 100644 --- a/debian/control +++ b/debian/control @@ -30,6 +30,7 @@ Package: libapt-pkg4.10 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt (<< 0.8.15) +Breaks: apt (<< 0.8.15~exp3) Description: Library for apt This package contains the library used by apt. @@ -37,6 +38,7 @@ Package: libapt-inst1.2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt-utils (<< 0.8.15), apt (<< 0.8.15) +Breaks: apt (<< 0.8.15~exp3), apt-utils (<< 0.8.15~exp3) Description: Install library for apt This package contains the inst library used by apt. -- cgit v1.2.3-70-g09d2 From d2f828a93c72a3925a70e285ae304f272ff12ce8 Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Fri, 17 Jun 2011 22:27:53 +0200 Subject: use depends for the ${shlibs:Depends} to make the breaks work --- debian/changelog | 3 ++- debian/control | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index a0098e517..b7b10e1c3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,8 +3,9 @@ apt (0.8.15~exp3) experimental; urgency=low * debian/control: - add Breaks: 0.8.15~exp3) for libapt-pkg4.10 and libapt-inst1.2 (thanks to Jonathan Nieder, closes: #630214) + - use depends for the ${shlibs:Depends} to make the breaks work - -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 17 Jun 2011 17:39:25 +0200 + -- Michael Vogt <mvo@debian.org> Fri, 17 Jun 2011 21:51:41 +0200 apt (0.8.15~exp2) experimental; urgency=low diff --git a/debian/control b/debian/control index 82d54d9b1..92ce204ac 100644 --- a/debian/control +++ b/debian/control @@ -13,8 +13,7 @@ Vcs-Browser: http://bzr.debian.org/loggerhead/apt/debian-sid/ Package: apt Architecture: any -Pre-Depends: ${shlibs:Depends} -Depends: debian-archive-keyring, ${misc:Depends}, gnupg +Depends: ${shlibs:Depends}, ${misc:Depends}, debian-archive-keyring, gnupg Replaces: manpages-pl (<< 20060617-3~) Conflicts: python-apt (<< 0.7.93.2~) Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt -- cgit v1.2.3-70-g09d2 From 33ee638a051927e4eed0ed7fb5d4837c83fcd104 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Wed, 22 Jun 2011 10:54:28 +0200 Subject: * debian/control: - modernize package description (closes: #624618) --- debian/changelog | 7 +++++++ debian/control | 44 ++++++++++++++++++++++++++++++++------------ 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/debian/changelog b/debian/changelog index b7b10e1c3..bf1b2d962 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +apt (0.8.15~exp4) UNRELEASED; urgency=low + + * debian/control: + - modernize package description (closes: #624618) + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 22 Jun 2011 10:52:00 +0200 + apt (0.8.15~exp3) experimental; urgency=low * debian/control: diff --git a/debian/control b/debian/control index 92ce204ac..b6b8641ec 100644 --- a/debian/control +++ b/debian/control @@ -17,29 +17,48 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, debian-archive-keyring, gnupg Replaces: manpages-pl (<< 20060617-3~) Conflicts: python-apt (<< 0.7.93.2~) Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt -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. +Description: Debian's advanced package tool + APT provides mechanisms for package management tasks like searching, + querying and managing deb packages from one or more package + repoistories. . - APT features complete installation ordering, multiple source capability - and several other unique features, see the Users Guide in apt-doc. + It supports: + * searching for package information; + * resolving package install requests, finding the appropriate + version in the archives; + * fetching packages along with all their required dependencies; + * authenticating the sources and validating the retrieved data; + * installing and removing packages on a working system. + . + It also provides various terminal-based tools on its own: + * apt-get for managing packages and retrieval of information + * apt-cache for querying available information + * apt-cdrom to use removable media as a source for packages + * apt-config as an interface to the configuration settings + * apt-key as an interface to manage authentication keys + . + APT is also highly configurable and can be extended to support + additional protocols. Package: libapt-pkg4.10 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt (<< 0.8.15) Breaks: apt (<< 0.8.15~exp3) -Description: Library for apt - This package contains the library used by apt. +Description: Package search and manipulation library for apt + This package contains the libapt_pkg library that is used by apt. + I exposes functionality for use by higher-level interfaces like + aptitude, synaptic, python-apt and others. Package: libapt-inst1.2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt-utils (<< 0.8.15), apt (<< 0.8.15) Breaks: apt (<< 0.8.15~exp3), apt-utils (<< 0.8.15~exp3) -Description: Install library for apt - This package contains the inst library used by apt. +Description: Deb package format query and manipulation library for apt + This package contains the libapt_inst library used by apt-utils to + query deb packages for information. Its used by apt-ftparchive, + python-apt and others. Package: apt-doc Architecture: all @@ -47,8 +66,9 @@ Priority: optional Depends: ${misc:Depends} Section: doc Description: Documentation for APT - This package contains the user guide and offline guide, for APT, an - Advanced Package Tool. + This package contains the user guide and offline guide, for the + advanced package tool APT. Both a html and a text version are + included. Package: libapt-pkg-dev Architecture: any -- cgit v1.2.3-70-g09d2 From b463a73a03a50d886edef176fbdb5827e675d64b Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Tue, 28 Jun 2011 10:26:46 +0100 Subject: merge updated description from David, many thanks --- debian/control | 83 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/debian/control b/debian/control index b6b8641ec..59c92640a 100644 --- a/debian/control +++ b/debian/control @@ -17,48 +17,51 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, debian-archive-keyring, gnupg Replaces: manpages-pl (<< 20060617-3~) Conflicts: python-apt (<< 0.7.93.2~) Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt -Description: Debian's advanced package tool - APT provides mechanisms for package management tasks like searching, - querying and managing deb packages from one or more package - repoistories. +Description: APT's commandline package manager + This package provides commandline tools for searching and + managing as well as querying information about packages + as a low-level access to all features of the libapt-pkg library. . - It supports: - * searching for package information; - * resolving package install requests, finding the appropriate - version in the archives; - * fetching packages along with all their required dependencies; - * authenticating the sources and validating the retrieved data; - * installing and removing packages on a working system. - . - It also provides various terminal-based tools on its own: - * apt-get for managing packages and retrieval of information - * apt-cache for querying available information + These include: + * apt-get for retrieval of packages and information about them + from authenticated sources and for installation, upgrade and + removal of packages together with their dependencies + * apt-cache for querying available information about installed + as well as installable packages * apt-cdrom to use removable media as a source for packages * apt-config as an interface to the configuration settings * apt-key as an interface to manage authentication keys - . - APT is also highly configurable and can be extended to support - additional protocols. Package: libapt-pkg4.10 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt (<< 0.8.15) Breaks: apt (<< 0.8.15~exp3) -Description: Package search and manipulation library for apt - This package contains the libapt_pkg library that is used by apt. - I exposes functionality for use by higher-level interfaces like - aptitude, synaptic, python-apt and others. +Description: APT's package managment runtime library + This library provides the common functionality for searching and + managing packages as well as information about packages. + Higher-level package managers can depend upon this library. + . + This includes: + * retrieval of information about packages from multiple sources + * retrieval of packages and all dependent packages + needed to satisfy a request either through an internal + solver or by interfacing with an external one + * authenticating the sources and validating the retrieved data + * installation and removal of packages in the system + * providing different transports to retrieve data over cdrom, ftp, + http, rsh as well as an interface to add more transports like + https (apt-transport-https) and debtorrent (apt-transport-debtorrent). Package: libapt-inst1.2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt-utils (<< 0.8.15), apt (<< 0.8.15) Breaks: apt (<< 0.8.15~exp3), apt-utils (<< 0.8.15~exp3) -Description: Deb package format query and manipulation library for apt - This package contains the libapt_inst library used by apt-utils to - query deb packages for information. Its used by apt-ftparchive, - python-apt and others. +Description: APT's deb package format runtime library + This library provides methods to query and extract information + from deb packages. This includes the control data and the package + file content. Package: apt-doc Architecture: all @@ -66,9 +69,8 @@ Priority: optional Depends: ${misc:Depends} Section: doc Description: Documentation for APT - This package contains the user guide and offline guide, for the - advanced package tool APT. Both a html and a text version are - included. + This package contains the user guide and offline guide for various + APT tools which are provided in a html and a text-only version. Package: libapt-pkg-dev Architecture: any @@ -96,17 +98,24 @@ Package: apt-utils Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: APT utility programs - This package contains some APT utility programs such as apt-ftparchive, - apt-sortpkgs and apt-extracttemplates. + This package contains some less used commandline utilities related + to package managment with APT. . - apt-extracttemplates is used by debconf to prompt for configuration - questions before installation. apt-ftparchive is used to create Package - and other index files. apt-sortpkgs is a Package/Source file normalizer. + * apt-extracttemplates is used by debconf to prompt for configuration + questions before installation. + * apt-ftparchive is used to create Packages and other index files + needed to publish an archive of debian packages + * apt-sortpkgs is a Packages/Sources file normalizer. Package: apt-transport-https Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Priority: optional -Description: APT https transport - This package contains a APT https transport. It makes it possible to - use 'deb https://foo distro main' lines in the sources.list. +Description: https download transport for APT + This package enables the usage of 'deb https://foo distro main' lines + in the /etc/apt/sources.list so that all package managers using the + libapt-pkg library can access metadata and packages available in sources + accessable over https (Hypertext Transfer Protocol Secure). + . + This transports supports server as well as client authenification + with certificates. -- cgit v1.2.3-70-g09d2 From b167bd3959c80d8cc9edfaca647949f99ed122a5 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Tue, 28 Jun 2011 10:31:00 +0100 Subject: debian/control: update breaks for the final upload --- debian/control | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/control b/debian/control index 59c92640a..bd5c110fb 100644 --- a/debian/control +++ b/debian/control @@ -6,7 +6,10 @@ Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>, Christian Perrier <bubulle@debian.org>, Daniel Burrows <dburrows@debian.org>, Julian Andres Klode <jak@debian.org> Standards-Version: 3.9.2 -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-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/ @@ -36,7 +39,7 @@ Package: libapt-pkg4.10 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt (<< 0.8.15) -Breaks: apt (<< 0.8.15~exp3) +Breaks: apt (<< 0.8.15) Description: APT's package managment runtime library This library provides the common functionality for searching and managing packages as well as information about packages. @@ -57,7 +60,7 @@ Package: libapt-inst1.2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: apt-utils (<< 0.8.15), apt (<< 0.8.15) -Breaks: apt (<< 0.8.15~exp3), apt-utils (<< 0.8.15~exp3) +Breaks: apt (<< 0.8.15), apt-utils (<< 0.8.15) Description: APT's deb package format runtime library This library provides methods to query and extract information from deb packages. This includes the control data and the package -- cgit v1.2.3-70-g09d2 From ee5431155d9e6547aea99b2a7031ddb96cbe1c29 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Tue, 28 Jun 2011 11:32:38 +0100 Subject: merged symbols file fix from David, many thanks --- debian/libapt-inst1.2.symbols | 4 +- debian/libapt-pkg4.10.symbols | 92 +++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/debian/libapt-inst1.2.symbols b/debian/libapt-inst1.2.symbols index 73e6c8928..d9ea55b3d 100644 --- a/debian/libapt-inst1.2.symbols +++ b/debian/libapt-inst1.2.symbols @@ -1,4 +1,4 @@ -libapt-inst.so.1.2 libapt-inst1.2 +libapt-inst.so.1.2 libapt-inst1.2 #MINVER# * Build-Depends-Package: libapt-pkg-dev (c++)"ExtractTar::Done(bool)@Base" 0.8.0 (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0 @@ -113,7 +113,7 @@ libapt-inst.so.1.2 libapt-inst1.2 # (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 # (c++|optional=std)"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 ### gcc-4.6 specific - (c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@Base" 0.8.12 1 + (c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@Base" 0.8.12 (c++|optional=std)"std::basic_string<char, std::char_traits<char>, std::allocator<char> >& std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_dispatch<unsigned char*>(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned char*, unsigned char*, std::__false_type)@Base" 0.8.0 ### try to ignore std:: template instances (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@Base$" 0.8.0 diff --git a/debian/libapt-pkg4.10.symbols b/debian/libapt-pkg4.10.symbols index 039535cf9..5e4d83237 100644 --- a/debian/libapt-pkg4.10.symbols +++ b/debian/libapt-pkg4.10.symbols @@ -1,4 +1,4 @@ -libapt-pkg.so.4.10 libapt-pkg4.10 +libapt-pkg.so.4.10 libapt-pkg4.10 #MINVER# * Build-Depends-Package: libapt-pkg-dev TFRewritePackageOrder@Base 0.8.0 TFRewriteSourceOrder@Base 0.8.0 @@ -1272,48 +1272,48 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (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++)"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 - (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 - (c++)"StripEpoch(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 - (c++)"IndexTarget::~IndexTarget()@Base" 0.8.11 1 - (c++)"pkgAcqIndex::Init(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.11 1 - (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 - (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::ParseIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::Custom600Headers()@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::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.11 1 - (c++)"pkgAcqSubIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::DescURI()@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire*, 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&, HashString const&)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::~pkgAcqSubIndex()@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, 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::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::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::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 1 - (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 - (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 1 - (c++)"IndexTarget::IsSubIndex() const@Base" 0.8.11 1 - (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 1 - (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 1 - (c++)"typeinfo for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"typeinfo name for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"vtable for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 1 - (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 1 - (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 1 - (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 1 - (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 1 - (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 1 - (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 1 - (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.12 1 - (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 1 - (c++|optional=private)"debListParser::NewProvidesAllArch(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&)@Base" 0.8.13.2 1 - (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 1 - (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 1 + (c++)"Configuration::MatchAgainstConfig::clearPatterns()@Base" 0.8.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 + (c++)"FileFd::FileSize()@Base" 0.8.8 + (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@Base" 0.8.11 + (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 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"RealFileExists(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.11 + (c++)"StripEpoch(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"IndexTarget::~IndexTarget()@Base" 0.8.11 + (c++)"pkgAcqIndex::Init(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.11 + (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 + (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::ParseIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::Custom600Headers()@Base" 0.8.11 + (c++)"pkgAcqSubIndex::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.11 + (c++)"pkgAcqSubIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::DescURI()@Base" 0.8.11 + (c++)"pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire*, 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&, HashString const&)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::~pkgAcqSubIndex()@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, 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::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::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::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 + (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 + (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 + (c++)"IndexTarget::IsSubIndex() const@Base" 0.8.11 + (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 + (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 + (c++)"typeinfo for pkgAcqSubIndex@Base" 0.8.11 + (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"typeinfo name for pkgAcqSubIndex@Base" 0.8.11 + (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"vtable for pkgAcqSubIndex@Base" 0.8.11 + (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 + (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 + (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 + (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 + (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 + (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 + (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 + (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.12 + (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 + (c++|optional=private)"debListParser::NewProvidesAllArch(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&)@Base" 0.8.13.2 + (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 + (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 -- cgit v1.2.3-70-g09d2 From 857a3df9b88e3c032ca72f6b1e5230c73d1c3804 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Tue, 28 Jun 2011 15:30:51 +0100 Subject: cherry pick fix from sid --- debian/libapt-inst1.2.symbols | 4 +- debian/libapt-pkg4.10.symbols | 92 +++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/debian/libapt-inst1.2.symbols b/debian/libapt-inst1.2.symbols index 73e6c8928..d9ea55b3d 100644 --- a/debian/libapt-inst1.2.symbols +++ b/debian/libapt-inst1.2.symbols @@ -1,4 +1,4 @@ -libapt-inst.so.1.2 libapt-inst1.2 +libapt-inst.so.1.2 libapt-inst1.2 #MINVER# * Build-Depends-Package: libapt-pkg-dev (c++)"ExtractTar::Done(bool)@Base" 0.8.0 (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0 @@ -113,7 +113,7 @@ libapt-inst.so.1.2 libapt-inst1.2 # (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 # (c++|optional=std)"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 ### gcc-4.6 specific - (c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@Base" 0.8.12 1 + (c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@Base" 0.8.12 (c++|optional=std)"std::basic_string<char, std::char_traits<char>, std::allocator<char> >& std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_dispatch<unsigned char*>(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned char*, unsigned char*, std::__false_type)@Base" 0.8.0 ### try to ignore std:: template instances (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@Base$" 0.8.0 diff --git a/debian/libapt-pkg4.10.symbols b/debian/libapt-pkg4.10.symbols index 039535cf9..5e4d83237 100644 --- a/debian/libapt-pkg4.10.symbols +++ b/debian/libapt-pkg4.10.symbols @@ -1,4 +1,4 @@ -libapt-pkg.so.4.10 libapt-pkg4.10 +libapt-pkg.so.4.10 libapt-pkg4.10 #MINVER# * Build-Depends-Package: libapt-pkg-dev TFRewritePackageOrder@Base 0.8.0 TFRewriteSourceOrder@Base 0.8.0 @@ -1272,48 +1272,48 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (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++)"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 - (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 - (c++)"StripEpoch(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 - (c++)"IndexTarget::~IndexTarget()@Base" 0.8.11 1 - (c++)"pkgAcqIndex::Init(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.11 1 - (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 - (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::ParseIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::Custom600Headers()@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::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.11 1 - (c++)"pkgAcqSubIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::DescURI()@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire*, 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&, HashString const&)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::~pkgAcqSubIndex()@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, 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::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::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::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 1 - (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 - (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 1 - (c++)"IndexTarget::IsSubIndex() const@Base" 0.8.11 1 - (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 1 - (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 1 - (c++)"typeinfo for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"typeinfo name for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"vtable for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 1 - (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 1 - (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 1 - (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 1 - (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 1 - (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 1 - (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 1 - (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.12 1 - (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 1 - (c++|optional=private)"debListParser::NewProvidesAllArch(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&)@Base" 0.8.13.2 1 - (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 1 - (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 1 + (c++)"Configuration::MatchAgainstConfig::clearPatterns()@Base" 0.8.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 + (c++)"FileFd::FileSize()@Base" 0.8.8 + (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@Base" 0.8.11 + (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 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"RealFileExists(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.11 + (c++)"StripEpoch(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"IndexTarget::~IndexTarget()@Base" 0.8.11 + (c++)"pkgAcqIndex::Init(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.11 + (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 + (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::ParseIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::Custom600Headers()@Base" 0.8.11 + (c++)"pkgAcqSubIndex::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.11 + (c++)"pkgAcqSubIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::DescURI()@Base" 0.8.11 + (c++)"pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire*, 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&, HashString const&)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::~pkgAcqSubIndex()@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, 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::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::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::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 + (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 + (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 + (c++)"IndexTarget::IsSubIndex() const@Base" 0.8.11 + (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 + (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 + (c++)"typeinfo for pkgAcqSubIndex@Base" 0.8.11 + (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"typeinfo name for pkgAcqSubIndex@Base" 0.8.11 + (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"vtable for pkgAcqSubIndex@Base" 0.8.11 + (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 + (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 + (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 + (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 + (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 + (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 + (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 + (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.12 + (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 + (c++|optional=private)"debListParser::NewProvidesAllArch(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&)@Base" 0.8.13.2 + (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 + (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 -- cgit v1.2.3-70-g09d2 From 6f6e2494c6e54b837942c331e5763c6c1d8ced06 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Tue, 28 Jun 2011 15:44:02 +0100 Subject: add more to the symbol file --- debian/libapt-pkg4.10.symbols | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/libapt-pkg4.10.symbols b/debian/libapt-pkg4.10.symbols index 5e4d83237..16b630214 100644 --- a/debian/libapt-pkg4.10.symbols +++ b/debian/libapt-pkg4.10.symbols @@ -1317,3 +1317,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 #MINVER# (c++|optional=private)"debListParser::NewProvidesAllArch(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&)@Base" 0.8.13.2 (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 + (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool)@Base" 0.8.15~exp1 + (c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@Base" 0.8.15~exp1 + (c++)"pkgCache::DepIterator::IsNegative() const@Base" 0.8.15~exp1 -- cgit v1.2.3-70-g09d2 From c56c4b82dd77258da5640bf9f63a8db10424b59a Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Wed, 29 Jun 2011 13:00:06 +0200 Subject: releasing version 0.8.16~exp1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ceb75182d..a62003a0e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -apt (0.8.16~exp1) UNRELEASED; urgency=low +apt (0.8.16~exp1) experimental; urgency=low * merged with the debian/unstable upload - -- Michael Vogt <mvo@debian.org> Tue, 28 Jun 2011 10:38:02 +0100 + -- Michael Vogt <mvo@debian.org> Wed, 29 Jun 2011 12:40:31 +0200 apt (0.8.15) unstable; urgency=low -- cgit v1.2.3-70-g09d2 From e83b74be1cf5b1d6fee826e30daaed9db04f1fd6 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Wed, 29 Jun 2011 13:00:03 +0100 Subject: remove no longer needed replaces for libapt-pkg4.11 and libapt-inst1.3 --- debian/control | 2 -- 1 file changed, 2 deletions(-) diff --git a/debian/control b/debian/control index 8d85b48e8..d014dfdab 100644 --- a/debian/control +++ b/debian/control @@ -38,7 +38,6 @@ Description: APT's commandline package manager Package: libapt-pkg4.11 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Replaces: apt (<< 0.8.15) Description: APT's package managment runtime library This library provides the common functionality for searching and managing packages as well as information about packages. @@ -58,7 +57,6 @@ Description: APT's package managment runtime library Package: libapt-inst1.3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Replaces: apt-utils (<< 0.8.15), apt (<< 0.8.15) Description: APT's deb package format runtime library This library provides methods to query and extract information from deb packages. This includes the control data and the package -- cgit v1.2.3-70-g09d2 From ccdb2885a74939b4bd4237c71afc26b33b9a2e73 Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Wed, 29 Jun 2011 15:16:36 +0200 Subject: debian/*.symbols: updated for new soname --- debian/libapt-inst1.3.symbols | 2 +- debian/libapt-pkg4.11.symbols | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/libapt-inst1.3.symbols b/debian/libapt-inst1.3.symbols index d9ea55b3d..1a46ba1a9 100644 --- a/debian/libapt-inst1.3.symbols +++ b/debian/libapt-inst1.3.symbols @@ -1,4 +1,4 @@ -libapt-inst.so.1.2 libapt-inst1.2 #MINVER# +libapt-inst.so.1.3 libapt-inst1.3 #MINVER# * Build-Depends-Package: libapt-pkg-dev (c++)"ExtractTar::Done(bool)@Base" 0.8.0 (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0 diff --git a/debian/libapt-pkg4.11.symbols b/debian/libapt-pkg4.11.symbols index 16b630214..2a41ea2c9 100644 --- a/debian/libapt-pkg4.11.symbols +++ b/debian/libapt-pkg4.11.symbols @@ -1,4 +1,4 @@ -libapt-pkg.so.4.10 libapt-pkg4.10 #MINVER# +libapt-pkg.so.4.11 libapt-pkg4.11 #MINVER# * Build-Depends-Package: libapt-pkg-dev TFRewritePackageOrder@Base 0.8.0 TFRewriteSourceOrder@Base 0.8.0 -- cgit v1.2.3-70-g09d2 From 6f747894998e10649d0237fe5f7b9b85a5266f1f Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Wed, 29 Jun 2011 15:20:55 +0200 Subject: releasing version 0.8.16~exp2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 701f03252..0c104137e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -apt (0.8.16~exp2) UNRELEASEDexperimental; urgency=low +apt (0.8.16~exp2) experimental; urgency=low [ David Kalnischkies ] * [ABI-Break] Implement EDSP in libapt-pkg so that all front-ends which @@ -30,7 +30,7 @@ apt (0.8.16~exp2) UNRELEASEDexperimental; urgency=low without breaking the ABI * increase ABI version and update package names - -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 29 Jun 2011 12:26:54 +0100 + -- Michael Vogt <mvo@debian.org> Wed, 29 Jun 2011 13:57:28 +0200 apt (0.8.16~exp1) experimental; urgency=low -- cgit v1.2.3-70-g09d2 From 00b6a181fe1efb86ba5eb98a369da8f9d2ab063f Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Wed, 29 Jun 2011 19:38:52 +0200 Subject: * apt-pkg/pkgcache.h: - readd All{Foreign,Allowed} as suggested by Julian to remain strictly API compatible --- apt-pkg/pkgcache.h | 4 +++- debian/changelog | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h index 280f37bca..9a9f79420 100644 --- a/apt-pkg/pkgcache.h +++ b/apt-pkg/pkgcache.h @@ -506,7 +506,9 @@ struct pkgCache::Version All = (1<<0), /*!< will cause that Ver.Arch() will report "all" */ Foreign = (1<<1), /*!< can satisfy dependencies in another architecture */ Same = (1<<2), /*!< can be co-installed with itself from other architectures */ - Allowed = (1<<3) /*!< other packages are allowed to depend on thispkg:any */ }; + Allowed = (1<<3), /*!< other packages are allowed to depend on thispkg:any */ + AllForeign = All | Foreign, + AllAllowed = All | Allowed }; /** \brief stores the MultiArch capabilities of this version Flags used are defined in pkgCache::Version::VerMultiArch diff --git a/debian/changelog b/debian/changelog index 0c104137e..af6db28b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +apt (0.8.16~exp3) experimental; urgency=low + + [ David Kalnischkies ] + * apt-pkg/pkgcache.h: + - readd All{Foreign,Allowed} as suggested by Julian to + remain strictly API compatible + + -- David Kalnischkies <kalnischkies@gmail.com> Wed, 29 Jun 2011 19:38:44 +0200 + apt (0.8.16~exp2) experimental; urgency=low [ David Kalnischkies ] -- cgit v1.2.3-70-g09d2 From 5efbd59693fbdb87496bb4aa78d7957c1ebea7d4 Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Wed, 29 Jun 2011 19:39:21 +0200 Subject: fix compiler warning by reordering init-list apt-pkg/acquire.h: In constructor ‘pkgAcquire::pkgAcquire()’: apt-pkg/acquire.h:175:9: warning: ‘pkgAcquire::Running’ will be initialized after [-Wreorder] apt-pkg/acquire.h:96:8: warning: ‘int pkgAcquire::LockFD’ [-Wreorder] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apt-pkg/acquire.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 9478cdfb4..939c7f4c5 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -37,9 +37,9 @@ using namespace std; // Acquire::pkgAcquire - Constructor /*{{{*/ // --------------------------------------------------------------------- /* We grab some runtime state from the configuration space */ -pkgAcquire::pkgAcquire() : Queues(0), Workers(0), Configs(0), Log(NULL), ToFetch(0), +pkgAcquire::pkgAcquire() : LockFD(-1), Queues(0), Workers(0), Configs(0), Log(NULL), ToFetch(0), Debug(_config->FindB("Debug::pkgAcquire",false)), - Running(false), LockFD(-1) + Running(false) { string const Mode = _config->Find("Acquire::Queue-Mode","host"); if (strcasecmp(Mode.c_str(),"host") == 0) @@ -47,10 +47,10 @@ pkgAcquire::pkgAcquire() : Queues(0), Workers(0), Configs(0), Log(NULL), ToFetch if (strcasecmp(Mode.c_str(),"access") == 0) QueueMode = QueueAccess; } -pkgAcquire::pkgAcquire(pkgAcquireStatus *Progress) : Queues(0), Workers(0), +pkgAcquire::pkgAcquire(pkgAcquireStatus *Progress) : LockFD(-1), Queues(0), Workers(0), Configs(0), Log(Progress), ToFetch(0), Debug(_config->FindB("Debug::pkgAcquire",false)), - Running(false), LockFD(-1) + Running(false) { string const Mode = _config->Find("Acquire::Queue-Mode","host"); if (strcasecmp(Mode.c_str(),"host") == 0) -- cgit v1.2.3-70-g09d2 From ef25649c3d6a535706d1039aba128e1b22341f91 Mon Sep 17 00:00:00 2001 From: Matt Emmerton <matt@gsicomp.on.ca> Date: Wed, 29 Jun 2011 20:22:02 +0200 Subject: Make private sha2 functions static (freebsd which can be considered the "official" upstream has applied it) --- apt-pkg/contrib/sha2_internal.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/apt-pkg/contrib/sha2_internal.cc b/apt-pkg/contrib/sha2_internal.cc index 10b82dec4..565db2f91 100644 --- a/apt-pkg/contrib/sha2_internal.cc +++ b/apt-pkg/contrib/sha2_internal.cc @@ -219,9 +219,9 @@ typedef u_int64_t sha2_word64; /* Exactly 8 bytes */ * library -- they are intended for private internal visibility/use * only. */ -void SHA512_Last(SHA512_CTX*); -void SHA256_Transform(SHA256_CTX*, const sha2_word32*); -void SHA512_Transform(SHA512_CTX*, const sha2_word64*); +static void SHA512_Last(SHA512_CTX*); +static void SHA256_Transform(SHA256_CTX*, const sha2_word32*); +static void SHA512_Transform(SHA512_CTX*, const sha2_word64*); /*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/ @@ -379,7 +379,7 @@ void SHA256_Init(SHA256_CTX* context) { (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ j++ -void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { +static void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { sha2_word32 a, b, c, d, e, f, g, h, s0, s1; sha2_word32 T1, *W256; int j; @@ -437,7 +437,7 @@ void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { #else /* SHA2_UNROLL_TRANSFORM */ -void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { +static void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { sha2_word32 a, b, c, d, e, f, g, h, s0, s1; sha2_word32 T1, T2, *W256; int j; @@ -706,7 +706,7 @@ void SHA512_Init(SHA512_CTX* context) { (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ j++ -void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { +static void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { sha2_word64 a, b, c, d, e, f, g, h, s0, s1; sha2_word64 T1, *W512 = (sha2_word64*)context->buffer; int j; @@ -761,7 +761,7 @@ void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { #else /* SHA2_UNROLL_TRANSFORM */ -void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { +static void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { sha2_word64 a, b, c, d, e, f, g, h, s0, s1; sha2_word64 T1, T2, *W512 = (sha2_word64*)context->buffer; int j; @@ -887,7 +887,7 @@ void SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) { usedspace = freespace = 0; } -void SHA512_Last(SHA512_CTX* context) { +static void SHA512_Last(SHA512_CTX* context) { unsigned int usedspace; usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; -- cgit v1.2.3-70-g09d2 From a7cc05842482e721ba66fb09f0b0858678138832 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Tue, 5 Jul 2011 14:06:12 +0200 Subject: apt-pkg/contrib/sha1.cc: fix sha1 hashsum by using the right type for "res" avoiding a implicit cast to string this way --- apt-pkg/contrib/sha1.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc index 0b1c16dc3..9a6725ef3 100644 --- a/apt-pkg/contrib/sha1.cc +++ b/apt-pkg/contrib/sha1.cc @@ -229,7 +229,7 @@ SHA1SumValue SHA1Summation::Result() // Transfer over the result SHA1SumValue Value; - char res[20]; + unsigned char res[20]; for (unsigned i = 0; i < 20; i++) { res[i] = (unsigned char) -- cgit v1.2.3-70-g09d2 From 64767f14595065d1c0f37c1b4a6047032b5c5ed7 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Tue, 5 Jul 2011 14:44:50 +0200 Subject: apt-pkg/contrib/md5.cc: fix md5sum by using the right type (unsinged char*) and avoiding a implicit cast this way --- apt-pkg/contrib/md5.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/contrib/md5.cc b/apt-pkg/contrib/md5.cc index 6c60ffd74..6820d3951 100644 --- a/apt-pkg/contrib/md5.cc +++ b/apt-pkg/contrib/md5.cc @@ -298,7 +298,7 @@ MD5SumValue MD5Summation::Result() } MD5SumValue V; - V.Set((char *)buf); + V.Set((unsigned char *)buf); return V; } /*}}}*/ -- cgit v1.2.3-70-g09d2 From 73da43e90be945d3be9b4f3b6e5016fb7bacb59d Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Tue, 5 Jul 2011 15:58:32 +0200 Subject: * apt-pkg/acquire*.{cc,h}: - try even harder to support really big files in the fetcher by converting (hopefully) everything to 'long long' (Closes: #632271) --- apt-pkg/acquire-item.cc | 30 +++++++++++++++--------------- apt-pkg/acquire-item.h | 22 +++++++++++----------- apt-pkg/acquire-method.h | 4 ++-- apt-pkg/acquire-worker.cc | 4 ++-- apt-pkg/acquire-worker.h | 6 +++--- apt-pkg/acquire.cc | 2 +- apt-pkg/acquire.h | 11 +++-------- debian/changelog | 5 ++++- 8 files changed, 41 insertions(+), 43 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index d790bd898..a6698b367 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -94,7 +94,7 @@ void pkgAcquire::Item::Failed(string Message,pkgAcquire::MethodConfig *Cnf) // --------------------------------------------------------------------- /* Stash status and the file size. Note that setting Complete means sub-phases of the acquire process such as decompresion are operating */ -void pkgAcquire::Item::Start(string /*Message*/,unsigned long Size) +void pkgAcquire::Item::Start(string /*Message*/,unsigned long long Size) { Status = StatFetching; if (FileSize == 0 && Complete == false) @@ -104,7 +104,7 @@ void pkgAcquire::Item::Start(string /*Message*/,unsigned long Size) // Acquire::Item::Done - Item downloaded OK /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgAcquire::Item::Done(string Message,unsigned long Size,string Hash, +void pkgAcquire::Item::Done(string Message,unsigned long long Size,string Hash, pkgAcquire::MethodConfig *Cnf) { // We just downloaded something.. @@ -245,7 +245,7 @@ void pkgAcqSubIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{* } } /*}}}*/ -void pkgAcqSubIndex::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ +void pkgAcqSubIndex::Done(string Message,unsigned long long Size,string Md5Hash, /*{{{*/ pkgAcquire::MethodConfig *Cnf) { if(Debug) @@ -544,7 +544,7 @@ void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{ Dequeue(); } /*}}}*/ -void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ +void pkgAcqDiffIndex::Done(string Message,unsigned long long Size,string Md5Hash, /*{{{*/ pkgAcquire::MethodConfig *Cnf) { if(Debug) @@ -710,7 +710,7 @@ bool pkgAcqIndexDiffs::QueueNextDiff() /*{{{*/ return true; } /*}}}*/ -void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ +void pkgAcqIndexDiffs::Done(string Message,unsigned long long Size,string Md5Hash, /*{{{*/ pkgAcquire::MethodConfig *Cnf) { if(Debug) @@ -881,7 +881,7 @@ void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/ to the uncompressed version of the file. If this is so the file is copied into the partial directory. In all other cases the file is decompressed with a gzip uri. */ -void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, +void pkgAcqIndex::Done(string Message,unsigned long long Size,string Hash, pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,Hash,Cfg); @@ -1123,7 +1123,7 @@ string pkgAcqMetaSig::Custom600Headers() return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } -void pkgAcqMetaSig::Done(string Message,unsigned long Size,string MD5, +void pkgAcqMetaSig::Done(string Message,unsigned long long Size,string MD5, pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,MD5,Cfg); @@ -1232,7 +1232,7 @@ string pkgAcqMetaIndex::Custom600Headers() return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } /*}}}*/ -void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash, /*{{{*/ +void pkgAcqMetaIndex::Done(string Message,unsigned long long Size,string Hash, /*{{{*/ pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,Hash,Cfg); @@ -1768,7 +1768,7 @@ bool pkgAcqArchive::QueueNext() if (stat(FinalFile.c_str(),&Buf) == 0) { // Make sure the size matches - if ((unsigned)Buf.st_size == Version->Size) + if ((unsigned long long)Buf.st_size == Version->Size) { Complete = true; Local = true; @@ -1787,7 +1787,7 @@ bool pkgAcqArchive::QueueNext() if (stat(FinalFile.c_str(),&Buf) == 0) { // Make sure the size matches - if ((unsigned)Buf.st_size == Version->Size) + if ((unsigned long long)Buf.st_size == Version->Size) { Complete = true; Local = true; @@ -1807,7 +1807,7 @@ bool pkgAcqArchive::QueueNext() if (stat(DestFile.c_str(),&Buf) == 0) { // Hmm, the partial file is too big, erase it - if ((unsigned)Buf.st_size > Version->Size) + if ((unsigned long long)Buf.st_size > Version->Size) unlink(DestFile.c_str()); else PartialSize = Buf.st_size; @@ -1830,7 +1830,7 @@ bool pkgAcqArchive::QueueNext() // AcqArchive::Done - Finished fetching /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgAcqArchive::Done(string Message,unsigned long Size,string CalcHash, +void pkgAcqArchive::Done(string Message,unsigned long long Size,string CalcHash, pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,CalcHash,Cfg); @@ -1941,7 +1941,7 @@ void pkgAcqArchive::Finished() // --------------------------------------------------------------------- /* The file is added to the queue */ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string Hash, - unsigned long Size,string Dsc,string ShortDesc, + unsigned long long Size,string Dsc,string ShortDesc, const string &DestDir, const string &DestFilename, bool IsIndexFile) : Item(Owner), ExpectedHash(Hash), IsIndexFile(IsIndexFile) @@ -1969,7 +1969,7 @@ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string Hash, if (stat(DestFile.c_str(),&Buf) == 0) { // Hmm, the partial file is too big, erase it - if ((unsigned)Buf.st_size > Size) + if ((unsigned long long)Buf.st_size > Size) unlink(DestFile.c_str()); else PartialSize = Buf.st_size; @@ -1981,7 +1981,7 @@ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string Hash, // AcqFile::Done - Item downloaded OK /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgAcqFile::Done(string Message,unsigned long Size,string CalcHash, +void pkgAcqFile::Done(string Message,unsigned long long Size,string CalcHash, pkgAcquire::MethodConfig *Cnf) { Item::Done(Message,Size,CalcHash,Cnf); diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index f763577ee..e6916a834 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -194,7 +194,7 @@ class pkgAcquire::Item : public WeakPointable * * \sa pkgAcqMethod */ - virtual void Done(string Message,unsigned long Size,string Hash, + virtual void Done(string Message,unsigned long long Size,string Hash, pkgAcquire::MethodConfig *Cnf); /** \brief Invoked when the worker starts to fetch this object. @@ -206,7 +206,7 @@ class pkgAcquire::Item : public WeakPointable * * \sa pkgAcqMethod */ - virtual void Start(string Message,unsigned long Size); + virtual void Start(string Message,unsigned long long Size); /** \brief Custom headers to be sent to the fetch process. * @@ -309,7 +309,7 @@ class pkgAcqSubIndex : public pkgAcquire::Item public: // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Done(string Message,unsigned long long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); virtual string DescURI() {return Desc.URI;}; virtual string Custom600Headers(); @@ -372,7 +372,7 @@ class pkgAcqDiffIndex : public pkgAcquire::Item public: // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Done(string Message,unsigned long long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); virtual string DescURI() {return RealURI + "Index";}; virtual string Custom600Headers(); @@ -508,7 +508,7 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item */ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Done(string Message,unsigned long long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); virtual string DescURI() {return RealURI + "Index";}; @@ -581,7 +581,7 @@ class pkgAcqIndex : public pkgAcquire::Item // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Done(string Message,unsigned long long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); virtual string Custom600Headers(); virtual string DescURI() {return Desc.URI;}; @@ -723,7 +723,7 @@ class pkgAcqMetaSig : public pkgAcquire::Item // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Done(string Message,unsigned long long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); virtual string Custom600Headers(); virtual string DescURI() {return RealURI; }; @@ -818,7 +818,7 @@ class pkgAcqMetaIndex : public pkgAcquire::Item // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size, string Hash, + virtual void Done(string Message,unsigned long long Size, string Hash, pkgAcquire::MethodConfig *Cnf); virtual string Custom600Headers(); virtual string DescURI() {return RealURI; }; @@ -918,7 +918,7 @@ class pkgAcqArchive : public pkgAcquire::Item public: virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Hash, + virtual void Done(string Message,unsigned long long Size,string Hash, pkgAcquire::MethodConfig *Cnf); virtual string DescURI() {return Desc.URI;}; virtual string ShortDesc() {return Desc.ShortDesc;}; @@ -975,7 +975,7 @@ class pkgAcqFile : public pkgAcquire::Item // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string CalcHash, + virtual void Done(string Message,unsigned long long Size,string CalcHash, pkgAcquire::MethodConfig *Cnf); virtual string DescURI() {return Desc.URI;}; virtual string HashSum() {return ExpectedHash.toStr(); }; @@ -1012,7 +1012,7 @@ class pkgAcqFile : public pkgAcquire::Item * is the absolute name to which the file should be downloaded. */ - pkgAcqFile(pkgAcquire *Owner, string URI, string Hash, unsigned long Size, + pkgAcqFile(pkgAcquire *Owner, string URI, string Hash, unsigned long long Size, string Desc, string ShortDesc, const string &DestDir="", const string &DestFilename="", bool IsIndexFile=false); diff --git a/apt-pkg/acquire-method.h b/apt-pkg/acquire-method.h index 2d0fa4590..6551170c4 100644 --- a/apt-pkg/acquire-method.h +++ b/apt-pkg/acquire-method.h @@ -51,8 +51,8 @@ class pkgAcqMethod time_t LastModified; bool IMSHit; string Filename; - unsigned long Size; - unsigned long ResumePoint; + unsigned long long Size; + unsigned long long ResumePoint; void TakeHashes(Hashes &Hash); FetchResult(); diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index 75e03232a..3e1fd98db 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -287,9 +287,9 @@ bool pkgAcquire::Worker::RunMessages() Log->Pulse(Owner->GetOwner()); OwnerQ->ItemDone(Itm); - unsigned long const ServerSize = atol(LookupTag(Message,"Size","0").c_str()); + unsigned long long const ServerSize = atoll(LookupTag(Message,"Size","0").c_str()); if (TotalSize != 0 && ServerSize != TotalSize) - _error->Warning("Size of file %s is not what the server reported %s %lu", + _error->Warning("Size of file %s is not what the server reported %s %llu", Owner->DestFile.c_str(), LookupTag(Message,"Size","0").c_str(),TotalSize); // see if there is a hash to verify diff --git a/apt-pkg/acquire-worker.h b/apt-pkg/acquire-worker.h index 62545829a..ce19091e4 100644 --- a/apt-pkg/acquire-worker.h +++ b/apt-pkg/acquire-worker.h @@ -247,17 +247,17 @@ class pkgAcquire::Worker : public WeakPointable /** \brief How many bytes of the file have been downloaded. Zero * if the current progress of the file cannot be determined. */ - unsigned long CurrentSize; + unsigned long long CurrentSize; /** \brief The total number of bytes to be downloaded. Zero if the * total size of the final is unknown. */ - unsigned long TotalSize; + unsigned long long TotalSize; /** \brief How much of the file was already downloaded prior to * starting this worker. */ - unsigned long ResumePoint; + unsigned long long ResumePoint; /** \brief Tell the subprocess to download the given item. * diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 939c7f4c5..fff487dc8 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -912,7 +912,7 @@ void pkgAcquireStatus::Stop() // AcquireStatus::Fetched - Called when a byte set has been fetched /*{{{*/ // --------------------------------------------------------------------- /* This is used to get accurate final transfer rate reporting. */ -void pkgAcquireStatus::Fetched(unsigned long Size,unsigned long Resume) +void pkgAcquireStatus::Fetched(unsigned long long Size,unsigned long long Resume) { FetchedBytes += Size - Resume; } diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index 7db7a9958..8fad91497 100644 --- a/apt-pkg/acquire.h +++ b/apt-pkg/acquire.h @@ -148,12 +148,7 @@ class pkgAcquire /** \brief The progress indicator for this download. */ pkgAcquireStatus *Log; - /** \brief The total size of the files which are to be fetched. - * - * This is not necessarily the total number of bytes to download - * when, e.g., download resumption and list updates via patches - * are taken into account. - */ + /** \brief The number of files which are to be fetched. */ unsigned long ToFetch; // Configurable parameters for the scheduler @@ -484,7 +479,7 @@ class pkgAcquire::Queue * * \todo Unimplemented. Implement it or remove? */ - bool ItemStart(QItem *Itm,unsigned long Size); + bool ItemStart(QItem *Itm,unsigned long long Size); /** \brief Remove the given item from this queue and set its state * to pkgAcquire::Item::StatDone. @@ -734,7 +729,7 @@ class pkgAcquireStatus * * \param ResumePoint How much of the file was already fetched. */ - virtual void Fetched(unsigned long Size,unsigned long ResumePoint); + virtual void Fetched(unsigned long long Size,unsigned long long ResumePoint); /** \brief Invoked when the user should be prompted to change the * inserted removable media. diff --git a/debian/changelog b/debian/changelog index af6db28b9..cfbea1df7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,8 +4,11 @@ apt (0.8.16~exp3) experimental; urgency=low * apt-pkg/pkgcache.h: - readd All{Foreign,Allowed} as suggested by Julian to remain strictly API compatible + * apt-pkg/acquire*.{cc,h}: + - try even harder to support really big files in the fetcher by + converting (hopefully) everything to 'long long' (Closes: #632271) - -- David Kalnischkies <kalnischkies@gmail.com> Wed, 29 Jun 2011 19:38:44 +0200 + -- David Kalnischkies <kalnischkies@gmail.com> Tue, 05 Jul 2011 15:56:42 +0200 apt (0.8.16~exp2) experimental; urgency=low -- cgit v1.2.3-70-g09d2 From 30fd3c9f07a4222e55c6d776b2937c2697a79254 Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Tue, 5 Jul 2011 19:00:42 +0200 Subject: cherrypick sources.list option documentation from my sid branch --- debian/changelog | 34 ++++++++++++++++++++++++++++++++++ doc/sources.list.5.xml | 18 +++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index cfbea1df7..73881ac54 100644 --- a/debian/changelog +++ b/debian/changelog @@ -50,6 +50,40 @@ apt (0.8.16~exp1) experimental; urgency=low -- Michael Vogt <mvo@debian.org> Wed, 29 Jun 2011 12:40:31 +0200 +apt (0.8.15.2) unstable; urgency=low + + [ David Kalnischkies ] + * apt-pkg/pkgcachegen.cc: + - fallback to memory if file is not writeable even if access() + told us the opposite before (e.g. in fakeroot 1.16) (Closes: #630591) + * doc/sources.list.5.xml: + - document available [options] for sources.list entries (Closes: 632441) + + -- David Kalnischkies <kalnischkies@gmail.com> Tue, 05 Jul 2011 15:12:21 +0200 + +apt (0.8.15.1) unstable; urgency=low + + [ David Kalnischkies ] + * doc/makefile: + - create doxygen directory to avoid depending on magic (Closes: #628799) + * cmdline/apt-key: + - explicitly state that net-update is not supported if no url is set + - require to be root for add, rm, update and net-update + - clarify update vs. net-update in different distros (Closes: #632043) + * debian/apt.symbols: + - forgot 'mips' in the list for all architecture dependent symbols + - comment out gcc-4.5 specific symbols as gcc-4.6 is now default + - the symbol for PrintStatus() is architecture dependent + * apt-pkg/policy.cc: + - do not segfault in pinning if a package with this name doesn't exist. + Thanks to Ferdinand Thommes for the report! + - Defaults is a vector of Pin not of PkgPin + - ensure that only the first specific stanza for a package is used + - save all stanzas which had no effect in Unmatched + - allow package:architecure in Package: + + -- Michael Vogt <mvo@debian.org> Thu, 30 Jun 2011 10:05:36 +0200 + apt (0.8.15) unstable; urgency=low [ Julian Andres Klode ] diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index 837f07683..fab125b4e 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -78,7 +78,7 @@ <para>The format for a <filename>sources.list</filename> entry using the <literal>deb</literal> and <literal>deb-src</literal> types is:</para> - <literallayout>deb uri distribution [component1] [component2] [...]</literallayout> + <literallayout>deb [ options ] uri distribution [component1] [component2] [...]</literallayout> <para>The URI for the <literal>deb</literal> type must specify the base of the Debian distribution, from which APT will find the information it needs. @@ -109,6 +109,17 @@ simultaneous anonymous users. APT also parallelizes connections to different hosts to more effectively deal with sites with low bandwidth.</para> + <para><literal>options</literal> is always optional and needs to be surounded by + square brackets. It can consist of multiple settings in the form + <literal><replaceable>setting</replaceable>=<replaceable>value</replaceable></literal>. + Multiple settings are separated by spaces. The following settings are supported by APT, + note through that unsupported settings will be ignored silently: + <itemizedlist><listitem><para><literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</replaceable>,…</literal> + can be used to specify for which architectures packages information should + be downloaded. If this option is not set all architectures defined by the + <literal>APT::Architectures</literal> option will be downloaded.</para> + </listitem></itemizedlist></para> + <para>It is important to list sources in order of preference, with the most preferred source listed first. Typically this will result in sorting by speed from fastest to slowest (CD-ROM followed by hosts on a local @@ -206,6 +217,11 @@ deb http://security.debian.org/ &stable-codename;/updates main contrib non-free <para>Source line for the above</para> <literallayout>deb-src file:/home/jason/debian unstable main contrib non-free</literallayout> + <para>The first line gets package information for the architectures in <literal>APT::Architectures</literal> + while the second always retrieves <literal>amd64</literal> and <literal>armel</literal>.</para> + <literallayout>deb http://ftp.debian.org/debian &stable-codename; main +deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main</literallayout> + <para>Uses HTTP to access the archive at archive.debian.org, and uses only the hamm/main area.</para> <literallayout>deb http://archive.debian.org/debian-archive hamm main</literallayout> -- cgit v1.2.3-70-g09d2 From c31c1dded85ee1e88231a041aac7e507f2ed426c Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Wed, 13 Jul 2011 16:37:15 +0200 Subject: move implementation of checksums around by abstracting even more --- apt-pkg/contrib/hashsum.cc | 28 +++++++++++++++++++++++++ apt-pkg/contrib/hashsum_template.h | 20 ++++++++++++++++++ apt-pkg/contrib/md5.cc | 23 -------------------- apt-pkg/contrib/md5.h | 16 ++++++-------- apt-pkg/contrib/sha1.cc | 23 -------------------- apt-pkg/contrib/sha1.h | 11 +++------- apt-pkg/contrib/sha2.cc | 43 -------------------------------------- apt-pkg/contrib/sha2.h | 27 +++++++----------------- apt-pkg/makefile | 2 +- 9 files changed, 66 insertions(+), 127 deletions(-) create mode 100644 apt-pkg/contrib/hashsum.cc delete mode 100644 apt-pkg/contrib/sha2.cc diff --git a/apt-pkg/contrib/hashsum.cc b/apt-pkg/contrib/hashsum.cc new file mode 100644 index 000000000..b97eaf831 --- /dev/null +++ b/apt-pkg/contrib/hashsum.cc @@ -0,0 +1,28 @@ +// Cryptographic API Base + +#include <unistd.h> +#include "hashsum_template.h" + +// Summation::AddFD - Add content of file into the checksum /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool SummationImplementation::AddFD(int const Fd, unsigned long Size) { + unsigned char Buf[64 * 64]; + int Res = 0; + int ToEOF = (Size == 0); + unsigned long n = sizeof(Buf); + if (!ToEOF) + n = std::min(Size, n); + while (Size != 0 || ToEOF) + { + Res = read(Fd, Buf, n); + if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read + return false; + if (ToEOF && Res == 0) // EOF + break; + Size -= Res; + Add(Buf,Res); + } + return true; +} + /*}}}*/ diff --git a/apt-pkg/contrib/hashsum_template.h b/apt-pkg/contrib/hashsum_template.h index 7667baf92..2847f3308 100644 --- a/apt-pkg/contrib/hashsum_template.h +++ b/apt-pkg/contrib/hashsum_template.h @@ -84,4 +84,24 @@ class HashSumValue } }; +class SummationImplementation +{ + public: + virtual bool Add(const unsigned char *inbuf, unsigned long inlen) = 0; + inline bool Add(const char *inbuf, unsigned long const inlen) + { return Add((unsigned char *)inbuf, inlen); }; + + inline bool Add(const unsigned char *Data) + { return Add(Data, strlen((const char *)Data)); }; + inline bool Add(const char *Data) + { return Add((const unsigned char *)Data, strlen((const char *)Data)); }; + + inline bool Add(const unsigned char *Beg, const unsigned char *End) + { return Add(Beg, End - Beg); }; + inline bool Add(const char *Beg, const char *End) + { return Add((const unsigned char *)Beg, End - Beg); }; + + bool AddFD(int Fd, unsigned long Size); +}; + #endif diff --git a/apt-pkg/contrib/md5.cc b/apt-pkg/contrib/md5.cc index 6820d3951..65e20e9bb 100644 --- a/apt-pkg/contrib/md5.cc +++ b/apt-pkg/contrib/md5.cc @@ -231,29 +231,6 @@ bool MD5Summation::Add(const unsigned char *data,unsigned long len) return true; } /*}}}*/ -// MD5Summation::AddFD - Add the contents of a FD to the hash /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool MD5Summation::AddFD(int Fd,unsigned long Size) -{ - unsigned char Buf[64*64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ // MD5Summation::Result - Returns the value of the sum /*{{{*/ // --------------------------------------------------------------------- /* Because this must add in the last bytes of the series it prevents anyone diff --git a/apt-pkg/contrib/md5.h b/apt-pkg/contrib/md5.h index 9cc88cfbe..e76428325 100644 --- a/apt-pkg/contrib/md5.h +++ b/apt-pkg/contrib/md5.h @@ -34,26 +34,22 @@ using std::min; #include "hashsum_template.h" -class MD5Summation; - typedef HashSumValue<128> MD5SumValue; -class MD5Summation +class MD5Summation : public SummationImplementation { uint32_t Buf[4]; unsigned char Bytes[2*4]; unsigned char In[16*4]; bool Done; - + public: - bool Add(const unsigned char *Data,unsigned long Size); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; + bool Add(const unsigned char *inbuf, unsigned long inlen); + using SummationImplementation::Add; + MD5SumValue Result(); - + MD5Summation(); }; diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc index 9a6725ef3..4b0552102 100644 --- a/apt-pkg/contrib/sha1.cc +++ b/apt-pkg/contrib/sha1.cc @@ -273,26 +273,3 @@ bool SHA1Summation::Add(const unsigned char *data,unsigned long len) return true; } /*}}}*/ -// SHA1Summation::AddFD - Add content of file into the checksum /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool SHA1Summation::AddFD(int Fd,unsigned long Size) -{ - unsigned char Buf[64 * 64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ diff --git a/apt-pkg/contrib/sha1.h b/apt-pkg/contrib/sha1.h index e7683fa7b..2701fc67e 100644 --- a/apt-pkg/contrib/sha1.h +++ b/apt-pkg/contrib/sha1.h @@ -23,11 +23,9 @@ using std::min; #include "hashsum_template.h" -class SHA1Summation; - typedef HashSumValue<160> SHA1SumValue; -class SHA1Summation +class SHA1Summation : public SummationImplementation { /* assumes 64-bit alignment just in case */ unsigned char Buffer[64] __attribute__((aligned(8))); @@ -36,12 +34,9 @@ class SHA1Summation bool Done; public: + bool Add(const unsigned char *inbuf, unsigned long inlen); + using SummationImplementation::Add; - bool Add(const unsigned char *inbuf,unsigned long inlen); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; SHA1SumValue Result(); SHA1Summation(); diff --git a/apt-pkg/contrib/sha2.cc b/apt-pkg/contrib/sha2.cc deleted file mode 100644 index 4604d3167..000000000 --- a/apt-pkg/contrib/sha2.cc +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Cryptographic API. {{{ - * - * SHA-512, as specified in - * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - */ /*}}}*/ - -#ifdef __GNUG__ -#pragma implementation "apt-pkg/sha2.h" -#endif - -#include <apt-pkg/sha2.h> -#include <apt-pkg/strutl.h> - -// SHA2Summation::AddFD - Add content of file into the checksum /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool SHA2SummationBase::AddFD(int Fd,unsigned long Size){ - unsigned char Buf[64 * 64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ - diff --git a/apt-pkg/contrib/sha2.h b/apt-pkg/contrib/sha2.h index bd5472527..386225889 100644 --- a/apt-pkg/contrib/sha2.h +++ b/apt-pkg/contrib/sha2.h @@ -22,31 +22,16 @@ #include "sha2_internal.h" #include "hashsum_template.h" -using std::string; -using std::min; - -class SHA512Summation; -class SHA256Summation; - typedef HashSumValue<512> SHA512SumValue; typedef HashSumValue<256> SHA256SumValue; -class SHA2SummationBase +class SHA2SummationBase : public SummationImplementation { protected: bool Done; public: - virtual bool Add(const unsigned char *inbuf,unsigned long inlen) = 0; - virtual bool AddFD(int Fd,unsigned long Size); + bool Add(const unsigned char *inbuf, unsigned long len) = 0; - inline bool Add(const char *Data) - { - return Add((unsigned char *)Data,strlen(Data)); - }; - inline bool Add(const unsigned char *Beg,const unsigned char *End) - { - return Add(Beg,End-Beg); - }; void Result(); }; @@ -56,13 +41,15 @@ class SHA256Summation : public SHA2SummationBase unsigned char Sum[32]; public: - virtual bool Add(const unsigned char *inbuf, unsigned long len) + bool Add(const unsigned char *inbuf, unsigned long len) { if (Done) return false; SHA256_Update(&ctx, inbuf, len); return true; }; + using SummationImplementation::Add; + SHA256SumValue Result() { if (!Done) { @@ -86,13 +73,15 @@ class SHA512Summation : public SHA2SummationBase unsigned char Sum[64]; public: - virtual bool Add(const unsigned char *inbuf, unsigned long len) + bool Add(const unsigned char *inbuf, unsigned long len) { if (Done) return false; SHA512_Update(&ctx, inbuf, len); return true; }; + using SummationImplementation::Add; + SHA512SumValue Result() { if (!Done) { diff --git a/apt-pkg/makefile b/apt-pkg/makefile index b11e35250..69d6cbffd 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -20,7 +20,7 @@ APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR) # Source code for the contributed non-core things SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \ contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \ - contrib/md5.cc contrib/sha1.cc contrib/sha2.cc \ + contrib/hashsum.cc contrib/md5.cc contrib/sha1.cc \ contrib/sha2_internal.cc\ contrib/hashes.cc \ contrib/cdromutl.cc contrib/crc-16.cc contrib/netrc.cc \ -- cgit v1.2.3-70-g09d2 From 67dc3830798e6b59a9fce03682c9802233b0a1fe Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Wed, 13 Jul 2011 19:34:11 +0200 Subject: move hash test to libapt-testcases and add a few more tests --- test/hash.cc | 82 ------------------------------ test/libapt/hashsums_test.cc | 116 +++++++++++++++++++++++++++++++++++++++++++ test/libapt/makefile | 6 +++ test/libapt/run-tests | 7 +++ 4 files changed, 129 insertions(+), 82 deletions(-) delete mode 100644 test/hash.cc create mode 100644 test/libapt/hashsums_test.cc diff --git a/test/hash.cc b/test/hash.cc deleted file mode 100644 index 88f09fca0..000000000 --- a/test/hash.cc +++ /dev/null @@ -1,82 +0,0 @@ -#include <apt-pkg/md5.h> -#include <apt-pkg/sha1.h> -#include <apt-pkg/sha2.h> -#include <apt-pkg/strutl.h> -#include <iostream> - -using namespace std; - -template <class T> void Test(const char *In,const char *Out) -{ - T Sum; - Sum.Add(In); - - cout << "expected: '" << Out << "'" << endl; - cout << "got : '" << Sum.Result().Value() << "'" << endl; - cout << "got : '" << Sum.Result().Value() << "'" << endl; - cout << "got : '" << Sum.Result().Value() << "'" << endl; - if (stringcasecmp(Sum.Result().Value(), Out) != 0) { - cout << "FAIL" << endl << endl; - abort(); - } else { - cout << "PASS" << endl << endl; - } -} - -template <class T> void TestMill(const char *Out) -{ - T Sum; - - const unsigned char As[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - unsigned Count = 1000000; - for (; Count != 0;) - { - if (Count >= 64) - { - Sum.Add(As,64); - Count -= 64; - } - else - { - Sum.Add(As,Count); - Count = 0; - } - } - - if (stringcasecmp(Sum.Result().Value(), Out) != 0) - abort(); -} - -int main() -{ - // From FIPS PUB 180-1 - Test<SHA1Summation>("abc","A9993E364706816ABA3E25717850C26C9CD0D89D"); - Test<SHA1Summation>("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "84983E441C3BD26EBAAE4AA1F95129E5E54670F1"); - TestMill<SHA1Summation>("34AA973CD4C4DAA4F61EEB2BDBAD27316534016F"); - - // MD5 tests from RFC 1321 - Test<MD5Summation>("","d41d8cd98f00b204e9800998ecf8427e"); - Test<MD5Summation>("a","0cc175b9c0f1b6a831c399e269772661"); - Test<MD5Summation>("abc","900150983cd24fb0d6963f7d28e17f72"); - Test<MD5Summation>("message digest","f96b697d7cb7938d525a2f31aaf161d0"); - Test<MD5Summation>("abcdefghijklmnopqrstuvwxyz","c3fcd3d76192e4007dfb496cca67e13b"); - Test<MD5Summation>("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - "d174ab98d277d9f5a5611c2c9f419d9f"); - Test<MD5Summation>("12345678901234567890123456789012345678901234567890123456789012345678901234567890", - "57edf4a22be3c955ac49da2e2107b67a"); - - // SHA-256, From FIPS 180-2 - Test<SHA256Summation>("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"); - - // SHA-512, From - Test<SHA512Summation>( - "abc", - "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" - "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"); - - return 0; -} - - diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc new file mode 100644 index 000000000..12096be15 --- /dev/null +++ b/test/libapt/hashsums_test.cc @@ -0,0 +1,116 @@ +#include <apt-pkg/md5.h> +#include <apt-pkg/sha1.h> +#include <apt-pkg/sha2.h> +#include <apt-pkg/strutl.h> +#include <apt-pkg/hashes.h> +#include <iostream> + +#include <stdio.h> + +#include "assert.h" + +template <class T> void Test(const char *In,const char *Out) +{ + T Sum; + Sum.Add(In); + equals(Sum.Result().Value(), Out); +} + +template <class T> void TestMill(const char *Out) +{ + T Sum; + + const unsigned char As[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + unsigned Count = 1000000; + for (; Count != 0;) + { + if (Count >= 64) + { + Sum.Add(As,64); + Count -= 64; + } + else + { + Sum.Add(As,Count); + Count = 0; + } + } + + if (stringcasecmp(Sum.Result().Value(), Out) != 0) + abort(); +} + +int main(int argc, char** argv) +{ + // From FIPS PUB 180-1 + Test<SHA1Summation>("","da39a3ee5e6b4b0d3255bfef95601890afd80709"); + Test<SHA1Summation>("abc","a9993e364706816aba3e25717850c26c9cd0d89d"); + Test<SHA1Summation>("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "84983e441c3bd26ebaae4aa1f95129e5e54670f1"); + TestMill<SHA1Summation>("34aa973cd4c4daa4f61eeb2bdbad27316534016f"); + + // MD5 tests from RFC 1321 + Test<MD5Summation>("","d41d8cd98f00b204e9800998ecf8427e"); + Test<MD5Summation>("a","0cc175b9c0f1b6a831c399e269772661"); + Test<MD5Summation>("abc","900150983cd24fb0d6963f7d28e17f72"); + Test<MD5Summation>("message digest","f96b697d7cb7938d525a2f31aaf161d0"); + Test<MD5Summation>("abcdefghijklmnopqrstuvwxyz","c3fcd3d76192e4007dfb496cca67e13b"); + Test<MD5Summation>("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + "d174ab98d277d9f5a5611c2c9f419d9f"); + Test<MD5Summation>("12345678901234567890123456789012345678901234567890123456789012345678901234567890", + "57edf4a22be3c955ac49da2e2107b67a"); + + // SHA-256, From FIPS 180-2 + Test<SHA256Summation>("", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); + Test<SHA256Summation>("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"); + + // SHA-512 + Test<SHA512Summation>("", + "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce" + "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"); + Test<SHA512Summation>( + "abc", + "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" + "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"); + + + Test<MD5Summation>("The quick brown fox jumps over the lazy dog", "9e107d9d372bb6826bd81d3542a419d6"); + Test<MD5Summation>("The quick brown fox jumps over the lazy dog.", "e4d909c290d0fb1ca068ffaddf22cbd0"); + Test<SHA1Summation>("The quick brown fox jumps over the lazy dog", "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"); + Test<SHA1Summation>("The quick brown fox jumps over the lazy cog", "de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3"); + Test<SHA256Summation>("The quick brown fox jumps over the lazy dog", "d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592"); + Test<SHA256Summation>("The quick brown fox jumps over the lazy dog.", "ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c"); + Test<SHA512Summation>("The quick brown fox jumps over the lazy dog", "07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb64" + "2e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6"); + Test<SHA512Summation>("The quick brown fox jumps over the lazy dog.", "91ea1245f20d46ae9a037a989f54f1f790f0a47607eeb8a14d12890cea77a1bb" + "c6c7ed9cf205e67b7f2b8fd4c7dfd3a7a8617e45f3c463d481c7e586c39ac1ed"); + + FILE* fd = fopen(argv[1], "r"); + if (fd == NULL) { + std::cerr << "Can't open file for 1. testing: " << argv[1] << std::endl; + return 1; + } + Hashes hashes; + hashes.AddFD(fileno(fd)); + equals(argv[2], hashes.MD5.Result().Value()); + equals(argv[3], hashes.SHA1.Result().Value()); + equals(argv[4], hashes.SHA256.Result().Value()); + equals(argv[5], hashes.SHA512.Result().Value()); + + fseek(fd, 0L, SEEK_END); + unsigned long sz = ftell(fd); + fseek(fd, 0L, SEEK_SET); + + Hashes hashes2; + hashes2.AddFD(fileno(fd), sz); + fclose(fd); + equals(argv[2], hashes2.MD5.Result().Value()); + equals(argv[3], hashes2.SHA1.Result().Value()); + equals(argv[4], hashes2.SHA256.Result().Value()); + equals(argv[5], hashes2.SHA512.Result().Value()); + + return 0; +} + + diff --git a/test/libapt/makefile b/test/libapt/makefile index 50058262e..1d36f0c7c 100644 --- a/test/libapt/makefile +++ b/test/libapt/makefile @@ -46,3 +46,9 @@ PROGRAM = GlobalError${BASENAME} SLIBS = -lapt-pkg SOURCE = globalerror_test.cc include $(PROGRAM_H) + +# test the different Hashsum classes +PROGRAM = HashSums${BASENAME} +SLIBS = -lapt-pkg +SOURCE = hashsums_test.cc +include $(PROGRAM_H) diff --git a/test/libapt/run-tests b/test/libapt/run-tests index 4b71c2097..0eea6d4f8 100755 --- a/test/libapt/run-tests +++ b/test/libapt/run-tests @@ -53,6 +53,13 @@ do "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-pt" \ "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-se~" \ "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-st.bak" + elif [ $name = "HashSums${EXT}" ]; then + TMP="$(mktemp)" + dmesg > $TMP + echo -n "Testing with \033[1;35m${name}\033[0m ... " + LD_LIBRARY_PATH=${LDPATH} ${testapp} $TMP $(md5sum $TMP | cut -d' ' -f 1) $(sha1sum $TMP | cut -d' ' -f 1) $(sha256sum $TMP | cut -d' ' -f 1) $(sha512sum $TMP | cut -d' ' -f 1) && echo "\033[1;32mOKAY\033[0m" || echo "\033[1;31mFAILED\033[0m" + rm $TMP + continue fi echo -n "Testing with \033[1;35m${name}\033[0m ... " -- cgit v1.2.3-70-g09d2 From 96c9fb174df24fadcde516f26f89d1a64f42eea7 Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Wed, 13 Jul 2011 22:29:37 +0200 Subject: test that AddFD for single summations works, too --- test/libapt/hashsums_test.cc | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc index 12096be15..ff1536718 100644 --- a/test/libapt/hashsums_test.cc +++ b/test/libapt/hashsums_test.cc @@ -91,25 +91,50 @@ int main(int argc, char** argv) std::cerr << "Can't open file for 1. testing: " << argv[1] << std::endl; return 1; } + { Hashes hashes; hashes.AddFD(fileno(fd)); equals(argv[2], hashes.MD5.Result().Value()); equals(argv[3], hashes.SHA1.Result().Value()); equals(argv[4], hashes.SHA256.Result().Value()); equals(argv[5], hashes.SHA512.Result().Value()); - + } fseek(fd, 0L, SEEK_END); unsigned long sz = ftell(fd); fseek(fd, 0L, SEEK_SET); - - Hashes hashes2; - hashes2.AddFD(fileno(fd), sz); + { + Hashes hashes; + hashes.AddFD(fileno(fd), sz); + equals(argv[2], hashes.MD5.Result().Value()); + equals(argv[3], hashes.SHA1.Result().Value()); + equals(argv[4], hashes.SHA256.Result().Value()); + equals(argv[5], hashes.SHA512.Result().Value()); + } + fseek(fd, 0L, SEEK_SET); + { + MD5Summation md5; + md5.AddFD(fileno(fd)); + equals(argv[2], md5.Result().Value()); + } + fseek(fd, 0L, SEEK_SET); + { + SHA1Summation sha1; + sha1.AddFD(fileno(fd)); + equals(argv[3], sha1.Result().Value()); + } + fseek(fd, 0L, SEEK_SET); + { + SHA256Summation sha2; + sha2.AddFD(fileno(fd)); + equals(argv[4], sha2.Result().Value()); + } + fseek(fd, 0L, SEEK_SET); + { + SHA512Summation sha2; + sha2.AddFD(fileno(fd)); + equals(argv[5], sha2.Result().Value()); + } fclose(fd); - equals(argv[2], hashes2.MD5.Result().Value()); - equals(argv[3], hashes2.SHA1.Result().Value()); - equals(argv[4], hashes2.SHA256.Result().Value()); - equals(argv[5], hashes2.SHA512.Result().Value()); - return 0; } -- cgit v1.2.3-70-g09d2 From 1dab797ca6dc0357474675a0f132c962dee4a2c2 Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Wed, 13 Jul 2011 23:10:38 +0200 Subject: enable Hashes::AddFD() to skip creation of certain hashes --- apt-pkg/contrib/hashes.cc | 19 ++++++++++++------- apt-pkg/contrib/hashes.h | 5 ++++- apt-pkg/contrib/hashsum.cc | 5 ++--- apt-pkg/contrib/hashsum_template.h | 2 +- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/apt-pkg/contrib/hashes.cc b/apt-pkg/contrib/hashes.cc index 66ae33146..d217747df 100644 --- a/apt-pkg/contrib/hashes.cc +++ b/apt-pkg/contrib/hashes.cc @@ -107,7 +107,8 @@ string HashString::toStr() const // Hashes::AddFD - Add the contents of the FD /*{{{*/ // --------------------------------------------------------------------- /* */ -bool Hashes::AddFD(int Fd,unsigned long Size) +bool Hashes::AddFD(int const Fd,unsigned long Size, bool const addMD5, + bool const addSHA1, bool const addSHA256, bool const addSHA512) { unsigned char Buf[64*64]; int Res = 0; @@ -118,14 +119,18 @@ bool Hashes::AddFD(int Fd,unsigned long Size) if (!ToEOF) n = min(Size,(unsigned long)n); Res = read(Fd,Buf,n); if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; + return false; if (ToEOF && Res == 0) // EOF - break; + break; Size -= Res; - MD5.Add(Buf,Res); - SHA1.Add(Buf,Res); - SHA256.Add(Buf,Res); - SHA512.Add(Buf,Res); + if (addMD5 == true) + MD5.Add(Buf,Res); + if (addSHA1 == true) + SHA1.Add(Buf,Res); + if (addSHA256 == true) + SHA256.Add(Buf,Res); + if (addSHA512 == true) + SHA512.Add(Buf,Res); } return true; } diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h index 4b6a08b1f..e702fcca2 100644 --- a/apt-pkg/contrib/hashes.h +++ b/apt-pkg/contrib/hashes.h @@ -67,7 +67,10 @@ class Hashes return MD5.Add(Data,Size) && SHA1.Add(Data,Size) && SHA256.Add(Data,Size) && SHA512.Add(Data,Size); }; inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); + inline bool AddFD(int const Fd,unsigned long Size = 0) + { return AddFD(Fd, Size, true, true, true, true); }; + bool AddFD(int const Fd, unsigned long Size, bool const addMD5, + bool const addSHA1, bool const addSHA256, bool const addSHA512); inline bool Add(const unsigned char *Beg,const unsigned char *End) {return Add(Beg,End-Beg);}; }; diff --git a/apt-pkg/contrib/hashsum.cc b/apt-pkg/contrib/hashsum.cc index b97eaf831..728747d7a 100644 --- a/apt-pkg/contrib/hashsum.cc +++ b/apt-pkg/contrib/hashsum.cc @@ -10,11 +10,10 @@ bool SummationImplementation::AddFD(int const Fd, unsigned long Size) { unsigned char Buf[64 * 64]; int Res = 0; int ToEOF = (Size == 0); - unsigned long n = sizeof(Buf); - if (!ToEOF) - n = std::min(Size, n); while (Size != 0 || ToEOF) { + unsigned n = sizeof(Buf); + if (!ToEOF) n = min(Size,(unsigned long)n); Res = read(Fd, Buf, n); if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read return false; diff --git a/apt-pkg/contrib/hashsum_template.h b/apt-pkg/contrib/hashsum_template.h index 2847f3308..85d94c2af 100644 --- a/apt-pkg/contrib/hashsum_template.h +++ b/apt-pkg/contrib/hashsum_template.h @@ -101,7 +101,7 @@ class SummationImplementation inline bool Add(const char *Beg, const char *End) { return Add((const unsigned char *)Beg, End - Beg); }; - bool AddFD(int Fd, unsigned long Size); + bool AddFD(int Fd, unsigned long Size = 0); }; #endif -- cgit v1.2.3-70-g09d2 From 8c4e1f97686c412f88bb57827a84b776626d9980 Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Wed, 13 Jul 2011 23:23:04 +0200 Subject: * ftparchive/writer.cc: - generate all checksums in one run over the file for Release --- debian/changelog | 4 +++- ftparchive/writer.cc | 34 ++++++++-------------------------- 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9aeb2f809..7b1ca1df0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,13 +7,15 @@ apt (0.8.16~exp3) UNRELEASEDexperimental; urgency=low * apt-pkg/acquire*.{cc,h}: - try even harder to support really big files in the fetcher by converting (hopefully) everything to 'long long' (Closes: #632271) + * ftparchive/writer.cc: + - generate all checksums in one run over the file for Release [ Michael Vogt ] * merge fixes from the debian/unstable upload * merge lp:~mvo/apt/sha512-template to get fixes for the sha1/md5 verifiation (closes: #632520) - -- David Kalnischkies <kalnischkies@gmail.com> Tue, 05 Jul 2011 15:56:42 +0200 + -- David Kalnischkies <kalnischkies@gmail.com> Wed, 13 Jul 2011 23:22:14 +0200 apt (0.8.16~exp2) experimental; urgency=low diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index c43e8f4b4..60db8b990 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -19,8 +19,7 @@ #include <apt-pkg/configuration.h> #include <apt-pkg/aptconfiguration.h> #include <apt-pkg/md5.h> -#include <apt-pkg/sha1.h> -#include <apt-pkg/sha2.h> +#include <apt-pkg/hashes.h> #include <apt-pkg/deblistparser.h> #include <sys/types.h> @@ -1040,35 +1039,18 @@ bool ReleaseWriter::DoPackage(string FileName) CheckSums[NewFileName].size = fd.Size(); + Hashes hs; + hs.AddFD(fd.Fd(), 0, DoMD5, DoSHA1, DoSHA256, DoSHA512); if (DoMD5 == true) - { - MD5Summation MD5; - MD5.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].MD5 = MD5.Result(); - fd.Seek(0); - } + CheckSums[NewFileName].MD5 = hs.MD5.Result(); if (DoSHA1 == true) - { - SHA1Summation SHA1; - SHA1.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].SHA1 = SHA1.Result(); - fd.Seek(0); - } + CheckSums[NewFileName].SHA1 = hs.SHA1.Result(); if (DoSHA256 == true) - { - SHA256Summation SHA256; - SHA256.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].SHA256 = SHA256.Result(); - } - + CheckSums[NewFileName].SHA256 = hs.SHA256.Result(); if (DoSHA512 == true) - { - SHA512Summation SHA512; - SHA512.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].SHA512 = SHA512.Result(); - } + CheckSums[NewFileName].SHA512 = hs.SHA512.Result(); fd.Close(); - + return true; } -- cgit v1.2.3-70-g09d2 From 2dcf7b8f9b9e037901339ddef7d94a6a2bab90db Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Thu, 14 Jul 2011 01:44:35 +0200 Subject: fix sha512 calculation in Hashes::VerifyFiles() --- apt-pkg/contrib/hashes.cc | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/apt-pkg/contrib/hashes.cc b/apt-pkg/contrib/hashes.cc index d217747df..4407574fa 100644 --- a/apt-pkg/contrib/hashes.cc +++ b/apt-pkg/contrib/hashes.cc @@ -53,31 +53,30 @@ HashString::HashString(string StringedHash) /*{{{*/ /*}}}*/ bool HashString::VerifyFile(string filename) const /*{{{*/ { - FileFd fd; - MD5Summation MD5; - SHA1Summation SHA1; - SHA256Summation SHA256; - SHA256Summation SHA512; string fileHash; FileFd Fd(filename, FileFd::ReadOnly); - if(Type == "MD5Sum") + if(Type == "MD5Sum") { + MD5Summation MD5; MD5.AddFD(Fd.Fd(), Fd.Size()); fileHash = (string)MD5.Result(); - } + } else if (Type == "SHA1") { + SHA1Summation SHA1; SHA1.AddFD(Fd.Fd(), Fd.Size()); fileHash = (string)SHA1.Result(); - } - else if (Type == "SHA256") + } + else if (Type == "SHA256") { + SHA256Summation SHA256; SHA256.AddFD(Fd.Fd(), Fd.Size()); fileHash = (string)SHA256.Result(); } - else if (Type == "SHA512") + else if (Type == "SHA512") { + SHA512Summation SHA512; SHA512.AddFD(Fd.Fd(), Fd.Size()); fileHash = (string)SHA512.Result(); } -- cgit v1.2.3-70-g09d2 From d4cfaed3d822b207f24ce11768ee14682a0c8f6b Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Thu, 14 Jul 2011 12:08:16 +0200 Subject: * cmdline/apt-get.cc: - add an --assume-no option for testing to say 'no' to everything --- cmdline/apt-get.cc | 8 +++++++- debian/changelog | 4 +++- doc/apt-get.8.xml | 5 +++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 66ebd30b8..94e078cb3 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -135,6 +135,11 @@ bool YnPrompt(bool Default=true) c1out << _("Y") << endl; return true; } + else if (_config->FindB("APT::Get::Assume-No",false) == true) + { + c1out << _("N") << endl; + return false; + } char response[1024] = ""; cin.getline(response, sizeof(response)); @@ -3245,7 +3250,8 @@ int main(int argc,const char *argv[]) /*{{{*/ {'s',"dry-run","APT::Get::Simulate",0}, {'s',"no-act","APT::Get::Simulate",0}, {'y',"yes","APT::Get::Assume-Yes",0}, - {'y',"assume-yes","APT::Get::Assume-Yes",0}, + {'y',"assume-yes","APT::Get::Assume-Yes",0}, + {0,"assume-no","APT::Get::Assume-No",0}, {'f',"fix-broken","APT::Get::Fix-Broken",0}, {'u',"show-upgraded","APT::Get::Show-Upgraded",0}, {'m',"ignore-missing","APT::Get::Fix-Missing",0}, diff --git a/debian/changelog b/debian/changelog index 7b1ca1df0..5686e02fa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,13 +9,15 @@ apt (0.8.16~exp3) UNRELEASEDexperimental; urgency=low converting (hopefully) everything to 'long long' (Closes: #632271) * ftparchive/writer.cc: - generate all checksums in one run over the file for Release + * cmdline/apt-get.cc: + - add an --assume-no option for testing to say 'no' to everything [ Michael Vogt ] * merge fixes from the debian/unstable upload * merge lp:~mvo/apt/sha512-template to get fixes for the sha1/md5 verifiation (closes: #632520) - -- David Kalnischkies <kalnischkies@gmail.com> Wed, 13 Jul 2011 23:22:14 +0200 + -- David Kalnischkies <kalnischkies@gmail.com> Thu, 14 Jul 2011 12:01:53 +0200 apt (0.8.16~exp2) experimental; urgency=low diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml index 11b53e5e7..23e682fd9 100644 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@ -422,6 +422,11 @@ Configuration Item: <literal>APT::Get::Assume-Yes</literal>.</para></listitem> </varlistentry> + <varlistentry><term><option>--assume-no</option></term> + <listitem><para>Automatic "no" to all prompts. + Configuration Item: <literal>APT::Get::Assume-No</literal>.</para></listitem> + </varlistentry> + <varlistentry><term><option>-u</option></term><term><option>--show-upgraded</option></term> <listitem><para>Show upgraded packages; Print out a list of all packages that are to be upgraded. -- cgit v1.2.3-70-g09d2 From dbbc549457825d5b6507fdd62bcf323ed3a3fb2a Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Thu, 14 Jul 2011 15:54:25 +0200 Subject: replace the last standing double's with long long --- apt-pkg/acquire.cc | 9 ++++----- apt-pkg/acquire.h | 14 ++++++-------- cmdline/acqprogress.cc | 2 +- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index fff487dc8..2064abc50 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -799,7 +799,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) } // Compute the current completion - unsigned long ResumeSize = 0; + unsigned long long ResumeSize = 0; for (pkgAcquire::Worker *I = Owner->WorkersBegin(); I != 0; I = Owner->WorkerStep(I)) if (I->CurrentItem != 0 && I->CurrentItem->Owner->Complete == false) @@ -838,7 +838,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) else CurrentCPS = ((CurrentBytes - ResumeSize) - LastBytes)/Delta; LastBytes = CurrentBytes - ResumeSize; - ElapsedTime = (unsigned long)Delta; + ElapsedTime = (unsigned long long)Delta; Time = NewTime; } @@ -849,8 +849,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) char msg[200]; long i = CurrentItems < TotalItems ? CurrentItems + 1 : CurrentItems; - unsigned long ETA = - (unsigned long)((TotalBytes - CurrentBytes) / CurrentCPS); + unsigned long long const ETA = (TotalBytes - CurrentBytes) / CurrentCPS; // only show the ETA if it makes sense if (ETA > 0 && ETA < 172800 /* two days */ ) @@ -906,7 +905,7 @@ void pkgAcquireStatus::Stop() else CurrentCPS = FetchedBytes/Delta; LastBytes = CurrentBytes; - ElapsedTime = (unsigned int)Delta; + ElapsedTime = (unsigned long long)Delta; } /*}}}*/ // AcquireStatus::Fetched - Called when a byte set has been fetched /*{{{*/ diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index 8fad91497..c9eaa67d1 100644 --- a/apt-pkg/acquire.h +++ b/apt-pkg/acquire.h @@ -650,8 +650,6 @@ struct pkgAcquire::MethodConfig /** \brief A monitor object for downloads controlled by the pkgAcquire class. {{{ * * \todo Why protected members? - * - * \todo Should the double members be uint64_t? */ class pkgAcquireStatus { @@ -669,34 +667,34 @@ class pkgAcquireStatus /** \brief The number of bytes fetched as of the previous call to * pkgAcquireStatus::Pulse, including local items. */ - double LastBytes; + unsigned long long LastBytes; /** \brief The current rate of download as of the most recent call * to pkgAcquireStatus::Pulse, in bytes per second. */ - double CurrentCPS; + unsigned long long CurrentCPS; /** \brief The number of bytes fetched as of the most recent call * to pkgAcquireStatus::Pulse, including local items. */ - double CurrentBytes; + unsigned long long CurrentBytes; /** \brief The total number of bytes that need to be fetched. * * \warning This member is inaccurate, as new items might be * enqueued while the download is in progress! */ - double TotalBytes; + unsigned long long TotalBytes; /** \brief The total number of bytes accounted for by items that * were successfully fetched. */ - double FetchedBytes; + unsigned long long FetchedBytes; /** \brief The amount of time that has elapsed since the download * started. */ - unsigned long ElapsedTime; + unsigned long long ElapsedTime; /** \brief The total number of items that need to be fetched. * diff --git a/cmdline/acqprogress.cc b/cmdline/acqprogress.cc index ba334ce05..d2db949ea 100644 --- a/cmdline/acqprogress.cc +++ b/cmdline/acqprogress.cc @@ -200,7 +200,7 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner) // Add the current progress if (Mode == Long) - snprintf(S,End-S," %lu",I->CurrentSize); + snprintf(S,End-S," %llu",I->CurrentSize); else { if (Mode == Medium || I->TotalSize == 0) -- cgit v1.2.3-70-g09d2 From 4b42f43bed369817398b6c8d538f08e5bf6dff76 Mon Sep 17 00:00:00 2001 From: David Kalnischkies <kalnischkies@gmail.com> Date: Thu, 14 Jul 2011 21:06:09 +0200 Subject: * apt-pkg/deb/debmetaindex.cc: - add trusted=yes option to mark unsigned (local) repository as trusted based on a patch from Ansgar Burchardt, thanks a lot! (Closes: #596498) Note that "apt-get update" still warns about unknown signatures even when [trusted=yes] is given for the source. --- apt-pkg/deb/debmetaindex.cc | 39 ++++++++++++++---- apt-pkg/deb/debmetaindex.h | 3 ++ apt-pkg/metaindex.h | 4 ++ debian/changelog | 5 ++- doc/sources.list.5.xml | 9 ++++- .../test-bug-596498-trusted-unsigned-repo | 47 ++++++++++++++++++++++ 6 files changed, 97 insertions(+), 10 deletions(-) create mode 100755 test/integration/test-bug-596498-trusted-unsigned-repo diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index a91cc34e9..81afb22b6 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -142,11 +142,13 @@ string debReleaseIndex::TranslationIndexURI(const char *Type, const string &Sect return URI + "dists/" + Dist + "/" + TranslationIndexURISuffix(Type, Section); } -debReleaseIndex::debReleaseIndex(string const &URI, string const &Dist) { - this->URI = URI; - this->Dist = Dist; - this->Indexes = NULL; - this->Type = "deb"; +debReleaseIndex::debReleaseIndex(string const &URI, string const &Dist) : + metaIndex(URI, Dist, "deb"), Trusted(CHECK_TRUST) +{} + +debReleaseIndex::debReleaseIndex(string const &URI, string const &Dist, bool const Trusted) : + metaIndex(URI, Dist, "deb") { + SetTrusted(Trusted); } debReleaseIndex::~debReleaseIndex() { @@ -252,8 +254,22 @@ bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll) const return true; } +void debReleaseIndex::SetTrusted(bool const Trusted) +{ + if (Trusted == true) + this->Trusted = ALWAYS_TRUSTED; + else + this->Trusted = NEVER_TRUSTED; +} + bool debReleaseIndex::IsTrusted() const { + if (Trusted == ALWAYS_TRUSTED) + return true; + else if (Trusted == NEVER_TRUSTED) + return false; + + if(_config->FindB("APT::Authentication::TrustCDROM", false)) if(URI.substr(0,strlen("cdrom:")) == "cdrom:") return true; @@ -349,6 +365,7 @@ class debSLTypeDebian : public pkgSourceList::Type vector<string> const Archs = (arch != Options.end()) ? VectorizeString(arch->second, ',') : APT::Configuration::getArchitectures(); + map<string, string>::const_iterator const trusted = Options.find("trusted"); for (vector<metaIndex *>::const_iterator I = List.begin(); I != List.end(); I++) @@ -358,6 +375,9 @@ class debSLTypeDebian : public pkgSourceList::Type continue; debReleaseIndex *Deb = (debReleaseIndex *) (*I); + if (trusted != Options.end()) + Deb->SetTrusted(StringToBool(trusted->second, false)); + /* This check insures that there will be only one Release file queued for all the Packages files and Sources files it corresponds to. */ @@ -375,9 +395,14 @@ class debSLTypeDebian : public pkgSourceList::Type return true; } } + // No currently created Release file indexes this entry, so we create a new one. - // XXX determine whether this release is trusted or not - debReleaseIndex *Deb = new debReleaseIndex(URI, Dist); + debReleaseIndex *Deb; + if (trusted != Options.end()) + Deb = new debReleaseIndex(URI, Dist, StringToBool(trusted->second, false)); + else + Deb = new debReleaseIndex(URI, Dist); + if (IsSrc == true) Deb->PushSectionEntry ("source", new debReleaseIndex::debSectionEntry(Section, IsSrc)); else diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h index 0aaf7f14a..695cfa7cc 100644 --- a/apt-pkg/deb/debmetaindex.h +++ b/apt-pkg/deb/debmetaindex.h @@ -22,10 +22,12 @@ class debReleaseIndex : public metaIndex { /** \brief dpointer placeholder (for later in case we need it) */ void *d; std::map<string, vector<debSectionEntry const*> > ArchEntries; + enum { ALWAYS_TRUSTED, NEVER_TRUSTED, CHECK_TRUST } Trusted; public: debReleaseIndex(string const &URI, string const &Dist); + debReleaseIndex(string const &URI, string const &Dist, bool const Trusted); virtual ~debReleaseIndex(); virtual string ArchiveURI(string const &File) const {return URI + File;}; @@ -43,6 +45,7 @@ class debReleaseIndex : public metaIndex { string TranslationIndexURISuffix(const char *Type, const string &Section) const; virtual vector <pkgIndexFile *> *GetIndexFiles(); + void SetTrusted(bool const Trusted); virtual bool IsTrusted() const; void PushSectionEntry(vector<string> const &Archs, const debSectionEntry *Entry); diff --git a/apt-pkg/metaindex.h b/apt-pkg/metaindex.h index 1d2140799..f60235a5d 100644 --- a/apt-pkg/metaindex.h +++ b/apt-pkg/metaindex.h @@ -39,6 +39,10 @@ class metaIndex virtual vector<pkgIndexFile *> *GetIndexFiles() = 0; virtual bool IsTrusted() const = 0; + metaIndex(string const &URI, string const &Dist, char const * const Type) : + Indexes(NULL), Type(Type), URI(URI), Dist(Dist) { + } + virtual ~metaIndex() { if (Indexes == 0) return; diff --git a/debian/changelog b/debian/changelog index 5686e02fa..d226d91c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,13 +11,16 @@ apt (0.8.16~exp3) UNRELEASEDexperimental; urgency=low - generate all checksums in one run over the file for Release * cmdline/apt-get.cc: - add an --assume-no option for testing to say 'no' to everything + * apt-pkg/deb/debmetaindex.cc: + - add trusted=yes option to mark unsigned (local) repository as trusted + based on a patch from Ansgar Burchardt, thanks a lot! (Closes: #596498) [ Michael Vogt ] * merge fixes from the debian/unstable upload * merge lp:~mvo/apt/sha512-template to get fixes for the sha1/md5 verifiation (closes: #632520) - -- David Kalnischkies <kalnischkies@gmail.com> Thu, 14 Jul 2011 12:01:53 +0200 + -- David Kalnischkies <kalnischkies@gmail.com> Thu, 14 Jul 2011 20:56:45 +0200 apt (0.8.16~exp2) experimental; urgency=low diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index fab125b4e..bf8356348 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -117,8 +117,13 @@ <itemizedlist><listitem><para><literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</replaceable>,…</literal> can be used to specify for which architectures packages information should be downloaded. If this option is not set all architectures defined by the - <literal>APT::Architectures</literal> option will be downloaded.</para> - </listitem></itemizedlist></para> + <literal>APT::Architectures</literal> option will be downloaded.</para></listitem> + <listitem><para><literal>trusted=yes</literal> can be set to indicate that packages + from this source are always authenificated even if the <filename>Release</filename> file + is not signed or the signature can't be checked. This disables parts of &apt-secure; + and should therefore only be used in a local and trusted context. <literal>trusted=no</literal> + is the opposite which handles even correctly authenificated sources as not authenificated.</para></listitem> + </itemizedlist></para> <para>It is important to list sources in order of preference, with the most preferred source listed first. Typically this will result in sorting diff --git a/test/integration/test-bug-596498-trusted-unsigned-repo b/test/integration/test-bug-596498-trusted-unsigned-repo new file mode 100755 index 000000000..6ebc4a3bb --- /dev/null +++ b/test/integration/test-bug-596498-trusted-unsigned-repo @@ -0,0 +1,47 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'i386' + +buildsimplenativepackage 'cool' 'i386' '1.0' 'unstable' + +setupaptarchive + +aptgetupdate() { + rm -rf rootdir/var/lib/apt/ rootdir/var/cache/apt/*.bin + aptget update -qq +} + +PKGTEXT="$(aptget install cool --assume-no -d | head -n 7)" +DEBFILE='rootdir/etc/apt/sources.list.d/apt-test-unstable-deb.list' + +testequal "$PKGTEXT +Download complete and in download only mode" aptget install cool --assume-no -d + +sed -i -e 's#deb#deb [trusted=no]#' $DEBFILE +aptgetupdate + +testequal "$PKGTEXT +WARNING: The following packages cannot be authenticated! + cool +Install these packages without verification [y/N]? N +E: Some packages could not be authenticated" aptget install cool --assume-no -d + +find aptarchive/ \( -name 'Release.gpg' -o -name 'InRelease' \) -delete +sed -i -e 's#deb \[trusted=no\]#deb#' $DEBFILE +aptgetupdate + +testequal "$PKGTEXT +WARNING: The following packages cannot be authenticated! + cool +Install these packages without verification [y/N]? N +E: Some packages could not be authenticated" aptget install cool --assume-no -d + +sed -i -e 's#deb#deb [trusted=yes]#' $DEBFILE +aptgetupdate + +testequal "$PKGTEXT +Download complete and in download only mode" aptget install cool --assume-no -d -- cgit v1.2.3-70-g09d2 From 6932831f2ace44eb3e586186ac848c8ca9b690da Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Fri, 15 Jul 2011 10:08:44 +0200 Subject: releasing version 0.8.16~exp3 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4d7f06fea..ce2a6a8fc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -apt (0.8.16~exp3) UNRELEASEDexperimental; urgency=low +apt (0.8.16~exp3) experimental; urgency=low [ David Kalnischkies ] * apt-pkg/pkgcache.h: @@ -20,7 +20,7 @@ apt (0.8.16~exp3) UNRELEASEDexperimental; urgency=low * merge lp:~mvo/apt/sha512-template to get fixes for the sha1/md5 verifiation (closes: #632520) - -- David Kalnischkies <kalnischkies@gmail.com> Thu, 14 Jul 2011 20:56:45 +0200 + -- Michael Vogt <mvo@debian.org> Fri, 15 Jul 2011 09:56:17 +0200 apt (0.8.16~exp2) experimental; urgency=low -- cgit v1.2.3-70-g09d2 From 0688ccd8d9ae40741f1a2ef0de25a59e2203fc5e Mon Sep 17 00:00:00 2001 From: Julian Andres Klode <jak@debian.org> Date: Wed, 20 Jul 2011 16:37:56 +0200 Subject: apt-pkg/pkgcache.h: Add pkgCache::Header::CacheFileSize, storing the cache size --- apt-pkg/pkgcache.cc | 2 ++ apt-pkg/pkgcache.h | 3 +++ debian/changelog | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index 951caeb78..1fd21a0ad 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -84,6 +84,8 @@ pkgCache::Header::Header() memset(PkgHashTable,0,sizeof(PkgHashTable)); memset(GrpHashTable,0,sizeof(GrpHashTable)); memset(Pools,0,sizeof(Pools)); + + CacheFileSize = 0; } /*}}}*/ // Cache::Header::CheckSizes - Check if the two headers have same *sz /*{{{*/ diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h index 9a9f79420..87912aead 100644 --- a/apt-pkg/pkgcache.h +++ b/apt-pkg/pkgcache.h @@ -314,6 +314,9 @@ struct pkgCache::Header map_ptrloc PkgHashTable[2*1048]; map_ptrloc GrpHashTable[2*1048]; + /** \brief Size of the complete cache file */ + unsigned long CacheFileSize; + bool CheckSizes(Header &Against) const; Header(); }; diff --git a/debian/changelog b/debian/changelog index ce2a6a8fc..6d990760d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +apt (0.8.16~exp4) UNRELEASED; urgency=low + + * apt-pkg/pkgcache.h: + - [ABI break] Add pkgCache::Header::CacheFileSize, storing the cache size + + -- Julian Andres Klode <jak@debian.org> Wed, 20 Jul 2011 16:23:55 +0200 + apt (0.8.16~exp3) experimental; urgency=low [ David Kalnischkies ] -- cgit v1.2.3-70-g09d2 From 1dfda2ce4ce2848a0dda314038ff08ffb81b122b Mon Sep 17 00:00:00 2001 From: Julian Andres Klode <jak@debian.org> Date: Wed, 20 Jul 2011 16:38:24 +0200 Subject: apt-pkg/pkgcachegen.cc: Write the file size to the cache --- apt-pkg/pkgcachegen.cc | 1 + debian/changelog | 2 ++ 2 files changed, 3 insertions(+) diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index b89c8c0d3..70dcd9de9 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -98,6 +98,7 @@ pkgCacheGenerator::~pkgCacheGenerator() return; Cache.HeaderP->Dirty = false; + Cache.HeaderP->CacheFileSize = Map.Size(); Map.Sync(0,sizeof(pkgCache::Header)); } /*}}}*/ diff --git a/debian/changelog b/debian/changelog index 6d990760d..0a161bce7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ apt (0.8.16~exp4) UNRELEASED; urgency=low * apt-pkg/pkgcache.h: - [ABI break] Add pkgCache::Header::CacheFileSize, storing the cache size + * apt-pkg/pkgcachegen.cc: + - Write the file size to the cache -- Julian Andres Klode <jak@debian.org> Wed, 20 Jul 2011 16:23:55 +0200 -- cgit v1.2.3-70-g09d2 From 7d79339f811aeebacb3f841bac6075fdfbadd03f Mon Sep 17 00:00:00 2001 From: Julian Andres Klode <jak@debian.org> Date: Wed, 20 Jul 2011 16:38:40 +0200 Subject: * apt-pkg/pkgcache.cc: - Check that cache is at least CacheFileSize bytes large (LP: #16467) --- apt-pkg/pkgcache.cc | 3 +++ debian/changelog | 2 ++ 2 files changed, 5 insertions(+) diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index 1fd21a0ad..2b8cb6b86 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -157,6 +157,9 @@ bool pkgCache::ReMap(bool const &Errorchecks) HeaderP->CheckSizes(DefHeader) == false) return _error->Error(_("The package cache file is an incompatible version")); + if (Map.Size() < HeaderP->CacheFileSize) + return _error->Error(_("The package cache file is corrupted, it is too small")); + // Locate our VS.. if (HeaderP->VerSysName == 0 || (VS = pkgVersioningSystem::GetVS(StrP + HeaderP->VerSysName)) == 0) diff --git a/debian/changelog b/debian/changelog index 0a161bce7..17840ea75 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,8 @@ apt (0.8.16~exp4) UNRELEASED; urgency=low - [ABI break] Add pkgCache::Header::CacheFileSize, storing the cache size * apt-pkg/pkgcachegen.cc: - Write the file size to the cache + * apt-pkg/pkgcache.cc: + - Check that cache is at least CacheFileSize bytes large (LP: #16467) -- Julian Andres Klode <jak@debian.org> Wed, 20 Jul 2011 16:23:55 +0200 -- cgit v1.2.3-70-g09d2 From f2e4a11df4ee4a67018421ca6c208009a590366b Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Thu, 28 Jul 2011 09:50:51 +0200 Subject: * apt-pkg/cdrom.{cc,h}: - cleanup old ABI break avoidance hacks --- apt-pkg/cdrom.cc | 10 +--------- apt-pkg/cdrom.h | 8 +++----- debian/changelog | 2 ++ 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc index 2a914c665..0ad1c69e5 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -874,9 +874,7 @@ pkgUdevCdromDevices::Dlopen() /*{{{*/ libudev_handle = h; udev_new = (udev* (*)(void)) dlsym(h, "udev_new"); udev_enumerate_add_match_property = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_property"); -#if 0 // FIXME: uncomment on next ABI break udev_enumerate_add_match_sysattr = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_sysattr"); -#endif udev_enumerate_scan_devices = (int (*)(udev_enumerate*))dlsym(h, "udev_enumerate_scan_devices"); udev_enumerate_get_list_entry = (udev_list_entry* (*)(udev_enumerate*))dlsym(h, "udev_enumerate_get_list_entry"); udev_device_new_from_syspath = (udev_device* (*)(udev*, const char*))dlsym(h, "udev_device_new_from_syspath"); @@ -890,10 +888,8 @@ pkgUdevCdromDevices::Dlopen() /*{{{*/ return true; } /*}}}*/ - /*{{{*/ -// compatiblity only with the old API/ABI, can be removed on the next -// ABI break +// convenience interface, this will just call ScanForRemovable vector<CdromDevice> pkgUdevCdromDevices::Scan() { @@ -918,10 +914,6 @@ pkgUdevCdromDevices::ScanForRemovable(bool CdromOnly) if (CdromOnly) udev_enumerate_add_match_property(enumerate, "ID_CDROM", "1"); else { -#if 1 // FIXME: remove the next two lines on the next ABI break - int (*udev_enumerate_add_match_sysattr)(struct udev_enumerate *udev_enumerate, const char *property, const char *value); - udev_enumerate_add_match_sysattr = (int (*)(udev_enumerate*, const char*, const char*))dlsym(libudev_handle, "udev_enumerate_add_match_sysattr"); -#endif udev_enumerate_add_match_sysattr(enumerate, "removable", "1"); } diff --git a/apt-pkg/cdrom.h b/apt-pkg/cdrom.h index e83c38582..614062cbb 100644 --- a/apt-pkg/cdrom.h +++ b/apt-pkg/cdrom.h @@ -92,9 +92,7 @@ class pkgUdevCdromDevices /*{{{*/ struct udev_enumerate *(*udev_enumerate_new) (struct udev *udev); struct udev_list_entry *(*udev_list_entry_get_next)(struct udev_list_entry *list_entry); const char* (*udev_device_get_property_value)(struct udev_device *udev_device, const char *key); -#if 0 // FIXME: uncomment on next ABI break int (*udev_enumerate_add_match_sysattr)(struct udev_enumerate *udev_enumerate, const char *property, const char *value); -#endif // end libudev dlopen public: @@ -104,11 +102,11 @@ class pkgUdevCdromDevices /*{{{*/ // try to open bool Dlopen(); - // this is the new interface - vector<CdromDevice> ScanForRemovable(bool CdromOnly); - // FIXME: compat with the old interface/API/ABI only + // convenience interface, this will just call ScanForRemovable + // with "APT::cdrom::CdromOnly" vector<CdromDevice> Scan(); + vector<CdromDevice> ScanForRemovable(bool CdromOnly); }; /*}}}*/ diff --git a/debian/changelog b/debian/changelog index 4d9a7473b..bc7e4dd59 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,8 @@ apt (0.8.16~exp4) UNRELEASED; urgency=low [ Michael Vogt ] * merged latest fixes from debian-sid + * apt-pkg/cdrom.{cc,h}: + - cleanup old ABI break avoidance hacks -- Julian Andres Klode <jak@debian.org> Wed, 20 Jul 2011 16:23:55 +0200 -- cgit v1.2.3-70-g09d2 From a2cba9cca24762c090ee6988f14ae40f92a6441f Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Thu, 28 Jul 2011 10:19:30 +0200 Subject: cmdline/makefile: ajust comment --- cmdline/makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmdline/makefile b/cmdline/makefile index 6d988a8f5..07e9eb8ca 100644 --- a/cmdline/makefile +++ b/cmdline/makefile @@ -73,7 +73,7 @@ LIB_MAKES = apt-pkg/makefile SOURCE = apt-internal-solver.cc include $(PROGRAM_H) -# The internal solver acting as an external +# This just dumps out the state PROGRAM=apt-dump-solver SLIBS = -lapt-pkg $(INTLLIBS) LIB_MAKES = apt-pkg/makefile -- cgit v1.2.3-70-g09d2 From 14b4780d0da30493b949bf65587f4e8a71db561d Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Thu, 28 Jul 2011 10:26:39 +0200 Subject: * [ABI break] apt-pkg/acquire-item.{cc,h}: - cleanup around OptionalIndexTarget and SubIndexTarget --- apt-pkg/acquire-item.cc | 10 ---------- apt-pkg/acquire-item.h | 25 ++++++++++++++++++++----- debian/changelog | 2 ++ 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index aa77824f8..df83d1481 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -2071,13 +2071,3 @@ 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 e6916a834..f39a90c0b 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -646,8 +646,9 @@ class pkgAcqIndexTrans : public pkgAcqIndex }; /*}}}*/ /** \brief Information about an index file. */ /*{{{*/ -struct IndexTarget +class IndexTarget { + public: /** \brief A URI from which the index file can be downloaded. */ string URI; @@ -662,14 +663,28 @@ struct IndexTarget */ string MetaKey; - //FIXME: We should use virtual methods here instead… - bool IsOptional() const; - bool IsSubIndex() const; + virtual bool IsOptional() const { + return false; + } + virtual bool IsSubIndex() const { + return false; + } }; /*}}}*/ /** \brief Information about an optional index file. */ /*{{{*/ -struct OptionalIndexTarget : public IndexTarget +class OptionalIndexTarget : public IndexTarget +{ + virtual bool IsOptional() const { + return true; + } +}; + /*}}}*/ +/** \brief Information about an subindex index file. */ /*{{{*/ +class SubIndexTarget : public IndexTarget { + virtual bool IsSubIndex() const { + return true; + } }; /*}}}*/ diff --git a/debian/changelog b/debian/changelog index bc7e4dd59..c8af59ab2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,8 @@ apt (0.8.16~exp4) UNRELEASED; urgency=low * merged latest fixes from debian-sid * apt-pkg/cdrom.{cc,h}: - cleanup old ABI break avoidance hacks + * [ABI break] apt-pkg/acquire-item.{cc,h}: + - cleanup around OptionalIndexTarget and SubIndexTarget -- Julian Andres Klode <jak@debian.org> Wed, 20 Jul 2011 16:23:55 +0200 -- cgit v1.2.3-70-g09d2 From 75bda61948950a88fdd41a5362920cc46c9669e2 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Thu, 28 Jul 2011 11:58:55 +0200 Subject: [ABI break] merged patch from Jonathan Thomas to have a new RecordField() function in the pkgRecorder parser. Many thanks Thomas --- apt-pkg/deb/debrecords.cc | 9 +++++++++ apt-pkg/deb/debrecords.h | 3 +++ apt-pkg/pkgrecords.h | 5 ++++- debian/changelog | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/apt-pkg/deb/debrecords.cc b/apt-pkg/deb/debrecords.cc index 1ca9ae1d2..f323c03c2 100644 --- a/apt-pkg/deb/debrecords.cc +++ b/apt-pkg/deb/debrecords.cc @@ -101,6 +101,15 @@ string debRecordParser::Maintainer() return Section.FindS("Maintainer"); } /*}}}*/ +// RecordParser::RecordField - Return the value of an arbitrary field /*{{*/ +// --------------------------------------------------------------------- +/* */ +string debRecordParser::RecordField(const char *fieldName) +{ + return Section.FindS(fieldName); +} + + /*}}}*/ // RecordParser::ShortDesc - Return a 1 line description /*{{{*/ // --------------------------------------------------------------------- /* */ diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h index 9692ac94c..7868bfa3d 100644 --- a/apt-pkg/deb/debrecords.h +++ b/apt-pkg/deb/debrecords.h @@ -50,6 +50,9 @@ class debRecordParser : public pkgRecords::Parser virtual string Name(); virtual string Homepage(); + // An arbitrary custom field + virtual string RecordField(const char *fieldName); + virtual void GetRec(const char *&Start,const char *&Stop); debRecordParser(string FileName,pkgCache &Cache); diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h index 78e39e577..ce92cacc4 100644 --- a/apt-pkg/pkgrecords.h +++ b/apt-pkg/pkgrecords.h @@ -69,7 +69,10 @@ class pkgRecords::Parser /*{{{*/ virtual string LongDesc() {return string();}; virtual string Name() {return string();}; virtual string Homepage() {return string();} - + + // An arbitrary custom field + virtual string RecordField(const char *fieldName) { return string();}; + // The record in binary form virtual void GetRec(const char *&Start,const char *&Stop) {Start = Stop = 0;}; diff --git a/debian/changelog b/debian/changelog index c8af59ab2..08635cae7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,9 @@ apt (0.8.16~exp4) UNRELEASED; urgency=low - cleanup old ABI break avoidance hacks * [ABI break] apt-pkg/acquire-item.{cc,h}: - cleanup around OptionalIndexTarget and SubIndexTarget + * [ABI break] merged patch from Jonathan Thomas to have a new + RecordField() function in the pkgRecorder parser. Many thanks + Thomas -- Julian Andres Klode <jak@debian.org> Wed, 20 Jul 2011 16:23:55 +0200 -- cgit v1.2.3-70-g09d2 From b20c16833e20da8e367221b32764889cafe5b4c1 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Thu, 28 Jul 2011 13:55:15 +0200 Subject: [ABI break] merge patch from Jonathan Thomas to speed up the depcache by caching the install-recommends and install-suggests values --- apt-pkg/depcache.cc | 4 ++-- apt-pkg/depcache.h | 10 +++++++++- debian/changelog | 3 +++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 72a0bb542..ee9315069 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1511,7 +1511,7 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator const &Dep) return true; else if(Dep->Type == pkgCache::Dep::Recommends) { - if ( _config->FindB("APT::Install-Recommends", false)) + if (InstallRecommends) return true; // we suport a special mode to only install-recommends for certain // sections @@ -1522,7 +1522,7 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator const &Dep) return true; } else if(Dep->Type == pkgCache::Dep::Suggests) - return _config->FindB("APT::Install-Suggests", false); + return InstallSuggests; return false; } diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index adc010c28..d935c1887 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -258,13 +258,21 @@ class pkgDepCache : protected pkgCache::Namespace class Policy { public: - + Policy() { + InstallRecommends = _config->FindB("APT::Install-Recommends", false); + InstallSuggests = _config->FindB("APT::Install-Suggests", false); + } + virtual VerIterator GetCandidateVer(PkgIterator const &Pkg); virtual bool IsImportantDep(DepIterator const &Dep); virtual signed short GetPriority(PkgIterator const &Pkg); virtual signed short GetPriority(PkgFileIterator const &File); virtual ~Policy() {}; + + private: + bool InstallRecommends; + bool InstallSuggests; }; private: diff --git a/debian/changelog b/debian/changelog index 08635cae7..e4d1cdd54 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,9 @@ apt (0.8.16~exp4) UNRELEASED; urgency=low * [ABI break] merged patch from Jonathan Thomas to have a new RecordField() function in the pkgRecorder parser. Many thanks Thomas + * [ABI break] merge patch from Jonathan Thomas to speed up the + depcache by caching the install-recommends and install-suggests + values -- Julian Andres Klode <jak@debian.org> Wed, 20 Jul 2011 16:23:55 +0200 -- cgit v1.2.3-70-g09d2 From c0082110a8ced952da0af0195b46c211ad4f9a05 Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Thu, 28 Jul 2011 17:25:43 +0200 Subject: releasing version 0.8.16~exp4 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f59734a4f..66c8a884b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -apt (0.8.16~exp4) UNRELEASED; urgency=low +apt (0.8.16~exp4) experimental; urgency=low [ Julian Andres Klode ] * apt-pkg/pkgcache.h: @@ -28,7 +28,7 @@ apt (0.8.16~exp4) UNRELEASED; urgency=low * apt-pkg/sourcelist.{cc,h}: - add pkgSourceList::GetLastModifiedTime() helper - -- Julian Andres Klode <jak@debian.org> Wed, 20 Jul 2011 16:23:55 +0200 + -- Michael Vogt <mvo@debian.org> Thu, 28 Jul 2011 16:57:08 +0200 apt (0.8.16~exp3) experimental; urgency=low -- cgit v1.2.3-70-g09d2 From 6fd07d3a70819450b9a546a2b66989667f869fdc Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Fri, 29 Jul 2011 13:44:18 +0200 Subject: * apt-pkg/makefile: - install sha256.h compat header --- apt-pkg/makefile | 2 +- debian/changelog | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apt-pkg/makefile b/apt-pkg/makefile index 69d6cbffd..e1f69dd65 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -26,7 +26,7 @@ SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \ contrib/cdromutl.cc contrib/crc-16.cc contrib/netrc.cc \ contrib/fileutl.cc HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h netrc.h\ - md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha2.h \ + md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha2.h sha256.h\ sha2_internal.h \ hashes.h hashsum_template.h\ macros.h weakptr.h diff --git a/debian/changelog b/debian/changelog index 66c8a884b..339b92c79 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +apt (0.8.16~exp5) UNRELEASED; urgency=low + + * apt-pkg/makefile: + - install sha256.h compat header + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 29 Jul 2011 13:44:01 +0200 + apt (0.8.16~exp4) experimental; urgency=low [ Julian Andres Klode ] -- cgit v1.2.3-70-g09d2 From 6f33ec4884b6d77e499bb3885aeec14c74943871 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Fri, 29 Jul 2011 14:55:52 +0200 Subject: apt-pkg/contrib/sha256.h: use #warning to warn about deprecated header --- apt-pkg/contrib/sha256.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/contrib/sha256.h b/apt-pkg/contrib/sha256.h index fe2b30ac2..15146c948 100644 --- a/apt-pkg/contrib/sha256.h +++ b/apt-pkg/contrib/sha256.h @@ -3,6 +3,6 @@ #include "sha2.h" -#warn "This header is deprecated, please include sha2.h instead" +#warning "This header is deprecated, please include sha2.h instead" #endif -- cgit v1.2.3-70-g09d2 From e99a544c8c48d8067d008b5c7e4e1d5479529ce2 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Fri, 29 Jul 2011 16:33:20 +0200 Subject: test/libapt/hashsums_test.cc: add a test for HashString and VerifyFile --- test/libapt/hashsums_test.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc index ff1536718..2cb71cc38 100644 --- a/test/libapt/hashsums_test.cc +++ b/test/libapt/hashsums_test.cc @@ -135,6 +135,21 @@ int main(int argc, char** argv) equals(argv[5], sha2.Result().Value()); } fclose(fd); + + // test HashString code + { + HashString sha2("SHA256", argv[4]); + equals(sha2.VerifyFile(argv[1]), true); + } + { + HashString sha2("SHA512", argv[5]); + equals(sha2.VerifyFile(argv[1]), true); + } + { + HashString sha2("SHA256:"+string(argv[4])); + equals(sha2.VerifyFile(argv[1]), true); + } + return 0; } -- cgit v1.2.3-70-g09d2 From 3d27d81fd7d4bd0017a177698e891250893309f0 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Fri, 29 Jul 2011 18:40:34 +0200 Subject: apt-pkg/contrib/sha2_internal.h: remove extern "C" to avoid symbol clash with libssl --- apt-pkg/contrib/sha2_internal.h | 9 --------- 1 file changed, 9 deletions(-) diff --git a/apt-pkg/contrib/sha2_internal.h b/apt-pkg/contrib/sha2_internal.h index bf759ad45..d9d429c92 100644 --- a/apt-pkg/contrib/sha2_internal.h +++ b/apt-pkg/contrib/sha2_internal.h @@ -35,11 +35,6 @@ #ifndef __SHA2_H__ #define __SHA2_H__ -#ifdef __cplusplus -extern "C" { -#endif - - /* * Import u_intXX_t size_t type definitions from system headers. You * may need to change this, or define these things yourself in this @@ -189,9 +184,5 @@ char* SHA512_Data(); #endif /* NOPROTO */ -#ifdef __cplusplus -} -#endif /* __cplusplus */ - #endif /* __SHA2_H__ */ -- cgit v1.2.3-70-g09d2 From 5e7b0aa9eb884f663c3a87968057d9f540fe0175 Mon Sep 17 00:00:00 2001 From: Michael Vogt <michael.vogt@ubuntu.com> Date: Mon, 1 Aug 2011 10:56:49 +0200 Subject: apt-pkg/sourcelist.cc: GetListOfFilesInDir() fails if the dir does not exists, so test before using that --- apt-pkg/sourcelist.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc index c96ccfd77..aaff16316 100644 --- a/apt-pkg/sourcelist.cc +++ b/apt-pkg/sourcelist.cc @@ -346,10 +346,14 @@ bool pkgSourceList::ReadSourceDir(string Dir) /* */ time_t pkgSourceList::GetLastModifiedTime() { - // go over the parts + vector<string> List; + string Main = _config->FindFile("Dir::Etc::sourcelist"); string Parts = _config->FindDir("Dir::Etc::sourceparts"); - vector<string> const List = GetListOfFilesInDir(Parts, "list", true); + + // go over the parts + if (DirectoryExists(Parts) == true) + List = GetListOfFilesInDir(Parts, "list", true); // calculate the time time_t mtime_sources = GetModificationTime(Main); -- cgit v1.2.3-70-g09d2 From 8efc4d7b07ea389aa26eb017b66080eee2940653 Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Fri, 5 Aug 2011 09:12:31 +0200 Subject: apt-pkg/pkgcachegen.cc: fix compiler error --- apt-pkg/pkgcachegen.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 0e6ae698d..3c21b2442 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -648,7 +648,7 @@ bool pkgCacheGenerator::FinishCache(OpProgress *Progress) bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same); for (vector<string>::const_iterator A = archs.begin(); A != archs.end(); ++A) { - if (Arch == 0 || *A == Arch) + if (*A == Arch) continue; /* We allow only one installed arch at the time per group, therefore each group member conflicts -- cgit v1.2.3-70-g09d2 From c5f661b715fbd86fcbca694c44bb8422f01db267 Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Fri, 5 Aug 2011 10:48:18 +0200 Subject: * apt-pkg/acquire-item.{cc,h}: - do not check for a "Package" tag in optional index targets like the translations index --- apt-pkg/acquire-item.cc | 4 ++++ apt-pkg/acquire-item.h | 10 ++++++++++ configure.in | 2 +- debian/changelog | 7 +++++-- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index df83d1481..d0fbf948f 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -808,6 +808,9 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, IndexTarget const *Target, if (CompressionExtension.empty() == false) CompressionExtension.erase(CompressionExtension.end()-1); + if (Target->IsOptional()) + Verify = false; + Init(Target->URI, Target->Description, Target->ShortDesc); } /*}}}*/ @@ -905,6 +908,7 @@ void pkgAcqIndex::Done(string Message,unsigned long long Size,string Hash, /* Verify the index file for correctness (all indexes must * have a Package field) (LP: #346386) (Closes: #627642) */ + if (Verify == true) { FileFd fd(DestFile, FileFd::ReadOnly); pkgTagSection sec; diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index f39a90c0b..13be17a01 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -559,6 +559,16 @@ class pkgAcqIndex : public pkgAcquire::Item */ bool Erase; + /** \brief Verify for correctness by checking if a "Package" + * tag is found in the index. This can be set to + * false for optional index targets + * + */ + // FIXME: instead of a bool it should use a verify string that will + // then be used in the pkgAcqIndex::Done method to ensure that + // the downloaded file contains the expected tag + bool Verify; + /** \brief The download request that is currently being * processed. */ diff --git a/configure.in b/configure.in index 3dde2fe47..89c4b240c 100644 --- a/configure.in +++ b/configure.in @@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib) AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in) dnl -- SET THIS TO THE RELEASE VERSION -- -AC_DEFINE_UNQUOTED(VERSION,"0.8.15") +AC_DEFINE_UNQUOTED(VERSION,"0.8.16~exp5") PACKAGE="apt" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_SUBST(PACKAGE) diff --git a/debian/changelog b/debian/changelog index 2d3f1a9c9..f0c0790fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -apt (0.8.16~exp5) UNRELEASED; urgency=low +apt (0.8.16~exp5) UNRELEASEDexperimental; urgency=low * apt-pkg/makefile: - install sha256.h compat header @@ -7,8 +7,11 @@ apt (0.8.16~exp5) UNRELEASED; urgency=low libapt does not segfault if the cache is remapped in between (LP: #812862) - fix crash when P.Arch() was used but the cache got remapped + * apt-pkg/acquire-item.{cc,h}: + - do not check for a "Package" tag in optional index targets + like the translations index - -- Michael Vogt <mvo@debian.org> Mon, 01 Aug 2011 15:31:55 +0200 + -- Michael Vogt <mvo@debian.org> Fri, 05 Aug 2011 09:11:42 +0200 apt (0.8.16~exp4) experimental; urgency=low -- cgit v1.2.3-70-g09d2 From 97efc27f0723f09405d7a1836ab21c2e2948eb10 Mon Sep 17 00:00:00 2001 From: Michael Vogt <egon@debian-devbox> Date: Fri, 5 Aug 2011 11:00:46 +0200 Subject: apt-pkg/acquire-item.cc: always init Verify --- apt-pkg/acquire-item.cc | 4 ++++ debian/changelog | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index d0fbf948f..d8fa1f828 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -808,8 +808,12 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, IndexTarget const *Target, if (CompressionExtension.empty() == false) CompressionExtension.erase(CompressionExtension.end()-1); + // only verify non-optional targets, see acquire-item.h for a FIXME + // to make this more flexible if (Target->IsOptional()) Verify = false; + else + Verify = true; Init(Target->URI, Target->Description, Target->ShortDesc); } diff --git a/debian/changelog b/debian/changelog index f0c0790fb..c4197721f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -apt (0.8.16~exp5) UNRELEASEDexperimental; urgency=low +apt (0.8.16~exp5) experimental; urgency=low * apt-pkg/makefile: - install sha256.h compat header @@ -11,7 +11,7 @@ apt (0.8.16~exp5) UNRELEASEDexperimental; urgency=low - do not check for a "Package" tag in optional index targets like the translations index - -- Michael Vogt <mvo@debian.org> Fri, 05 Aug 2011 09:11:42 +0200 + -- Michael Vogt <mvo@debian.org> Fri, 05 Aug 2011 10:57:08 +0200 apt (0.8.16~exp4) experimental; urgency=low -- cgit v1.2.3-70-g09d2