#include <iostream>
#include <sstream>
-
+ #include <stdio.h>
+
#include <dirent.h>
#include <sys/time.h>
#include <errno.h>
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;
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;
}
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++)
{
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];
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
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;
}
}
{
// 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]);
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 /*{{{*/
*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
}
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
// 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());
+ }
+ }
}
}
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
*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++)
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<pkgCache::Version *> VList = Start.AllTargets();
for (pkgCache::Version **V = VList; *V != 0; V++)
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);
}
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)
// 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;};
// 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
// 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;};
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;};
// 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;};
// 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;};
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
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
}
/*}}}*/
+ // 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
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);
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));}; \
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)
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] != '=')
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)
#include <apt-pkg/configuration.h>
#include <apt-pkg/error.h>
#include <apt-pkg/fileutl.h>
-#include <apti18n.h>
-
+#include <apti18n.h>
+
#include <sys/types.h>
#include <unistd.h>
#include <dirent.h>
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
{
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++;
/*}}}*/
// Include Files /*{{{*/
#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/policy.h>
#include <apt-pkg/indexfile.h>
#include <apt-pkg/version.h>
#include <apt-pkg/error.h>
/* 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;
{
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);
}
{
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);
}
{
const char *Types[] = {"",_("Depends"),_("PreDepends"),_("Suggests"),
_("Recommends"),_("Conflicts"),_("Replaces"),
- _("Obsoletes"),_("Breaks")};
+ _("Obsoletes"),_("Breaks"), _("Enhances")};
if (Type < sizeof(Types)/sizeof(*Types))
return Types[Type];
return "";
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
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)
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
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;
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
{
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)
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
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
#!/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()
{
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
- debug_echo "check_stamp: missing time stamp file: $stamp."
+ update_stamp $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
update_stamp()
{
stamp="$1"
-
touch $stamp
}
-
-
# we check here if autoclean was enough sizewise
check_size_constraints()
{
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
- debug_echo "exit: system on main power."
+ # 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: power status ($POWER) undetermined."
- exit 0
++ debug_echo "exit: system NOT on main power."
+ exit 0
+ elif [ $POWER -ne 0 ]; then
-if which apt-get >/dev/null && ! eval apt-get check $XAPTOPT $XSTDERR ; then
++ 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 [ $BackupLevel -le 1 ]; then BackupLevel=2 ; fi
++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)
- echo "practically empty Dir::Cache::Backup, exiting" 1>&2
- exit 0
++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 "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 :
+ #
+
-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 ]
- * apt-pkg/deb/dpkgpm.cc:
- - provide DPkg::Chroot-Directory config option (useful for testing)
-
- -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 28 May 2009 17:51:42 +0200
-
- [ 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)
- * doc/makefile:
- - add examples/apt-https-method-example.conf
+ * 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/deb/dpkgpm.cc:
- - fix potential hang when in a backgroud process group
+ * apt-pkg/cacheiterators.h:
+ - add missing checks for Owner == 0 in end()
- * methods/gpgv.cc:
+ * apt-pkg/indexrecords.cc:
+ - fix some i18n issues
+ * apt-pkg/contrib/strutl.h:
+ - add new strprintf() function to make i18n strings easier
- * 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)
+ - fix compiler warning
- * 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)
+ * apt-pkg/deb/debsystem.cc:
+ - make strings i18n able
- * Clarify the --help for 'purge' (LP: #243948)
+ * 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)
+
+
++
+ -- Julian Andres Klode <jak@debian.org> 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 <michael.vogt@ubuntu.com> Fri, 12 Sep 2008 11:34:24 +0200
+ -- Michael Vogt <mvo@debian.org> 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 <jackyf.devel@gmail.com> 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 <mvo@debian.org> Tue, 20 Jan 2009 09:35:05 +0100
apt (0.7.20) unstable; urgency=low
(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 <jackyf.devel@gmail.com> 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 <mvo@debian.org> Tue, 02 Dec 2008 20:30:14 +0100
+ -- Michael Vogt <mvo@debian.org> Mon, 05 Jan 2009 08:59:20 +0100
apt (0.7.19) unstable; urgency=low
is a request to install only one package and it is not installable.
(Closes: #419521)
-
[ Michael Vogt ]
- fix SIGHUP handling (closes: #463030)
<arg choice='plain'>
<replaceable>target_release_number_expression</replaceable>
</arg>
+ <arg choice='plain'>
+ <replaceable>target_release_codename</replaceable>
+ </arg>
</group>
</arg>
<arg choice='plain'>
/<replaceable>target_release_name</replaceable>
</arg>
+ <arg choice='plain'>
+ /<replaceable>target_release_codename</replaceable>
+ </arg>
</group>
</arg>
</arg>
actually change the system.
Configuration Item: <literal>APT::Get::Simulate</literal>.</para>
+ <para>Simulation run as user will deactivate locking (<literal>Debug::NoLocking</literal>)
+ 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 <literal>apt-get</literal>).</para>
+
<para>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
Configuration Item: <literal>APT::Get::Compile</literal>.</para></listitem>
</varlistentry>
+ <varlistentry><term><option>--install-recommends</option></term>
+ <listitem><para>Also install recommended packages.</para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><option>--no-install-recommends</option></term>
+ <listitem><para>Do not install recommended packages.</para></listitem>
+ </varlistentry>
+
<varlistentry><term><option>--ignore-hold</option></term>
<listitem><para>Ignore package Holds; This causes <command>apt-get</command> to ignore a hold
placed on a package. This may be useful in conjunction with
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
- <option>-t '2.1*'</option> or <option>-t unstable</option>.
+ <option>-t '2.1*'</option>, <option>-t unstable</option>
+ or <option>-t sid</option>.
Configuration Item: <literal>APT::Default-Release</literal>;
see also the &apt-preferences; manual page.</para></listitem>
</varlistentry>
<title>CURRENT AUTHORS</title>
<para>
&apt-author.team;
- &apt-qapage;
</para>
+ &apt-qapage;
</refsect1>
&manbugs;
</refentry>
// 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
// 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
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";
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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"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"
" 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"
" -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 ""
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"
" ?] "
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"
"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"
"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"
" 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"
" 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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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"
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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"
"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"
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