summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/algorithms.cc202
-rw-r--r--apt-pkg/algorithms.h4
-rw-r--r--apt-pkg/deb/dpkgpm.h2
-rw-r--r--apt-pkg/depcache.cc79
-rw-r--r--apt-pkg/depcache.h9
-rw-r--r--apt-pkg/makefile2
-rw-r--r--apt-pkg/packagemanager.cc13
-rw-r--r--apt-pkg/packagemanager.h37
-rw-r--r--apt-pkg/pkgcachegen.cc2
-rw-r--r--cmdline/apt-get.cc55
-rw-r--r--configure.in5
-rw-r--r--debian/changelog25
-rw-r--r--doc/examples/configure-index4
-rw-r--r--methods/makefile2
-rw-r--r--po/apt-all.pot323
15 files changed, 564 insertions, 200 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 479927d65..c679e76f6 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -20,7 +20,10 @@
#include <apt-pkg/algorithms.h>
#include <apt-pkg/error.h>
#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/version.h>
#include <apt-pkg/sptr.h>
+
#include <apti18n.h>
@@ -1061,6 +1064,20 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
return _error->Error(_("Unable to correct problems, you have held broken packages."));
}
+ // set the auto-flags (mvo: I'm not sure if we _really_ need this, but
+ // I didn't managed
+ pkgCache::PkgIterator I = Cache.PkgBegin();
+ for (;I.end() != true; I++) {
+ if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) {
+ if(_config->FindI("Debug::pkgAutoRemove",false)) {
+ std::clog << "Resolve installed new pkg: " << I.Name()
+ << " (now marking it as auto)" << std::endl;
+ }
+ Cache[I].Flags |= pkgCache::Flag::Auto;
+ }
+ }
+
+
return true;
}
/*}}}*/
@@ -1232,3 +1249,188 @@ void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List)
qsort(List,Count,sizeof(*List),PrioComp);
}
/*}}}*/
+
+
+// mark a single package in Mark-and-Sweep
+void pkgMarkPackage(pkgDepCache &Cache,
+ const pkgCache::PkgIterator &pkg,
+ const pkgCache::VerIterator &ver,
+ bool follow_recommends,
+ bool follow_suggests)
+{
+ pkgDepCache::StateCache &state=Cache[pkg];
+ pkgCache::VerIterator candver=state.CandidateVerIter(Cache);
+ pkgCache::VerIterator instver=state.InstVerIter(Cache);
+
+#if 0
+ // If a package was garbage-collected but is now being marked, we
+ // should re-select it
+ // For cases when a pkg is set to upgrade and this trigger the
+ // removal of a no-longer used dependency. if the pkg is set to
+ // keep again later it will result in broken deps
+ if(state.Delete() && state.RemoveReason=pkgDepCache::Unused)
+ {
+ if(ver==candver)
+ mark_install(pkg, false, false, NULL);
+ else if(ver==pkg.CurrentVer())
+ MarkKeep(pkg);
+
+ instver=state.InstVerIter(*this);
+ }
+#endif
+
+ // Ignore versions other than the InstVer, and ignore packages
+ // that are already going to be removed or just left uninstalled.
+ if(!(ver==instver && !instver.end()))
+ return;
+
+ // if we are marked already we are done
+ if(state.Marked)
+ return;
+
+ //std::cout << "Setting Marked for: " << pkg.Name() << std::endl;
+ state.Marked=true;
+
+ if(!ver.end())
+ {
+ for(pkgCache::DepIterator d=ver.DependsList(); !d.end(); ++d)
+ {
+ if(d->Type==pkgCache::Dep::Depends ||
+ d->Type==pkgCache::Dep::PreDepends ||
+ (follow_recommends &&
+ d->Type==pkgCache::Dep::Recommends) ||
+ (follow_suggests &&
+ d->Type==pkgCache::Dep::Suggests))
+ {
+ // Try all versions of this package.
+ for(pkgCache::VerIterator V=d.TargetPkg().VersionList();
+ !V.end(); ++V)
+ {
+ if(_system->VS->CheckDep(V.VerStr(),d->CompareOp, d.TargetVer()))
+ {
+ pkgMarkPackage(Cache, V.ParentPkg(), V,
+ follow_recommends, follow_suggests);
+ }
+ }
+ // Now try virtual packages
+ for(pkgCache::PrvIterator prv=d.TargetPkg().ProvidesList();
+ !prv.end(); ++prv)
+ {
+ if(_system->VS->CheckDep(prv.ProvideVersion(), d->CompareOp,
+ d.TargetVer()))
+ {
+ pkgMarkPackage(Cache, prv.OwnerPkg(), prv.OwnerVer(),
+ follow_recommends, follow_suggests);
+ }
+ }
+ }
+ }
+ }
+}
+
+
+bool pkgMarkUsed(pkgDepCache &Cache)
+{
+ bool follow_recommends;
+ bool follow_suggests;
+
+ // init the states
+ for(pkgCache::PkgIterator p=Cache.PkgBegin(); !p.end(); ++p)
+ {
+ Cache[p].Marked=false;
+ Cache[p].Garbage=false;
+ }
+
+ // init vars
+ follow_recommends=_config->FindB("APT::AutoRemove::RecommendsImportant",false);
+ follow_suggests=_config->FindB("APT::AutoRemove::SuggestsImportend", false);
+
+
+ // do the mark part
+ for(pkgCache::PkgIterator p=Cache.PkgBegin(); !p.end(); ++p)
+ {
+ if(!(Cache[p].Flags & pkgCache::Flag::Auto) ||
+ (p->Flags & pkgCache::Flag::Essential))
+ {
+ if(Cache[p].Keep() && !p.CurrentVer().end())
+ pkgMarkPackage(Cache, p, p.CurrentVer(),
+ follow_recommends, follow_suggests);
+ else if(Cache[p].Install())
+ pkgMarkPackage(Cache, p, Cache[p].InstVerIter(Cache),
+ follow_recommends, follow_suggests);
+ }
+ }
+
+
+ // do the sweep
+ for(pkgCache::PkgIterator p=Cache.PkgBegin(); !p.end(); ++p)
+ {
+ pkgDepCache::StateCache &state=Cache[p];
+
+ if(!state.Marked)
+ {
+ // mark installed but not yet marked stuff as garbage
+ if(p->CurrentVer != 0) {
+ state.Garbage=true;
+ std::cout << "Garbage: " << p.Name() << std::endl;
+ }
+
+#if 0 // mvo: the below bits still needs to be ported
+
+ // Be sure not to re-delete already deleted packages.
+ if(delete_unused && (!p.CurrentVer().end() || state.Install()) &&
+ !state.Delete())
+ {
+ bool do_delete=true;
+
+ // If the package is being upgraded, check if we're
+ // losing a versioned dep. If the dependency matches
+ // the previous version and not the new version, keep
+ // the package back instead of removing it.
+ if(!p.CurrentVer().end() && state.Install())
+ {
+ const char *vs=p.CurrentVer().VerStr();
+
+ // Check direct revdeps only. THIS ASSUMES NO
+ // VERSIONED PROVIDES, but Debian probably won't
+ // have them for ages if ever.
+ for(pkgCache::DepIterator revdep=p.RevDependsList();
+ !revdep.end(); ++revdep)
+ {
+ pkgCache::PkgIterator depender=revdep.ParentPkg();
+ // Find which version of the depending package
+ // will be installed.
+ pkgCache::VerIterator instver=(*this)[depender].InstVerIter(*this);
+
+ // Only pay attention to strong positive
+ // dependencies whose parents will be installed.
+ if(revdep.ParentVer()==instver &&
+ (revdep->Type==pkgCache::Dep::Depends ||
+ revdep->Type==pkgCache::Dep::PreDepends ||
+ (revdep->Type==pkgCache::Dep::Recommends &&
+ follow_recommends)))
+ {
+ // If the previous version matched, cancel the
+ // deletion. (note that I assume that the new
+ // version does NOT match; otherwise it would
+ // not be unused!)
+ if(_system->VS->CheckDep(vs,
+ revdep->CompareOp,
+ revdep.TargetVer()))
+ {
+ mark_keep(p, false, false, undo);
+ do_delete=false;
+ break;
+ }
+ }
+ }
+ }
+
+ if(do_delete)
+ mark_delete(p, false, true, undo);
+ }
+#endif
+ }
+ }
+ return true;
+}
diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h
index 174a7f58d..210127ab9 100644
--- a/apt-pkg/algorithms.h
+++ b/apt-pkg/algorithms.h
@@ -132,5 +132,9 @@ bool pkgAllUpgrade(pkgDepCache &Cache);
bool pkgMinimizeUpgrade(pkgDepCache &Cache);
void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List);
+
+// mark all reachable packages, everything that is not reach can
+// be removed
+bool pkgMarkUsed(pkgDepCache &Cache);
#endif
diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h
index b59b9dc93..8bfdff5eb 100644
--- a/apt-pkg/deb/dpkgpm.h
+++ b/apt-pkg/deb/dpkgpm.h
@@ -40,7 +40,7 @@ class pkgDPkgPM : public pkgPackageManager
bool RunScripts(const char *Cnf);
bool RunScriptsWithPkgs(const char *Cnf);
bool SendV2Pkgs(FILE *F);
-
+
// The Actuall installation implementation
virtual bool Install(PkgIterator Pkg,string File);
virtual bool Configure(PkgIterator Pkg);
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index dd1c794c9..05512e179 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -16,7 +16,13 @@
#include <apt-pkg/error.h>
#include <apt-pkg/sptr.h>
#include <apt-pkg/algorithms.h>
-
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/tagfile.h>
+
+#include <iostream>
+#include <sstream>
#include <apti18n.h>
/*}}}*/
@@ -72,7 +78,7 @@ bool pkgDepCache::Init(OpProgress *Prog)
// Find the proper cache slot
StateCache &State = PkgState[I->ID];
State.iFlags = 0;
-
+
// Figure out the install version
State.CandidateVer = GetCandidateVer(I);
State.InstallVer = I.CurrentVer();
@@ -99,6 +105,70 @@ bool pkgDepCache::Init(OpProgress *Prog)
}
/*}}}*/
+bool pkgDepCache::readStateFile(OpProgress *Prog)
+{
+ FileFd state_file;
+ string state = _config->FindDir("Dir::State") + "pkgstates";
+ if(FileExists(state)) {
+ state_file.Open(state, FileFd::ReadOnly);
+ int file_size = state_file.Size();
+ Prog->OverallProgress(0, file_size, 1,
+ _("Reading state information"));
+
+ pkgTagFile tagfile(&state_file);
+ pkgTagSection section;
+ int amt=0;
+ while(tagfile.Step(section)) {
+ string pkgname = section.FindS("Package");
+ pkgCache::PkgIterator pkg=Cache->FindPkg(pkgname);
+ // Silently ignore unknown packages and packages with no actual
+ // version.
+ if(!pkg.end() && !pkg.VersionList().end()) {
+ short reason = section.FindI("Install-Reason", 0);
+ if(reason > 0)
+ PkgState[pkg->ID].Flags |= pkgCache::Flag::Auto;
+ if(_config->FindB("Debug::pkgAutoRemove",false))
+ std::cout << "Install-Reason for: " << pkgname
+ << " is " << reason << std::endl;
+ amt+=section.size();
+ Prog->OverallProgress(amt, file_size, 1,
+ _("Reading state information"));
+ }
+ Prog->OverallProgress(file_size, file_size, 1,
+ _("Reading state information"));
+ }
+ }
+
+ return true;
+}
+
+bool pkgDepCache::writeStateFile(OpProgress *prog)
+{
+ FileFd StateFile;
+ string state = _config->FindDir("Dir::State") + "pkgstates";
+
+ if(_config->FindB("Debug::pkgAutoRemove",false))
+ std::clog << "pkgDepCache::writeStateFile()" << std::endl;
+
+ if(!StateFile.Open(state, FileFd::WriteEmpty))
+ return _error->Error(_("Failed to write StateFile %s"),
+ state.c_str());
+
+ std::ostringstream ostr;
+ for(pkgCache::PkgIterator pkg=Cache->PkgBegin(); !pkg.end();pkg++) {
+
+ if(PkgState[pkg->ID].Flags & pkgCache::Flag::Auto) {
+ if(_config->FindB("Debug::pkgAutoRemove",false))
+ std::clog << "AutoInstal: " << pkg.Name() << std::endl;
+ ostr.str(string(""));
+ ostr << "Package: " << pkg.Name()
+ << "\nInstall-Reason: 1\n\n";
+ StateFile.Write(ostr.str().c_str(), ostr.str().size());
+ }
+ }
+ return true;
+}
+
// DepCache::CheckDep - Checks a single dependency /*{{{*/
// ---------------------------------------------------------------------
/* This first checks the dependency against the main target package and
@@ -450,6 +520,8 @@ void pkgDepCache::Update(OpProgress *Prog)
AddStates(I);
}
+ readStateFile(Prog);
+
if (Prog != 0)
Prog->Progress(Done);
}
@@ -585,7 +657,8 @@ void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge)
else
P.Mode = ModeDelete;
P.InstallVer = 0;
- P.Flags &= Flag::Auto;
+ // This was not inverted before, but I think it should be
+ P.Flags &= ~Flag::Auto;
AddStates(Pkg);
Update(Pkg);
diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h
index 6d51920e9..619daf8f6 100644
--- a/apt-pkg/depcache.h
+++ b/apt-pkg/depcache.h
@@ -63,6 +63,7 @@ class pkgDepCache : protected pkgCache::Namespace
enum VersionTypes {NowVersion, InstallVersion, CandidateVersion};
enum ModeList {ModeDelete = 0, ModeKeep = 1, ModeInstall = 2};
+
struct StateCache
{
// Epoch stripped text versions of the two version fields
@@ -79,6 +80,10 @@ class pkgDepCache : protected pkgCache::Namespace
unsigned short Flags;
unsigned short iFlags; // Internal flags
+ // mark and sweep flags
+ bool Marked;
+ bool Garbage;
+
// Various tree indicators
signed char Status; // -1,0,1,2
unsigned char Mode; // ModeList
@@ -192,6 +197,10 @@ class pkgDepCache : protected pkgCache::Namespace
// This is for debuging
void Update(OpProgress *Prog = 0);
+
+ // read persistent states
+ bool readStateFile(OpProgress *prog);
+ bool writeStateFile(OpProgress *prog);
// Size queries
inline double UsrSize() {return iUsrSize;};
diff --git a/apt-pkg/makefile b/apt-pkg/makefile
index 5f48f0f52..8de7d945e 100644
--- a/apt-pkg/makefile
+++ b/apt-pkg/makefile
@@ -13,7 +13,7 @@ include ../buildlib/defaults.mak
# methods/makefile - FIXME
LIBRARY=apt-pkg
LIBEXT=$(GLIBC_VER)$(LIBSTDCPP_VER)
-MAJOR=3.9
+MAJOR=3.10
MINOR=0
SLIBS=$(PTHREADLIB) $(INTLLIBS)
APT_DOMAIN:=libapt-pkg$(MAJOR)
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
index a08ccd602..71a0dd034 100644
--- a/apt-pkg/packagemanager.cc
+++ b/apt-pkg/packagemanager.cc
@@ -627,16 +627,3 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
return Completed;
}
/*}}}*/
-// PM::DoInstall - Does the installation /*{{{*/
-// ---------------------------------------------------------------------
-/* This uses the filenames in FileNames and the information in the
- DepCache to perform the installation of packages.*/
-pkgPackageManager::OrderResult pkgPackageManager::DoInstall()
-{
- OrderResult Res = OrderInstall();
- if (Res != Failed)
- if (Go() == false)
- return Failed;
- return Res;
-}
- /*}}}*/
diff --git a/apt-pkg/packagemanager.h b/apt-pkg/packagemanager.h
index 43f2c4ace..f95b2ab56 100644
--- a/apt-pkg/packagemanager.h
+++ b/apt-pkg/packagemanager.h
@@ -28,7 +28,9 @@
#endif
#include <string>
+#include <iostream>
#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/depcache.h>
using std::string;
@@ -70,13 +72,44 @@ class pkgPackageManager : protected pkgCache::Namespace
virtual bool Remove(PkgIterator /*Pkg*/,bool /*Purge*/=false) {return false;};
virtual bool Go(int statusFd=-1) {return true;};
virtual void Reset() {};
-
+
+ // the result of the operation
+ OrderResult Res;
+
public:
// Main action members
bool GetArchives(pkgAcquire *Owner,pkgSourceList *Sources,
pkgRecords *Recs);
- OrderResult DoInstall();
+
+ // Do the installation
+ OrderResult DoInstall() {
+ if(DoInstallPreFork() == Failed)
+ return Failed;
+
+ return DoInstallPostFork();
+ }
+
+ // stuff that needs to be done before the fork() of a library that
+ // uses apt
+ OrderResult DoInstallPreFork() {
+ Res = OrderInstall();
+ return Res;
+ };
+
+ // stuff that needs to be done after the fork
+ OrderResult DoInstallPostFork(int statusFd=-1) {
+ bool goResult = Go(statusFd);
+ if(goResult == false)
+ return Failed;
+
+ // if all was fine update the state file
+ if(Res == Completed) {
+ Cache.writeStateFile(NULL);
+ }
+ return Res;
+ };
+
bool FixMissing();
pkgPackageManager(pkgDepCache *Cache);
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc
index 2340f97fd..04904057f 100644
--- a/apt-pkg/pkgcachegen.cc
+++ b/apt-pkg/pkgcachegen.cc
@@ -26,6 +26,8 @@
#include <apt-pkg/sptr.h>
#include <apt-pkg/pkgsystem.h>
+#include <apt-pkg/tagfile.h>
+
#include <apti18n.h>
#include <vector>
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index 316bb7af9..9d97f8756 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -58,6 +58,7 @@
#include <errno.h>
#include <regex.h>
#include <sys/wait.h>
+#include <sstream>
/*}}}*/
using namespace std;
@@ -992,7 +993,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,
cerr << _("Unable to correct missing packages.") << endl;
return _error->Error(_("Aborting install."));
}
-
+
_system->UnLock();
pkgPackageManager::OrderResult Res = PM->DoInstall();
if (Res == pkgPackageManager::Failed || _error->PendingError() == true)
@@ -1355,6 +1356,47 @@ bool DoUpdate(CommandLine &CmdL)
return true;
}
/*}}}*/
+// DoAutomaticRemove - Remove all automatic unused packages /*{{{*/
+// ---------------------------------------------------------------------
+/* Remove unused automatic packages */
+bool DoAutomaticRemove(CacheFile &Cache)
+{
+ if(_config->FindI("Debug::pkgAutoRemove",false))
+ std::cout << "DoAutomaticRemove()" << std::endl;
+
+ if (_config->FindB("APT::Get::Remove",true) == false)
+ return _error->Error(_("We are not supposed to delete stuff, can't "
+ "start AutoRemover"));
+
+ // do the actual work
+ pkgMarkUsed(Cache);
+
+ // look over the cache to see what can be removed
+ for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); ! Pkg.end(); ++Pkg)
+ {
+ if (Cache[Pkg].Garbage &&
+ (Pkg->CurrentVer != 0 && Cache[Pkg].Install() == false &&
+ Cache[Pkg].Delete() == false))
+ {
+ fprintf(stdout,"We could delete %s\n", Pkg.Name());
+ Cache->MarkDelete(Pkg,_config->FindB("APT::Get::Purge",false));
+ }
+ }
+
+ // Now see if we destroyed anything
+ if (Cache->BrokenCount() != 0)
+ {
+ c1out << _("Hmm, seems like the AutoRemover destroyed something which really\n"
+ "shouldn't happen. Please file a bug report against apt.") << endl;
+ c1out << endl;
+ c1out << _("The following information may help to resolve the situation:") << endl;
+ c1out << endl;
+ ShowBroken(c1out,Cache,false);
+
+ return _error->Error(_("Internal Error, AutoRemover broke stuff"));
+ }
+ return true;
+}
// DoUpgrade - Upgrade all packages /*{{{*/
// ---------------------------------------------------------------------
/* Upgrade all packages without installing new packages or erasing old
@@ -1555,6 +1597,11 @@ bool DoInstall(CommandLine &CmdL)
return _error->Error(_("Broken packages"));
}
+ if (_config->FindB("APT::Get::AutomaticRemove")) {
+ if (!DoAutomaticRemove(Cache))
+ return false;
+ }
+
/* Print out a list of packages that are going to be installed extra
to what the user asked */
if (Cache->InstCount() != ExpectedInst)
@@ -1574,8 +1621,8 @@ bool DoInstall(CommandLine &CmdL)
if (*J == 0) {
List += string(I.Name()) + " ";
- VersionsList += string(Cache[I].CandVersion) + "\n";
- }
+ VersionsList += string(Cache[I].CandVersion) + "\n";
+ }
}
ShowList(c1out,_("The following extra packages will be installed:"),List,VersionsList);
@@ -2419,6 +2466,7 @@ void GetInitialize()
_config->Set("APT::Get::Fix-Broken",false);
_config->Set("APT::Get::Force-Yes",false);
_config->Set("APT::Get::List-Cleanup",true);
+ _config->Set("APT::Get::AutomaticRemove",false);
}
/*}}}*/
// SigWinch - Window size change signal handler /*{{{*/
@@ -2474,6 +2522,7 @@ int main(int argc,const char *argv[])
{0,"remove","APT::Get::Remove",0},
{0,"only-source","APT::Get::Only-Source",0},
{0,"arch-only","APT::Get::Arch-Only",0},
+ {0,"automatic-remove","APT::Get::AutomaticRemove",0},
{0,"allow-unauthenticated","APT::Get::AllowUnauthenticated",0},
{'c',"config-file",0,CommandLine::ConfigFile},
{'o',"option",0,CommandLine::ArbItem},
diff --git a/configure.in b/configure.in
index bbf9ef1cd..f78ce1d1e 100644
--- a/configure.in
+++ b/configure.in
@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.39ubuntu1")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.38ubuntu1mvo1")
PACKAGE="apt"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_SUBST(PACKAGE)
@@ -181,9 +181,6 @@ AC_PATH_PROG(DOCBOOK2MAN,docbook2man)
dnl Check for the XML tools needed to build man pages
AC_PATH_PROG(XMLTO,xmlto)
-dnl Check for the XML tools needed to build man pages
-AC_PATH_PROG(XMLTO,xmlto)
-
dnl Check for YODL
dnl AC_CHECK_PROG(YODL_MAN,yodl2man,"yes","")
diff --git a/debian/changelog b/debian/changelog
index cb092b803..86dca75bc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-apt (0.6.39ubuntu1) breezy; urgency=low
+apt (0.6.39ubuntu1mvo1) unstable; urgency=low
* Michael Vogt
- Change debian/bugscript to use #!/bin/bash (Closes: #313402)
@@ -8,8 +8,9 @@ apt (0.6.39ubuntu1) breezy; urgency=low
the patch, thanks to Colin Watson for testing it.
- better report network timeouts from the methods to the acuire code,
only timeout once per sources.list line
+ - support for automatic removal of unused dependencies added
- -- Matt Zimmerman <mdz@ubuntu.com> Tue, 28 Jun 2005 11:52:24 -0700
+ --
apt (0.6.39) unstable; urgency=low
@@ -44,26 +45,7 @@ apt (0.6.38) unstable; urgency=low
(closes ubuntu #9935)
-- Matt Zimmerman <mdz@debian.org> Sat, 25 Jun 2005 09:51:00 -0700
-=======
- -- Matt Zimmerman <mdz@ubuntu.com> Tue, 28 Jun 2005 11:51:09 -0700
->>>>>>> MERGE-SOURCE
-apt (0.6.38) unstable; urgency=low
-
- * Merge michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-6, a workaround
- for the French man pages' failure to build
- * Branch Debian and Ubuntu
- - apt.postinst, apt-key: use the appropriate keyring
- - debian/rules: install all keyrings
- * Add the current Debian archive signing key (4F368D5D) to
- debian-archive.gpg
- * make pinning on the "component" work again (using the section of the
- archive, we don't use per-section Release files anymore with apt-0.6)
- (closes ubuntu #9935)
-
- -- Matt Zimmerman <mdz@debian.org> Sat, 25 Jun 2005 09:51:00 -0700
-
->>>>>>> MERGE-SOURCE
apt (0.6.37) breezy; urgency=low
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-81
@@ -79,6 +61,7 @@ apt (0.6.37) breezy; urgency=low
* Add Welsh translation from Dafydd Harries
(daf@muse.19inch.net--2005/apt--main--0--patch-1)
* Change debian/bugscript to use #!/bin/bash (Closes: #313402)
+ * Fix a incorrect example in the man-page (closes: #282918)
-- Matt Zimmerman <mdz@ubuntu.com> Tue, 24 May 2005 14:38:25 -0700
diff --git a/doc/examples/configure-index b/doc/examples/configure-index
index a09ea0c37..31bc13430 100644
--- a/doc/examples/configure-index
+++ b/doc/examples/configure-index
@@ -29,6 +29,7 @@ APT
Get
{
Arch-Only "false";
+ AutomaticRemove "false";
Download-Only "false";
Simulate "false";
Assume-Yes "false";
@@ -235,7 +236,8 @@ Debug
pkgAcquire::Worker "false";
pkgDPkgPM "false";
pkgOrderList "false";
-
+ pkgAutoRemove "false"; // show information about automatic removes
+
pkgInitialize "false"; // This one will dump the configuration space
NoLocking "false";
Acquire::Ftp "false"; // Show ftp command traffic
diff --git a/methods/makefile b/methods/makefile
index 089300570..06fd2a6fc 100644
--- a/methods/makefile
+++ b/methods/makefile
@@ -7,7 +7,7 @@ include ../buildlib/defaults.mak
BIN := $(BIN)/methods
# FIXME..
-LIB_APT_PKG_MAJOR = 3.5
+LIB_APT_PKG_MAJOR = 3.10
APT_DOMAIN := libapt-pkg$(LIB_APT_PKG_MAJOR)
# The file method
diff --git a/po/apt-all.pot b/po/apt-all.pot
index 3936f3f16..d043210fe 100644
--- a/po/apt-all.pot
+++ b/po/apt-all.pot
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-05-23 11:34+0200\n"
+"POT-Creation-Date: 2005-06-24 21:41+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"
@@ -148,7 +148,7 @@ msgstr ""
#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:545
-#: cmdline/apt-get.cc:2322 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2369 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr ""
@@ -231,7 +231,7 @@ msgid ""
" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
msgstr ""
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:712
#, c-format
msgid "Unable to write to %s"
msgstr ""
@@ -519,275 +519,275 @@ msgstr ""
msgid "Failed to rename %s to %s"
msgstr ""
-#: cmdline/apt-get.cc:118
+#: cmdline/apt-get.cc:119
msgid "Y"
msgstr ""
-#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1484
+#: cmdline/apt-get.cc:141 cmdline/apt-get.cc:1526
#, c-format
msgid "Regex compilation error - %s"
msgstr ""
-#: cmdline/apt-get.cc:235
+#: cmdline/apt-get.cc:236
msgid "The following packages have unmet dependencies:"
msgstr ""
-#: cmdline/apt-get.cc:325
+#: cmdline/apt-get.cc:326
#, c-format
msgid "but %s is installed"
msgstr ""
-#: cmdline/apt-get.cc:327
+#: cmdline/apt-get.cc:328
#, c-format
msgid "but %s is to be installed"
msgstr ""
-#: cmdline/apt-get.cc:334
+#: cmdline/apt-get.cc:335
msgid "but it is not installable"
msgstr ""
-#: cmdline/apt-get.cc:336
+#: cmdline/apt-get.cc:337
msgid "but it is a virtual package"
msgstr ""
-#: cmdline/apt-get.cc:339
+#: cmdline/apt-get.cc:340
msgid "but it is not installed"
msgstr ""
-#: cmdline/apt-get.cc:339
+#: cmdline/apt-get.cc:340
msgid "but it is not going to be installed"
msgstr ""
-#: cmdline/apt-get.cc:344
+#: cmdline/apt-get.cc:345
msgid " or"
msgstr ""
-#: cmdline/apt-get.cc:373
+#: cmdline/apt-get.cc:374
msgid "The following NEW packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:399
+#: cmdline/apt-get.cc:400
msgid "The following packages will be REMOVED:"
msgstr ""
-#: cmdline/apt-get.cc:421
+#: cmdline/apt-get.cc:422
msgid "The following packages have been kept back:"
msgstr ""
-#: cmdline/apt-get.cc:442
+#: cmdline/apt-get.cc:443
msgid "The following packages will be upgraded:"
msgstr ""
-#: cmdline/apt-get.cc:463
+#: cmdline/apt-get.cc:464
msgid "The following packages will be DOWNGRADED:"
msgstr ""
-#: cmdline/apt-get.cc:483
+#: cmdline/apt-get.cc:484
msgid "The following held packages will be changed:"
msgstr ""
-#: cmdline/apt-get.cc:536
+#: cmdline/apt-get.cc:537
#, c-format
msgid "%s (due to %s) "
msgstr ""
-#: cmdline/apt-get.cc:544
+#: cmdline/apt-get.cc:545
msgid ""
-"WARNING: The following essential packages will be removed\n"
+"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:575
+#: cmdline/apt-get.cc:576
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr ""
-#: cmdline/apt-get.cc:579
+#: cmdline/apt-get.cc:580
#, c-format
msgid "%lu reinstalled, "
msgstr ""
-#: cmdline/apt-get.cc:581
+#: cmdline/apt-get.cc:582
#, c-format
msgid "%lu downgraded, "
msgstr ""
-#: cmdline/apt-get.cc:583
+#: cmdline/apt-get.cc:584
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr ""
-#: cmdline/apt-get.cc:587
+#: cmdline/apt-get.cc:588
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr ""
-#: cmdline/apt-get.cc:647
+#: cmdline/apt-get.cc:648
msgid "Correcting dependencies..."
msgstr ""
-#: cmdline/apt-get.cc:650
+#: cmdline/apt-get.cc:651
msgid " failed."
msgstr ""
-#: cmdline/apt-get.cc:653
+#: cmdline/apt-get.cc:654
msgid "Unable to correct dependencies"
msgstr ""
-#: cmdline/apt-get.cc:656
+#: cmdline/apt-get.cc:657
msgid "Unable to minimize the upgrade set"
msgstr ""
-#: cmdline/apt-get.cc:658
+#: cmdline/apt-get.cc:659
msgid " Done"
msgstr ""
-#: cmdline/apt-get.cc:662
+#: cmdline/apt-get.cc:663
msgid "You might want to run `apt-get -f install' to correct these."
msgstr ""
-#: cmdline/apt-get.cc:665
+#: cmdline/apt-get.cc:666
msgid "Unmet dependencies. Try using -f."
msgstr ""
-#: cmdline/apt-get.cc:687
+#: cmdline/apt-get.cc:688
msgid "WARNING: The following packages cannot be authenticated!"
msgstr ""
-#: cmdline/apt-get.cc:698
+#: cmdline/apt-get.cc:699
msgid "Install these packages without verification [y/N]? "
msgstr ""
-#: cmdline/apt-get.cc:700
+#: cmdline/apt-get.cc:701
msgid "Some packages could not be authenticated"
msgstr ""
-#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:855
+#: cmdline/apt-get.cc:710 cmdline/apt-get.cc:856
msgid "There are problems and -y was used without --force-yes"
msgstr ""
-#: cmdline/apt-get.cc:762
+#: cmdline/apt-get.cc:763
msgid "Packages need to be removed but remove is disabled."
msgstr ""
-#: cmdline/apt-get.cc:788 cmdline/apt-get.cc:1778 cmdline/apt-get.cc:1811
+#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1825 cmdline/apt-get.cc:1858
msgid "Unable to lock the download directory"
msgstr ""
-#: cmdline/apt-get.cc:798 cmdline/apt-get.cc:1859 cmdline/apt-get.cc:2070
+#: cmdline/apt-get.cc:799 cmdline/apt-get.cc:1906 cmdline/apt-get.cc:2117
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr ""
-#: cmdline/apt-get.cc:818
+#: cmdline/apt-get.cc:819
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:821
+#: cmdline/apt-get.cc:822
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:826
+#: cmdline/apt-get.cc:827
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr ""
-#: cmdline/apt-get.cc:829
+#: cmdline/apt-get.cc:830
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr ""
-#: cmdline/apt-get.cc:846
+#: cmdline/apt-get.cc:847
#, c-format
msgid "You don't have enough free space in %s."
msgstr ""
-#: cmdline/apt-get.cc:861 cmdline/apt-get.cc:881
+#: cmdline/apt-get.cc:862 cmdline/apt-get.cc:882
msgid "Trivial Only specified but this is not a trivial operation."
msgstr ""
-#: cmdline/apt-get.cc:863
+#: cmdline/apt-get.cc:864
msgid "Yes, do as I say!"
msgstr ""
-#: cmdline/apt-get.cc:865
+#: cmdline/apt-get.cc:866
#, c-format
msgid ""
-"You are about to do something potentially harmful\n"
+"You are about to do something potentially harmful.\n"
"To continue type in the phrase '%s'\n"
" ?] "
msgstr ""
-#: cmdline/apt-get.cc:871 cmdline/apt-get.cc:890
+#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891
msgid "Abort."
msgstr ""
-#: cmdline/apt-get.cc:886
+#: cmdline/apt-get.cc:887
msgid "Do you want to continue [Y/n]? "
msgstr ""
-#: cmdline/apt-get.cc:958 cmdline/apt-get.cc:1334 cmdline/apt-get.cc:1968
+#: cmdline/apt-get.cc:959 cmdline/apt-get.cc:1335 cmdline/apt-get.cc:2015
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
-#: cmdline/apt-get.cc:976
+#: cmdline/apt-get.cc:977
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:977 cmdline/apt-get.cc:1977
+#: cmdline/apt-get.cc:978 cmdline/apt-get.cc:2024
msgid "Download complete and in download only mode"
msgstr ""
-#: cmdline/apt-get.cc:983
+#: cmdline/apt-get.cc:984
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
msgstr ""
-#: cmdline/apt-get.cc:987
+#: cmdline/apt-get.cc:988
msgid "--fix-missing and media swapping is not currently supported"
msgstr ""
-#: cmdline/apt-get.cc:992
+#: cmdline/apt-get.cc:993
msgid "Unable to correct missing packages."
msgstr ""
-#: cmdline/apt-get.cc:993
+#: cmdline/apt-get.cc:994
msgid "Aborting install."
msgstr ""
-#: cmdline/apt-get.cc:1026
+#: cmdline/apt-get.cc:1027
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1036
+#: cmdline/apt-get.cc:1037
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
-#: cmdline/apt-get.cc:1054
+#: cmdline/apt-get.cc:1055
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr ""
-#: cmdline/apt-get.cc:1065
+#: cmdline/apt-get.cc:1066
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr ""
-#: cmdline/apt-get.cc:1077
+#: cmdline/apt-get.cc:1078
msgid " [Installed]"
msgstr ""
-#: cmdline/apt-get.cc:1082
+#: cmdline/apt-get.cc:1083
msgid "You should explicitly select one to install."
msgstr ""
-#: cmdline/apt-get.cc:1087
+#: cmdline/apt-get.cc:1088
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
@@ -795,79 +795,97 @@ msgid ""
"is only available from another source\n"
msgstr ""
-#: cmdline/apt-get.cc:1106
+#: cmdline/apt-get.cc:1107
msgid "However the following packages replace it:"
msgstr ""
-#: cmdline/apt-get.cc:1109
+#: cmdline/apt-get.cc:1110
#, c-format
msgid "Package %s has no installation candidate"
msgstr ""
-#: cmdline/apt-get.cc:1129
+#: cmdline/apt-get.cc:1130
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr ""
-#: cmdline/apt-get.cc:1137
+#: cmdline/apt-get.cc:1138
#, c-format
msgid "%s is already the newest version.\n"
msgstr ""
-#: cmdline/apt-get.cc:1164
+#: cmdline/apt-get.cc:1165
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1166
+#: cmdline/apt-get.cc:1167
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1172
+#: cmdline/apt-get.cc:1173
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1282
+#: cmdline/apt-get.cc:1283
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1295 cmdline/apt-get.cc:1389
+#: cmdline/apt-get.cc:1296 cmdline/apt-get.cc:1431
msgid "Unable to lock the list directory"
msgstr ""
-#: cmdline/apt-get.cc:1353
+#: cmdline/apt-get.cc:1354
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
msgstr ""
-#: cmdline/apt-get.cc:1372
+#: cmdline/apt-get.cc:1367
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: cmdline/apt-get.cc:1389
+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:1392 cmdline/apt-get.cc:1594
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1396
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr ""
+
+#: cmdline/apt-get.cc:1414
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1471 cmdline/apt-get.cc:1507
+#: cmdline/apt-get.cc:1513 cmdline/apt-get.cc:1549
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:1494
+#: cmdline/apt-get.cc:1536
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1524
+#: cmdline/apt-get.cc:1566
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1527
+#: cmdline/apt-get.cc:1569
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
msgstr ""
-#: cmdline/apt-get.cc:1539
+#: cmdline/apt-get.cc:1581
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"
@@ -875,149 +893,145 @@ msgid ""
"or been moved out of Incoming."
msgstr ""
-#: cmdline/apt-get.cc:1547
+#: cmdline/apt-get.cc:1589
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:1552
-msgid "The following information may help to resolve the situation:"
-msgstr ""
-
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1597
msgid "Broken packages"
msgstr ""
-#: cmdline/apt-get.cc:1581
+#: cmdline/apt-get.cc:1628
msgid "The following extra packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:1652
+#: cmdline/apt-get.cc:1699
msgid "Suggested packages:"
msgstr ""
-#: cmdline/apt-get.cc:1653
+#: cmdline/apt-get.cc:1700
msgid "Recommended packages:"
msgstr ""
-#: cmdline/apt-get.cc:1673
+#: cmdline/apt-get.cc:1720
msgid "Calculating upgrade... "
msgstr ""
-#: cmdline/apt-get.cc:1676 methods/ftp.cc:702 methods/connect.cc:99
+#: cmdline/apt-get.cc:1723 methods/ftp.cc:702 methods/connect.cc:99
msgid "Failed"
msgstr ""
-#: cmdline/apt-get.cc:1681
+#: cmdline/apt-get.cc:1728
msgid "Done"
msgstr ""
-#: cmdline/apt-get.cc:1854
+#: cmdline/apt-get.cc:1901
msgid "Must specify at least one package to fetch source for"
msgstr ""
-#: cmdline/apt-get.cc:1881 cmdline/apt-get.cc:2088
+#: cmdline/apt-get.cc:1928 cmdline/apt-get.cc:2135
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:1928
+#: cmdline/apt-get.cc:1975
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:1933
+#: cmdline/apt-get.cc:1980
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1936
+#: cmdline/apt-get.cc:1983
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1942
+#: cmdline/apt-get.cc:1989
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1973
+#: cmdline/apt-get.cc:2020
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2001
+#: cmdline/apt-get.cc:2048
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2013
+#: cmdline/apt-get.cc:2060
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2030
+#: cmdline/apt-get.cc:2077
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2049
+#: cmdline/apt-get.cc:2096
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2065
+#: cmdline/apt-get.cc:2112
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2093
+#: cmdline/apt-get.cc:2140
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2113
+#: cmdline/apt-get.cc:2160
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2165
+#: cmdline/apt-get.cc:2212
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr ""
-#: cmdline/apt-get.cc:2217
+#: cmdline/apt-get.cc:2264
#, 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:2252
+#: cmdline/apt-get.cc:2299
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
-#: cmdline/apt-get.cc:2277
+#: cmdline/apt-get.cc:2324
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:2291
+#: cmdline/apt-get.cc:2338
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:2295
+#: cmdline/apt-get.cc:2342
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:2327
+#: cmdline/apt-get.cc:2374
msgid "Supported modules:"
msgstr ""
-#: cmdline/apt-get.cc:2368
+#: cmdline/apt-get.cc:2415
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1215,7 +1229,7 @@ msgstr ""
#: apt-inst/dirstream.cc:45 apt-inst/dirstream.cc:50 apt-inst/dirstream.cc:53
#, c-format
-msgid "Failed write file %s"
+msgid "Failed to write file %s"
msgstr ""
#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
@@ -1301,9 +1315,9 @@ msgid "The info and temp directories need to be on the same filesystem"
msgstr ""
#. Build the status cache
-#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
-#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
-#: apt-pkg/pkgcachegen.cc:840
+#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:645
+#: apt-pkg/pkgcachegen.cc:714 apt-pkg/pkgcachegen.cc:719
+#: apt-pkg/pkgcachegen.cc:842
msgid "Reading package lists"
msgstr ""
@@ -1358,7 +1372,7 @@ msgid "Internal error adding a diversion"
msgstr ""
#: apt-inst/deb/dpkgdb.cc:383
-msgid "The pkg cache must be initialize first"
+msgid "The pkg cache must be initialized first"
msgstr ""
#: apt-inst/deb/dpkgdb.cc:386
@@ -2007,18 +2021,27 @@ msgstr ""
msgid "extra"
msgstr ""
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:64 apt-pkg/depcache.cc:96
msgid "Building dependency tree"
msgstr ""
-#: apt-pkg/depcache.cc:61
+#: apt-pkg/depcache.cc:65
msgid "Candidate versions"
msgstr ""
-#: apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:97
msgid "Dependency generation"
msgstr ""
+#: apt-pkg/depcache.cc:114 apt-pkg/depcache.cc:131 apt-pkg/depcache.cc:134
+msgid "Reading extended state information"
+msgstr ""
+
+#: apt-pkg/depcache.cc:150
+#, c-format
+msgid "Failed to write StateFile %s"
+msgstr ""
+
#: apt-pkg/tagfile.cc:73
#, c-format
msgid "Unable to parse package file %s (1)"
@@ -2167,82 +2190,82 @@ msgstr ""
msgid "No priority (or zero) specified for pin"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:74
+#: apt-pkg/pkgcachegen.cc:76
msgid "Cache has an incompatible versioning system"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:117
+#: apt-pkg/pkgcachegen.cc:119
#, c-format
-msgid "Error occured while processing %s (NewPackage)"
+msgid "Error occurred while processing %s (NewPackage)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:129
+#: apt-pkg/pkgcachegen.cc:131
#, c-format
-msgid "Error occured while processing %s (UsePackage1)"
+msgid "Error occurred while processing %s (UsePackage1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:150
+#: apt-pkg/pkgcachegen.cc:152
#, c-format
-msgid "Error occured while processing %s (UsePackage2)"
+msgid "Error occurred while processing %s (UsePackage2)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:154
+#: apt-pkg/pkgcachegen.cc:156
#, c-format
-msgid "Error occured while processing %s (NewFileVer1)"
+msgid "Error occurred while processing %s (NewFileVer1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:184
+#: apt-pkg/pkgcachegen.cc:186
#, c-format
-msgid "Error occured while processing %s (NewVersion1)"
+msgid "Error occurred while processing %s (NewVersion1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:188
+#: apt-pkg/pkgcachegen.cc:190
#, c-format
-msgid "Error occured while processing %s (UsePackage3)"
+msgid "Error occurred while processing %s (UsePackage3)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:192
+#: apt-pkg/pkgcachegen.cc:194
#, c-format
-msgid "Error occured while processing %s (NewVersion2)"
+msgid "Error occurred while processing %s (NewVersion2)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:207
+#: apt-pkg/pkgcachegen.cc:209
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:210
+#: apt-pkg/pkgcachegen.cc:212
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:213
+#: apt-pkg/pkgcachegen.cc:215
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:241
+#: apt-pkg/pkgcachegen.cc:243
#, c-format
-msgid "Error occured while processing %s (FindPkg)"
+msgid "Error occurred while processing %s (FindPkg)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:254
+#: apt-pkg/pkgcachegen.cc:256
#, c-format
-msgid "Error occured while processing %s (CollectFileProvides)"
+msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:260
+#: apt-pkg/pkgcachegen.cc:262
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:574
+#: apt-pkg/pkgcachegen.cc:576
#, c-format
msgid "Couldn't stat source package list %s"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:658
+#: apt-pkg/pkgcachegen.cc:660
msgid "Collecting File Provides"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+#: apt-pkg/pkgcachegen.cc:787 apt-pkg/pkgcachegen.cc:794
msgid "IO Error saving source cache"
msgstr ""