summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2009-06-29 18:00:54 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2009-06-29 18:00:54 +0200
commitaf29ffb44d95dfb0f7b0c1835e2e501313f74723 (patch)
treedd1c5f45e2cb5a681558408598ca4fe44ee4961b
parent55a5a46c235a30bf024fb2301066553953701cc5 (diff)
* 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)
-rw-r--r--apt-pkg/cacheiterators.h13
-rw-r--r--apt-pkg/depcache.cc47
-rw-r--r--apt-pkg/depcache.h10
-rw-r--r--apt-pkg/pkgcache.cc51
-rw-r--r--debian/changelog4
-rw-r--r--doc/apt.conf.5.xml21
-rw-r--r--doc/examples/configure-index1
-rw-r--r--po/apt-all.pot293
8 files changed, 298 insertions, 142 deletions
diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h
index 63f9de8fc..cf79b3a6b 100644
--- a/apt-pkg/cacheiterators.h
+++ b/apt-pkg/cacheiterators.h
@@ -80,7 +80,13 @@ class pkgCache::PkgIterator
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)
@@ -111,7 +117,10 @@ class pkgCache::VerIterator
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;};
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index 2411bfe89..e9ef9cedc 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -47,6 +47,13 @@ ConfigValueInSubTree(const char* SubTree, const char *needle)
return false;
}
+std::string OutputInDepth(const unsigned long Depth)
+{
+ std::string output = "";
+ for(unsigned long d=Depth; d > 0; d--)
+ output += " ";
+ return output;
+}
pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) :
cache(cache), released(false)
@@ -83,6 +90,8 @@ pkgDepCache::ActionGroup::~ActionGroup()
pkgDepCache::pkgDepCache(pkgCache *pCache,Policy *Plcy) :
group_level(0), Cache(pCache), PkgState(0), DepState(0)
{
+ DebugMarker = _config->FindB("Debug::pkgDepCache::Marker", false);
+ DebugAutoInstall = _config->FindB("Debug::pkgDepCache::AutoInstall", false);
delLocalPolicy = 0;
LocalPolicy = Plcy;
if (LocalPolicy == 0)
@@ -705,7 +714,8 @@ void pkgDepCache::Update(PkgIterator const &Pkg)
// DepCache::MarkKeep - Put the package in the keep state /*{{{*/
// ---------------------------------------------------------------------
/* */
-void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser)
+void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser,
+ unsigned long Depth)
{
// Simplifies other routines.
if (Pkg.end() == true)
@@ -746,6 +756,9 @@ void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser)
P.Flags &= ~Flag::Auto;
#endif
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << "MarkKeep " << Pkg << std::endl;
+
RemoveSizes(Pkg);
RemoveStates(Pkg);
@@ -765,7 +778,8 @@ void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser)
// DepCache::MarkDelete - Put the package in the delete state /*{{{*/
// ---------------------------------------------------------------------
/* */
-void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge)
+void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge,
+ unsigned long Depth)
{
// Simplifies other routines.
if (Pkg.end() == true)
@@ -787,6 +801,9 @@ void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge)
if (Pkg->VersionList == 0)
return;
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << "MarkDelete " << Pkg << std::endl;
+
RemoveSizes(Pkg);
RemoveStates(Pkg);
@@ -826,7 +843,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
P.CandidateVer == (Version *)Pkg.CurrentVer()))
{
if (P.CandidateVer == (Version *)Pkg.CurrentVer() && P.InstallVer == 0)
- MarkKeep(Pkg, false, FromUser);
+ MarkKeep(Pkg, false, FromUser, Depth+1);
return;
}
@@ -868,6 +885,9 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
if (AutoInst == false)
return;
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << "MarkInstall " << Pkg << std::endl;
+
DepIterator Dep = P.InstVerIter(*this).DependsList();
for (; Dep.end() != true;)
{
@@ -937,12 +957,12 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
}
}
if(isNewImportantDep)
- if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true)
- std::clog << "new important dependency: "
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "new important dependency: "
<< Start.TargetPkg().Name() << std::endl;
if(isPreviouslySatisfiedImportantDep)
- if(_config->FindB("Debug::pkgDepCache::AutoInstall", false) == true)
- std::clog << "previously satisfied important dependency on "
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "previously satisfied important dependency on "
<< Start.TargetPkg().Name() << std::endl;
// skip important deps if the package is already installed
@@ -993,15 +1013,16 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
if (InstPkg.end() == false)
{
- if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true)
- std::clog << "Installing " << InstPkg.Name()
- << " as dep of " << Pkg.Name()
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "Installing " << InstPkg.Name()
+ << " as " << Start.DepType() << " of " << Pkg.Name()
<< std::endl;
// now check if we should consider it a automatic dependency or not
if(Pkg.Section() && ConfigValueInSubTree("APT::Never-MarkAuto-Sections", Pkg.Section()))
{
- if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true)
- std::clog << "Setting NOT as auto-installed (direct dep of pkg in APT::Never-MarkAuto-Sections)" << std::endl;
+ if(DebugAutoInstall == true)
+ std::clog << OutputInDepth(Depth) << "Setting NOT as auto-installed (direct "
+ << Start.DepType() << " of pkg in APT::Never-MarkAuto-Sections)" << std::endl;
MarkInstall(InstPkg,true,Depth + 1, true);
}
else
@@ -1028,7 +1049,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
PkgIterator Pkg = Ver.ParentPkg();
if (Start->Type != Dep::DpkgBreaks)
- MarkDelete(Pkg);
+ MarkDelete(Pkg,false,Depth + 1);
else
if (PkgState[Pkg->ID].CandidateVer != *I)
MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps);
diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h
index f41ad17e9..2d33e21d7 100644
--- a/apt-pkg/depcache.h
+++ b/apt-pkg/depcache.h
@@ -294,7 +294,10 @@ class pkgDepCache : protected pkgCache::Namespace
unsigned long iBrokenCount;
unsigned long iPolicyBrokenCount;
unsigned long iBadCount;
-
+
+ bool DebugMarker;
+ bool DebugAutoInstall;
+
Policy *delLocalPolicy; // For memory clean up..
Policy *LocalPolicy;
@@ -387,8 +390,9 @@ class pkgDepCache : protected pkgCache::Namespace
*/
// @{
void MarkKeep(PkgIterator const &Pkg, bool Soft = false,
- bool FromUser = true);
- void MarkDelete(PkgIterator const &Pkg,bool Purge = false);
+ bool FromUser = true, unsigned long Depth = 0);
+ void MarkDelete(PkgIterator const &Pkg, bool Purge = false,
+ unsigned long Depth = 0);
void MarkInstall(PkgIterator const &Pkg,bool AutoInst = true,
unsigned long Depth = 0, bool FromUser = true,
bool ForceImportantDeps = false);
diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc
index 81a254483..4e10093a8 100644
--- a/apt-pkg/pkgcache.cc
+++ b/apt-pkg/pkgcache.cc
@@ -21,6 +21,7 @@
/*}}}*/
// 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>
@@ -290,6 +291,56 @@ pkgCache::PkgIterator::OkState pkgCache::PkgIterator::State() const
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
diff --git a/debian/changelog b/debian/changelog
index f1cb7bd0c..bb75ad8af 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -22,6 +22,10 @@ apt (0.7.22) UNRELEASED; urgency=low
(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)
[ Julian Andres Klode ]
* apt-pkg/contrib/configuration.cc: Fix a small memory leak in
diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml
index fb2be9a28..841bb8f66 100644
--- a/doc/apt.conf.5.xml
+++ b/doc/apt.conf.5.xml
@@ -679,6 +679,27 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><literal>Debug::pkgDepCache::Marker</literal></term>
+ <listitem>
+ <para>
+ Generate debug messages describing which package is marked
+ as keep/install/remove while the ProblemResolver does his work.
+ Each addition or deletion may trigger additional actions;
+ they are shown indented two additional space under the original entry.
+ The format for each line is <literal>MarkKeep</literal>,
+ <literal>MarkDelete</literal> or <literal>MarkInstall</literal> followed by
+ <literal>package-name &lt;a.b.c -&gt; d.e.f | x.y.z&gt; (section)</literal>
+ where <literal>a.b.c</literal> is the current version of the package,
+ <literal>d.e.f</literal> is the version considered for installation and
+ <literal>x.y.z</literal> is a newer version, but not considered for installation
+ (because of a low pin score). The later two can be omitted if there is none or if
+ it is the same version as the installed.
+ <literal>section</literal> is the name of the section the package appears in.
+ </para>
+ </listitem>
+ </varlistentry>
+
<!-- Question: why doesn't this do anything? The code says it should. -->
<varlistentry>
<term><literal>Debug::pkgInitConfig</literal></term>
diff --git a/doc/examples/configure-index b/doc/examples/configure-index
index 5f29a2d3f..dd8d667db 100644
--- a/doc/examples/configure-index
+++ b/doc/examples/configure-index
@@ -289,6 +289,7 @@ Debug
{
pkgProblemResolver "false";
pkgDepCache::AutoInstall "false"; // what packages apt install to satify dependencies
+ pkgDepCache::Marker "false";
pkgAcquire "false";
pkgAcquire::Worker "false";
pkgAcquire::Auth "false";
diff --git a/po/apt-all.pot b/po/apt-all.pot
index ec87b27a3..2aa99cfa2 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: 2008-11-12 22:07+0100\n"
+"POT-Creation-Date: 2009-06-29 17:01+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"
@@ -156,7 +156,7 @@ msgstr ""
#: cmdline/apt-cache.cc:1714 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
-#: cmdline/apt-get.cc:2573 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2582 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s compiled on %s %s\n"
msgstr ""
@@ -554,7 +554,7 @@ msgstr ""
msgid "Y"
msgstr ""
-#: cmdline/apt-get.cc:146 cmdline/apt-get.cc:1651
+#: cmdline/apt-get.cc:146 cmdline/apt-get.cc:1658
#, c-format
msgid "Regex compilation error - %s"
msgstr ""
@@ -713,11 +713,11 @@ msgstr ""
msgid "Internal error, Ordering didn't finish"
msgstr ""
-#: cmdline/apt-get.cc:809 cmdline/apt-get.cc:1992 cmdline/apt-get.cc:2025
+#: cmdline/apt-get.cc:809 cmdline/apt-get.cc:1999 cmdline/apt-get.cc:2032
msgid "Unable to lock the download directory"
msgstr ""
-#: cmdline/apt-get.cc:819 cmdline/apt-get.cc:2073 cmdline/apt-get.cc:2319
+#: cmdline/apt-get.cc:819 cmdline/apt-get.cc:2080 cmdline/apt-get.cc:2326
#: apt-pkg/cachefile.cc:65
msgid "The list of sources could not be read."
msgstr ""
@@ -746,7 +746,7 @@ msgstr ""
msgid "After this operation, %sB disk space will be freed.\n"
msgstr ""
-#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:2168
+#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:2175
#, c-format
msgid "Couldn't determine free space in %s"
msgstr ""
@@ -780,7 +780,7 @@ msgstr ""
msgid "Do you want to continue [Y/n]? "
msgstr ""
-#: cmdline/apt-get.cc:984 cmdline/apt-get.cc:2216 apt-pkg/algorithms.cc:1349
+#: cmdline/apt-get.cc:984 cmdline/apt-get.cc:2223 apt-pkg/algorithms.cc:1349
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
@@ -789,7 +789,7 @@ msgstr ""
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:1003 cmdline/apt-get.cc:2225
+#: cmdline/apt-get.cc:1003 cmdline/apt-get.cc:2232
msgid "Download complete and in download only mode"
msgstr ""
@@ -881,29 +881,34 @@ msgstr ""
msgid "Selected version %s (%s) for %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1338
+#: cmdline/apt-get.cc:1307
+#, c-format
+msgid "No source package '%s' picking '%s' instead\n"
+msgstr ""
+
+#: cmdline/apt-get.cc:1345
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1351
+#: cmdline/apt-get.cc:1358
msgid "Unable to lock the list directory"
msgstr ""
-#: cmdline/apt-get.cc:1403
+#: cmdline/apt-get.cc:1410
msgid "We are not supposed to delete stuff, can't start AutoRemover"
msgstr ""
-#: cmdline/apt-get.cc:1435
+#: cmdline/apt-get.cc:1442
msgid ""
"The following packages were automatically installed and are no longer "
"required:"
msgstr ""
-#: cmdline/apt-get.cc:1437
+#: cmdline/apt-get.cc:1444
msgid "Use 'apt-get autoremove' to remove them."
msgstr ""
-#: cmdline/apt-get.cc:1442
+#: cmdline/apt-get.cc:1449
msgid ""
"Hmm, seems like the AutoRemover destroyed something which really\n"
"shouldn't happen. Please file a bug report against apt."
@@ -919,49 +924,49 @@ msgstr ""
#. "that package should be filed.") << endl;
#. }
#.
-#: cmdline/apt-get.cc:1445 cmdline/apt-get.cc:1735
+#: cmdline/apt-get.cc:1452 cmdline/apt-get.cc:1742
msgid "The following information may help to resolve the situation:"
msgstr ""
-#: cmdline/apt-get.cc:1449
+#: cmdline/apt-get.cc:1456
msgid "Internal Error, AutoRemover broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1468
+#: cmdline/apt-get.cc:1475
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1523
+#: cmdline/apt-get.cc:1530
#, c-format
msgid "Couldn't find task %s"
msgstr ""
-#: cmdline/apt-get.cc:1638 cmdline/apt-get.cc:1674
+#: cmdline/apt-get.cc:1645 cmdline/apt-get.cc:1681
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:1661
+#: cmdline/apt-get.cc:1668
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1692
+#: cmdline/apt-get.cc:1699
#, c-format
msgid "%s set to manually installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:1705
+#: cmdline/apt-get.cc:1712
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1708
+#: cmdline/apt-get.cc:1715
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:1727
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"
@@ -969,152 +974,152 @@ msgid ""
"or been moved out of Incoming."
msgstr ""
-#: cmdline/apt-get.cc:1738
+#: cmdline/apt-get.cc:1745
msgid "Broken packages"
msgstr ""
-#: cmdline/apt-get.cc:1767
+#: cmdline/apt-get.cc:1774
msgid "The following extra packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:1856
+#: cmdline/apt-get.cc:1863
msgid "Suggested packages:"
msgstr ""
-#: cmdline/apt-get.cc:1857
+#: cmdline/apt-get.cc:1864
msgid "Recommended packages:"
msgstr ""
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1892
msgid "Calculating upgrade... "
msgstr ""
-#: cmdline/apt-get.cc:1888 methods/ftp.cc:702 methods/connect.cc:112
+#: cmdline/apt-get.cc:1895 methods/ftp.cc:702 methods/connect.cc:112
msgid "Failed"
msgstr ""
-#: cmdline/apt-get.cc:1893
+#: cmdline/apt-get.cc:1900
msgid "Done"
msgstr ""
-#: cmdline/apt-get.cc:1960 cmdline/apt-get.cc:1968
+#: cmdline/apt-get.cc:1967 cmdline/apt-get.cc:1975
msgid "Internal error, problem resolver broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2075
msgid "Must specify at least one package to fetch source for"
msgstr ""
-#: cmdline/apt-get.cc:2098 cmdline/apt-get.cc:2337
+#: cmdline/apt-get.cc:2105 cmdline/apt-get.cc:2344
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:2147
+#: cmdline/apt-get.cc:2154
#, c-format
msgid "Skipping already downloaded file '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:2175
+#: cmdline/apt-get.cc:2182
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:2181
+#: cmdline/apt-get.cc:2188
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:2184
+#: cmdline/apt-get.cc:2191
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:2190
+#: cmdline/apt-get.cc:2197
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2228
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2249
+#: cmdline/apt-get.cc:2256
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2261
+#: cmdline/apt-get.cc:2268
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2262
+#: cmdline/apt-get.cc:2269
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2279
+#: cmdline/apt-get.cc:2286
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2298
+#: cmdline/apt-get.cc:2305
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2314
+#: cmdline/apt-get.cc:2321
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2342
+#: cmdline/apt-get.cc:2349
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2362
+#: cmdline/apt-get.cc:2369
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2414
+#: cmdline/apt-get.cc:2421
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr ""
-#: cmdline/apt-get.cc:2467
+#: cmdline/apt-get.cc:2474
#, 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:2503
+#: cmdline/apt-get.cc:2510
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
-#: cmdline/apt-get.cc:2528
+#: cmdline/apt-get.cc:2537
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:2542
+#: cmdline/apt-get.cc:2551
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:2546
+#: cmdline/apt-get.cc:2555
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:2578
+#: cmdline/apt-get.cc:2587
msgid "Supported modules:"
msgstr ""
-#: cmdline/apt-get.cc:2619
+#: cmdline/apt-get.cc:2628
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1130,7 +1135,7 @@ msgid ""
" 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"
@@ -1158,6 +1163,14 @@ msgid ""
" This APT has Super Cow Powers.\n"
msgstr ""
+#: cmdline/apt-get.cc:2795
+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 ""
@@ -1373,7 +1386,7 @@ 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
#, c-format
@@ -1666,7 +1679,7 @@ msgstr ""
msgid "Unable to accept connection"
msgstr ""
-#: methods/ftp.cc:864 methods/http.cc:960 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:991 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr ""
@@ -1750,38 +1763,38 @@ msgstr ""
msgid "Unable to connect to %s %s:"
msgstr ""
-#: methods/gpgv.cc:65
+#: methods/gpgv.cc:71
#, c-format
msgid "Couldn't access keyring: '%s'"
msgstr ""
-#: methods/gpgv.cc:101
+#: methods/gpgv.cc:107
msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
msgstr ""
-#: methods/gpgv.cc:205
+#: methods/gpgv.cc:223
msgid ""
"Internal error: Good signature, but could not determine key fingerprint?!"
msgstr ""
-#: methods/gpgv.cc:210
+#: methods/gpgv.cc:228
msgid "At least one invalid signature was encountered."
msgstr ""
-#: methods/gpgv.cc:214
+#: methods/gpgv.cc:232
#, c-format
msgid "Could not execute '%s' to verify signature (is gpgv installed?)"
msgstr ""
-#: methods/gpgv.cc:219
+#: methods/gpgv.cc:237
msgid "Unknown error executing gpgv"
msgstr ""
-#: methods/gpgv.cc:250
+#: methods/gpgv.cc:271 methods/gpgv.cc:278
msgid "The following signatures were invalid:\n"
msgstr ""
-#: methods/gpgv.cc:257
+#: methods/gpgv.cc:285
msgid ""
"The following signatures couldn't be verified because the public key is not "
"available:\n"
@@ -1797,80 +1810,80 @@ msgstr ""
msgid "Read error from %s process"
msgstr ""
-#: methods/http.cc:377
+#: methods/http.cc:379
msgid "Waiting for headers"
msgstr ""
-#: methods/http.cc:523
+#: methods/http.cc:525
#, c-format
msgid "Got a single header line over %u chars"
msgstr ""
-#: methods/http.cc:531
+#: methods/http.cc:533
msgid "Bad header line"
msgstr ""
-#: methods/http.cc:550 methods/http.cc:557
+#: methods/http.cc:552 methods/http.cc:559
msgid "The HTTP server sent an invalid reply header"
msgstr ""
-#: methods/http.cc:586
+#: methods/http.cc:588
msgid "The HTTP server sent an invalid Content-Length header"
msgstr ""
-#: methods/http.cc:601
+#: methods/http.cc:603
msgid "The HTTP server sent an invalid Content-Range header"
msgstr ""
-#: methods/http.cc:603
+#: methods/http.cc:605
msgid "This HTTP server has broken range support"
msgstr ""
-#: methods/http.cc:627
+#: methods/http.cc:629
msgid "Unknown date format"
msgstr ""
-#: methods/http.cc:774
+#: methods/http.cc:782
msgid "Select failed"
msgstr ""
-#: methods/http.cc:779
+#: methods/http.cc:787
msgid "Connection timed out"
msgstr ""
-#: methods/http.cc:802
+#: methods/http.cc:810
msgid "Error writing to output file"
msgstr ""
-#: methods/http.cc:833
+#: methods/http.cc:841
msgid "Error writing to file"
msgstr ""
-#: methods/http.cc:861
+#: methods/http.cc:869
msgid "Error writing to the file"
msgstr ""
-#: methods/http.cc:875
+#: methods/http.cc:883
msgid "Error reading from server. Remote end closed connection"
msgstr ""
-#: methods/http.cc:877
+#: methods/http.cc:885
msgid "Error reading from server"
msgstr ""
-#: methods/http.cc:945 apt-pkg/contrib/mmap.cc:196
+#: methods/http.cc:976 apt-pkg/contrib/mmap.cc:196
msgid "Failed to truncate file"
msgstr ""
-#: methods/http.cc:1105
+#: methods/http.cc:1141
msgid "Bad header data"
msgstr ""
-#: methods/http.cc:1122 methods/http.cc:1177
+#: methods/http.cc:1158 methods/http.cc:1213
msgid "Connection failed"
msgstr ""
-#: methods/http.cc:1229
+#: methods/http.cc:1305
msgid "Internal error"
msgstr ""
@@ -1890,7 +1903,31 @@ msgid ""
"Current value: %lu. (man 5 apt.conf)"
msgstr ""
-#: apt-pkg/contrib/strutl.cc:1014
+#. 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:1018
#, c-format
msgid "Selection %s not found"
msgstr ""
@@ -1905,42 +1942,42 @@ msgstr ""
msgid "Opening configuration file %s"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:662
+#: apt-pkg/contrib/configuration.cc:663
#, c-format
msgid "Syntax error %s:%u: Block starts with no name."
msgstr ""
-#: apt-pkg/contrib/configuration.cc:681
+#: apt-pkg/contrib/configuration.cc:682
#, c-format
msgid "Syntax error %s:%u: Malformed tag"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:698
+#: apt-pkg/contrib/configuration.cc:699
#, c-format
msgid "Syntax error %s:%u: Extra junk after value"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:738
+#: apt-pkg/contrib/configuration.cc:739
#, c-format
msgid "Syntax error %s:%u: Directives can only be done at the top level"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:745
+#: apt-pkg/contrib/configuration.cc:746
#, c-format
msgid "Syntax error %s:%u: Too many nested includes"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:749 apt-pkg/contrib/configuration.cc:754
+#: apt-pkg/contrib/configuration.cc:750 apt-pkg/contrib/configuration.cc:755
#, c-format
msgid "Syntax error %s:%u: Included from here"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:758
+#: apt-pkg/contrib/configuration.cc:759
#, c-format
msgid "Syntax error %s:%u: Unsupported directive '%s'"
msgstr ""
-#: apt-pkg/contrib/configuration.cc:809
+#: apt-pkg/contrib/configuration.cc:810
#, c-format
msgid "Syntax error %s:%u: Extra junk at end of file"
msgstr ""
@@ -2083,101 +2120,105 @@ msgstr ""
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:130 apt-pkg/depcache.cc:159
msgid "Building dependency tree"
msgstr ""
-#: apt-pkg/depcache.cc:122
+#: apt-pkg/depcache.cc:131
msgid "Candidate versions"
msgstr ""
-#: apt-pkg/depcache.cc:151
+#: apt-pkg/depcache.cc:160
msgid "Dependency generation"
msgstr ""
-#: apt-pkg/depcache.cc:172 apt-pkg/depcache.cc:191 apt-pkg/depcache.cc:195
+#: apt-pkg/depcache.cc:181 apt-pkg/depcache.cc:200 apt-pkg/depcache.cc:204
msgid "Reading state information"
msgstr ""
-#: apt-pkg/depcache.cc:219
+#: apt-pkg/depcache.cc:228
#, c-format
msgid "Failed to open StateFile %s"
msgstr ""
-#: apt-pkg/depcache.cc:225
+#: apt-pkg/depcache.cc:234
#, c-format
msgid "Failed to write temporary StateFile %s"
msgstr ""
@@ -2309,7 +2350,7 @@ 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 ""
@@ -2340,16 +2381,16 @@ msgstr ""
msgid "You may want to run apt-get update to correct these problems"
msgstr ""
-#: apt-pkg/policy.cc:267
+#: apt-pkg/policy.cc:281
msgid "Invalid record in the preferences file, no Package header"
msgstr ""
-#: apt-pkg/policy.cc:289
+#: apt-pkg/policy.cc:303
#, c-format
msgid "Did not understand pin type %s"
msgstr ""
-#: apt-pkg/policy.cc:297
+#: apt-pkg/policy.cc:311
msgid "No priority (or zero) specified for pin"
msgstr ""
@@ -2660,10 +2701,14 @@ msgstr ""
msgid "Completely removed %s"
msgstr ""
-#: apt-pkg/deb/dpkgpm.cc:791
+#: apt-pkg/deb/dpkgpm.cc:789
msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
msgstr ""
+#: apt-pkg/deb/debsystem.cc:100
+msgid "Not locked"
+msgstr ""
+
#: methods/rred.cc:219
msgid "Could not patch file"
msgstr ""