From: Michael Vogt Date: Tue, 21 Jul 2009 14:05:52 +0000 (+0200) Subject: * apt-pkg/acquire.cc: X-Git-Tag: 0.7.22~16 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/53391d0fc55f118194467b3d436f91fbc1097c31?hp=-c * apt-pkg/acquire.cc: - make the max pipeline depth of the acquire queue configurable via Acquire::Max-Pipeline-Depth * apt-pkg/deb/dpkgpm.cc: - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3 (off by default) - send "dpkg-exec" message on the status fd when dpkg is run - provide DPkg::Chroot-Directory config option (useful for testing) - fix potential hang when in a backgroud process group * apt-pkg/algorithms.cc: - consider recommends when making the scores for the problem resolver * apt-pkg/acquire-worker.cc: - show error details of failed methods * apt-pkg/contrib/fileutl.cc: - if a process aborts with signal, show signal number * methods/http.cc: - ignore SIGPIPE, we deal with EPIPE from write in HttpMethod::ServerDie() (LP: #385144) * apt-pkg/indexcopy.cc: - support having CDs with no Packages file (just a Packages.gz) by not forcing a verification on non-existing files (LP: #255545) - remove the gettext from a string that consists entirely of variables (LP: #56792) * apt-pkg/cacheiterators.h: - add missing checks for Owner == 0 in end() * apt-pkg/indexrecords.cc: - fix some i18n issues * apt-pkg/contrib/strutl.h: - add new strprintf() function to make i18n strings easier - fix compiler warning * apt-pkg/deb/debsystem.cc: - make strings i18n able * fix problematic use of tolower() when calculating the version hash by using locale independant tolower_ascii() function. Thanks to M. Vefa Bicakci (LP: #80248) * build fixes for g++-4.4 * cmdline/apt-mark: - add "showauto" option to show automatically installed packages * document --install-recommends and --no-install-recommends (thanks to Dereck Wonnacott, LP: #126180) * Updated cron script to support backups by hardlinks and verbose levels. All features turned off by default. * Added more error handlings. Closes: #438803, #462734, #454989, * Refactored condition structure to make download and upgrade performed if only previous steps succeeded. Closes: #341970 * Documented all cron script related configuration items in configure-index. * apt-ftparchive might write corrupt Release files (LP: #46439) * Apply --important option to apt-cache depends (LP: #16947) --- 53391d0fc55f118194467b3d436f91fbc1097c31 diff --combined apt-pkg/acquire.cc index daea234d3,bafba337e..c1f6581e2 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@@ -24,7 -24,8 +24,8 @@@ #include #include - + #include + #include #include #include @@@ -265,7 -266,7 +266,7 @@@ pkgAcquire::MethodConfig *pkgAcquire::G return 0; /* if a method uses DownloadLimit, we switch to SingleInstance mode */ - if(_config->FindI("Acquire::"+Access+"::DlLimit",0) > 0) + if(_config->FindI("Acquire::"+Access+"::Dl-Limit",0) > 0) Conf->SingleInstance = true; return Conf; @@@ -620,7 -621,7 +621,7 @@@ bool pkgAcquire::Queue::Startup( added other source retry to have cycle maintain a pipeline depth on its own. */ if (Cnf->Pipeline == true) - MaxPipeDepth = 1000; + MaxPipeDepth = _config->FindI("Acquire::Max-Pipeline-Depth",10); else MaxPipeDepth = 1; } diff --combined apt-pkg/algorithms.cc index 2ad064319,b6f4705f3..1fd3d39a4 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@@ -489,34 -489,6 +489,36 @@@ void pkgProblemResolver::MakeScores( unsigned long Size = Cache.Head().PackageCount; memset(Scores,0,sizeof(*Scores)*Size); + // Important Required Standard Optional Extra + signed short PrioMap[] = { + 0, + _config->FindI("pkgProblemResolver::Scores::Important",3), + _config->FindI("pkgProblemResolver::Scores::Required",2), + _config->FindI("pkgProblemResolver::Scores::Standard",1), + _config->FindI("pkgProblemResolver::Scores::Optional",-1), + _config->FindI("pkgProblemResolver::Scores::Extra",-2) + }; + signed short PrioEssentials = _config->FindI("pkgProblemResolver::Scores::Essentials",100); + signed short PrioInstalledAndNotObsolete = _config->FindI("pkgProblemResolver::Scores::NotObsolete",1); + signed short PrioDepends = _config->FindI("pkgProblemResolver::Scores::Depends",1); ++ signed short PrioRecommends = _config->FindI("pkgProblemResolver::Scores::Recommends",1); + signed short AddProtected = _config->FindI("pkgProblemResolver::Scores::AddProtected",10000); + signed short AddEssential = _config->FindI("pkgProblemResolver::Scores::AddEssential",5000); + + if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true) + clog << "Settings used to calculate pkgProblemResolver::Scores::" << endl + << " Important => " << PrioMap[1] << endl + << " Required => " << PrioMap[2] << endl + << " Standard => " << PrioMap[3] << endl + << " Optional => " << PrioMap[4] << endl + << " Extra => " << PrioMap[5] << endl + << " Essentials => " << PrioEssentials << endl + << " InstalledAndNotObsolete => " << PrioInstalledAndNotObsolete << endl + << " Depends => " << PrioDepends << endl ++ << " Recommends => " << PrioRecommends << endl + << " AddProtected => " << AddProtected << endl + << " AddEssential => " << AddEssential << endl; + // Generate the base scores for a package based on its properties for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++) { @@@ -530,9 -502,11 +532,9 @@@ to allow an obsolete essential packages to be removed by a conflicts on a powerfull normal package (ie libc6) */ if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) - Score += 100; + Score += PrioEssentials; // We transform the priority - // Important Required Standard Optional Extra - signed short PrioMap[] = {0,3,2,1,-1,-2}; if (Cache[I].InstVerIter(Cache)->Priority <= 5) Score += PrioMap[Cache[I].InstVerIter(Cache)->Priority]; @@@ -541,7 -515,7 +543,7 @@@ if those are not obsolete */ if (I->CurrentVer != 0 && Cache[I].CandidateVer != 0 && Cache[I].CandidateVerIter(Cache).Downloadable()) - Score += 1; + Score += PrioInstalledAndNotObsolete; } // Now that we have the base scores we go and propogate dependencies @@@ -552,8 -526,10 +554,11 @@@ for (pkgCache::DepIterator D = Cache[I].InstVerIter(Cache).DependsList(); D.end() == false; D++) { - if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends) - Scores[D.TargetPkg()->ID]+= PrioDepends; + if (D->Type == pkgCache::Dep::Depends || - D->Type == pkgCache::Dep::PreDepends || - D->Type == pkgCache::Dep::Recommends) - Scores[D.TargetPkg()->ID]++; ++ D->Type == pkgCache::Dep::PreDepends) ++ Scores[D.TargetPkg()->ID] += PrioDepends; ++ else if (D->Type == pkgCache::Dep::Recommends) ++ Scores[D.TargetPkg()->ID] += PrioRecommends; } } @@@ -573,7 -549,9 +578,9 @@@ { // Only do it for the install version if ((pkgCache::Version *)D.ParentVer() != Cache[D.ParentPkg()].InstallVer || - (D->Type != pkgCache::Dep::Depends && D->Type != pkgCache::Dep::PreDepends)) + (D->Type != pkgCache::Dep::Depends && + D->Type != pkgCache::Dep::PreDepends && + D->Type != pkgCache::Dep::Recommends)) continue; Scores[I->ID] += abs(OldScores[D.ParentPkg()->ID]); @@@ -598,10 -576,10 +605,10 @@@ for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++) { if ((Flags[I->ID] & Protected) != 0) - Scores[I->ID] += 10000; + Scores[I->ID] += AddProtected; if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) - Scores[I->ID] += 5000; - } + Scores[I->ID] += AddEssential; + } } /*}}}*/ // ProblemResolver::DoUpgrade - Attempt to upgrade this package /*{{{*/ @@@ -777,21 -755,19 +784,21 @@@ bool pkgProblemResolver::Resolve(bool B *PEnd++ = I; This = this; qsort(PList,PEnd - PList,sizeof(*PList),&ScoreSort); - -/* for (pkgCache::Package **K = PList; K != PEnd; K++) - if (Scores[(*K)->ID] != 0) - { - pkgCache::PkgIterator Pkg(Cache,*K); - clog << Scores[(*K)->ID] << ' ' << Pkg.Name() << - ' ' << (pkgCache::Version *)Pkg.CurrentVer() << ' ' << - Cache[Pkg].InstallVer << ' ' << Cache[Pkg].CandidateVer << endl; - } */ + + if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true) + { + clog << "Show Scores" << endl; + for (pkgCache::Package **K = PList; K != PEnd; K++) + if (Scores[(*K)->ID] != 0) + { + pkgCache::PkgIterator Pkg(Cache,*K); + clog << Scores[(*K)->ID] << ' ' << Pkg << std::endl; + } + } if (Debug == true) clog << "Starting 2" << endl; - + /* Now consider all broken packages. For each broken package we either remove the package or fix it's problem. We do this once, it should not be possible for a loop to form (that is a < b < c and fixing b by @@@ -906,7 -882,7 +913,7 @@@ } if (Debug == true) - clog << "Package " << I.Name() << " has broken dep on " << Start.TargetPkg().Name() << endl; + clog << "Package " << I.Name() << " has broken " << Start.DepType() << " on " << Start.TargetPkg().Name() << endl; /* Look across the version list. If there are no possible targets then we keep the package and bail. This is necessary @@@ -985,27 -961,15 +992,27 @@@ // Consider other options if (InOr == false) { - if (Debug == true) - clog << " Removing " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl; - Cache.MarkDelete(I); - if (Counter > 1) + if (Cache.AutoInstOk(I, Cache[I].CandidateVerIter(Cache),Start) == true) { - if (Scores[Pkg->ID] > Scores[I->ID]) - Scores[I->ID] = Scores[Pkg->ID]; - } - } + if (Debug == true) + clog << " Removing " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl; + Cache.MarkDelete(I); + if (Counter > 1) + { + if (Scores[Pkg->ID] > Scores[I->ID]) + Scores[I->ID] = Scores[Pkg->ID]; + } + } else { + /* The dependency of the TargetPkg would be satisfiable with I but it is + forbidden to install I automatical, so anything we can do is hold + back the TargetPkg. + */ + if (Debug == true) + clog << " Hold back " << Start.TargetPkg().Name() << + " rather than change denied AutoInstall " << I.Name() << endl; + Cache.MarkKeep(Start.TargetPkg()); + } + } } } @@@ -1177,6 -1141,9 +1184,6 @@@ bool pkgProblemResolver::ResolveByKeep( unsigned long Size = Cache.Head().PackageCount; - if (Debug == true) - clog << "Entering ResolveByKeep" << endl; - MakeScores(); /* We have to order the packages so that the broken fixing pass @@@ -1189,21 -1156,7 +1196,21 @@@ *PEnd++ = I; This = this; qsort(PList,PEnd - PList,sizeof(*PList),&ScoreSort); - + + if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true) + { + clog << "Show Scores" << endl; + for (pkgCache::Package **K = PList; K != PEnd; K++) + if (Scores[(*K)->ID] != 0) + { + pkgCache::PkgIterator Pkg(Cache,*K); + clog << Scores[(*K)->ID] << ' ' << Pkg << std::endl; + } + } + + if (Debug == true) + clog << "Entering ResolveByKeep" << endl; + // Consider each broken package pkgCache::Package **LastStop = 0; for (pkgCache::Package **K = PList; K != PEnd; K++) @@@ -1249,8 -1202,8 +1256,8 @@@ while (true) { if (Debug == true) - clog << "Package " << I.Name() << " has broken dep on " << Start.TargetPkg().Name() << endl; - + clog << "Package " << I.Name() << " has broken " << Start.DepType() << " on " << Start.TargetPkg().Name() << endl; + // Look at all the possible provides on this package SPtrArray VList = Start.AllTargets(); for (pkgCache::Version **V = VList; *V != 0; V++) @@@ -1266,7 -1219,7 +1273,7 @@@ if ((Flags[I->ID] & Protected) == 0) { if (Debug == true) - clog << " Keeping Package " << Pkg.Name() << " due to dep" << endl; + clog << " Keeping Package " << Pkg.Name() << " due to " << Start.DepType() << endl; Cache.MarkKeep(Pkg, false, false); } diff --combined apt-pkg/cacheiterators.h index cf79b3a6b,bbbcb7753..af21681ed --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@@ -80,13 -80,7 +80,13 @@@ class pkgCache::PkgIterato inline PrvIterator ProvidesList() const; inline unsigned long Index() const {return Pkg - Owner->PkgP;}; OkState State() const; - + + //Nice printable representation + friend std::ostream& operator<<(std::ostream& out, pkgCache::PkgIterator Pkg); + + const char *CandVersion() const; + const char *CurVersion() const; + // Constructors inline PkgIterator(pkgCache &Owner,Package *Trg) : Pkg(Trg), Owner(&Owner), HashIndex(0) @@@ -110,17 -104,14 +110,17 @@@ class pkgCache::VerIterato // Iteration void operator ++(int) {if (Ver != Owner->VerP) Ver = Owner->VerP + Ver->NextVer;}; inline void operator ++() {operator ++(0);}; - inline bool end() const {return Owner == NULL || (Ver == Owner->VerP?true:false);}; + inline bool end() const {return Owner == 0 || (Ver == Owner->VerP?true:false);}; inline void operator =(const VerIterator &B) {Ver = B.Ver; Owner = B.Owner;}; // Comparison inline bool operator ==(const VerIterator &B) const {return Ver == B.Ver;}; inline bool operator !=(const VerIterator &B) const {return Ver != B.Ver;}; int CompareVer(const VerIterator &B) const; - + + // Testing + inline bool IsGood() const { return Ver && Owner && ! end();}; + // Accessors inline Version *operator ->() {return Ver;}; inline Version const *operator ->() const {return Ver;}; @@@ -169,7 -160,7 +169,7 @@@ class pkgCache::DescIterato // Iteration void operator ++(int) {if (Desc != Owner->DescP) Desc = Owner->DescP + Desc->NextDesc;}; inline void operator ++() {operator ++(0);}; - inline bool end() const {return Desc == Owner->DescP?true:false;}; + inline bool end() const {return Owner == 0 || Desc == Owner->DescP?true:false;}; inline void operator =(const DescIterator &B) {Desc = B.Desc; Owner = B.Owner;}; // Comparison @@@ -323,7 -314,7 +323,7 @@@ class pkgCache::PkgFileIterato // Iteration void operator ++(int) {if (File!= Owner->PkgFileP) File = Owner->PkgFileP + File->NextFile;}; inline void operator ++() {operator ++(0);}; - inline bool end() const {return File == Owner->PkgFileP?true:false;}; + inline bool end() const {return Owner == 0 || File == Owner->PkgFileP?true:false;}; // Comparison inline bool operator ==(const PkgFileIterator &B) const {return File == B.File;}; @@@ -342,7 -333,6 +342,7 @@@ inline const char *Component() const {return File->Component == 0?0:Owner->StrP + File->Component;}; inline const char *Version() const {return File->Version == 0?0:Owner->StrP + File->Version;}; inline const char *Origin() const {return File->Origin == 0?0:Owner->StrP + File->Origin;}; + inline const char *Codename() const {return File->Codename ==0?0:Owner->StrP + File->Codename;}; inline const char *Label() const {return File->Label == 0?0:Owner->StrP + File->Label;}; inline const char *Site() const {return File->Site == 0?0:Owner->StrP + File->Site;}; inline const char *Architecture() const {return File->Architecture == 0?0:Owner->StrP + File->Architecture;}; @@@ -370,7 -360,7 +370,7 @@@ class pkgCache::VerFileIterato // Iteration void operator ++(int) {if (FileP != Owner->VerFileP) FileP = Owner->VerFileP + FileP->NextFile;}; inline void operator ++() {operator ++(0);}; - inline bool end() const {return FileP == Owner->VerFileP?true:false;}; + inline bool end() const {return Owner == 0 || FileP == Owner->VerFileP?true:false;}; // Comparison inline bool operator ==(const VerFileIterator &B) const {return FileP == B.FileP;}; @@@ -402,7 -392,7 +402,7 @@@ class pkgCache::DescFileIterato // Iteration void operator ++(int) {if (FileP != Owner->DescFileP) FileP = Owner->DescFileP + FileP->NextFile;}; inline void operator ++() {operator ++(0);}; - inline bool end() const {return FileP == Owner->DescFileP?true:false;}; + inline bool end() const {return Owner == 0 || FileP == Owner->DescFileP?true:false;}; // Comparison inline bool operator ==(const DescFileIterator &B) const {return FileP == B.FileP;}; diff --combined apt-pkg/contrib/strutl.cc index 61c582b85,0b1bc3c98..a991b8988 --- a/apt-pkg/contrib/strutl.cc +++ b/apt-pkg/contrib/strutl.cc @@@ -387,17 -387,6 +387,17 @@@ string SubstVar(string Str,const struc return Str; } /*}}}*/ +// OutputInDepth - return a string with separator multiplied with depth /*{{{*/ +// --------------------------------------------------------------------- +/* Returns a string with the supplied separator depth + 1 times in it */ +std::string OutputInDepth(const unsigned long Depth, const char* Separator) +{ + std::string output = ""; + for(unsigned long d=Depth+1; d > 0; d--) + output.append(Separator); + return output; +} + /*}}}*/ // URItoFileName - Convert the uri into a unique file name /*{{{*/ // --------------------------------------------------------------------- /* This converts a URI into a safe filename. It quotes all unsafe characters @@@ -1042,11 -1031,26 +1042,26 @@@ void ioprintf(ostream &out,const char * va_start(args,format); // sprintf the description - char S[400]; + char S[4096]; vsnprintf(S,sizeof(S),format,args); out << S; } /*}}}*/ + // strprintf - C format string outputter to C++ strings /*{{{*/ + // --------------------------------------------------------------------- + /* This is used to make the internationalization strings easier to translate + and to allow reordering of parameters */ + void strprintf(string &out,const char *format,...) + { + va_list args; + va_start(args,format); + + // sprintf the description + char S[4096]; + vsnprintf(S,sizeof(S),format,args); + out = string(S); + } + /*}}}*/ // safe_snprintf - Safer snprintf /*{{{*/ // --------------------------------------------------------------------- /* This is a snprintf that will never (ever) go past 'End' and returns a @@@ -1070,6 -1074,17 +1085,17 @@@ char *safe_snprintf(char *Buffer,char * } /*}}}*/ + // tolower_ascii - tolower() function that ignores the locale /*{{{*/ + // --------------------------------------------------------------------- + /* */ + int tolower_ascii(int c) + { + if (c >= 'A' and c <= 'Z') + return c + 32; + return c; + } + /*}}}*/ + // CheckDomainList - See if Host is in a , seperate list /*{{{*/ // --------------------------------------------------------------------- /* The domain list is a comma seperate list of domains that are suffix diff --combined apt-pkg/contrib/strutl.h index 2450bd421,51416a24a..e1f9e3a1f --- a/apt-pkg/contrib/strutl.h +++ b/apt-pkg/contrib/strutl.h @@@ -48,7 -48,6 +48,7 @@@ string DeQuoteString(const string &Str) string SizeToStr(double Bytes); string TimeToStr(unsigned long Sec); string Base64Encode(const string &Str); +string OutputInDepth(const unsigned long Depth, const char* Separator=" "); string URItoFileName(const string &URI); string TimeRFC1123(time_t Date); bool StrToTime(const string &Val,time_t &Result); @@@ -60,8 -59,10 +60,10 @@@ bool Hex2Num(const string &Str,unsigne bool TokSplitString(char Tok,char *Input,char **List, unsigned long ListMax); void ioprintf(ostream &out,const char *format,...) APT_FORMAT2; + void strprintf(string &out,const char *format,...) APT_FORMAT2; char *safe_snprintf(char *Buffer,char *End,const char *Format,...) APT_FORMAT3; bool CheckDomainList(const string &Host, const string &List); + int tolower_ascii(int c); #define APT_MKSTRCMP(name,func) \ inline int name(const char *A,const char *AEnd,const char *B) {return func(A,AEnd,B,B+strlen(B));}; \ diff --combined apt-pkg/deb/deblistparser.cc index b2b8b8fb6,55ba1f8c4..517b771a5 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@@ -109,8 -109,6 +109,8 @@@ bool debListParser::NewVersion(pkgCache return false; if (ParseDepends(Ver,"Replaces",pkgCache::Dep::Replaces) == false) return false; + if (ParseDepends(Ver,"Enhances",pkgCache::Dep::Enhances) == false) + return false; // Obsolete. if (ParseDepends(Ver,"Optional",pkgCache::Dep::Suggests) == false) @@@ -215,7 -213,7 +215,7 @@@ unsigned short debListParser::VersionHa for (; Start != End; Start++) { if (isspace(*Start) == 0) - *I++ = tolower(*Start); + *I++ = tolower_ascii(*Start); if (*Start == '<' && Start[1] != '<' && Start[1] != '=') *I++ = '='; if (*Start == '>' && Start[1] != '>' && Start[1] != '=') @@@ -639,8 -637,6 +639,8 @@@ bool debListParser::LoadReleaseInfo(pkg FileI->Version = WriteUniqString(Start,Stop - Start); if (Section.Find("Origin",Start,Stop) == true) FileI->Origin = WriteUniqString(Start,Stop - Start); + if (Section.Find("Codename",Start,Stop) == true) + FileI->Codename = WriteUniqString(Start,Stop - Start); if (Section.Find("Label",Start,Stop) == true) FileI->Label = WriteUniqString(Start,Stop - Start); if (Section.Find("Architecture",Start,Stop) == true) diff --combined apt-pkg/deb/debsystem.cc index ccd45d51b,82464d998..59f826d96 --- a/apt-pkg/deb/debsystem.cc +++ b/apt-pkg/deb/debsystem.cc @@@ -17,8 -17,8 +17,8 @@@ #include #include #include -#include - +#include + #include #include #include @@@ -67,11 -67,11 +67,11 @@@ bool debSystem::Lock( if (LockFD == -1) { if (errno == EACCES || errno == EAGAIN) - return _error->Error("Unable to lock the administration directory (%s), " - "is another process using it?",AdminDir.c_str()); + return _error->Error(_("Unable to lock the administration directory (%s), " + "is another process using it?"),AdminDir.c_str()); else - return _error->Error("Unable to lock the administration directory (%s), " - "are you root?",AdminDir.c_str()); + return _error->Error(_("Unable to lock the administration directory (%s), " + "are you root?"),AdminDir.c_str()); } // See if we need to abort with a dirty journal @@@ -79,8 -79,8 +79,8 @@@ { close(LockFD); LockFD = -1; - return _error->Error("dpkg was interrupted, you must manually " - "run 'dpkg --configure -a' to correct the problem. "); + return _error->Error(_("dpkg was interrupted, you must manually " + "run 'dpkg --configure -a' to correct the problem. ")); } LockCount++; diff --combined apt-pkg/pkgcache.cc index 4e10093a8,6687864ee..2a9756c45 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@@ -21,7 -21,6 +21,7 @@@ /*}}}*/ // Include Files /*{{{*/ #include +#include #include #include #include @@@ -50,7 -49,7 +50,7 @@@ pkgCache::Header::Header( /* Whenever the structures change the major version should be bumped, whenever the generator changes the minor version should be bumped. */ - MajorVersion = 7; + MajorVersion = 8; MinorVersion = 0; Dirty = false; @@@ -164,7 -163,7 +164,7 @@@ unsigned long pkgCache::sHash(const str { unsigned long Hash = 0; for (string::const_iterator I = Str.begin(); I != Str.end(); I++) - Hash = 5*Hash + tolower(*I); + Hash = 5*Hash + tolower_ascii(*I); return Hash % _count(HeaderP->HashTable); } @@@ -172,7 -171,7 +172,7 @@@ unsigned long pkgCache::sHash(const cha { unsigned long Hash = 0; for (const char *I = Str; *I != 0; I++) - Hash = 5*Hash + tolower(*I); + Hash = 5*Hash + tolower_ascii(*I); return Hash % _count(HeaderP->HashTable); } @@@ -224,7 -223,7 +224,7 @@@ const char *pkgCache::DepType(unsigned { const char *Types[] = {"",_("Depends"),_("PreDepends"),_("Suggests"), _("Recommends"),_("Conflicts"),_("Replaces"), - _("Obsoletes"),_("Breaks")}; + _("Obsoletes"),_("Breaks"), _("Enhances")}; if (Type < sizeof(Types)/sizeof(*Types)) return Types[Type]; return ""; @@@ -291,56 -290,6 +291,56 @@@ pkgCache::PkgIterator::OkState pkgCache return NeedsNothing; } /*}}}*/ +// PkgIterator::CandVersion - Returns the candidate version string /*{{{*/ +// --------------------------------------------------------------------- +/* Return string representing of the candidate version. */ +const char * +pkgCache::PkgIterator::CandVersion() const +{ + //TargetVer is empty, so don't use it. + VerIterator version = pkgPolicy::pkgPolicy(Owner).GetCandidateVer(*this); + if (version.IsGood()) + return version.VerStr(); + return 0; +}; + /*}}}*/ +// PkgIterator::CurVersion - Returns the current version string /*{{{*/ +// --------------------------------------------------------------------- +/* Return string representing of the current version. */ +const char * +pkgCache::PkgIterator::CurVersion() const +{ + VerIterator version = CurrentVer(); + if (version.IsGood()) + return CurrentVer().VerStr(); + return 0; +}; + /*}}}*/ +// ostream operator to handle string representation of a package /*{{{*/ +// --------------------------------------------------------------------- +/* Output name < cur.rent.version -> candid.ate.version | new.est.version > (section) + Note that the characters <|>() are all literal above. Versions will be ommited + if they provide no new information (e.g. there is no newer version than candidate) + If no version and/or section can be found "none" is used. */ +std::ostream& +operator<<(ostream& out, pkgCache::PkgIterator Pkg) +{ + if (Pkg.end() == true) + return out << "invalid package"; + + string current = string(Pkg.CurVersion() == 0 ? "none" : Pkg.CurVersion()); + string candidate = string(Pkg.CandVersion() == 0 ? "none" : Pkg.CandVersion()); + string newest = string(Pkg.VersionList().end() ? "none" : Pkg.VersionList().VerStr()); + + out << Pkg.Name() << " < " << current; + if (current != candidate) + out << " -> " << candidate; + if ( newest != "none" && candidate != newest) + out << " | " << newest; + out << " > ( " << string(Pkg.Section()==0?"none":Pkg.Section()) << " )"; + return out; +} + /*}}}*/ // DepIterator::IsCritical - Returns true if the dep is important /*{{{*/ // --------------------------------------------------------------------- /* Currently critical deps are defined as depends, predepends and @@@ -658,8 -607,6 +658,8 @@@ string pkgCache::PkgFileIterator::RelSt Res = Res + (Res.empty() == true?"o=":",o=") + Origin(); if (Archive() != 0) Res = Res + (Res.empty() == true?"a=":",a=") + Archive(); + if (Codename() != 0) + Res = Res + (Res.empty() == true?"n=":",n=") + Codename(); if (Label() != 0) Res = Res + (Res.empty() == true?"l=":",l=") + Label(); if (Component() != 0) diff --combined cmdline/apt-cache.cc index acef8dc5e,425df6994..c30e22b76 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@@ -102,15 -102,13 +102,13 @@@ bool UnMet(CommandLine &CmdL if (End->Type != pkgCache::Dep::PreDepends && End->Type != pkgCache::Dep::Depends && End->Type != pkgCache::Dep::Suggests && - End->Type != pkgCache::Dep::Recommends && - End->Type != pkgCache::Dep::DpkgBreaks) + End->Type != pkgCache::Dep::Recommends) continue; // Important deps only if (Important == true) if (End->Type != pkgCache::Dep::PreDepends && - End->Type != pkgCache::Dep::Depends && - End->Type != pkgCache::Dep::DpkgBreaks) + End->Type != pkgCache::Dep::Depends) continue; // Verify the or group @@@ -401,7 -399,7 +399,7 @@@ bool DumpAvail(CommandLine &Cmd pkgCache &Cache = *GCache; pkgPolicy Plcy(&Cache); - if (ReadPinFile(Plcy) == false) + if (ReadPinFile(Plcy) == false || ReadPinDir(Plcy) == false) return false; unsigned long Count = Cache.HeaderP->PackageCount+1; @@@ -557,6 -555,7 +555,7 @@@ bool Depends(CommandLine &CmdL bool Recurse = _config->FindB("APT::Cache::RecurseDepends",false); bool Installed = _config->FindB("APT::Cache::Installed",false); + bool Important = _config->FindB("APT::Cache::Important",false); bool DidSomething; do { @@@ -579,7 -578,12 +578,12 @@@ for (pkgCache::DepIterator D = Ver.DependsList(); D.end() == false; D++) { - + // Important deps only + if (Important == true) + if (D->Type != pkgCache::Dep::PreDepends && + D->Type != pkgCache::Dep::Depends) + continue; + pkgCache::PkgIterator Trg = D.TargetPkg(); if((Installed && Trg->CurrentVer != 0) || !Installed) @@@ -1515,7 -1519,7 +1519,7 @@@ bool Policy(CommandLine &CmdL pkgCache &Cache = *GCache; pkgPolicy Plcy(&Cache); - if (ReadPinFile(Plcy) == false) + if (ReadPinFile(Plcy) == false || ReadPinDir(Plcy) == false) return false; // Print out all of the package files @@@ -1529,7 -1533,8 +1533,8 @@@ if (SrcList->FindIndex(F,Indx) == false && _system->FindIndex(F,Indx) == false) return _error->Error(_("Cache is out of sync, can't x-ref a package file")); - printf(_("%4i %s\n"), + + printf("%4i %s\n", Plcy.GetPriority(F),Indx->Describe(true).c_str()); // Print the reference information for the package diff --combined debian/apt.cron.daily index b40bb2c30,cdec7eea0..7e4214775 --- a/debian/apt.cron.daily +++ b/debian/apt.cron.daily @@@ -1,40 -1,67 +1,67 @@@ #!/bin/sh - # - #set -e # # This file understands the following apt configuration variables: + # Values here are the default. + # Create /etc/apt/apt.conf.d/02periodic file to set your preference. # - # "APT::Periodic::Update-Package-Lists=1" - # - Do "apt-get update" automatically every n-days (0=disable) - # - # "APT::Periodic::Download-Upgradeable-Packages=0", - # - Do "apt-get upgrade --download-only" every n-days (0=disable) - # - # "APT::Periodic::AutocleanInterval" - # - Do "apt-get autoclean" every n-days (0=disable) + # Dir "/"; + # - RootDir for all configuration files # - # "APT::Periodic::Unattended-Upgrade" - # - Run the "unattended-upgrade" security upgrade script - # every n-days (0=disabled) - # Requires the package "unattended-upgrades" and will write - # a log in /var/log/unattended-upgrades - # - # "APT::Archives::MaxAge", + # Dir::Cache "var/apt/cache/"; + # - Set apt package cache directory + # + # Dir::Cache::Archive "archives/"; + # - Set package archive directory + # + # APT::Periodic::BackupArchiveInterval "0"; + # - Backup after n-days if archive contents changed.(0=disable) + # + # APT::Periodic::BackupLevel "3"; + # - Backup level.(0=disable), 1 is invalid. + # + # Dir::Cache::Backup "backup/"; + # - Set periodic package backup directory + # + # APT::Archives::MaxAge "0"; (old, deprecated) + # APT::Periodic::MaxAge "0"; (new) # - Set maximum allowed age of a cache package file. If a cache # package file is older it is deleted (0=disable) # - # "APT::Archives::MaxSize", + # APT::Archives::MinAge "2"; (old, deprecated) + # APT::Periodic::MinAge "2"; (new) + # - Set minimum age of a package file. If a file is younger it + # will not be deleted (0=disable). Usefull to prevent races + # and to keep backups of the packages for emergency. + # + # APT::Archives::MaxSize "0"; (old, deprecated) + # APT::Periodic::MaxSize "0"; (new) # - Set maximum size of the cache in MB (0=disable). If the cache # is bigger, cached package files are deleted until the size # requirement is met (the biggest packages will be deleted # first). # - # "APT::Archives::MinAge" - # - Set minimum age of a package file. If a file is younger it - # will not be deleted (0=disable). Usefull to prevent races - # and to keep backups of the packages for emergency. + # APT::Periodic::Update-Package-Lists "0"; + # - Do "apt-get update" automatically every n-days (0=disable) + # + # APT::Periodic::Download-Upgradeable-Packages "0"; + # - Do "apt-get upgrade --download-only" every n-days (0=disable) # + # APT::Periodic::Unattended-Upgrade "0"; + # - Run the "unattended-upgrade" security upgrade script + # every n-days (0=disabled) + # Requires the package "unattended-upgrades" and will write + # a log in /var/log/unattended-upgrades + # + # APT::Periodic::AutocleanInterval "0"; + # - Do "apt-get autoclean" every n-days (0=disable) + # + # APT::Periodic::Verbose "0"; + # - Send report mail to root + # 0: no report (or null string) + # 1: progress report (actually any string) + # 2: + command outputs (remove -qq, remove 2>/dev/null, add -d) + # 3: + trace on check_stamp() { @@@ -42,47 -69,26 +69,51 @@@ interval="$2" if [ $interval -eq 0 ]; then - debug_echo "check_stamp: interval=0." ++ debug_echo "check_stamp: interval=0" + # treat as no time has passed return 1 fi if [ ! -f $stamp ]; then + update_stamp $stamp - debug_echo "check_stamp: missing time stamp file: $stamp." ++ debug_echo "check_stamp: missing time stamp file: $stamp" + # treat as enough time has passed return 0 fi # compare midnight today to midnight the day the stamp was updated - stamp=$(date -r $stamp '+%s') + stamp_file="$stamp" + stamp=$(date --date=$(date -r $stamp_file --iso-8601) +%s 2>/dev/null) + if [ "$?" != "0" ]; then + # Due to some timezones returning 'invalid date' for midnight on + # certain dates (eg America/Sao_Paulo), if date returns with error + # remove the stamp file and return 0. See coreutils bug: + # http://lists.gnu.org/archive/html/bug-coreutils/2007-09/msg00176.html + rm -f "$stamp_file" + return 0 + fi + + now=$(date --date=$(date --iso-8601) +%s 2>/dev/null) + if [ "$?" != "0" ]; then + # As above, due to some timezones returning 'invalid date' for midnight + # on certain dates (eg America/Sao_Paulo), if date returns with error + # return 0. + return 0 + fi + delta=$(($now-$stamp)) - # intervall is in days, + # intervall is in days, convert to sec. interval=$(($interval*60*60*24)) - #echo "stampfile: $1" - #echo "interval=$interval, now=$now, stamp=$stamp, delta=$delta" + debug_echo "check_stamp: interval=$interval, now=$now, stamp=$stamp, delta=$delta (sec)" + # remove timestamps a day (or more) in the future and force re-check + if [ $stamp -gt $(($now+86400)) ]; then + echo "WARNING: file $stamp_file has a timestamp in the future: $stamp" + rm -f "$stamp_file" + return 0 + fi + if [ $delta -ge $interval ]; then return 0 fi @@@ -93,12 -99,9 +124,9 @@@ update_stamp() { stamp="$1" - touch $stamp } - - # we check here if autoclean was enough sizewise check_size_constraints() { @@@ -188,83 -191,282 +216,287 @@@ random_sleep( sleep $TIME } - # main - if ! which apt-config >/dev/null; then + debug_echo() + { + # Display message if $VERBOSE >= 1 + if [ "$VERBOSE" -ge 1 ]; then + echo $1 1>&2 + fi + } + -# main ++ ++# ----------------- main ---------------- + + # check apt-config exstance + if ! which apt-config >/dev/null ; then exit 0 fi + # Set VERBOSE mode from apt-config (or inherit from environment) + eval $(apt-config shell VERBOSE APT::Periodic::Verbose) + if [ -z "$VERBOSE" ]; then + VERBOSE="0" + fi + if [ "$VERBOSE" -le 2 ]; then + # quiet for 0,1,2 + XSTDOUT=">/dev/null" + XSTDERR="2>/dev/null" + XAPTOPT="-qq" + XUUPOPT="" + else + XSTDOUT="" + XSTDERR="" + XAPTOPT="" + XUUPOPT="-d" + fi + if [ "$VERBOSE" -ge 3 ]; then + # trace output + set -x + fi + + # laptop check, on_ac_power returns: + # 0 (true) System is on main power + # 1 (false) System is not on main power + # 255 (false) Power status could not be determined + # Desktop systems always return 255 it seems + if which on_ac_power >/dev/null; then + on_ac_power + POWER=$? + if [ $POWER -eq 1 ]; then - debug_echo "exit: system on main power." ++ debug_echo "exit: system NOT on main power." + exit 0 + elif [ $POWER -ne 0 ]; then - debug_echo "exit: power status ($POWER) undetermined." - exit 0 ++ debug_echo "power status ($POWER) undetermined." + fi + debug_echo "system is on main power." + fi + + # check if we can lock the cache and if the cache is clean -if which apt-get >/dev/null && ! eval apt-get check $XAPTOPT $XSTDERR ; then ++if which apt-get >/dev/null && ! apt-get check $XAPTOPT $XSTDERR ; then + debug_echo "error encountered in cron job with \"apt-get check\"." + exit 0 + fi + # No need to check for apt-get below + + # Global current time in seconds since 1970-01-01 00:00:00 UTC + now=$(date +%s) + + # Set default values and normalize + Dir="/" + eval $(apt-config shell Dir Dir) + Dir=${Dir%/} + + CacheDir="var/cache/apt/" + eval $(apt-config shell CacheDir Dir::Cache) + CacheDir=${CacheDir%/} + if [ -z "$CacheDir" ]; then + debug_echo "practically empty Dir::Cache, exiting" + exit 0 + fi + + CacheArchive="archives/" + eval $(apt-config shell CacheArchive Dir::Cache::Archives) + CacheArchive=${CacheArchive%/} + if [ -z "$CacheArchive" ]; then + debug_echo "practically empty Dir::Cache::archives, exiting" + exit 0 + fi + + BackupArchiveInterval=0 + eval $(apt-config shell BackupArchiveInterval APT::Periodic::BackupArchiveInterval) + + BackupLevel=3 + eval $(apt-config shell BackupLevel APT::Periodic::BackupLevel) -if [ $BackupLevel -le 1 ]; then BackupLevel=2 ; fi ++if [ $BackupLevel -le 1 ]; then ++ BackupLevel=2 ; ++fi + + CacheBackup="backup/" + eval $(apt-config shell CacheBackup Dir::Cache::Backup) + CacheBackup=${CacheBackup%/} + if [ -z "$CacheBackup" ]; then - echo "practically empty Dir::Cache::Backup, exiting" 1>&2 - exit 0 ++ echo "empty Dir::Cache::Backup, using default" 1>&2 ++ CacheBackup="backup/" + fi + + # Support old Archive for compatibility. + # Document only Periodic for all controling parameters of this script. + MaxAge=0 + eval $(apt-config shell MaxAge APT::Archives::MaxAge) + eval $(apt-config shell MaxAge APT::Periodic::MaxAge) + + MinAge=2 + eval $(apt-config shell MinAge APT::Archives::MinAge) + eval $(apt-config shell MinAge APT::Periodic::MinAge) + + MaxSize=0 + eval $(apt-config shell MaxSize APT::Archives::MaxSize) + eval $(apt-config shell MaxSize APT::Periodic::MaxSize) + UpdateInterval=0 + eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists) + DownloadUpgradeableInterval=0 - eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages) - AutocleanInterval=$DownloadUpgradeableInterval - eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval) + eval $(apt-config shell DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages) + UnattendedUpgradeInterval=0 eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade) + AutocleanInterval=0 + eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval) + + Cache="${Dir}/${CacheDir}/${CacheArchive}/" + Back="${Dir}/${CacheDir}/${CacheBackup}/" + BackX="${Back}${CacheArchive}/" + for x in $(seq 0 1 $((${BackupLevel}-1))); do + eval "Back${x}=${Back}${x}/" + done + # check if we actually have to do anything if [ $UpdateInterval -eq 0 ] && [ $DownloadUpgradeableInterval -eq 0 ] && [ $UnattendedUpgradeInterval -eq 0 ] && + [ $BackupArchiveInterval -eq 0 ] && [ $AutocleanInterval -eq 0 ]; then exit 0 fi - # laptop check, on_ac_power returns: - # 0 (true) System is on mains power - # 1 (false) System is not on mains power - # 255 (false) Power status could not be determined - # Desktop systems always return 255 it seems - if which on_ac_power >/dev/null; then - on_ac_power - if [ $? -eq 1 ]; then - exit 0 - fi - fi - +# sleep random amount of time to avoid hitting the +# mirrors at the same time +random_sleep - # check if we can access the cache - if ! apt-get check -q -q 2>/dev/null; then - # wait random amount of time before retrying - random_sleep - # check again - if ! apt-get check -q -q 2>/dev/null; then - echo "$0: could not lock the APT cache while performing daily cron job. " - echo "Is another package manager working?" - exit 1 + # backup after n-days if archive contents changed. + # (This uses hardlink to save disk space) + BACKUP_ARCHIVE_STAMP=/var/lib/apt/periodic/backup-archive-stamp + if check_stamp $BACKUP_ARCHIVE_STAMP $BackupArchiveInterval; then + if [ $({(cd $Cache 2>/dev/null; find . -name "*.deb"); (cd $Back0 2>/dev/null;find . -name "*.deb") ;}| sort|uniq -u|wc -l) -ne 0 ]; then + mkdir -p $Back + rm -rf $Back$((${BackupLevel}-1)) + for y in $(seq $((${BackupLevel}-1)) -1 1); do + eval BackY=${Back}$y + eval BackZ=${Back}$(($y-1)) + if [ -e $BackZ ]; then mv -f $BackZ $BackY ; fi + done + cp -la $Cache $Back ; mv -f $BackX $Back0 + update_stamp $BACKUP_ARCHIVE_STAMP + debug_echo "backup with hardlinks. (success)" + else + + debug_echo "skip backup since same content." fi + else + debug_echo "skip backup since too new." fi - UPDATE_STAMP=/var/lib/apt/periodic/update-stamp - if check_stamp $UPDATE_STAMP $UpdateInterval; then - if apt-get -qq update 2>/dev/null; then - if which dbus-send >/dev/null && pidof dbus-daemon >/dev/null; then - dbus-send --system / app.apt.dbus.updated boolean:true - fi - update_stamp $UPDATE_STAMP - fi + # package archive contnts removal by package age + if [ $MaxAge -ne 0 ] && [ $MinAge -ne 0 ]; then + find $Cache -name "*.deb" \( -mtime +$MaxAge -and -ctime +$MaxAge \) -and -not \( -mtime -$MinAge -or -ctime -$MinAge \) -print0 | xargs -r -0 rm -f + debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge and ctime>$MinAge and mtime>$MinAge" + elif [ $MaxAge -ne 0 ]; then + find $Cache -name "*.deb" -ctime +$MaxAge -and -mtime +$MaxAge -print0 | xargs -r -0 rm -f + debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge only" + else + debug_echo "skip aging since MaxAge is 0" fi + + # package archive contnts removal down to $MaxSize + if [ $MaxSize -ne 0 ]; then + + MinAgeSec=$(($MinAge*24*60*60)) + + # reverse-sort by mtime + for file in $(ls -rt $Cache/*.deb 2>/dev/null); do + du=$(du -m -s $Cache) + size=${du%%/*} + # check if the cache is small enough + if [ $size -lt $MaxSize ]; then + debug_echo "end remove by archive size: size=$size < $MaxSize" + break + fi + + # check for MinAge in second of the file + if [ $MinAgeSec -ne 0 ]; then + # check both ctime and mtime + mtime=$(stat -c %Y $file) + ctime=$(stat -c %Z $file) + if [ $mtime -gt $ctime ]; then + delta=$(($now-$mtime)) + else + delta=$(($now-$ctime)) + fi + if [ $delta -le $MinAgeSec ]; then + debug_echo "skip remove by archive size: $file, delta=$delta < $MinAgeSec" + else + # delete oldest file + debug_echo "remove by archive size: $file, delta=$delta >= $MinAgeSec (sec), size=$size >= $MaxSize" + rm -f $file + fi + fi - DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp - if check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then - apt-get -qq -d dist-upgrade 2>/dev/null - update_stamp $DOWNLOAD_UPGRADEABLE_STAMP + done fi - UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp - if check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then - unattended-upgrade - update_stamp $UPGRADE_STAMP + # update package lists + UPDATE_STAMP=/var/lib/apt/periodic/update-stamp + if check_stamp $UPDATE_STAMP $UpdateInterval; then + if eval apt-get $XAPTOPT -y update $XSTDERR; then + debug_echo "download updated metadata (success)." + if which dbus-send >/dev/null && pidof dbus-daemon >/dev/null; then + if dbus-send --system / app.apt.dbus.updated boolean:true ; then + debug_echo "send dbus signal (success)" + else + debug_echo "send dbus signal (error)" + fi + else + debug_echo "dbus signal not send (command not available)" + fi + update_stamp $UPDATE_STAMP + # download all upgradeable packages if it is requested + DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp + if check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then + if eval apt-get $XAPTOPT -y -d dist-upgrade $XSTDERR; then + update_stamp $DOWNLOAD_UPGRADEABLE_STAMP + debug_echo "download upgradable (success)." + # auto upgrade all upgradeable packages + UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp + if which unattended-upgrade >/dev/null && check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then + if unattended-upgrade $XUUPOPT; then + update_stamp $UPGRADE_STAMP + debug_echo "unattended-upgrade (success)." + else + debug_echo "unattended-upgrade (error)." + fi + else + debug_echo "unattended-upgrade (not run)." + fi + else + debug_echo "download upgradable (error)." + fi + else + debug_echo "download upgradable (not run)." + fi + else + debug_echo "download updated metadata (error)." + fi + else + debug_echo "download updated metadata (not run)." fi + # autoclean package archive AUTOCLEAN_STAMP=/var/lib/apt/periodic/autoclean-stamp if check_stamp $AUTOCLEAN_STAMP $AutocleanInterval; then - apt-get -qq autoclean - update_stamp $AUTOCLEAN_STAMP + if apt-get $XAPTOPT -y autoclean $XSTDERR; then + debug_echo "autoclean (success)." + update_stamp $AUTOCLEAN_STAMP + else + debug_echo "autoclean (error)." + fi + else + debug_echo "autoclean (not run)." fi - # check cache size - check_size_constraints + # + # vim: set sts=4 ai : + # + diff --combined debian/changelog index 6ce3b7c7d,cf9231105..6e03bbbd4 --- a/debian/changelog +++ b/debian/changelog @@@ -1,125 -1,95 +1,182 @@@ -apt (0.7.21) UNRELEASED; urgency=low +apt (0.7.22) UNRELEASED; urgency=low - [ Osamu Aoki ] - * Updated cron script to support backups by hardlinks and - verbose levels. All features turned off by default. - * Added more error handlings. Closes: #438803, #462734, #454989, - * Refactored condition structure to make download and upgrade performed - if only previous steps succeeded. Closes: #341970 - * Documented all cron script related configuration items in - configure-index. + [ Christian Perrier ] + * Documentation translations: + - Fix a typo in apt-get(8) French translation. Closes: #525043 + Thanks to Guillaume Delacour for spotting it. + - Updated apt.conf(5) manpgae French translation. + Thanks to Aurélien Couderc. + * Translations: + - fr.po + - sk.po. Closes: #525857 + - ru.po. Closes: #526816 + - eu.po. Closes: #528985 + - zh_CN.po. Closes: #531390 + - fr.po + - it.po. Closes: #531758 + - ca.po. Closes: #531921 + - de.po. Closes: #536430 + * Added translations + - ast.po (Asturian by Marcos Alvareez Costales). + Closes: #529007, #529730, #535328 + + [ David Kalnischkies ] + * [ABI break] support '#' in apt.conf and /etc/apt/preferences + (closes: #189866) + * [ABI break] Allow pinning by codename (closes: #97564) + * support running "--simulate" as user + * add depth information to the debug output and show what depends + type triggers a autoinst (closes: #458389) + * add Debug::pkgDepCache::Marker with more detailed debug output + (closes: #87520) + * add Debug::pkgProblemResolver::ShowScores and make the scores + adjustable + * do not write state file in simulate mode (closes: #433007) + * add hook for auto-install (closes: #470035) + * support IsAutoInstallOk in the resolver too + * fix typo in apt-pkg/acquire.cc which prevents Dl-Limit to work + correctly when downloading from multiple sites (Closes: #534752) [ Michael Vogt ] + * honor the dpkg hold state in AutoInstOk (closes: #64141) + * debian/apt.cron.daily: + - if the timestamp is too far in the future, delete it + * apt-pkg/acquire.cc: + - make the max pipeline depth of the acquire queue configurable + via Acquire::Max-Pipeline-Depth + * apt-pkg/deb/dpkgpm.cc: + - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3 + (off by default) + - send "dpkg-exec" message on the status fd when dpkg is run ++ - provide DPkg::Chroot-Directory config option (useful for testing) ++ - fix potential hang when in a backgroud process group + * apt-pkg/algorithms.cc: + - consider recommends when making the scores for the problem + resolver + * apt-pkg/acquire-worker.cc: + - show error details of failed methods + * apt-pkg/contrib/fileutl.cc: + - if a process aborts with signal, show signal number + * methods/http.cc: + - ignore SIGPIPE, we deal with EPIPE from write in + HttpMethod::ServerDie() (LP: #385144) - * apt-pkg/deb/dpkgpm.cc: - - provide DPkg::Chroot-Directory config option (useful for testing) - - -- Michael Vogt Thu, 28 May 2009 17:51:42 +0200 - - [ Michael Vogt ] + * apt-pkg/indexcopy.cc: + - support having CDs with no Packages file (just a Packages.gz) + by not forcing a verification on non-existing files + (LP: #255545) + - remove the gettext from a string that consists entirely + of variables (LP: #56792) - * doc/makefile: - - add examples/apt-https-method-example.conf + * apt-pkg/cacheiterators.h: + - add missing checks for Owner == 0 in end() - * apt-pkg/deb/dpkgpm.cc: - - fix potential hang when in a backgroud process group + * apt-pkg/indexrecords.cc: + - fix some i18n issues + * apt-pkg/contrib/strutl.h: + - add new strprintf() function to make i18n strings easier - * methods/gpgv.cc: + - fix compiler warning - * cmdline/apt-get.cc: - - fix "apt-get source pkg=ver" if binary name != source name - and show a message (LP: #202219) - - fix "apt-get source pkg" if there is a binary package and - a source package of the same name but from different - packages (LP: #330103) + * apt-pkg/deb/debsystem.cc: + - make strings i18n able - * apt-pkg/contrib/strutl.cc: - - fix TimeToStr i18n (LP: #289807) - * [ABI break] merge support for http redirects, thanks to - Jeff Licquia and Anthony Towns - * [ABI break] use int for the package IDs (thanks to Steve Cotton) - * apt-pkg/pkgcache.cc: - - do not run "dpkg --configure pkg" if pkg is in trigger-awaited - state (LP: #322955) - * methods/https.cc: - - add Acquire::https::AllowRedirect support - * methods/gpgv.cc: - - properly check for expired and revoked keys (closes: #433091) + * fix problematic use of tolower() when calculating the version + hash by using locale independant tolower_ascii() function. + Thanks to M. Vefa Bicakci (LP: #80248) + * build fixes for g++-4.4 + * cmdline/apt-mark: + - add "showauto" option to show automatically installed packages ++ * document --install-recommends and --no-install-recommends ++ (thanks to Dereck Wonnacott, LP: #126180) + + [ Julian Andres Klode ] + * apt-pkg/contrib/configuration.cc: Fix a small memory leak in + ReadConfigFile. + * Introduce support for the Enhances field. (Closes: #137583) + * Support /etc/apt/preferences.d, by adding ReadPinDir() (Closes: #535512) + * configure-index: document Dir::Etc::SourceParts and some other options + (Closes: #459605) + * Remove Eugene V. Lyubimkin from uploaders as requested. + * apt-pkg/contrib/hashes.cc, apt-pkg/contrib/md5.cc: + - Support reading until EOF if Size=0 to match behaviour of + SHA1Summation and SHA256Summation + ++ [ Osamu Aoki ] ++ * Updated cron script to support backups by hardlinks and ++ verbose levels. All features turned off by default. ++ * Added more error handlings. Closes: #438803, #462734, #454989, ++ * Refactored condition structure to make download and upgrade performed ++ if only previous steps succeeded. Closes: #341970 ++ * Documented all cron script related configuration items in ++ configure-index. + + [ Dereck Wonnacott ] + * apt-ftparchive might write corrupt Release files (LP: #46439) + * Apply --important option to apt-cache depends (LP: #16947) - * Clarify the --help for 'purge' (LP: #243948) + + ++ + -- Julian Andres Klode Fri, 03 Jul 2009 08:27:35 +0200 + +apt (0.7.21) unstable; urgency=low + + [ Christian Perrier ] + * Translations: + - bg.po. Closes: #513211 + - zh_TW.po. Closes: #513311 + - nb.po. Closes: #513843 + - fr.po. Closes: #520430 + - sv.po. Closes: #518070 + - sk.po. Closes: #520403 + - it.po. Closes: #522222 + - sk.po. Closes: #520403 + + [ Jamie Strandboge ] + * apt.cron.daily: catch invalid dates due to DST time changes + in the stamp files + + [ Michael Vogt ] + * methods/gpgv.cc: + - properly check for expired and revoked keys (closes: #433091) + * apt-pkg/contrib/strutl.cc: + - fix TimeToStr i18n (LP: #289807) + * [ABI break] merge support for http redirects, thanks to + Jeff Licquia and Anthony Towns + * [ABI break] use int for the package IDs (thanks to Steve Cotton) + * apt-pkg/pkgcache.cc: + - do not run "dpkg --configure pkg" if pkg is in trigger-awaited + state (LP: #322955) + * methods/https.cc: + - add Acquire::https::AllowRedirect support + * Clarify the --help for 'purge' (LP: #243948) + * cmdline/apt-get.cc + - fix "apt-get source pkg" if there is a binary package and + a source package of the same name but from different + packages (LP: #330103) + [ Colin Watson ] * cmdline/acqprogress.cc: - Call pkgAcquireStatus::Pulse even if quiet, so that we still get dlstatus messages on the status-fd (LP: #290234). - -- Michael Vogt Fri, 12 Sep 2008 11:34:24 +0200 + -- Michael Vogt Tue, 14 Apr 2009 14:12:51 +0200 + +apt (0.7.20.2) unstable; urgency=medium + + [ Eugene V. Lyubimkin ] + * Urgency set to medium due to RC bug fix. + * doc/apt.ent, apt-get.8.xml: + - Fix invalid XML entities. (Closes: #514402) + + -- Eugene V. Lyubimkin Sat, 07 Feb 2009 16:48:21 +0200 + +apt (0.7.20.1) unstable; urgency=low + + [ Michael Vogt ] + * apt-pkg/pkgcachegen.cc: + - fix apt-cache search for localized description + (closes: #512110) + + [ Christian Perrier ] + * Translations: + - fr.po: fix spelling error to "défectueux". Thanks to Thomas Péteul. + + -- Michael Vogt Tue, 20 Jan 2009 09:35:05 +0100 apt (0.7.20) unstable; urgency=low @@@ -135,37 -105,35 +192,37 @@@ (Closes: #457265) - Mentioned 'APT::Periodic' and 'APT::Archives' groups of options. (Closes: #438559) - - [ Michael Vogt ] - * apt-pkg/depcache.cc: - - when checking for new important deps, skip critical ones - (LP: #236360) - * document --install-recommends and --no-install-recommends - (thanks to Dereck Wonnacott, LP: #126180) - * make "apt-get build-dep" installed packages marked automatic - by default. This can be changed by setting the value of - APT::Get::Build-Dep-Automatic to false (thanks to Aaron - Haviland, closes: #44874, LP: #248268) - - -- Eugene V. Lyubimkin Sat, 06 Dec 2008 20:57:00 +0200 - -apt (0.7.20~exp2) unstable; urgency=low - - [ Eugene V. Lyubimkin ] + - Mentioned '/* ... */' comments. (Closes: #507601) * doc/examples/sources.list: - Removed obsolete commented non-us deb-src entry, replaced it with 'deb-src security.debian.org' one. (Closes: #411298) * apt-pkg/contrib/mmap.cc: - Added instruction how to work around MMap error in MMap error message. (Closes: #385674, 436028) + * COPYING: + - Actualized. Removed obsolete Qt section, added GPLv2 clause. + (Closes: #440049, #509337) + + [ Michael Vogt ] + * add option to "apt-get build-dep" to mark the needed + build-dep packages as automatic installed. + This is controlled via the value of + APT::Get::Build-Dep-Automatic and is set "false" by default. + Thanks to Aaron Haviland, closes: #448743 + * apt-inst/contrib/arfile.cc: + - support members ending with '/' as well (thanks to Michal Cihr, + closes: #500988) [ Christian Perrier ] * Translations: + - Finnish updated. Closes: #508449 + - Galician updated. Closes: #509151 + - Catalan updated. Closes: #509375 + - Vietnamese updated. Closes: #509422 + - Traditional Chinese added. Closes: #510664 - French corrected (remove awful use of first person) - -- Michael Vogt Tue, 02 Dec 2008 20:30:14 +0100 + -- Michael Vogt Mon, 05 Jan 2009 08:59:20 +0100 apt (0.7.19) unstable; urgency=low @@@ -183,6 -151,7 +240,6 @@@ is a request to install only one package and it is not installable. (Closes: #419521) - [ Michael Vogt ] - fix SIGHUP handling (closes: #463030) diff --combined doc/apt-get.8.xml index e7f6d7094,64c3a35e4..609674d75 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@@ -53,9 -53,6 +53,9 @@@ target_release_number_expression + + target_release_codename + @@@ -74,9 -71,6 +74,9 @@@ /target_release_name + + /target_release_codename + @@@ -363,11 -357,6 +363,11 @@@ actually change the system. Configuration Item: APT::Get::Simulate. + Simulation run as user will deactivate locking (Debug::NoLocking) + automatical and display a notice indicating that this is only a simulation. + Neigther NoLocking nor the notice will be triggered if run as root (root should know what + he is doing without further warnings by apt-get). + Simulate prints out a series of lines each one representing a dpkg operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets indicate broken packages with @@@ -401,6 -390,14 +401,14 @@@ Configuration Item: APT::Get::Compile. + + Also install recommended packages. + + + + Do not install recommended packages. + + Ignore package Holds; This causes apt-get to ignore a hold placed on a package. This may be useful in conjunction with @@@ -466,8 -463,7 +474,8 @@@ of this option. In short, this option lets you have simple control over which distribution packages will be retrieved from. Some common examples might be - or . + , + or . Configuration Item: APT::Default-Release; see also the &apt-preferences; manual page. @@@ -593,8 -589,8 +601,8 @@@ CURRENT AUTHORS &apt-author.team; - &apt-qapage; + &apt-qapage; &manbugs; diff --combined doc/examples/configure-index index c2b1bb272,a4167085b..ada6b12ce --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@@ -115,6 -115,56 +115,56 @@@ AP // Keep the list of FDs open (normally apt closes all fds when it // does a ExecFork) Keep-Fds {}; + + // control parameters for cron jobs by /etc/cron.daily/apt + Periodic + { + BackupArchiveInterval "0"; + // - Backup after n-days if archive contents changed.(0=disable) + + BackupLevel "3"; + // - Backup level.(0=disable), 1 is invalid. + + // APT::Archives::MaxAge "0"; (old, deprecated) + MaxAge "0"; // (new) + // - Set maximum allowed age of a cache package file. If a cache + // package file is older it is deleted (0=disable) + + // APT::Archives::MinAge "2"; (old, deprecated) + MinAge "2"; // (new) + // - Set minimum age of a package file. If a file is younger it + // will not be deleted (0=disable). Usefull to prevent races + // and to keep backups of the packages for emergency. + + // APT::Archives::MaxSize "0"; (old, deprecated) + MaxSize "0"; // (new) + // - Set maximum size of the cache in MB (0=disable). If the cache + // is bigger, cached package files are deleted until the size + // requirement is met (the biggest packages will be deleted + // first). + + Update-Package-Lists "0"; + // - Do "apt-get update" automatically every n-days (0=disable) + // + Download-Upgradeable-Packages "0"; + // - Do "apt-get upgrade --download-only" every n-days (0=disable) + // + Unattended-Upgrade "0"; + // - Run the "unattended-upgrade" security upgrade script + // every n-days (0=disabled) + // Requires the package "unattended-upgrades" and will write + // a log in /var/log/unattended-upgrades + // + AutocleanInterval "0"; + // - Do "apt-get autoclean" every n-days (0=disable) + + Verbose "0"; + // - Send report mail to root + // 0: no report (or null string) + // 1: progress report (actually any string) + // 2: + command outputs (remove -qq, remove 2>/dev/null, add -d) + // 3: + trace on + }; }; // Options for the downloading routines @@@ -213,20 -263,18 +263,22 @@@ Dir "/ // Location of the cache dir Cache "var/cache/apt/" { Archives "archives/"; + // backup directory created by /etc/cron.daily/apt + Backup "backup/"; srcpkgcache "srcpkgcache.bin"; pkgcache "pkgcache.bin"; }; // Config files Etc "etc/apt/" { - SourceList "sources.list"; Main "apt.conf"; - Preferences "preferences"; Parts "apt.conf.d/"; + Preferences "preferences"; + PreferencesParts "preferences.d"; + SourceList "sources.list"; + SourceParts "sources.list.d"; + VendorList "vendors.list"; + VendorParts "vendors.list.d"; }; // Locations of binaries @@@ -292,9 -340,7 +344,9 @@@ DPk Debug { pkgProblemResolver "false"; + pkgProblemResolver::ShowScores "false"; pkgDepCache::AutoInstall "false"; // what packages apt install to satify dependencies + pkgDepCache::Marker "false"; pkgAcquire "false"; pkgAcquire::Worker "false"; pkgAcquire::Auth "false"; diff --combined po/apt-all.pot index d1b705837,ae7cb4795..b8305c25c --- a/po/apt-all.pot +++ b/po/apt-all.pot @@@ -7,7 -7,7 +7,7 @@@ msgid " msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2009-06-30 14:09+0200\n" -"POT-Creation-Date: 2008-05-22 16:56+0200\n" ++"POT-Creation-Date: 2009-07-21 15:49+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@@ -15,153 -15,153 +15,148 @@@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" --#: cmdline/apt-cache.cc:143 ++#: cmdline/apt-cache.cc:141 #, c-format msgid "Package %s version %s has an unmet dep:\n" msgstr "" --#: cmdline/apt-cache.cc:183 cmdline/apt-cache.cc:552 cmdline/apt-cache.cc:640 --#: cmdline/apt-cache.cc:796 cmdline/apt-cache.cc:1018 --#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570 ++#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:644 ++#: cmdline/apt-cache.cc:800 cmdline/apt-cache.cc:1022 ++#: cmdline/apt-cache.cc:1423 cmdline/apt-cache.cc:1575 #, c-format msgid "Unable to locate package %s" msgstr "" --#: cmdline/apt-cache.cc:247 ++#: cmdline/apt-cache.cc:245 msgid "Total package names: " msgstr "" --#: cmdline/apt-cache.cc:287 ++#: cmdline/apt-cache.cc:285 msgid " Normal packages: " msgstr "" --#: cmdline/apt-cache.cc:288 ++#: cmdline/apt-cache.cc:286 msgid " Pure virtual packages: " msgstr "" --#: cmdline/apt-cache.cc:289 ++#: cmdline/apt-cache.cc:287 msgid " Single virtual packages: " msgstr "" --#: cmdline/apt-cache.cc:290 ++#: cmdline/apt-cache.cc:288 msgid " Mixed virtual packages: " msgstr "" --#: cmdline/apt-cache.cc:291 ++#: cmdline/apt-cache.cc:289 msgid " Missing: " msgstr "" --#: cmdline/apt-cache.cc:293 ++#: cmdline/apt-cache.cc:291 msgid "Total distinct versions: " msgstr "" --#: cmdline/apt-cache.cc:295 ++#: cmdline/apt-cache.cc:293 msgid "Total distinct descriptions: " msgstr "" --#: cmdline/apt-cache.cc:297 ++#: cmdline/apt-cache.cc:295 msgid "Total dependencies: " msgstr "" --#: cmdline/apt-cache.cc:300 ++#: cmdline/apt-cache.cc:298 msgid "Total ver/file relations: " msgstr "" --#: cmdline/apt-cache.cc:302 ++#: cmdline/apt-cache.cc:300 msgid "Total Desc/File relations: " msgstr "" --#: cmdline/apt-cache.cc:304 ++#: cmdline/apt-cache.cc:302 msgid "Total Provides mappings: " msgstr "" --#: cmdline/apt-cache.cc:316 ++#: cmdline/apt-cache.cc:314 msgid "Total globbed strings: " msgstr "" --#: cmdline/apt-cache.cc:330 ++#: cmdline/apt-cache.cc:328 msgid "Total dependency version space: " msgstr "" --#: cmdline/apt-cache.cc:335 ++#: cmdline/apt-cache.cc:333 msgid "Total slack space: " msgstr "" --#: cmdline/apt-cache.cc:343 ++#: cmdline/apt-cache.cc:341 msgid "Total space accounted for: " msgstr "" --#: cmdline/apt-cache.cc:471 cmdline/apt-cache.cc:1218 ++#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1222 #, c-format msgid "Package file %s is out of sync." msgstr "" --#: cmdline/apt-cache.cc:1293 ++#: cmdline/apt-cache.cc:1297 msgid "You must give exactly one pattern" msgstr "" --#: cmdline/apt-cache.cc:1447 ++#: cmdline/apt-cache.cc:1451 msgid "No packages found" msgstr "" --#: cmdline/apt-cache.cc:1524 ++#: cmdline/apt-cache.cc:1528 msgid "Package files:" msgstr "" --#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617 ++#: cmdline/apt-cache.cc:1535 cmdline/apt-cache.cc:1622 msgid "Cache is out of sync, can't x-ref a package file" msgstr "" --#: cmdline/apt-cache.cc:1532 --#, c-format --msgid "%4i %s\n" --msgstr "" -- #. Show any packages have explicit pins --#: cmdline/apt-cache.cc:1544 ++#: cmdline/apt-cache.cc:1549 msgid "Pinned packages:" msgstr "" --#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597 ++#: cmdline/apt-cache.cc:1561 cmdline/apt-cache.cc:1602 msgid "(not found)" msgstr "" #. Installed version --#: cmdline/apt-cache.cc:1577 ++#: cmdline/apt-cache.cc:1582 msgid " Installed: " msgstr "" --#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587 ++#: cmdline/apt-cache.cc:1584 cmdline/apt-cache.cc:1592 msgid "(none)" msgstr "" #. Candidate Version --#: cmdline/apt-cache.cc:1584 ++#: cmdline/apt-cache.cc:1589 msgid " Candidate: " msgstr "" --#: cmdline/apt-cache.cc:1594 ++#: cmdline/apt-cache.cc:1599 msgid " Package pin: " msgstr "" #. Show the priority tables --#: cmdline/apt-cache.cc:1603 ++#: cmdline/apt-cache.cc:1608 msgid " Version table:" msgstr "" --#: cmdline/apt-cache.cc:1618 ++#: cmdline/apt-cache.cc:1623 #, c-format msgid " %4i %s\n" msgstr "" --#: cmdline/apt-cache.cc:1714 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70 ++#: cmdline/apt-cache.cc:1719 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547 -#: cmdline/apt-get.cc:2571 cmdline/apt-sortpkgs.cc:144 +#: cmdline/apt-get.cc:2586 cmdline/apt-sortpkgs.cc:144 #, c-format msgid "%s %s for %s compiled on %s %s\n" msgstr "" --#: cmdline/apt-cache.cc:1721 ++#: cmdline/apt-cache.cc:1726 msgid "" "Usage: apt-cache [options] command\n" " apt-cache [options] add file1 [file2 ...]\n" @@@ -184,8 -184,8 +179,8 @@@ " show - Show a readable record for the package\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\n" -" dotty - Generate package graphs for GraphVis\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" @@@ -251,7 -251,7 +246,7 @@@ msgid " " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" msgstr "" -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:815 +#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:827 #, c-format msgid "Unable to write to %s" msgstr "" @@@ -550,221 -550,221 +545,221 @@@ msgstr " msgid "Failed to rename %s to %s" msgstr "" -#: cmdline/apt-get.cc:124 +#: cmdline/apt-get.cc:127 msgid "Y" msgstr "" -#: cmdline/apt-get.cc:146 cmdline/apt-get.cc:1651 +#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1661 #, c-format msgid "Regex compilation error - %s" msgstr "" -#: cmdline/apt-get.cc:241 +#: cmdline/apt-get.cc:244 msgid "The following packages have unmet dependencies:" msgstr "" -#: cmdline/apt-get.cc:331 +#: cmdline/apt-get.cc:334 #, c-format msgid "but %s is installed" msgstr "" -#: cmdline/apt-get.cc:333 +#: cmdline/apt-get.cc:336 #, c-format msgid "but %s is to be installed" msgstr "" -#: cmdline/apt-get.cc:340 +#: cmdline/apt-get.cc:343 msgid "but it is not installable" msgstr "" -#: cmdline/apt-get.cc:342 +#: cmdline/apt-get.cc:345 msgid "but it is a virtual package" msgstr "" -#: cmdline/apt-get.cc:345 +#: cmdline/apt-get.cc:348 msgid "but it is not installed" msgstr "" -#: cmdline/apt-get.cc:345 +#: cmdline/apt-get.cc:348 msgid "but it is not going to be installed" msgstr "" -#: cmdline/apt-get.cc:350 +#: cmdline/apt-get.cc:353 msgid " or" msgstr "" -#: cmdline/apt-get.cc:379 +#: cmdline/apt-get.cc:382 msgid "The following NEW packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:405 +#: cmdline/apt-get.cc:408 msgid "The following packages will be REMOVED:" msgstr "" -#: cmdline/apt-get.cc:427 +#: cmdline/apt-get.cc:430 msgid "The following packages have been kept back:" msgstr "" -#: cmdline/apt-get.cc:448 +#: cmdline/apt-get.cc:451 msgid "The following packages will be upgraded:" msgstr "" -#: cmdline/apt-get.cc:469 +#: cmdline/apt-get.cc:472 msgid "The following packages will be DOWNGRADED:" msgstr "" -#: cmdline/apt-get.cc:489 +#: cmdline/apt-get.cc:492 msgid "The following held packages will be changed:" msgstr "" -#: cmdline/apt-get.cc:542 +#: cmdline/apt-get.cc:545 #, c-format msgid "%s (due to %s) " msgstr "" -#: cmdline/apt-get.cc:550 +#: cmdline/apt-get.cc:553 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:581 +#: cmdline/apt-get.cc:584 #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "" -#: cmdline/apt-get.cc:585 +#: cmdline/apt-get.cc:588 #, c-format msgid "%lu reinstalled, " msgstr "" -#: cmdline/apt-get.cc:587 +#: cmdline/apt-get.cc:590 #, c-format msgid "%lu downgraded, " msgstr "" -#: cmdline/apt-get.cc:589 +#: cmdline/apt-get.cc:592 #, c-format msgid "%lu to remove and %lu not upgraded.\n" msgstr "" -#: cmdline/apt-get.cc:593 +#: cmdline/apt-get.cc:596 #, c-format msgid "%lu not fully installed or removed.\n" msgstr "" -#: cmdline/apt-get.cc:667 +#: cmdline/apt-get.cc:670 msgid "Correcting dependencies..." msgstr "" -#: cmdline/apt-get.cc:670 +#: cmdline/apt-get.cc:673 msgid " failed." msgstr "" -#: cmdline/apt-get.cc:673 +#: cmdline/apt-get.cc:676 msgid "Unable to correct dependencies" msgstr "" -#: cmdline/apt-get.cc:676 +#: cmdline/apt-get.cc:679 msgid "Unable to minimize the upgrade set" msgstr "" -#: cmdline/apt-get.cc:678 +#: cmdline/apt-get.cc:681 msgid " Done" msgstr "" -#: cmdline/apt-get.cc:682 +#: cmdline/apt-get.cc:685 msgid "You might want to run `apt-get -f install' to correct these." msgstr "" -#: cmdline/apt-get.cc:685 +#: cmdline/apt-get.cc:688 msgid "Unmet dependencies. Try using -f." msgstr "" -#: cmdline/apt-get.cc:707 +#: cmdline/apt-get.cc:710 msgid "WARNING: The following packages cannot be authenticated!" msgstr "" -#: cmdline/apt-get.cc:711 +#: cmdline/apt-get.cc:714 msgid "Authentication warning overridden.\n" msgstr "" -#: cmdline/apt-get.cc:718 +#: cmdline/apt-get.cc:721 msgid "Install these packages without verification [y/N]? " msgstr "" -#: cmdline/apt-get.cc:720 +#: cmdline/apt-get.cc:723 msgid "Some packages could not be authenticated" msgstr "" -#: cmdline/apt-get.cc:729 cmdline/apt-get.cc:881 +#: cmdline/apt-get.cc:732 cmdline/apt-get.cc:884 msgid "There are problems and -y was used without --force-yes" msgstr "" -#: cmdline/apt-get.cc:773 +#: cmdline/apt-get.cc:776 msgid "Internal error, InstallPackages was called with broken packages!" msgstr "" -#: cmdline/apt-get.cc:782 +#: cmdline/apt-get.cc:785 msgid "Packages need to be removed but remove is disabled." msgstr "" -#: cmdline/apt-get.cc:793 +#: cmdline/apt-get.cc:796 msgid "Internal error, Ordering didn't finish" msgstr "" -#: cmdline/apt-get.cc:809 cmdline/apt-get.cc:1990 cmdline/apt-get.cc:2023 +#: cmdline/apt-get.cc:812 cmdline/apt-get.cc:2003 cmdline/apt-get.cc:2036 msgid "Unable to lock the download directory" msgstr "" -#: cmdline/apt-get.cc:819 cmdline/apt-get.cc:2071 cmdline/apt-get.cc:2317 +#: cmdline/apt-get.cc:822 cmdline/apt-get.cc:2084 cmdline/apt-get.cc:2330 #: apt-pkg/cachefile.cc:65 msgid "The list of sources could not be read." msgstr "" -#: cmdline/apt-get.cc:834 +#: cmdline/apt-get.cc:837 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" msgstr "" -#: cmdline/apt-get.cc:839 +#: cmdline/apt-get.cc:842 #, c-format msgid "Need to get %sB/%sB of archives.\n" msgstr "" -#: cmdline/apt-get.cc:842 +#: cmdline/apt-get.cc:845 #, c-format msgid "Need to get %sB of archives.\n" msgstr "" -#: cmdline/apt-get.cc:847 +#: cmdline/apt-get.cc:850 #, c-format msgid "After this operation, %sB of additional disk space will be used.\n" msgstr "" -#: cmdline/apt-get.cc:850 +#: cmdline/apt-get.cc:853 #, c-format msgid "After this operation, %sB disk space will be freed.\n" msgstr "" -#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:2166 +#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:2179 #, c-format msgid "Couldn't determine free space in %s" msgstr "" -#: cmdline/apt-get.cc:871 +#: cmdline/apt-get.cc:874 #, c-format msgid "You don't have enough free space in %s." msgstr "" -#: cmdline/apt-get.cc:887 cmdline/apt-get.cc:907 +#: cmdline/apt-get.cc:890 cmdline/apt-get.cc:910 msgid "Trivial Only specified but this is not a trivial operation." msgstr "" -#: cmdline/apt-get.cc:889 +#: cmdline/apt-get.cc:892 msgid "Yes, do as I say!" msgstr "" -#: cmdline/apt-get.cc:891 +#: cmdline/apt-get.cc:894 #, c-format msgid "" "You are about to do something potentially harmful.\n" @@@ -772,74 -772,74 +767,74 @@@ " ?] " msgstr "" -#: cmdline/apt-get.cc:897 cmdline/apt-get.cc:916 +#: cmdline/apt-get.cc:900 cmdline/apt-get.cc:919 msgid "Abort." msgstr "" -#: cmdline/apt-get.cc:912 +#: cmdline/apt-get.cc:915 msgid "Do you want to continue [Y/n]? " msgstr "" - #: cmdline/apt-get.cc:987 cmdline/apt-get.cc:2227 apt-pkg/algorithms.cc:1400 -#: cmdline/apt-get.cc:984 cmdline/apt-get.cc:2214 apt-pkg/algorithms.cc:1344 ++#: cmdline/apt-get.cc:987 cmdline/apt-get.cc:2227 apt-pkg/algorithms.cc:1407 #, c-format msgid "Failed to fetch %s %s\n" msgstr "" -#: cmdline/apt-get.cc:1002 +#: cmdline/apt-get.cc:1005 msgid "Some files failed to download" msgstr "" -#: cmdline/apt-get.cc:1003 cmdline/apt-get.cc:2223 +#: cmdline/apt-get.cc:1006 cmdline/apt-get.cc:2236 msgid "Download complete and in download only mode" msgstr "" -#: cmdline/apt-get.cc:1009 +#: cmdline/apt-get.cc:1012 msgid "" "Unable to fetch some archives, maybe run apt-get update or try with --fix-" "missing?" msgstr "" -#: cmdline/apt-get.cc:1013 +#: cmdline/apt-get.cc:1016 msgid "--fix-missing and media swapping is not currently supported" msgstr "" -#: cmdline/apt-get.cc:1018 +#: cmdline/apt-get.cc:1021 msgid "Unable to correct missing packages." msgstr "" -#: cmdline/apt-get.cc:1019 +#: cmdline/apt-get.cc:1022 msgid "Aborting install." msgstr "" -#: cmdline/apt-get.cc:1053 +#: cmdline/apt-get.cc:1056 #, c-format msgid "Note, selecting %s instead of %s\n" msgstr "" -#: cmdline/apt-get.cc:1063 +#: cmdline/apt-get.cc:1066 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" msgstr "" -#: cmdline/apt-get.cc:1081 +#: cmdline/apt-get.cc:1084 #, c-format msgid "Package %s is not installed, so not removed\n" msgstr "" -#: cmdline/apt-get.cc:1092 +#: cmdline/apt-get.cc:1095 #, c-format msgid "Package %s is a virtual package provided by:\n" msgstr "" -#: cmdline/apt-get.cc:1104 +#: cmdline/apt-get.cc:1107 msgid " [Installed]" msgstr "" -#: cmdline/apt-get.cc:1109 +#: cmdline/apt-get.cc:1112 msgid "You should explicitly select one to install." msgstr "" -#: cmdline/apt-get.cc:1114 +#: cmdline/apt-get.cc:1117 #, c-format msgid "" "Package %s is not available, but is referred to by another package.\n" @@@ -847,126 -847,111 +842,126 @@@ "is only available from another source\n" msgstr "" -#: cmdline/apt-get.cc:1133 +#: cmdline/apt-get.cc:1136 msgid "However the following packages replace it:" msgstr "" -#: cmdline/apt-get.cc:1136 +#: cmdline/apt-get.cc:1139 #, c-format msgid "Package %s has no installation candidate" msgstr "" -#: cmdline/apt-get.cc:1156 +#: cmdline/apt-get.cc:1159 #, c-format msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n" msgstr "" -#: cmdline/apt-get.cc:1164 +#: cmdline/apt-get.cc:1167 #, c-format msgid "%s is already the newest version.\n" msgstr "" -#: cmdline/apt-get.cc:1193 +#: cmdline/apt-get.cc:1196 #, c-format msgid "Release '%s' for '%s' was not found" msgstr "" -#: cmdline/apt-get.cc:1195 +#: cmdline/apt-get.cc:1198 #, c-format msgid "Version '%s' for '%s' was not found" msgstr "" -#: cmdline/apt-get.cc:1201 +#: cmdline/apt-get.cc:1204 #, c-format msgid "Selected version %s (%s) for %s\n" msgstr "" -#: cmdline/apt-get.cc:1338 +#: cmdline/apt-get.cc:1310 +#, c-format +msgid "No source package '%s' picking '%s' instead\n" +msgstr "" + +#: cmdline/apt-get.cc:1348 msgid "The update command takes no arguments" msgstr "" -#: cmdline/apt-get.cc:1351 +#: cmdline/apt-get.cc:1361 msgid "Unable to lock the list directory" msgstr "" -#: cmdline/apt-get.cc:1403 +#: cmdline/apt-get.cc:1413 msgid "We are not supposed to delete stuff, can't start AutoRemover" msgstr "" -#: cmdline/apt-get.cc:1435 +#: cmdline/apt-get.cc:1445 msgid "" "The following packages were automatically installed and are no longer " "required:" msgstr "" -#: cmdline/apt-get.cc:1437 +#: cmdline/apt-get.cc:1447 msgid "Use 'apt-get autoremove' to remove them." msgstr "" -#: cmdline/apt-get.cc:1442 +#: cmdline/apt-get.cc:1452 msgid "" "Hmm, seems like the AutoRemover destroyed something which really\n" "shouldn't happen. Please file a bug report against apt." msgstr "" -#: cmdline/apt-get.cc:1445 cmdline/apt-get.cc:1733 +#. +#. 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:1455 cmdline/apt-get.cc:1745 msgid "The following information may help to resolve the situation:" msgstr "" -#: cmdline/apt-get.cc:1449 +#: cmdline/apt-get.cc:1459 msgid "Internal Error, AutoRemover broke stuff" msgstr "" -#: cmdline/apt-get.cc:1468 +#: cmdline/apt-get.cc:1478 msgid "Internal error, AllUpgrade broke stuff" msgstr "" -#: cmdline/apt-get.cc:1523 +#: cmdline/apt-get.cc:1533 #, c-format msgid "Couldn't find task %s" msgstr "" -#: cmdline/apt-get.cc:1638 cmdline/apt-get.cc:1674 +#: cmdline/apt-get.cc:1648 cmdline/apt-get.cc:1684 #, c-format msgid "Couldn't find package %s" msgstr "" -#: cmdline/apt-get.cc:1661 +#: cmdline/apt-get.cc:1671 #, c-format msgid "Note, selecting %s for regex '%s'\n" msgstr "" -#: cmdline/apt-get.cc:1692 +#: cmdline/apt-get.cc:1702 #, c-format msgid "%s set to manually installed.\n" msgstr "" -#: cmdline/apt-get.cc:1705 +#: cmdline/apt-get.cc:1715 msgid "You might want to run `apt-get -f install' to correct these:" msgstr "" -#: cmdline/apt-get.cc:1708 +#: cmdline/apt-get.cc:1718 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." msgstr "" -#: cmdline/apt-get.cc:1720 +#: cmdline/apt-get.cc:1730 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" @@@ -974,152 -959,159 +969,152 @@@ "or been moved out of Incoming." msgstr "" -#: cmdline/apt-get.cc:1728 -msgid "" -"Since you only requested a single operation it is extremely likely that\n" -"the package is simply not installable and a bug report against\n" -"that package should be filed." -msgstr "" - -#: cmdline/apt-get.cc:1736 +#: cmdline/apt-get.cc:1748 msgid "Broken packages" msgstr "" -#: cmdline/apt-get.cc:1765 +#: cmdline/apt-get.cc:1777 msgid "The following extra packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:1854 +#: cmdline/apt-get.cc:1866 msgid "Suggested packages:" msgstr "" -#: cmdline/apt-get.cc:1855 +#: cmdline/apt-get.cc:1867 msgid "Recommended packages:" msgstr "" -#: cmdline/apt-get.cc:1883 +#: cmdline/apt-get.cc:1896 msgid "Calculating upgrade... " msgstr "" -#: cmdline/apt-get.cc:1886 methods/ftp.cc:702 methods/connect.cc:112 +#: cmdline/apt-get.cc:1899 methods/ftp.cc:702 methods/connect.cc:112 msgid "Failed" msgstr "" -#: cmdline/apt-get.cc:1891 +#: cmdline/apt-get.cc:1904 msgid "Done" msgstr "" -#: cmdline/apt-get.cc:1958 cmdline/apt-get.cc:1966 +#: cmdline/apt-get.cc:1971 cmdline/apt-get.cc:1979 msgid "Internal error, problem resolver broke stuff" msgstr "" -#: cmdline/apt-get.cc:2066 +#: cmdline/apt-get.cc:2079 msgid "Must specify at least one package to fetch source for" msgstr "" -#: cmdline/apt-get.cc:2096 cmdline/apt-get.cc:2335 +#: cmdline/apt-get.cc:2109 cmdline/apt-get.cc:2348 #, c-format msgid "Unable to find a source package for %s" msgstr "" -#: cmdline/apt-get.cc:2145 +#: cmdline/apt-get.cc:2158 #, c-format msgid "Skipping already downloaded file '%s'\n" msgstr "" -#: cmdline/apt-get.cc:2173 +#: cmdline/apt-get.cc:2186 #, c-format msgid "You don't have enough free space in %s" msgstr "" -#: cmdline/apt-get.cc:2179 +#: cmdline/apt-get.cc:2192 #, c-format msgid "Need to get %sB/%sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:2182 +#: cmdline/apt-get.cc:2195 #, c-format msgid "Need to get %sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:2188 +#: cmdline/apt-get.cc:2201 #, c-format msgid "Fetch source %s\n" msgstr "" -#: cmdline/apt-get.cc:2219 +#: cmdline/apt-get.cc:2232 msgid "Failed to fetch some archives." msgstr "" -#: cmdline/apt-get.cc:2247 +#: cmdline/apt-get.cc:2260 #, c-format msgid "Skipping unpack of already unpacked source in %s\n" msgstr "" -#: cmdline/apt-get.cc:2259 +#: cmdline/apt-get.cc:2272 #, c-format msgid "Unpack command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2260 +#: cmdline/apt-get.cc:2273 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" msgstr "" -#: cmdline/apt-get.cc:2277 +#: cmdline/apt-get.cc:2290 #, c-format msgid "Build command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2296 +#: cmdline/apt-get.cc:2309 msgid "Child process failed" msgstr "" -#: cmdline/apt-get.cc:2312 +#: cmdline/apt-get.cc:2325 msgid "Must specify at least one package to check builddeps for" msgstr "" -#: cmdline/apt-get.cc:2340 +#: cmdline/apt-get.cc:2353 #, c-format msgid "Unable to get build-dependency information for %s" msgstr "" -#: cmdline/apt-get.cc:2360 +#: cmdline/apt-get.cc:2373 #, c-format msgid "%s has no build depends.\n" msgstr "" -#: cmdline/apt-get.cc:2412 +#: cmdline/apt-get.cc:2425 #, c-format msgid "" "%s dependency for %s cannot be satisfied because the package %s cannot be " "found" msgstr "" -#: cmdline/apt-get.cc:2465 +#: cmdline/apt-get.cc:2478 #, 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:2501 +#: cmdline/apt-get.cc:2514 #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" msgstr "" -#: cmdline/apt-get.cc:2526 +#: cmdline/apt-get.cc:2541 #, c-format msgid "Failed to satisfy %s dependency for %s: %s" msgstr "" -#: cmdline/apt-get.cc:2540 +#: cmdline/apt-get.cc:2555 #, c-format msgid "Build-dependencies for %s could not be satisfied." msgstr "" -#: cmdline/apt-get.cc:2544 +#: cmdline/apt-get.cc:2559 msgid "Failed to process build dependencies" msgstr "" -#: cmdline/apt-get.cc:2576 +#: cmdline/apt-get.cc:2591 msgid "Supported modules:" msgstr "" -#: cmdline/apt-get.cc:2617 +#: cmdline/apt-get.cc:2632 msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@@ -1135,7 -1127,7 +1130,7 @@@ " install - Install new packages (pkg is libc6 not libc6.deb)\n" " remove - Remove packages\n" " autoremove - Remove automatically all unused packages\n" -" purge - Remove and purge 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" @@@ -1163,14 -1155,6 +1158,14 @@@ " This APT has Super Cow Powers.\n" msgstr "" +#: cmdline/apt-get.cc:2799 +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:55 msgid "Hit " msgstr "" @@@ -1386,9 -1370,9 +1381,9 @@@ msgstr " msgid "File %s/%s overwrites the one in the package %s" msgstr "" -#: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:821 +#: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:822 #: apt-pkg/contrib/cdromutl.cc:150 apt-pkg/sourcelist.cc:320 --#: apt-pkg/acquire.cc:418 apt-pkg/clean.cc:34 ++#: apt-pkg/acquire.cc:419 apt-pkg/clean.cc:34 apt-pkg/policy.cc:268 #, c-format msgid "Unable to read %s" msgstr "" @@@ -1418,9 -1402,9 +1413,9 @@@ msgid "The info and temp directories ne msgstr "" #. Build the status cache -#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:748 -#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822 -#: apt-pkg/pkgcachegen.cc:945 +#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:760 +#: apt-pkg/pkgcachegen.cc:829 apt-pkg/pkgcachegen.cc:834 +#: apt-pkg/pkgcachegen.cc:957 msgid "Reading package lists" msgstr "" @@@ -1613,7 -1597,7 +1608,7 @@@ msgstr " msgid "Server closed the connection" msgstr "" - #: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:538 methods/rsh.cc:190 -#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:536 methods/rsh.cc:190 ++#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:541 methods/rsh.cc:190 msgid "Read error" msgstr "" @@@ -1625,7 -1609,7 +1620,7 @@@ msgstr " msgid "Protocol corruption" msgstr "" - #: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:577 methods/rsh.cc:232 -#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:575 methods/rsh.cc:232 ++#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:580 methods/rsh.cc:232 msgid "Write error" msgstr "" @@@ -1679,7 -1663,7 +1674,7 @@@ msgstr " msgid "Unable to accept connection" msgstr "" -#: methods/ftp.cc:864 methods/http.cc:959 methods/rsh.cc:303 +#: methods/ftp.cc:864 methods/http.cc:991 methods/rsh.cc:303 msgid "Problem hashing file" msgstr "" @@@ -1763,38 -1747,38 +1758,38 @@@ msgstr " msgid "Unable to connect to %s %s:" msgstr "" -#: methods/gpgv.cc:65 +#: methods/gpgv.cc:71 #, c-format msgid "Couldn't access keyring: '%s'" msgstr "" -#: methods/gpgv.cc:101 +#: methods/gpgv.cc:107 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting." msgstr "" -#: methods/gpgv.cc:205 +#: methods/gpgv.cc:223 msgid "" "Internal error: Good signature, but could not determine key fingerprint?!" msgstr "" -#: methods/gpgv.cc:210 +#: methods/gpgv.cc:228 msgid "At least one invalid signature was encountered." msgstr "" -#: methods/gpgv.cc:214 +#: methods/gpgv.cc:232 #, c-format msgid "Could not execute '%s' to verify signature (is gpgv installed?)" msgstr "" -#: methods/gpgv.cc:219 +#: methods/gpgv.cc:237 msgid "Unknown error executing gpgv" msgstr "" -#: methods/gpgv.cc:250 +#: methods/gpgv.cc:271 methods/gpgv.cc:278 msgid "The following signatures were invalid:\n" msgstr "" -#: methods/gpgv.cc:257 +#: methods/gpgv.cc:285 msgid "" "The following signatures couldn't be verified because the public key is not " "available:\n" @@@ -1810,80 -1794,76 +1805,80 @@@ msgstr " msgid "Read error from %s process" msgstr "" -#: methods/http.cc:377 +#: methods/http.cc:379 msgid "Waiting for headers" msgstr "" -#: methods/http.cc:523 +#: methods/http.cc:525 #, c-format msgid "Got a single header line over %u chars" msgstr "" -#: methods/http.cc:531 +#: methods/http.cc:533 msgid "Bad header line" msgstr "" -#: methods/http.cc:550 methods/http.cc:557 +#: methods/http.cc:552 methods/http.cc:559 msgid "The HTTP server sent an invalid reply header" msgstr "" -#: methods/http.cc:586 +#: methods/http.cc:588 msgid "The HTTP server sent an invalid Content-Length header" msgstr "" -#: methods/http.cc:601 +#: methods/http.cc:603 msgid "The HTTP server sent an invalid Content-Range header" msgstr "" -#: methods/http.cc:603 +#: methods/http.cc:605 msgid "This HTTP server has broken range support" msgstr "" -#: methods/http.cc:627 +#: methods/http.cc:629 msgid "Unknown date format" msgstr "" -#: methods/http.cc:774 +#: methods/http.cc:782 msgid "Select failed" msgstr "" -#: methods/http.cc:779 +#: methods/http.cc:787 msgid "Connection timed out" msgstr "" -#: methods/http.cc:802 +#: methods/http.cc:810 msgid "Error writing to output file" msgstr "" -#: methods/http.cc:833 +#: methods/http.cc:841 msgid "Error writing to file" msgstr "" -#: methods/http.cc:861 +#: methods/http.cc:869 msgid "Error writing to the file" msgstr "" -#: methods/http.cc:875 +#: methods/http.cc:883 msgid "Error reading from server. Remote end closed connection" msgstr "" -#: methods/http.cc:877 +#: methods/http.cc:885 msgid "Error reading from server" msgstr "" -#: methods/http.cc:1104 +#: methods/http.cc:976 apt-pkg/contrib/mmap.cc:196 +msgid "Failed to truncate file" +msgstr "" + +#: methods/http.cc:1141 msgid "Bad header data" msgstr "" -#: methods/http.cc:1121 methods/http.cc:1176 +#: methods/http.cc:1158 methods/http.cc:1213 msgid "Connection failed" msgstr "" -#: methods/http.cc:1228 +#: methods/http.cc:1305 msgid "Internal error" msgstr "" @@@ -1896,38 -1876,7 +1891,38 @@@ msgstr " msgid "Couldn't make mmap of %lu bytes" msgstr "" -#: apt-pkg/contrib/strutl.cc:1014 +#: apt-pkg/contrib/mmap.cc:213 apt-pkg/contrib/mmap.cc:276 +#, 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 "" + +#. d means days, h means hours, min means minutes, s means seconds +#: apt-pkg/contrib/strutl.cc:335 +#, c-format +msgid "%lid %lih %limin %lis" +msgstr "" + +#. h means hours, min means minutes, s means seconds +#: apt-pkg/contrib/strutl.cc:342 +#, c-format +msgid "%lih %limin %lis" +msgstr "" + +#. min means minutes, s means seconds +#: apt-pkg/contrib/strutl.cc:349 +#, c-format +msgid "%limin %lis" +msgstr "" + +#. s means seconds +#: apt-pkg/contrib/strutl.cc:354 +#, c-format +msgid "%lis" +msgstr "" + +#: apt-pkg/contrib/strutl.cc:1029 #, c-format msgid "Selection %s not found" msgstr "" @@@ -1942,42 -1891,42 +1937,42 @@@ msgstr " msgid "Opening configuration file %s" msgstr "" -#: apt-pkg/contrib/configuration.cc:662 +#: apt-pkg/contrib/configuration.cc:663 #, c-format msgid "Syntax error %s:%u: Block starts with no name." msgstr "" -#: apt-pkg/contrib/configuration.cc:681 +#: apt-pkg/contrib/configuration.cc:682 #, c-format msgid "Syntax error %s:%u: Malformed tag" msgstr "" -#: apt-pkg/contrib/configuration.cc:698 +#: apt-pkg/contrib/configuration.cc:699 #, c-format msgid "Syntax error %s:%u: Extra junk after value" msgstr "" -#: apt-pkg/contrib/configuration.cc:738 +#: apt-pkg/contrib/configuration.cc:739 #, c-format msgid "Syntax error %s:%u: Directives can only be done at the top level" msgstr "" -#: apt-pkg/contrib/configuration.cc:745 +#: apt-pkg/contrib/configuration.cc:746 #, c-format msgid "Syntax error %s:%u: Too many nested includes" msgstr "" -#: apt-pkg/contrib/configuration.cc:749 apt-pkg/contrib/configuration.cc:754 +#: apt-pkg/contrib/configuration.cc:750 apt-pkg/contrib/configuration.cc:755 #, c-format msgid "Syntax error %s:%u: Included from here" msgstr "" -#: apt-pkg/contrib/configuration.cc:758 +#: apt-pkg/contrib/configuration.cc:759 #, c-format msgid "Syntax error %s:%u: Unsupported directive '%s'" msgstr "" -#: apt-pkg/contrib/configuration.cc:809 +#: apt-pkg/contrib/configuration.cc:810 #, c-format msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "" @@@ -2043,182 -1992,177 +2038,187 @@@ msgstr " msgid "Unable to stat the mount point %s" msgstr "" -#: apt-pkg/contrib/cdromutl.cc:146 apt-pkg/acquire.cc:424 apt-pkg/clean.cc:40 +#: apt-pkg/contrib/cdromutl.cc:146 apt-pkg/contrib/cdromutl.cc:180 - #: apt-pkg/acquire.cc:424 apt-pkg/acquire.cc:449 apt-pkg/clean.cc:40 ++#: apt-pkg/acquire.cc:425 apt-pkg/acquire.cc:450 apt-pkg/clean.cc:40 #, c-format msgid "Unable to change to %s" msgstr "" -#: apt-pkg/contrib/cdromutl.cc:187 +#: apt-pkg/contrib/cdromutl.cc:188 msgid "Failed to stat the cdrom" msgstr "" -#: apt-pkg/contrib/fileutl.cc:147 +#: apt-pkg/contrib/fileutl.cc:149 #, c-format msgid "Not using locking for read only lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:152 +#: apt-pkg/contrib/fileutl.cc:154 #, c-format msgid "Could not open lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:170 +#: apt-pkg/contrib/fileutl.cc:172 #, c-format msgid "Not using locking for nfs mounted lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:174 +#: apt-pkg/contrib/fileutl.cc:176 #, c-format msgid "Could not get lock %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:442 +#: apt-pkg/contrib/fileutl.cc:444 #, c-format msgid "Waited for %s but it wasn't there" msgstr "" - #: apt-pkg/contrib/fileutl.cc:454 -#: apt-pkg/contrib/fileutl.cc:452 ++#: apt-pkg/contrib/fileutl.cc:455 #, c-format msgid "Sub-process %s received a segmentation fault." msgstr "" -#: apt-pkg/contrib/fileutl.cc:455 +#: apt-pkg/contrib/fileutl.cc:457 +#, c-format ++msgid "Sub-process %s received signal %u." ++msgstr "" ++ ++#: apt-pkg/contrib/fileutl.cc:460 + #, c-format msgid "Sub-process %s returned an error code (%u)" msgstr "" - #: apt-pkg/contrib/fileutl.cc:459 -#: apt-pkg/contrib/fileutl.cc:457 ++#: apt-pkg/contrib/fileutl.cc:462 #, c-format msgid "Sub-process %s exited unexpectedly" msgstr "" - #: apt-pkg/contrib/fileutl.cc:503 -#: apt-pkg/contrib/fileutl.cc:501 ++#: apt-pkg/contrib/fileutl.cc:506 #, c-format msgid "Could not open file %s" msgstr "" - #: apt-pkg/contrib/fileutl.cc:559 -#: apt-pkg/contrib/fileutl.cc:557 ++#: apt-pkg/contrib/fileutl.cc:562 #, c-format msgid "read, still have %lu to read but none left" msgstr "" - #: apt-pkg/contrib/fileutl.cc:589 -#: apt-pkg/contrib/fileutl.cc:587 ++#: apt-pkg/contrib/fileutl.cc:592 #, c-format msgid "write, still have %lu to write but couldn't" msgstr "" - #: apt-pkg/contrib/fileutl.cc:664 -#: apt-pkg/contrib/fileutl.cc:662 ++#: apt-pkg/contrib/fileutl.cc:667 msgid "Problem closing the file" msgstr "" - #: apt-pkg/contrib/fileutl.cc:670 -#: apt-pkg/contrib/fileutl.cc:668 ++#: apt-pkg/contrib/fileutl.cc:673 msgid "Problem unlinking the file" msgstr "" - #: apt-pkg/contrib/fileutl.cc:681 -#: apt-pkg/contrib/fileutl.cc:679 ++#: apt-pkg/contrib/fileutl.cc:684 msgid "Problem syncing the file" msgstr "" -#: apt-pkg/pkgcache.cc:132 +#: apt-pkg/pkgcache.cc:133 msgid "Empty package cache" msgstr "" -#: apt-pkg/pkgcache.cc:138 +#: apt-pkg/pkgcache.cc:139 msgid "The package cache file is corrupted" msgstr "" -#: apt-pkg/pkgcache.cc:143 +#: apt-pkg/pkgcache.cc:144 msgid "The package cache file is an incompatible version" msgstr "" -#: apt-pkg/pkgcache.cc:148 +#: apt-pkg/pkgcache.cc:149 #, c-format msgid "This APT does not support the versioning system '%s'" msgstr "" -#: apt-pkg/pkgcache.cc:153 +#: apt-pkg/pkgcache.cc:154 msgid "The package cache was built for a different architecture" msgstr "" -#: apt-pkg/pkgcache.cc:224 +#: apt-pkg/pkgcache.cc:225 msgid "Depends" msgstr "" -#: apt-pkg/pkgcache.cc:224 +#: apt-pkg/pkgcache.cc:225 msgid "PreDepends" msgstr "" -#: apt-pkg/pkgcache.cc:224 +#: apt-pkg/pkgcache.cc:225 msgid "Suggests" msgstr "" -#: apt-pkg/pkgcache.cc:225 +#: apt-pkg/pkgcache.cc:226 msgid "Recommends" msgstr "" -#: apt-pkg/pkgcache.cc:225 +#: apt-pkg/pkgcache.cc:226 msgid "Conflicts" msgstr "" -#: apt-pkg/pkgcache.cc:225 +#: apt-pkg/pkgcache.cc:226 msgid "Replaces" msgstr "" -#: apt-pkg/pkgcache.cc:226 +#: apt-pkg/pkgcache.cc:227 msgid "Obsoletes" msgstr "" -#: apt-pkg/pkgcache.cc:226 +#: apt-pkg/pkgcache.cc:227 msgid "Breaks" msgstr "" -#: apt-pkg/pkgcache.cc:237 +#: apt-pkg/pkgcache.cc:227 +msgid "Enhances" +msgstr "" + +#: apt-pkg/pkgcache.cc:238 msgid "important" msgstr "" -#: apt-pkg/pkgcache.cc:237 +#: apt-pkg/pkgcache.cc:238 msgid "required" msgstr "" -#: apt-pkg/pkgcache.cc:237 +#: apt-pkg/pkgcache.cc:238 msgid "standard" msgstr "" -#: apt-pkg/pkgcache.cc:238 +#: apt-pkg/pkgcache.cc:239 msgid "optional" msgstr "" -#: apt-pkg/pkgcache.cc:238 +#: apt-pkg/pkgcache.cc:239 msgid "extra" msgstr "" -#: apt-pkg/depcache.cc:121 apt-pkg/depcache.cc:150 +#: apt-pkg/depcache.cc:123 apt-pkg/depcache.cc:152 msgid "Building dependency tree" msgstr "" -#: apt-pkg/depcache.cc:122 +#: apt-pkg/depcache.cc:124 msgid "Candidate versions" msgstr "" -#: apt-pkg/depcache.cc:151 +#: apt-pkg/depcache.cc:153 msgid "Dependency generation" msgstr "" -#: apt-pkg/depcache.cc:172 apt-pkg/depcache.cc:191 apt-pkg/depcache.cc:195 +#: apt-pkg/depcache.cc:174 apt-pkg/depcache.cc:193 apt-pkg/depcache.cc:197 msgid "Reading state information" msgstr "" -#: apt-pkg/depcache.cc:219 +#: apt-pkg/depcache.cc:221 #, c-format msgid "Failed to open StateFile %s" msgstr "" -#: apt-pkg/depcache.cc:225 +#: apt-pkg/depcache.cc:227 #, c-format msgid "Failed to write temporary StateFile %s" msgstr "" @@@ -2296,46 -2240,46 +2296,46 @@@ msgstr " msgid "Index file type '%s' is not supported" msgstr "" -#: apt-pkg/algorithms.cc:247 +#: apt-pkg/algorithms.cc:248 #, c-format msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." msgstr "" - #: apt-pkg/algorithms.cc:1147 -#: apt-pkg/algorithms.cc:1106 ++#: apt-pkg/algorithms.cc:1154 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." msgstr "" - #: apt-pkg/algorithms.cc:1149 -#: apt-pkg/algorithms.cc:1108 ++#: apt-pkg/algorithms.cc:1156 msgid "Unable to correct problems, you have held broken packages." msgstr "" - #: apt-pkg/algorithms.cc:1426 apt-pkg/algorithms.cc:1428 -#: apt-pkg/algorithms.cc:1370 apt-pkg/algorithms.cc:1372 ++#: apt-pkg/algorithms.cc:1433 apt-pkg/algorithms.cc:1435 msgid "" "Some index files failed to download, they have been ignored, or old ones " "used instead." msgstr "" --#: apt-pkg/acquire.cc:59 ++#: apt-pkg/acquire.cc:60 #, c-format msgid "Lists directory %spartial is missing." msgstr "" --#: apt-pkg/acquire.cc:63 ++#: apt-pkg/acquire.cc:64 #, c-format msgid "Archive directory %spartial is missing." msgstr "" #. only show the ETA if it makes sense #. two days - #: apt-pkg/acquire.cc:828 -#: apt-pkg/acquire.cc:827 ++#: apt-pkg/acquire.cc:829 #, c-format msgid "Retrieving file %li of %li (%s remaining)" msgstr "" - #: apt-pkg/acquire.cc:830 -#: apt-pkg/acquire.cc:829 ++#: apt-pkg/acquire.cc:831 #, c-format msgid "Retrieving file %li of %li" msgstr "" @@@ -2350,17 -2294,17 +2350,17 @@@ msgstr " msgid "Method %s did not start correctly" msgstr "" -#: apt-pkg/acquire-worker.cc:399 +#: 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:124 ++#: apt-pkg/init.cc:125 #, c-format msgid "Packaging system '%s' is not supported" msgstr "" --#: apt-pkg/init.cc:140 ++#: apt-pkg/init.cc:141 msgid "Unable to determine a suitable packaging system type" msgstr "" @@@ -2381,16 -2325,16 +2381,17 @@@ msgstr " msgid "You may want to run apt-get update to correct these problems" msgstr "" - #: apt-pkg/policy.cc:281 -#: apt-pkg/policy.cc:267 --msgid "Invalid record in the preferences file, no Package header" ++#: apt-pkg/policy.cc:329 ++#, c-format ++msgid "Invalid record in the preferences file %s, no Package header" msgstr "" - #: apt-pkg/policy.cc:303 -#: apt-pkg/policy.cc:289 ++#: apt-pkg/policy.cc:351 #, c-format msgid "Did not understand pin type %s" msgstr "" - #: apt-pkg/policy.cc:311 -#: apt-pkg/policy.cc:297 ++#: apt-pkg/policy.cc:359 msgid "No priority (or zero) specified for pin" msgstr "" @@@ -2408,82 -2352,82 +2409,82 @@@ msgstr " msgid "Error occurred while processing %s (UsePackage1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:153 +#: apt-pkg/pkgcachegen.cc:164 #, c-format msgid "Error occurred while processing %s (NewFileDesc1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:178 +#: apt-pkg/pkgcachegen.cc:189 #, c-format msgid "Error occurred while processing %s (UsePackage2)" msgstr "" -#: apt-pkg/pkgcachegen.cc:182 +#: apt-pkg/pkgcachegen.cc:193 #, c-format msgid "Error occurred while processing %s (NewFileVer1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:213 +#: apt-pkg/pkgcachegen.cc:224 #, c-format msgid "Error occurred while processing %s (NewVersion1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:217 +#: apt-pkg/pkgcachegen.cc:228 #, c-format msgid "Error occurred while processing %s (UsePackage3)" msgstr "" -#: apt-pkg/pkgcachegen.cc:221 +#: apt-pkg/pkgcachegen.cc:232 #, c-format msgid "Error occurred while processing %s (NewVersion2)" msgstr "" -#: apt-pkg/pkgcachegen.cc:245 +#: apt-pkg/pkgcachegen.cc:256 #, c-format msgid "Error occurred while processing %s (NewFileDesc2)" msgstr "" -#: apt-pkg/pkgcachegen.cc:251 +#: apt-pkg/pkgcachegen.cc:262 msgid "Wow, you exceeded the number of package names this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:254 +#: apt-pkg/pkgcachegen.cc:265 msgid "Wow, you exceeded the number of versions this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:257 +#: apt-pkg/pkgcachegen.cc:268 msgid "Wow, you exceeded the number of descriptions this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:260 +#: apt-pkg/pkgcachegen.cc:271 msgid "Wow, you exceeded the number of dependencies this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:288 +#: apt-pkg/pkgcachegen.cc:299 #, c-format msgid "Error occurred while processing %s (FindPkg)" msgstr "" -#: apt-pkg/pkgcachegen.cc:301 +#: apt-pkg/pkgcachegen.cc:312 #, c-format msgid "Error occurred while processing %s (CollectFileProvides)" msgstr "" -#: apt-pkg/pkgcachegen.cc:307 +#: apt-pkg/pkgcachegen.cc:318 #, c-format msgid "Package %s %s was not found while processing file dependencies" msgstr "" -#: apt-pkg/pkgcachegen.cc:678 +#: apt-pkg/pkgcachegen.cc:690 #, c-format msgid "Couldn't stat source package list %s" msgstr "" -#: apt-pkg/pkgcachegen.cc:763 +#: apt-pkg/pkgcachegen.cc:775 msgid "Collecting File Provides" msgstr "" -#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897 +#: apt-pkg/pkgcachegen.cc:902 apt-pkg/pkgcachegen.cc:909 msgid "IO Error saving source cache" msgstr "" @@@ -2496,38 -2440,38 +2497,53 @@@ msgstr " msgid "MD5Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:647 apt-pkg/acquire-item.cc:1408 +#: apt-pkg/acquire-item.cc:658 apt-pkg/acquire-item.cc:1426 msgid "Hash Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:1100 +#: apt-pkg/acquire-item.cc:1118 msgid "There is no public key available for the following key IDs:\n" msgstr "" -#: apt-pkg/acquire-item.cc:1213 +#: apt-pkg/acquire-item.cc:1231 #, 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:1272 +#: apt-pkg/acquire-item.cc:1290 #, c-format msgid "" "I wasn't able to locate file for the %s package. This might mean you need to " "manually fix this package." msgstr "" -#: apt-pkg/acquire-item.cc:1313 +#: apt-pkg/acquire-item.cc:1331 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." msgstr "" -#: apt-pkg/acquire-item.cc:1400 +#: apt-pkg/acquire-item.cc:1418 msgid "Size mismatch" msgstr "" ++#: apt-pkg/indexrecords.cc:40 ++#, c-format ++msgid "Unable to parse Release file %s" ++msgstr "" ++ ++#: apt-pkg/indexrecords.cc:47 ++#, c-format ++msgid "No sections in Release file %s" ++msgstr "" ++ ++#: apt-pkg/indexrecords.cc:81 ++#, c-format ++msgid "No Hash entry in Release file %s" ++msgstr "" ++ #: apt-pkg/vendorlist.cc:66 #, c-format msgid "Vendor block %s contains no fingerprint" @@@ -2582,6 -2526,6 +2598,12 @@@ msgid " "zu signatures\n" msgstr "" ++#: apt-pkg/cdrom.cc:689 ++msgid "" ++"Unable to locate any package files, perhaps this is not a Debian Disc or the " ++"wrong architecture?" ++msgstr "" ++ #: apt-pkg/cdrom.cc:715 #, c-format msgid "Found label '%s'\n" @@@ -2610,103 -2554,100 +2632,119 @@@ msgstr " msgid "Source list entries for this disc are:\n" msgstr "" --#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:823 ++#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:833 #, c-format msgid "Wrote %i records.\n" msgstr "" --#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:825 ++#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:835 #, c-format msgid "Wrote %i records with %i missing files.\n" msgstr "" --#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:828 ++#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:838 #, c-format msgid "Wrote %i records with %i mismatched files\n" msgstr "" --#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:831 ++#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:841 #, c-format msgid "Wrote %i records with %i missing files and %i mismatched files\n" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:486 +#: apt-pkg/deb/dpkgpm.cc:49 #, c-format -msgid "Directory '%s' missing" +msgid "Installing %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:612 -#: apt-pkg/deb/dpkgpm.cc:569 ++#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:642 #, c-format -msgid "Preparing %s" +msgid "Configuring %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:627 -#: apt-pkg/deb/dpkgpm.cc:570 ++#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:649 #, c-format -msgid "Unpacking %s" +msgid "Removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:575 +#: apt-pkg/deb/dpkgpm.cc:52 #, c-format -msgid "Preparing to configure %s" +msgid "Running post-installation trigger %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:521 -#: apt-pkg/deb/dpkgpm.cc:576 apt-pkg/deb/dpkgpm.cc:605 ++#: apt-pkg/deb/dpkgpm.cc:546 #, c-format -msgid "Configuring %s" +msgid "Directory '%s' missing" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:605 -#: apt-pkg/deb/dpkgpm.cc:578 apt-pkg/deb/dpkgpm.cc:579 ++#: apt-pkg/deb/dpkgpm.cc:635 #, c-format -msgid "Processing triggers for %s" +msgid "Preparing %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:606 -#: apt-pkg/deb/dpkgpm.cc:581 ++#: apt-pkg/deb/dpkgpm.cc:636 #, c-format -msgid "Installed %s" +msgid "Unpacking %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:611 -#: apt-pkg/deb/dpkgpm.cc:586 apt-pkg/deb/dpkgpm.cc:588 -#: apt-pkg/deb/dpkgpm.cc:589 ++#: apt-pkg/deb/dpkgpm.cc:641 #, c-format -msgid "Preparing for removal of %s" +msgid "Preparing to configure %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:614 apt-pkg/deb/dpkgpm.cc:615 - #, c-format - msgid "Processing triggers for %s" - msgstr "" - - #: apt-pkg/deb/dpkgpm.cc:617 -#: apt-pkg/deb/dpkgpm.cc:591 apt-pkg/deb/dpkgpm.cc:606 ++#: apt-pkg/deb/dpkgpm.cc:643 #, c-format -msgid "Removing %s" +msgid "Installed %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:622 apt-pkg/deb/dpkgpm.cc:624 - #: apt-pkg/deb/dpkgpm.cc:625 -#: apt-pkg/deb/dpkgpm.cc:592 ++#: apt-pkg/deb/dpkgpm.cc:648 +#, c-format +msgid "Preparing for removal of %s" +msgstr "" + - #: apt-pkg/deb/dpkgpm.cc:628 ++#: apt-pkg/deb/dpkgpm.cc:650 #, c-format msgid "Removed %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:633 -#: apt-pkg/deb/dpkgpm.cc:597 ++#: apt-pkg/deb/dpkgpm.cc:655 #, c-format msgid "Preparing to completely remove %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:634 -#: apt-pkg/deb/dpkgpm.cc:598 ++#: apt-pkg/deb/dpkgpm.cc:656 #, c-format msgid "Completely removed %s" msgstr "" - #: apt-pkg/deb/dpkgpm.cc:789 -#. populate the "processing" map -#: apt-pkg/deb/dpkgpm.cc:604 ++#: apt-pkg/deb/dpkgpm.cc:820 +msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" +msgstr "" + ++#: apt-pkg/deb/dpkgpm.cc:848 ++msgid "Running dpkg" ++msgstr "" ++ ++#: apt-pkg/deb/debsystem.cc:70 + #, c-format -msgid "Installing %s" ++msgid "" ++"Unable to lock the administration directory (%s), is another process using " ++"it?" + msgstr "" + -#: apt-pkg/deb/dpkgpm.cc:607 ++#: apt-pkg/deb/debsystem.cc:73 + #, c-format -msgid "Triggering %s" ++msgid "Unable to lock the administration directory (%s), are you root?" + msgstr "" + -#: apt-pkg/deb/dpkgpm.cc:756 -msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" ++#: apt-pkg/deb/debsystem.cc:82 ++msgid "" ++"dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct " ++"the problem. " ++msgstr "" ++ +#: apt-pkg/deb/debsystem.cc:100 +msgid "Not locked" msgstr "" #: methods/rred.cc:219