summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/algorithms.cc115
-rw-r--r--apt-pkg/algorithms.h4
-rw-r--r--apt-pkg/deb/dpkgpm.h2
-rw-r--r--apt-pkg/depcache.cc96
-rw-r--r--apt-pkg/depcache.h10
-rw-r--r--apt-pkg/packagemanager.cc5
-rw-r--r--apt-pkg/pkgcache.h1
-rw-r--r--apt-pkg/pkgcachegen.cc2
-rw-r--r--cmdline/apt-get.cc55
-rw-r--r--configure.in3
-rw-r--r--debian/changelog1
-rw-r--r--doc/apt_preferences.5.xml2
-rw-r--r--doc/fr/makefile46
-rw-r--r--po/apt-all.pot140
-rw-r--r--po/he.po4
15 files changed, 410 insertions, 76 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 479927d65..98bd8dd8b 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -1061,6 +1061,17 @@ 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)) {
+ std::cout << "Resolve installed new pkg: " << I.Name() << " (now marking it as auto)" << std::endl;
+ Cache[I].Flags |= pkgCache::Flag::Auto;
+ }
+ }
+
+
return true;
}
/*}}}*/
@@ -1232,3 +1243,107 @@ void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List)
qsort(List,Count,sizeof(*List),PrioComp);
}
/*}}}*/
+
+
+// pkgMarkPkgUsed - Mark used packages as dirty /*{{{*/
+// ---------------------------------------------------------------------
+/* Mark all reachable packages as dirty. */
+void pkgMarkPkgUsed(pkgDepCache &Cache, pkgCache::PkgIterator Pkg,
+ pkgCache::State::PkgRemoveState DirtLevel)
+{
+ // If it is not installed, and we are in manual mode, ignore it
+ if ((Pkg->CurrentVer == 0 && Cache[Pkg].Install() == false || Cache[Pkg].Delete() == true) &&
+ DirtLevel == pkgCache::State::RemoveManual)
+ {
+// fprintf(stdout,"This one is not installed/virtual %s %d %d\n", Pkg.Name(), Pkg->AutomaticRemove, DirtLevel);
+ return;
+ }
+
+ // If it is not installed, and it is not virtual, ignore it
+ if ((Pkg->CurrentVer == 0 && Cache[Pkg].Install() == false || Cache[Pkg].Delete() == true) &&
+ Pkg->VersionList != 0)
+ {
+// fprintf(stdout,"This one is not installed %s %d %d\n", Pkg.Name(), Pkg->AutomaticRemove, DirtLevel);
+ return;
+ }
+
+ // If it is similar or more dirty than we are ;-), because we've been here already, don't mark it
+ // This is necessary because virtual packages just relay the current level,
+ // so it may be possible e.g. that this was already seen with ::RemoveSuggested, but
+ // we are ::RemoveRequired
+ if (Cache[Pkg].Dirty() >= DirtLevel)
+ {
+ //fprintf(stdout,"Seen already %s %d %d\n", Pkg.Name(), Pkg->AutomaticRemove, DirtLevel);
+ return;
+ }
+
+ // If it is less important than the current DirtLevel, don't mark it
+ if (Cache[Pkg].AutomaticRemove != pkgCache::State::RemoveManual &&
+ Cache[Pkg].AutomaticRemove > DirtLevel)
+ {
+// fprintf(stdout,"We don't need %s %d %d %d\n", Pkg.Name(), Pkg->AutomaticRemove, DirtLevel, Cache[Pkg].Dirty());
+ return;
+ }
+
+ // Mark it as used
+ Cache.SetDirty(Pkg, DirtLevel);
+
+ //fprintf(stdout,"We keep %s %d %d\n", Pkg.Name(), Pkg->AutomaticRemove, DirtLevel);
+
+ // We are a virtual package
+ if (Pkg->VersionList == 0)
+ {
+// fprintf(stdout,"We are virtual %s %d %d\n", Pkg.Name(), Pkg->AutomaticRemove, DirtLevel);
+ for (pkgCache::PrvIterator Prv = Pkg.ProvidesList(); ! Prv.end(); ++Prv)
+ pkgMarkPkgUsed (Cache, Prv.OwnerPkg(), DirtLevel);
+ return;
+ }
+
+ // Depending on the type of dependency, follow it
+ for (pkgCache::DepIterator D = Cache[Pkg].InstVerIter(Cache).DependsList(); ! D.end(); ++D)
+ {
+// fprintf(stdout,"We depend on %s %s\n", D.TargetPkg().Name(), D.DepType());
+
+ switch(D->Type)
+ {
+ case pkgCache::Dep::Depends:
+ case pkgCache::Dep::PreDepends:
+ pkgMarkPkgUsed (Cache, D.TargetPkg(), pkgCache::State::RemoveRequired);
+ break;
+ case pkgCache::Dep::Recommends:
+ pkgMarkPkgUsed (Cache, D.TargetPkg(), pkgCache::State::RemoveRecommended);
+ break;
+ case pkgCache::Dep::Suggests:
+ pkgMarkPkgUsed (Cache, D.TargetPkg(), pkgCache::State::RemoveSuggested);
+ break;
+ case pkgCache::Dep::Conflicts:
+ case pkgCache::Dep::Replaces:
+ case pkgCache::Dep::Obsoletes:
+ // We don't handle these here
+ break;
+ }
+ }
+// fprintf(stdout,"We keep %s %d %d <END>\n", Pkg.Name(), Pkg->AutomaticRemove, DirtLevel);
+}
+ /*}}}*/
+
+bool pkgMarkUsed(pkgDepCache &Cache)
+{
+ // debug only
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); ! Pkg.end(); ++Pkg)
+ if(!Cache[Pkg].Dirty() && Cache[Pkg].AutomaticRemove > 0)
+ std::cout << "has auto-remove information: " << Pkg.Name()
+ << " " << (int)Cache[Pkg].AutomaticRemove
+ << std::endl;
+
+ // init with defaults
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); ! Pkg.end(); ++Pkg)
+ Cache.SetDirty(Pkg, pkgCache::State::RemoveUnknown);
+
+ // go recursive over the cache
+ for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); ! Pkg.end(); ++Pkg)
+ pkgMarkPkgUsed (Cache, Pkg, pkgCache::State::RemoveManual);
+
+
+ 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 c6bf3185a..c490d89bc 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -16,7 +16,11 @@
#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 <sstream>
#include <apti18n.h>
/*}}}*/
@@ -72,7 +76,10 @@ bool pkgDepCache::Init(OpProgress *Prog)
// Find the proper cache slot
StateCache &State = PkgState[I->ID];
State.iFlags = 0;
-
+ State.DirtyState = pkgCache::State::RemoveUnknown;
+ //State.AutomaticRemove = I->AutomaticRemove;
+ State.AutomaticRemove = pkgCache::State::RemoveUnknown;
+
// Figure out the install version
State.CandidateVer = GetCandidateVer(I);
State.InstallVer = I.CurrentVer();
@@ -96,6 +103,77 @@ 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 extended 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("Remove-Reason",
+ pkgCache::State::RemoveManual);
+ PkgState[pkg->ID].AutomaticRemove = reason;
+ //std::cout << "Set: " << pkgname << " to " << reason << std::endl;
+ amt+=section.size();
+ Prog->OverallProgress(amt, file_size, 1,
+ _("Reading extended state information"));
+ }
+ Prog->OverallProgress(file_size, file_size, 1,
+ _("Reading extended state information"));
+ }
+ }
+
+ return true;
+}
+
+bool pkgDepCache::writeStateFile(OpProgress *prog)
+{
+ // write the auto-mark list ----------------------------------
+
+ FileFd StateFile;
+ string state = _config->FindDir("Dir::State") + "pkgstates";
+
+ 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++) {
+
+ // clear out no longer installed pkg
+ if(PkgState[pkg->ID].Delete() || pkg.CurrentVer() == NULL)
+ PkgState[pkg->ID].AutomaticRemove = pkgCache::State::RemoveUnknown;
+
+ // check if we have new information
+ if(PkgState[pkg->ID].Flags & pkgCache::Flag::Auto) {
+ std::cout << "pkg: " << pkg.Name() << " is auto-dep" << std::endl;
+ PkgState[pkg->ID].AutomaticRemove = pkgCache::State::RemoveRequired;
+ }
+
+ if(PkgState[pkg->ID].AutomaticRemove != pkgCache::State::RemoveUnknown) {
+ ostr.str(string(""));
+ ostr << "Package: " << pkg.Name()
+ << "\nRemove-Reason: "
+ << (int)(PkgState[pkg->ID].AutomaticRemove) << "\n\n";
+ StateFile.Write(ostr.str().c_str(), ostr.str().size());
+ //std::cout << "Writing auto-mark: " << ostr.str() << endl;
+ }
+ }
+ return true;
+}
+
// DepCache::CheckDep - Checks a single dependency /*{{{*/
// ---------------------------------------------------------------------
/* This first checks the dependency against the main target package and
@@ -447,6 +525,8 @@ void pkgDepCache::Update(OpProgress *Prog)
AddStates(I);
}
+ readStateFile(Prog);
+
if (Prog != 0)
Prog->Progress(Done);
}
@@ -582,7 +662,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);
@@ -754,6 +835,15 @@ void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To)
AddSizes(Pkg);
}
/*}}}*/
+// DepCache::SetDirty - Switch the package between dirty states /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgDepCache::SetDirty(PkgIterator const &Pkg, pkgCache::State::PkgRemoveState To)
+{
+ StateCache &P = PkgState[Pkg->ID];
+ P.DirtyState = To;
+}
+ /*}}}*/
// DepCache::SetCandidateVersion - Change the candidate version /*{{{*/
// ---------------------------------------------------------------------
/* */
diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h
index 6d51920e9..e02ed72f0 100644
--- a/apt-pkg/depcache.h
+++ b/apt-pkg/depcache.h
@@ -79,6 +79,10 @@ class pkgDepCache : protected pkgCache::Namespace
unsigned short Flags;
unsigned short iFlags; // Internal flags
+ // Traversal status and state for automatic removal
+ unsigned char DirtyState;
+ unsigned char AutomaticRemove;
+
// Various tree indicators
signed char Status; // -1,0,1,2
unsigned char Mode; // ModeList
@@ -99,6 +103,7 @@ class pkgDepCache : protected pkgCache::Namespace
inline bool NowBroken() const {return (DepState & DepNowMin) != DepNowMin;};
inline bool InstBroken() const {return (DepState & DepInstMin) != DepInstMin;};
inline bool Install() const {return Mode == ModeInstall;};
+ inline unsigned char Dirty() const {return DirtyState;};
inline VerIterator InstVerIter(pkgCache &Cache)
{return VerIterator(Cache,InstallVer);};
inline VerIterator CandidateVerIter(pkgCache &Cache)
@@ -189,9 +194,14 @@ class pkgDepCache : protected pkgCache::Namespace
unsigned long Depth = 0);
void SetReInstall(PkgIterator const &Pkg,bool To);
void SetCandidateVersion(VerIterator TargetVer);
+ void SetDirty(PkgIterator const &Pkg, pkgCache::State::PkgRemoveState To);
// 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/packagemanager.cc b/apt-pkg/packagemanager.cc
index a08ccd602..a97c94fdf 100644
--- a/apt-pkg/packagemanager.cc
+++ b/apt-pkg/packagemanager.cc
@@ -637,6 +637,11 @@ pkgPackageManager::OrderResult pkgPackageManager::DoInstall()
if (Res != Failed)
if (Go() == false)
return Failed;
+
+ // if all was fine update the state file
+ if(Res == Completed)
+ Cache.writeStateFile(NULL);
+
return Res;
}
/*}}}*/
diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h
index b07951dfb..083f20ac2 100644
--- a/apt-pkg/pkgcache.h
+++ b/apt-pkg/pkgcache.h
@@ -75,6 +75,7 @@ class pkgCache
enum PkgInstState {Ok=0,ReInstReq=1,HoldInst=2,HoldReInstReq=3};
enum PkgCurrentState {NotInstalled=0,UnPacked=1,HalfConfigured=2,
HalfInstalled=4,ConfigFiles=5,Installed=6};
+ enum PkgRemoveState {RemoveUnknown=0, RemoveManual=1,RemoveSuggested=2,RemoveRecommended=3,RemoveRequired=4};
};
struct Flag
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..3bafd42ba 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)
+{
+ 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].Dirty() &&
+ (Pkg->CurrentVer != 0 && Cache[Pkg].Install() == false &&
+ Cache[Pkg].Delete() == false))
+ {
+ fprintf(stdout,"We could delete %s %d\n",
+ Pkg.Name(), Cache[Pkg].AutomaticRemove);
+ 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,"experimental-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 767399b52..806e4b6ef 100644
--- a/configure.in
+++ b/configure.in
@@ -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 57b746a56..7717705d3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -13,6 +13,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/apt_preferences.5.xml b/doc/apt_preferences.5.xml
index 3e50bef8c..12b03196a 100644
--- a/doc/apt_preferences.5.xml
+++ b/doc/apt_preferences.5.xml
@@ -183,7 +183,7 @@ belonging to any distribution whose Archive name is "<literal>unstable</literal>
<programlisting>
Package: *
Pin: release a=unstable
-Pin-Priority: 50
+Pin-Priority: 500
</programlisting>
<simpara>The following record assigns a high priority to all package versions
diff --git a/doc/fr/makefile b/doc/fr/makefile
index 6544ee9e0..c0e7fa7ed 100644
--- a/doc/fr/makefile
+++ b/doc/fr/makefile
@@ -8,6 +8,48 @@ include ../../buildlib/defaults.mak
# Man pages
SOURCE = apt-cache.fr.8 apt-get.fr.8 apt-cdrom.fr.8 apt.conf.fr.5 \
sources.list.fr.5 apt-config.fr.8 apt-sortpkgs.fr.1 \
- apt-ftparchive.fr.1 apt_preferences.fr.5 apt-extracttemplates.fr.1
+ apt-ftparchive.fr.1 apt_preferences.fr.5 apt-extracttemplates.fr.1 \
+ apt-key.fr.8
+
INCLUDES = apt.ent.fr
-include $(XML_MANPAGE_H)
+
+doc: $(SOURCE)
+
+$(SOURCE) :: % : %.xml $(INCLUDES)
+ echo Creating man page $@
+ $(XMLTO) man $<
+
+apt-cache.fr.8:: apt-cache.8
+ cp $< $@
+
+apt-get.fr.8:: apt-get.8
+ cp $< $@
+
+apt-cdrom.fr.8:: apt-cdrom.8
+ cp $< $@
+
+apt.conf.fr.5:: apt.conf.5
+ cp $< $@
+
+apt-config.fr.8:: apt-config.8
+ cp $< $@
+
+sources.list.fr.5:: sources.list.5
+ cp $< $@
+
+apt-sortpkgs.fr.1:: apt-sortpkgs.1
+ cp $< $@
+
+apt-ftparchive.fr.1:: apt-ftparchive.1
+ cp $< $@
+
+apt_preferences.fr.5:: apt_preferences.5
+ cp $< $@
+
+apt-extracttemplates.fr.1:: apt-extracttemplates.1
+ cp $< $@
+
+apt-key.fr.8:: apt-key.8
+ cp $< $@
+
+
diff --git a/po/apt-all.pot b/po/apt-all.pot
index 3936f3f16..ff044cf6c 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-05-09 19:02+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:2438 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr ""
@@ -523,7 +523,7 @@ msgstr ""
msgid "Y"
msgstr ""
-#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1484
+#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1594
#, c-format
msgid "Regex compilation error - %s"
msgstr ""
@@ -670,11 +670,11 @@ msgstr ""
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:788 cmdline/apt-get.cc:1894 cmdline/apt-get.cc:1927
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:798 cmdline/apt-get.cc:1975 cmdline/apt-get.cc:2186
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr ""
@@ -728,7 +728,7 @@ msgstr ""
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:958 cmdline/apt-get.cc:1334 cmdline/apt-get.cc:2084
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
@@ -737,7 +737,7 @@ msgstr ""
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:977 cmdline/apt-get.cc:1977
+#: cmdline/apt-get.cc:977 cmdline/apt-get.cc:2093
msgid "Download complete and in download only mode"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1295 cmdline/apt-get.cc:1389
+#: cmdline/apt-get.cc:1295
msgid "Unable to lock the list directory"
msgstr ""
@@ -847,27 +847,45 @@ msgstr ""
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1471 cmdline/apt-get.cc:1507
+#: cmdline/apt-get.cc:1464
+msgid "We are not supposed to delete stuff, can't start AutoRemover"
+msgstr ""
+
+#: cmdline/apt-get.cc:1485
+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:1488 cmdline/apt-get.cc:1662
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1492
+msgid "Internal Error, AutoRemover broke stuff"
+msgstr ""
+
+#: cmdline/apt-get.cc:1581 cmdline/apt-get.cc:1617
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:1494
+#: cmdline/apt-get.cc:1604
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1524
+#: cmdline/apt-get.cc:1634
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1527
+#: cmdline/apt-get.cc:1637
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:1649
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:1657
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:1665
msgid "Broken packages"
msgstr ""
-#: cmdline/apt-get.cc:1581
+#: cmdline/apt-get.cc:1697
msgid "The following extra packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:1652
+#: cmdline/apt-get.cc:1768
msgid "Suggested packages:"
msgstr ""
-#: cmdline/apt-get.cc:1653
+#: cmdline/apt-get.cc:1769
msgid "Recommended packages:"
msgstr ""
-#: cmdline/apt-get.cc:1673
+#: cmdline/apt-get.cc:1789
msgid "Calculating upgrade... "
msgstr ""
-#: cmdline/apt-get.cc:1676 methods/ftp.cc:702 methods/connect.cc:99
+#: cmdline/apt-get.cc:1792 methods/ftp.cc:702 methods/connect.cc:99
msgid "Failed"
msgstr ""
-#: cmdline/apt-get.cc:1681
+#: cmdline/apt-get.cc:1797
msgid "Done"
msgstr ""
-#: cmdline/apt-get.cc:1854
+#: cmdline/apt-get.cc:1970
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:1997 cmdline/apt-get.cc:2204
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:1928
+#: cmdline/apt-get.cc:2044
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:1933
+#: cmdline/apt-get.cc:2049
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1936
+#: cmdline/apt-get.cc:2052
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1942
+#: cmdline/apt-get.cc:2058
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1973
+#: cmdline/apt-get.cc:2089
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2001
+#: cmdline/apt-get.cc:2117
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2013
+#: cmdline/apt-get.cc:2129
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2030
+#: cmdline/apt-get.cc:2146
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2049
+#: cmdline/apt-get.cc:2165
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2065
+#: cmdline/apt-get.cc:2181
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2093
+#: cmdline/apt-get.cc:2209
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2113
+#: cmdline/apt-get.cc:2229
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2165
+#: cmdline/apt-get.cc:2281
#, 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:2333
#, 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:2368
#, 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:2393
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:2291
+#: cmdline/apt-get.cc:2407
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:2295
+#: cmdline/apt-get.cc:2411
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:2327
+#: cmdline/apt-get.cc:2443
msgid "Supported modules:"
msgstr ""
-#: cmdline/apt-get.cc:2368
+#: cmdline/apt-get.cc:2484
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1561,7 +1575,7 @@ msgstr ""
msgid "Unable to accept connection"
msgstr ""
-#: methods/ftp.cc:864 methods/http.cc:920 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:916 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr ""
@@ -1688,43 +1702,43 @@ msgstr ""
msgid "Unknown date format"
msgstr ""
-#: methods/http.cc:741
+#: methods/http.cc:737
msgid "Select failed"
msgstr ""
-#: methods/http.cc:746
+#: methods/http.cc:742
msgid "Connection timed out"
msgstr ""
-#: methods/http.cc:769
+#: methods/http.cc:765
msgid "Error writing to output file"
msgstr ""
-#: methods/http.cc:797
+#: methods/http.cc:793
msgid "Error writing to file"
msgstr ""
-#: methods/http.cc:822
+#: methods/http.cc:818
msgid "Error writing to the file"
msgstr ""
-#: methods/http.cc:836
+#: methods/http.cc:832
msgid "Error reading from server. Remote end closed connection"
msgstr ""
-#: methods/http.cc:838
+#: methods/http.cc:834
msgid "Error reading from server"
msgstr ""
-#: methods/http.cc:1069
+#: methods/http.cc:1065
msgid "Bad header data"
msgstr ""
-#: methods/http.cc:1086
+#: methods/http.cc:1082
msgid "Connection failed"
msgstr ""
-#: methods/http.cc:1177
+#: methods/http.cc:1173
msgid "Internal error"
msgstr ""
@@ -2007,18 +2021,22 @@ msgstr ""
msgid "extra"
msgstr ""
-#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
+#: apt-pkg/depcache.cc:64 apt-pkg/depcache.cc:95
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:96
msgid "Dependency generation"
msgstr ""
+#: apt-pkg/depcache.cc:461 apt-pkg/depcache.cc:473 apt-pkg/depcache.cc:475
+msgid "Reading extended state information"
+msgstr ""
+
#: apt-pkg/tagfile.cc:73
#, c-format
msgid "Unable to parse package file %s (1)"
diff --git a/po/he.po b/po/he.po
index e2aea1c77..242155eff 100644
--- a/po/he.po
+++ b/po/he.po
@@ -639,8 +639,8 @@ msgstr "לא מצליח לתקן תלויות"
#: cmdline/apt-get.cc:656
msgid "Unable to minimize the upgrade set"
msgstr ""
-+"א ז ה ר ה: החבילות החיוניות הבאות יוסרו\n"
-+"על הפעולה להעשות *רק* אם אתה יודע מה אתה עושה!"
+"א ז ה ר ה: החבילות החיוניות הבאות יוסרו\n"
+"על הפעולה להעשות *רק* אם אתה יודע מה אתה עושה!"
#: cmdline/apt-get.cc:658
msgid " Done"