configure
buildlib/config.sub
buildlib/config.guess
+debian/libapt-pkg[0-9]*.install
+debian/libapt-inst[0-9]*.install
# abichecker related files/dir
abicheck/apt_build.xml
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#endif
class FileFd;
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/dirstream.h>
+#include <algorithm>
+using std::min;
+#endif
+
class pkgDirStream;
class ExtractTar
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/filelist.h>
+#endif
+
class pkgFLCache;
class OpProgress;
#include <apt-pkg/tagfile.h>
#include <apt-pkg/pkgcache.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/database.h>
+#endif
+
class FileFd;
class pkgDataBase;
FileFd fd(CurrentPackagesFile, FileFd::ReadOnly);
SHA1Summation SHA1;
- SHA1.AddFD(fd.Fd(), fd.Size());
+ SHA1.AddFD(fd);
string const local_sha1 = SHA1.Result();
if(local_sha1 == ServerSha1)
FileFd fd(FinalFile, FileFd::ReadOnly);
SHA1Summation SHA1;
- SHA1.AddFD(fd.Fd(), fd.Size());
+ SHA1.AddFD(fd);
string local_sha1 = string(SHA1.Result());
if(Debug)
std::clog << "QueueNextDiff: "
#include <apt-pkg/weakptr.h>
#include <apt-pkg/pkgcache.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/vendor.h>
+#include <apt-pkg/sourcelist.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/indexrecords.h>
+#endif
+
/** \addtogroup acquire
* @{
*
#include <string>
#include <vector>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+#endif
+
class Hashes;
class pkgAcqMethod
{
#include <sys/time.h>
#include <unistd.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::vector;
+using std::string;
+#endif
+
class pkgAcquireStatus;
/** \brief The core download scheduler. {{{
#include <iostream>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/acquire.h>
+using std::ostream;
+#endif
+
class pkgAcquireStatus;
class pkgSimulate : public pkgPackageManager /*{{{*/
#include <apt-pkg/depcache.h>
#include <apt-pkg/macros.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/policy.h>
+#include <apt-pkg/sourcelist.h>
+#endif
+
class pkgPolicy;
class pkgSourceList;
class OpProgress;
/*}}}*/
namespace APT {
// FromTask - Return all packages in the cache from a specific task /*{{{*/
-PackageSet PackageSet::FromTask(pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
+bool PackageContainerInterface::FromTask(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
size_t const archfound = pattern.find_last_of(':');
std::string arch = "native";
if (archfound != std::string::npos) {
}
if (pattern[pattern.length() -1] != '^')
- return APT::PackageSet(TASK);
+ return false;
pattern.erase(pattern.length()-1);
if (unlikely(Cache.GetPkgCache() == 0 || Cache.GetDepCache() == 0))
- return APT::PackageSet(TASK);
+ return false;
+
+ bool const wasEmpty = pci->empty();
+ if (wasEmpty == true)
+ pci->setConstructor(TASK);
- PackageSet pkgset(TASK);
// get the records
pkgRecords Recs(Cache);
snprintf(S, sizeof(S), "^Task:.*[, ]%s([, ]|$)", pattern.c_str());
if(regcomp(&Pattern,S, REG_EXTENDED | REG_NOSUB | REG_NEWLINE) != 0) {
_error->Error("Failed to compile task regexp");
- return pkgset;
+ return false;
}
+ bool found = false;
for (pkgCache::GrpIterator Grp = Cache->GrpBegin(); Grp.end() == false; ++Grp) {
pkgCache::PkgIterator Pkg = Grp.FindPkg(arch);
if (Pkg.end() == true)
if (regexec(&Pattern, buf, 0, 0, 0) != 0)
continue;
- pkgset.insert(Pkg);
+ pci->insert(Pkg);
+ helper.showTaskSelection(Pkg, pattern);
+ found = true;
}
regfree(&Pattern);
- if (pkgset.empty() == true)
- return helper.canNotFindTask(Cache, pattern);
+ if (found == false) {
+ helper.canNotFindTask(pci, Cache, pattern);
+ pci->setConstructor(UNKNOWN);
+ return false;
+ }
+
+ if (wasEmpty == false && pci->getConstructor() != UNKNOWN)
+ pci->setConstructor(UNKNOWN);
- helper.showTaskSelection(pkgset, pattern);
- return pkgset;
+ return true;
}
/*}}}*/
// FromRegEx - Return all packages in the cache matching a pattern /*{{{*/
-PackageSet PackageSet::FromRegEx(pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
+bool PackageContainerInterface::FromRegEx(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
static const char * const isregex = ".?+*|[^$";
if (pattern.find_first_of(isregex) == std::string::npos)
- return PackageSet(REGEX);
+ return false;
+
+ bool const wasEmpty = pci->empty();
+ if (wasEmpty == true)
+ pci->setConstructor(REGEX);
size_t archfound = pattern.find_last_of(':');
std::string arch = "native";
}
if (unlikely(Cache.GetPkgCache() == 0))
- return PackageSet(REGEX);
+ return false;
APT::CacheFilter::PackageNameMatchesRegEx regexfilter(pattern);
- PackageSet pkgset(REGEX);
+ bool found = false;
for (pkgCache::GrpIterator Grp = Cache.GetPkgCache()->GrpBegin(); Grp.end() == false; ++Grp) {
if (regexfilter(Grp) == false)
continue;
continue;
}
- pkgset.insert(Pkg);
+ pci->insert(Pkg);
+ helper.showRegExSelection(Pkg, pattern);
+ found = true;
}
- if (pkgset.empty() == true)
- return helper.canNotFindRegEx(Cache, pattern);
+ if (found == false) {
+ helper.canNotFindRegEx(pci, Cache, pattern);
+ pci->setConstructor(UNKNOWN);
+ return false;
+ }
+
+ if (wasEmpty == false && pci->getConstructor() != UNKNOWN)
+ pci->setConstructor(UNKNOWN);
- helper.showRegExSelection(pkgset, pattern);
- return pkgset;
+ return true;
}
/*}}}*/
// FromName - Returns the package defined by this string /*{{{*/
-pkgCache::PkgIterator PackageSet::FromName(pkgCacheFile &Cache,
+pkgCache::PkgIterator PackageContainerInterface::FromName(pkgCacheFile &Cache,
std::string const &str, CacheSetHelper &helper) {
std::string pkg = str;
size_t archfound = pkg.find_last_of(':');
return Pkg;
}
/*}}}*/
-// GroupedFromCommandLine - Return all versions specified on commandline/*{{{*/
-std::map<unsigned short, PackageSet> PackageSet::GroupedFromCommandLine(
- pkgCacheFile &Cache, const char **cmdline,
- std::list<PackageSet::Modifier> const &mods,
- unsigned short const &fallback, CacheSetHelper &helper) {
- std::map<unsigned short, PackageSet> pkgsets;
- for (const char **I = cmdline; *I != 0; ++I) {
- unsigned short modID = fallback;
- std::string str = *I;
- bool modifierPresent = false;
- for (std::list<PackageSet::Modifier>::const_iterator mod = mods.begin();
- mod != mods.end(); ++mod) {
- size_t const alength = strlen(mod->Alias);
- switch(mod->Pos) {
- case PackageSet::Modifier::POSTFIX:
- if (str.compare(str.length() - alength, alength,
- mod->Alias, 0, alength) != 0)
- continue;
- str.erase(str.length() - alength);
- modID = mod->ID;
- break;
- case PackageSet::Modifier::PREFIX:
- continue;
- case PackageSet::Modifier::NONE:
- continue;
- }
- modifierPresent = true;
- break;
- }
- if (modifierPresent == true) {
- bool const errors = helper.showErrors(false);
- pkgCache::PkgIterator Pkg = FromName(Cache, *I, helper);
- helper.showErrors(errors);
- if (Pkg.end() == false) {
- pkgsets[fallback].insert(Pkg);
- continue;
- }
- }
- pkgsets[modID].insert(PackageSet::FromString(Cache, str, helper));
- }
- return pkgsets;
-}
- /*}}}*/
-// FromCommandLine - Return all packages specified on commandline /*{{{*/
-PackageSet PackageSet::FromCommandLine(pkgCacheFile &Cache, const char **cmdline, CacheSetHelper &helper) {
- PackageSet pkgset;
- for (const char **I = cmdline; *I != 0; ++I) {
- PackageSet pset = FromString(Cache, *I, helper);
- pkgset.insert(pset.begin(), pset.end());
- }
- return pkgset;
-}
- /*}}}*/
// FromString - Return all packages matching a specific string /*{{{*/
-PackageSet PackageSet::FromString(pkgCacheFile &Cache, std::string const &str, CacheSetHelper &helper) {
+bool PackageContainerInterface::FromString(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &str, CacheSetHelper &helper) {
+ bool found = true;
_error->PushToStack();
- PackageSet pkgset;
pkgCache::PkgIterator Pkg = FromName(Cache, str, helper);
if (Pkg.end() == false)
- pkgset.insert(Pkg);
- else {
- pkgset = FromTask(Cache, str, helper);
- if (pkgset.empty() == true) {
- pkgset = FromRegEx(Cache, str, helper);
- if (pkgset.empty() == true)
- pkgset = helper.canNotFindPackage(Cache, str);
- }
+ pci->insert(Pkg);
+ else if (FromTask(pci, Cache, str, helper) == false &&
+ FromRegEx(pci, Cache, str, helper) == false)
+ {
+ helper.canNotFindPackage(pci, Cache, str);
+ found = false;
}
- if (pkgset.empty() == false)
+ if (found == true)
_error->RevertToStack();
else
_error->MergeWithStack();
- return pkgset;
+ return found;
}
/*}}}*/
-// GroupedFromCommandLine - Return all versions specified on commandline/*{{{*/
-std::map<unsigned short, VersionSet> VersionSet::GroupedFromCommandLine(
- pkgCacheFile &Cache, const char **cmdline,
- std::list<VersionSet::Modifier> const &mods,
- unsigned short const &fallback, CacheSetHelper &helper) {
- std::map<unsigned short, VersionSet> versets;
- for (const char **I = cmdline; *I != 0; ++I) {
- unsigned short modID = fallback;
- VersionSet::Version select = VersionSet::NEWEST;
- std::string str = *I;
- bool modifierPresent = false;
- for (std::list<VersionSet::Modifier>::const_iterator mod = mods.begin();
- mod != mods.end(); ++mod) {
- if (modID == fallback && mod->ID == fallback)
- select = mod->SelectVersion;
- size_t const alength = strlen(mod->Alias);
- switch(mod->Pos) {
- case VersionSet::Modifier::POSTFIX:
- if (str.compare(str.length() - alength, alength,
- mod->Alias, 0, alength) != 0)
- continue;
- str.erase(str.length() - alength);
- modID = mod->ID;
- select = mod->SelectVersion;
- break;
- case VersionSet::Modifier::PREFIX:
- continue;
- case VersionSet::Modifier::NONE:
+// FromCommandLine - Return all packages specified on commandline /*{{{*/
+bool PackageContainerInterface::FromCommandLine(PackageContainerInterface * const pci, pkgCacheFile &Cache, const char **cmdline, CacheSetHelper &helper) {
+ bool found = false;
+ for (const char **I = cmdline; *I != 0; ++I)
+ found |= PackageContainerInterface::FromString(pci, Cache, *I, helper);
+ return found;
+}
+ /*}}}*/
+// FromModifierCommandLine - helper doing the work for PKG:GroupedFromCommandLine /*{{{*/
+bool PackageContainerInterface::FromModifierCommandLine(unsigned short &modID, PackageContainerInterface * const pci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<Modifier> const &mods, CacheSetHelper &helper) {
+ std::string str = cmdline;
+ bool modifierPresent = false;
+ for (std::list<Modifier>::const_iterator mod = mods.begin();
+ mod != mods.end(); ++mod) {
+ size_t const alength = strlen(mod->Alias);
+ switch(mod->Pos) {
+ case Modifier::POSTFIX:
+ if (str.compare(str.length() - alength, alength,
+ mod->Alias, 0, alength) != 0)
continue;
- }
- modifierPresent = true;
+ str.erase(str.length() - alength);
+ modID = mod->ID;
break;
+ case Modifier::PREFIX:
+ continue;
+ case Modifier::NONE:
+ continue;
}
-
- if (modifierPresent == true) {
- bool const errors = helper.showErrors(false);
- VersionSet const vset = VersionSet::FromString(Cache, std::string(*I), select, helper, true);
- helper.showErrors(errors);
- if (vset.empty() == false) {
- versets[fallback].insert(vset);
+ modifierPresent = true;
+ break;
+ }
+ if (modifierPresent == true) {
+ bool const errors = helper.showErrors(false);
+ pkgCache::PkgIterator Pkg = FromName(Cache, cmdline, helper);
+ helper.showErrors(errors);
+ if (Pkg.end() == false) {
+ pci->insert(Pkg);
+ return true;
+ }
+ }
+ return FromString(pci, Cache, str, helper);
+}
+ /*}}}*/
+// FromModifierCommandLine - helper doing the work for VER:GroupedFromCommandLine /*{{{*/
+bool VersionContainerInterface::FromModifierCommandLine(unsigned short &modID,
+ VersionContainerInterface * const vci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<Modifier> const &mods,
+ CacheSetHelper &helper) {
+ Version select = NEWEST;
+ std::string str = cmdline;
+ bool modifierPresent = false;
+ unsigned short fallback = modID;
+ for (std::list<Modifier>::const_iterator mod = mods.begin();
+ mod != mods.end(); ++mod) {
+ if (modID == fallback && mod->ID == fallback)
+ select = mod->SelectVersion;
+ size_t const alength = strlen(mod->Alias);
+ switch(mod->Pos) {
+ case Modifier::POSTFIX:
+ if (str.compare(str.length() - alength, alength,
+ mod->Alias, 0, alength) != 0)
continue;
- }
+ str.erase(str.length() - alength);
+ modID = mod->ID;
+ select = mod->SelectVersion;
+ break;
+ case Modifier::PREFIX:
+ continue;
+ case Modifier::NONE:
+ continue;
}
- versets[modID].insert(VersionSet::FromString(Cache, str, select , helper));
+ modifierPresent = true;
+ break;
}
- return versets;
+
+ if (modifierPresent == true) {
+ bool const errors = helper.showErrors(false);
+ bool const found = VersionContainerInterface::FromString(vci, Cache, cmdline, select, helper, true);
+ helper.showErrors(errors);
+ if (found == true)
+ return true;
+ }
+ return FromString(vci, Cache, str, select, helper);
}
/*}}}*/
// FromCommandLine - Return all versions specified on commandline /*{{{*/
-APT::VersionSet VersionSet::FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
- APT::VersionSet::Version const &fallback, CacheSetHelper &helper) {
- VersionSet verset;
+bool VersionContainerInterface::FromCommandLine(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache, const char **cmdline,
+ Version const &fallback, CacheSetHelper &helper) {
+ bool found = false;
for (const char **I = cmdline; *I != 0; ++I)
- verset.insert(VersionSet::FromString(Cache, *I, fallback, helper));
- return verset;
+ found |= VersionContainerInterface::FromString(vci, Cache, *I, fallback, helper);
+ return found;
}
/*}}}*/
// FromString - Returns all versions spedcified by a string /*{{{*/
-APT::VersionSet VersionSet::FromString(pkgCacheFile &Cache, std::string pkg,
- APT::VersionSet::Version const &fallback, CacheSetHelper &helper,
- bool const &onlyFromName) {
+bool VersionContainerInterface::FromString(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache, std::string pkg,
+ Version const &fallback, CacheSetHelper &helper,
+ bool const onlyFromName) {
std::string ver;
bool verIsRel = false;
size_t const vertag = pkg.find_last_of("/=");
}
PackageSet pkgset;
if (onlyFromName == false)
- pkgset = PackageSet::FromString(Cache, pkg, helper);
+ PackageContainerInterface::FromString(&pkgset, Cache, pkg, helper);
else {
- pkgset.insert(PackageSet::FromName(Cache, pkg, helper));
+ pkgset.insert(PackageContainerInterface::FromName(Cache, pkg, helper));
}
- VersionSet verset;
bool errors = true;
if (pkgset.getConstructor() != PackageSet::UNKNOWN)
errors = helper.showErrors(false);
+
+ bool found = false;
for (PackageSet::const_iterator P = pkgset.begin();
P != pkgset.end(); ++P) {
if (vertag == std::string::npos) {
- verset.insert(VersionSet::FromPackage(Cache, P, fallback, helper));
+ found |= VersionContainerInterface::FromPackage(vci, Cache, P, fallback, helper);
continue;
}
pkgCache::VerIterator V;
if (V.end() == true)
continue;
helper.showSelectedVersion(P, V, ver, verIsRel);
- verset.insert(V);
+ vci->insert(V);
+ found = true;
}
if (pkgset.getConstructor() != PackageSet::UNKNOWN)
helper.showErrors(errors);
- return verset;
+ return found;
}
/*}}}*/
// FromPackage - versions from package based on fallback /*{{{*/
-VersionSet VersionSet::FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
- VersionSet::Version const &fallback, CacheSetHelper &helper) {
- VersionSet verset;
+bool VersionContainerInterface::FromPackage(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &P,
+ Version const &fallback,
+ CacheSetHelper &helper) {
pkgCache::VerIterator V;
bool showErrors;
+ bool found = false;
switch(fallback) {
- case VersionSet::ALL:
+ case ALL:
if (P->VersionList != 0)
for (V = P.VersionList(); V.end() != true; ++V)
- verset.insert(V);
+ found |= vci->insert(V);
else
- verset.insert(helper.canNotFindAllVer(Cache, P));
+ helper.canNotFindAllVer(vci, Cache, P);
break;
- case VersionSet::CANDANDINST:
- verset.insert(getInstalledVer(Cache, P, helper));
- verset.insert(getCandidateVer(Cache, P, helper));
+ case CANDANDINST:
+ found |= vci->insert(getInstalledVer(Cache, P, helper));
+ found |= vci->insert(getCandidateVer(Cache, P, helper));
break;
- case VersionSet::CANDIDATE:
- verset.insert(getCandidateVer(Cache, P, helper));
+ case CANDIDATE:
+ found |= vci->insert(getCandidateVer(Cache, P, helper));
break;
- case VersionSet::INSTALLED:
- verset.insert(getInstalledVer(Cache, P, helper));
+ case INSTALLED:
+ found |= vci->insert(getInstalledVer(Cache, P, helper));
break;
- case VersionSet::CANDINST:
+ case CANDINST:
showErrors = helper.showErrors(false);
V = getCandidateVer(Cache, P, helper);
if (V.end() == true)
V = getInstalledVer(Cache, P, helper);
helper.showErrors(showErrors);
if (V.end() == false)
- verset.insert(V);
+ found |= vci->insert(V);
else
- verset.insert(helper.canNotFindInstCandVer(Cache, P));
+ helper.canNotFindInstCandVer(vci, Cache, P);
break;
- case VersionSet::INSTCAND:
+ case INSTCAND:
showErrors = helper.showErrors(false);
V = getInstalledVer(Cache, P, helper);
if (V.end() == true)
V = getCandidateVer(Cache, P, helper);
helper.showErrors(showErrors);
if (V.end() == false)
- verset.insert(V);
+ found |= vci->insert(V);
else
- verset.insert(helper.canNotFindInstCandVer(Cache, P));
+ helper.canNotFindInstCandVer(vci, Cache, P);
break;
- case VersionSet::NEWEST:
+ case NEWEST:
if (P->VersionList != 0)
- verset.insert(P.VersionList());
+ found |= vci->insert(P.VersionList());
else
- verset.insert(helper.canNotFindNewestVer(Cache, P));
+ helper.canNotFindNewestVer(Cache, P);
break;
}
- return verset;
+ return found;
}
/*}}}*/
// getCandidateVer - Returns the candidate version of the given package /*{{{*/
-pkgCache::VerIterator VersionSet::getCandidateVer(pkgCacheFile &Cache,
+pkgCache::VerIterator VersionContainerInterface::getCandidateVer(pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper) {
pkgCache::VerIterator Cand;
- if (Cache.IsPolicyBuilt() == true || Cache.IsDepCacheBuilt() == false)
- {
+ if (Cache.IsPolicyBuilt() == true || Cache.IsDepCacheBuilt() == false) {
if (unlikely(Cache.GetPolicy() == 0))
return pkgCache::VerIterator(Cache);
Cand = Cache.GetPolicy()->GetCandidateVer(Pkg);
}
/*}}}*/
// getInstalledVer - Returns the installed version of the given package /*{{{*/
-pkgCache::VerIterator VersionSet::getInstalledVer(pkgCacheFile &Cache,
+pkgCache::VerIterator VersionContainerInterface::getInstalledVer(pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper) {
if (Pkg->CurrentVer == 0)
return helper.canNotFindInstalledVer(Cache, Pkg);
return Pkg.CurrentVer();
}
/*}}}*/
+
// canNotFindPkgName - handle the case no package has this name /*{{{*/
pkgCache::PkgIterator CacheSetHelper::canNotFindPkgName(pkgCacheFile &Cache,
std::string const &str) {
}
/*}}}*/
// canNotFindTask - handle the case no package is found for a task /*{{{*/
-PackageSet CacheSetHelper::canNotFindTask(pkgCacheFile &Cache, std::string pattern) {
+void CacheSetHelper::canNotFindTask(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern) {
if (ShowError == true)
_error->Insert(ErrorType, _("Couldn't find task '%s'"), pattern.c_str());
- return PackageSet();
}
/*}}}*/
// canNotFindRegEx - handle the case no package is found by a regex /*{{{*/
-PackageSet CacheSetHelper::canNotFindRegEx(pkgCacheFile &Cache, std::string pattern) {
+void CacheSetHelper::canNotFindRegEx(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern) {
if (ShowError == true)
_error->Insert(ErrorType, _("Couldn't find any package by regex '%s'"), pattern.c_str());
- return PackageSet();
}
/*}}}*/
// canNotFindPackage - handle the case no package is found from a string/*{{{*/
-PackageSet CacheSetHelper::canNotFindPackage(pkgCacheFile &Cache, std::string const &str) {
- return PackageSet();
+void CacheSetHelper::canNotFindPackage(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &str) {
}
/*}}}*/
// canNotFindAllVer /*{{{*/
-VersionSet CacheSetHelper::canNotFindAllVer(pkgCacheFile &Cache,
+void CacheSetHelper::canNotFindAllVer(VersionContainerInterface * const vci, pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg) {
if (ShowError == true)
_error->Insert(ErrorType, _("Can't select versions from package '%s' as it is purely virtual"), Pkg.FullName(true).c_str());
- return VersionSet();
}
/*}}}*/
// canNotFindInstCandVer /*{{{*/
-VersionSet CacheSetHelper::canNotFindInstCandVer(pkgCacheFile &Cache,
+void CacheSetHelper::canNotFindInstCandVer(VersionContainerInterface * const vci, pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg) {
if (ShowError == true)
_error->Insert(ErrorType, _("Can't select installed nor candidate version from package '%s' as it has neither of them"), Pkg.FullName(true).c_str());
- return VersionSet();
}
/*}}}*/
// canNotFindInstCandVer /*{{{*/
-VersionSet CacheSetHelper::canNotFindCandInstVer(pkgCacheFile &Cache,
+void CacheSetHelper::canNotFindCandInstVer(VersionContainerInterface * const vci, pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg) {
if (ShowError == true)
_error->Insert(ErrorType, _("Can't select installed nor candidate version from package '%s' as it has neither of them"), Pkg.FullName(true).c_str());
- return VersionSet();
}
/*}}}*/
// canNotFindNewestVer /*{{{*/
return pkgCache::VerIterator(Cache, 0);
}
/*}}}*/
+// showTaskSelection /*{{{*/
+void CacheSetHelper::showTaskSelection(pkgCache::PkgIterator const &pkg,
+ std::string const &pattern) {
+}
+ /*}}}*/
+// showRegExSelection /*{{{*/
+void CacheSetHelper::showRegExSelection(pkgCache::PkgIterator const &pkg,
+ std::string const &pattern) {
+}
+ /*}}}*/
+// showSelectedVersion /*{{{*/
+void CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const &Pkg,
+ pkgCache::VerIterator const Ver,
+ std::string const &ver,
+ bool const verIsRel) {
+}
+ /*}}}*/
}
#include <list>
#include <map>
#include <set>
+#include <list>
#include <string>
+#include <iterator>
#include <apt-pkg/error.h>
#include <apt-pkg/pkgcache.h>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/cachefile.h>
+#endif
/*}}}*/
class pkgCacheFile;
namespace APT {
-class PackageSet;
-class VersionSet;
+class PackageContainerInterface;
+class VersionContainerInterface;
+
class CacheSetHelper { /*{{{*/
/** \class APT::CacheSetHelper
Simple base class with a lot of virtual methods which can be overridden
printed out.
*/
public: /*{{{*/
- CacheSetHelper(bool const &ShowError = true,
+ CacheSetHelper(bool const ShowError = true,
GlobalError::MsgType ErrorType = GlobalError::ERROR) :
ShowError(ShowError), ErrorType(ErrorType) {};
virtual ~CacheSetHelper() {};
- virtual void showTaskSelection(PackageSet const &pkgset, std::string const &pattern) {};
- virtual void showRegExSelection(PackageSet const &pkgset, std::string const &pattern) {};
+ virtual void showTaskSelection(pkgCache::PkgIterator const &pkg, std::string const &pattern);
+ virtual void showRegExSelection(pkgCache::PkgIterator const &pkg, std::string const &pattern);
virtual void showSelectedVersion(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const Ver,
- std::string const &ver, bool const &verIsRel) {};
+ std::string const &ver, bool const verIsRel);
- virtual pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str);
- virtual PackageSet canNotFindTask(pkgCacheFile &Cache, std::string pattern);
- virtual PackageSet canNotFindRegEx(pkgCacheFile &Cache, std::string pattern);
- virtual PackageSet canNotFindPackage(pkgCacheFile &Cache, std::string const &str);
- virtual VersionSet canNotFindAllVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg);
- virtual VersionSet canNotFindInstCandVer(pkgCacheFile &Cache,
+ virtual void canNotFindTask(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ virtual void canNotFindRegEx(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern);
+ virtual void canNotFindPackage(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &str);
+
+ virtual void canNotFindAllVer(VersionContainerInterface * const vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg);
+ virtual void canNotFindInstCandVer(VersionContainerInterface * const vci, pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg);
- virtual VersionSet canNotFindCandInstVer(pkgCacheFile &Cache,
+ virtual void canNotFindCandInstVer(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg);
+
+ virtual pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str);
virtual pkgCache::VerIterator canNotFindNewestVer(pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg);
virtual pkgCache::VerIterator canNotFindCandidateVer(pkgCacheFile &Cache,
pkgCache::PkgIterator const &Pkg);
bool showErrors() const { return ShowError; };
- bool showErrors(bool const &newValue) { if (ShowError == newValue) return ShowError; else return ((ShowError = newValue) == false); };
+ bool showErrors(bool const newValue) { if (ShowError == newValue) return ShowError; else return ((ShowError = newValue) == false); };
GlobalError::MsgType errorType() const { return ErrorType; };
GlobalError::MsgType errorType(GlobalError::MsgType const &newValue)
{
bool ShowError;
GlobalError::MsgType ErrorType;
}; /*}}}*/
-class PackageSet : public std::set<pkgCache::PkgIterator> { /*{{{*/
-/** \class APT::PackageSet
-
- Simple wrapper around a std::set to provide a similar interface to
- a set of packages as to the complete set of all packages in the
- pkgCache. */
-public: /*{{{*/
- /** \brief smell like a pkgCache::PkgIterator */
- class const_iterator : public std::set<pkgCache::PkgIterator>::const_iterator {/*{{{*/
+class PackageContainerInterface { /*{{{*/
+/** \class PackageContainerInterface
+
+ * Interface ensuring that all operations can be executed on the yet to
+ * define concrete PackageContainer - access to all methods is possible,
+ * but in general the wrappers provided by the PackageContainer template
+ * are nicer to use.
+
+ * This class mostly protects use from the need to write all implementation
+ * of the methods working on containers in the template */
+public:
+ class const_iterator { /*{{{*/
public:
- const_iterator(std::set<pkgCache::PkgIterator>::const_iterator x) :
- std::set<pkgCache::PkgIterator>::const_iterator(x) {}
-
- operator pkgCache::PkgIterator(void) { return **this; }
-
- inline const char *Name() const {return (**this).Name(); }
- inline std::string FullName(bool const &Pretty) const { return (**this).FullName(Pretty); }
- inline std::string FullName() const { return (**this).FullName(); }
- inline const char *Section() const {return (**this).Section(); }
- inline bool Purge() const {return (**this).Purge(); }
- inline const char *Arch() const {return (**this).Arch(); }
- inline pkgCache::GrpIterator Group() const { return (**this).Group(); }
- inline pkgCache::VerIterator VersionList() const { return (**this).VersionList(); }
- inline pkgCache::VerIterator CurrentVer() const { return (**this).CurrentVer(); }
- inline pkgCache::DepIterator RevDependsList() const { return (**this).RevDependsList(); }
- inline pkgCache::PrvIterator ProvidesList() const { return (**this).ProvidesList(); }
- inline pkgCache::PkgIterator::OkState State() const { return (**this).State(); }
- inline const char *CandVersion() const { return (**this).CandVersion(); }
- inline const char *CurVersion() const { return (**this).CurVersion(); }
- inline pkgCache *Cache() const { return (**this).Cache(); };
- inline unsigned long Index() const {return (**this).Index();};
+ virtual pkgCache::PkgIterator getPkg() const = 0;
+ operator pkgCache::PkgIterator(void) const { return getPkg(); }
+
+ inline const char *Name() const {return getPkg().Name(); }
+ inline std::string FullName(bool const Pretty) const { return getPkg().FullName(Pretty); }
+ inline std::string FullName() const { return getPkg().FullName(); }
+ inline const char *Section() const {return getPkg().Section(); }
+ inline bool Purge() const {return getPkg().Purge(); }
+ inline const char *Arch() const {return getPkg().Arch(); }
+ inline pkgCache::GrpIterator Group() const { return getPkg().Group(); }
+ inline pkgCache::VerIterator VersionList() const { return getPkg().VersionList(); }
+ inline pkgCache::VerIterator CurrentVer() const { return getPkg().CurrentVer(); }
+ inline pkgCache::DepIterator RevDependsList() const { return getPkg().RevDependsList(); }
+ inline pkgCache::PrvIterator ProvidesList() const { return getPkg().ProvidesList(); }
+ inline pkgCache::PkgIterator::OkState State() const { return getPkg().State(); }
+ inline const char *CandVersion() const { return getPkg().CandVersion(); }
+ inline const char *CurVersion() const { return getPkg().CurVersion(); }
+ inline pkgCache *Cache() const { return getPkg().Cache(); };
+ inline unsigned long Index() const {return getPkg().Index();};
// we have only valid iterators here
inline bool end() const { return false; };
- friend std::ostream& operator<<(std::ostream& out, const_iterator i) { return operator<<(out, (*i)); }
+ inline pkgCache::Package const * operator->() const {return &*getPkg();};
+ };
+ /*}}}*/
+
+ virtual bool insert(pkgCache::PkgIterator const &P) = 0;
+ virtual bool empty() const = 0;
+ virtual void clear() = 0;
+
+ enum Constructor { UNKNOWN, REGEX, TASK };
+ virtual void setConstructor(Constructor const &con) = 0;
+ virtual Constructor getConstructor() const = 0;
+
+ static bool FromTask(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper);
+ static bool FromRegEx(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper);
+ static pkgCache::PkgIterator FromName(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper);
+ static bool FromString(PackageContainerInterface * const pci, pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper);
+ static bool FromCommandLine(PackageContainerInterface * const pci, pkgCacheFile &Cache, const char **cmdline, CacheSetHelper &helper);
+
+ struct Modifier {
+ enum Position { NONE, PREFIX, POSTFIX };
+ unsigned short ID;
+ const char * const Alias;
+ Position Pos;
+ Modifier (unsigned short const &id, const char * const alias, Position const &pos) : ID(id), Alias(alias), Pos(pos) {};
+ };
- inline pkgCache::Package const * operator->() const {
- return &***this;
- };
+ static bool FromModifierCommandLine(unsigned short &modID, PackageContainerInterface * const pci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<Modifier> const &mods, CacheSetHelper &helper);
+};
+ /*}}}*/
+template<class Container> class PackageContainer : public PackageContainerInterface {/*{{{*/
+/** \class APT::PackageContainer
+
+ Simple wrapper around a container class like std::set to provide a similar
+ interface to a set of packages as to the complete set of all packages in the
+ pkgCache. */
+ Container _cont;
+public: /*{{{*/
+ /** \brief smell like a pkgCache::PkgIterator */
+ class const_iterator : public PackageContainerInterface::const_iterator,/*{{{*/
+ public std::iterator<std::forward_iterator_tag, typename Container::const_iterator> {
+ typename Container::const_iterator _iter;
+ public:
+ const_iterator(typename Container::const_iterator i) : _iter(i) {}
+ pkgCache::PkgIterator getPkg(void) const { return *_iter; }
+ inline pkgCache::PkgIterator operator*(void) const { return *_iter; };
+ operator typename Container::const_iterator(void) const { return _iter; }
+ inline const_iterator& operator++() { ++_iter; return *this; }
+ inline const_iterator operator++(int) { const_iterator tmp(*this); operator++(); return tmp; }
+ inline bool operator!=(const_iterator const &i) const { return _iter != i._iter; };
+ inline bool operator==(const_iterator const &i) const { return _iter == i._iter; };
+ friend std::ostream& operator<<(std::ostream& out, const_iterator i) { return operator<<(out, *i); }
+ };
+ class iterator : public PackageContainerInterface::const_iterator,
+ public std::iterator<std::forward_iterator_tag, typename Container::iterator> {
+ typename Container::iterator _iter;
+ public:
+ iterator(typename Container::iterator i) : _iter(i) {}
+ pkgCache::PkgIterator getPkg(void) const { return *_iter; }
+ inline pkgCache::PkgIterator operator*(void) const { return *_iter; };
+ operator typename Container::iterator(void) const { return _iter; }
+ operator typename PackageContainer<Container>::const_iterator() { return PackageContainer<Container>::const_iterator(_iter); }
+ inline iterator& operator++() { ++_iter; return *this; }
+ inline iterator operator++(int) { iterator tmp(*this); operator++(); return tmp; }
+ inline bool operator!=(iterator const &i) const { return _iter != i._iter; };
+ inline bool operator==(iterator const &i) const { return _iter == i._iter; };
+ friend std::ostream& operator<<(std::ostream& out, iterator i) { return operator<<(out, *i); }
};
- // 103. set::iterator is required to be modifiable, but this allows modification of keys
- typedef APT::PackageSet::const_iterator iterator;
/*}}}*/
- using std::set<pkgCache::PkgIterator>::insert;
- inline void insert(pkgCache::PkgIterator const &P) { if (P.end() == false) std::set<pkgCache::PkgIterator>::insert(P); };
- inline void insert(PackageSet const &pkgset) { insert(pkgset.begin(), pkgset.end()); };
+ bool insert(pkgCache::PkgIterator const &P) { if (P.end() == true) return false; _cont.insert(P); return true; };
+ template<class Cont> void insert(PackageContainer<Cont> const &pkgcont) { _cont.insert((typename Cont::const_iterator)pkgcont.begin(), (typename Cont::const_iterator)pkgcont.end()); };
+ void insert(const_iterator begin, const_iterator end) { _cont.insert(begin, end); };
+
+ bool empty() const { return _cont.empty(); };
+ void clear() { return _cont.clear(); };
+ void erase(iterator position) { _cont.erase((typename Container::iterator)position); };
+ size_t erase(const pkgCache::PkgIterator x) { return _cont.erase(x); };
+ void erase(iterator first, iterator last) { _cont.erase(first, last); };
+ size_t size() const { return _cont.size(); };
+
+ const_iterator begin() const { return const_iterator(_cont.begin()); };
+ const_iterator end() const { return const_iterator(_cont.end()); };
+ iterator begin() { return iterator(_cont.begin()); };
+ iterator end() { return iterator(_cont.end()); };
+ const_iterator find(pkgCache::PkgIterator const &P) const { return const_iterator(_cont.find(P)); };
+
+ void setConstructor(Constructor const &by) { ConstructedBy = by; };
+ Constructor getConstructor() const { return ConstructedBy; };
+
+ PackageContainer() : ConstructedBy(UNKNOWN) {};
+ PackageContainer(Constructor const &by) : ConstructedBy(by) {};
/** \brief returns all packages in the cache who belong to the given task
\param Cache the packages are in
\param pattern name of the task
\param helper responsible for error and message handling */
- static APT::PackageSet FromTask(pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper);
- static APT::PackageSet FromTask(pkgCacheFile &Cache, std::string const &pattern) {
+ static PackageContainer FromTask(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ PackageContainer cont(TASK);
+ PackageContainerInterface::FromTask(&cont, Cache, pattern, helper);
+ return cont;
+ }
+ static PackageContainer FromTask(pkgCacheFile &Cache, std::string const &pattern) {
CacheSetHelper helper;
return FromTask(Cache, pattern, helper);
}
\param Cache the packages are in
\param pattern regular expression for package names
\param helper responsible for error and message handling */
- static APT::PackageSet FromRegEx(pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper);
- static APT::PackageSet FromRegEx(pkgCacheFile &Cache, std::string const &pattern) {
+ static PackageContainer FromRegEx(pkgCacheFile &Cache, std::string pattern, CacheSetHelper &helper) {
+ PackageContainer cont(REGEX);
+ PackageContainerInterface::FromRegEx(&cont, Cache, pattern, helper);
+ return cont;
+ }
+
+ static PackageContainer FromRegEx(pkgCacheFile &Cache, std::string const &pattern) {
CacheSetHelper helper;
return FromRegEx(Cache, pattern, helper);
}
- /** \brief returns all packages specified by a string
+ /** \brief returns a package specified by a string
- \param Cache the packages are in
- \param string String the package name(s) should be extracted from
+ \param Cache the package is in
+ \param pattern String the package name should be extracted from
\param helper responsible for error and message handling */
- static APT::PackageSet FromString(pkgCacheFile &Cache, std::string const &string, CacheSetHelper &helper);
- static APT::PackageSet FromString(pkgCacheFile &Cache, std::string const &string) {
+ static pkgCache::PkgIterator FromName(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ return PackageContainerInterface::FromName(Cache, pattern, helper);
+ }
+ static pkgCache::PkgIterator FromName(pkgCacheFile &Cache, std::string const &pattern) {
CacheSetHelper helper;
- return FromString(Cache, string, helper);
+ return PackageContainerInterface::FromName(Cache, pattern, helper);
}
- /** \brief returns a package specified by a string
+ /** \brief returns all packages specified by a string
- \param Cache the package is in
- \param string String the package name should be extracted from
+ \param Cache the packages are in
+ \param pattern String the package name(s) should be extracted from
\param helper responsible for error and message handling */
- static pkgCache::PkgIterator FromName(pkgCacheFile &Cache, std::string const &string, CacheSetHelper &helper);
- static pkgCache::PkgIterator FromName(pkgCacheFile &Cache, std::string const &string) {
+ static PackageContainer FromString(pkgCacheFile &Cache, std::string const &pattern, CacheSetHelper &helper) {
+ PackageContainer cont;
+ PackageContainerInterface::FromString(&cont, Cache, pattern, helper);
+ return cont;
+ }
+ static PackageContainer FromString(pkgCacheFile &Cache, std::string const &pattern) {
CacheSetHelper helper;
- return FromName(Cache, string, helper);
+ return FromString(Cache, pattern, helper);
}
/** \brief returns all packages specified on the commandline
\param Cache the packages are in
\param cmdline Command line the package names should be extracted from
\param helper responsible for error and message handling */
- static APT::PackageSet FromCommandLine(pkgCacheFile &Cache, const char **cmdline, CacheSetHelper &helper);
- static APT::PackageSet FromCommandLine(pkgCacheFile &Cache, const char **cmdline) {
+ static PackageContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline, CacheSetHelper &helper) {
+ PackageContainer cont;
+ PackageContainerInterface::FromCommandLine(&cont, Cache, cmdline, helper);
+ return cont;
+ }
+ static PackageContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline) {
CacheSetHelper helper;
return FromCommandLine(Cache, cmdline, helper);
}
- struct Modifier {
- enum Position { NONE, PREFIX, POSTFIX };
- unsigned short ID;
- const char * const Alias;
- Position Pos;
- Modifier (unsigned short const &id, const char * const alias, Position const &pos) : ID(id), Alias(alias), Pos(pos) {};
- };
-
/** \brief group packages by a action modifiers
At some point it is needed to get from the same commandline
\param mods list of modifiers the method should accept
\param fallback the default modifier group for a package
\param helper responsible for error and message handling */
- static std::map<unsigned short, PackageSet> GroupedFromCommandLine(
- pkgCacheFile &Cache, const char **cmdline,
- std::list<PackageSet::Modifier> const &mods,
- unsigned short const &fallback, CacheSetHelper &helper);
- static std::map<unsigned short, PackageSet> GroupedFromCommandLine(
- pkgCacheFile &Cache, const char **cmdline,
- std::list<PackageSet::Modifier> const &mods,
- unsigned short const &fallback) {
+ static std::map<unsigned short, PackageContainer> GroupedFromCommandLine(
+ pkgCacheFile &Cache,
+ const char **cmdline,
+ std::list<Modifier> const &mods,
+ unsigned short const &fallback,
+ CacheSetHelper &helper) {
+ std::map<unsigned short, PackageContainer> pkgsets;
+ for (const char **I = cmdline; *I != 0; ++I) {
+ unsigned short modID = fallback;
+ PackageContainer pkgset;
+ PackageContainerInterface::FromModifierCommandLine(modID, &pkgset, Cache, *I, mods, helper);
+ pkgsets[modID].insert(pkgset);
+ }
+ return pkgsets;
+ }
+ static std::map<unsigned short, PackageContainer> GroupedFromCommandLine(
+ pkgCacheFile &Cache,
+ const char **cmdline,
+ std::list<Modifier> const &mods,
+ unsigned short const &fallback) {
CacheSetHelper helper;
return GroupedFromCommandLine(Cache, cmdline,
mods, fallback, helper);
}
-
- enum Constructor { UNKNOWN, REGEX, TASK };
- Constructor getConstructor() const { return ConstructedBy; };
-
- PackageSet() : ConstructedBy(UNKNOWN) {};
- PackageSet(Constructor const &by) : ConstructedBy(by) {};
/*}}}*/
private: /*{{{*/
Constructor ConstructedBy;
/*}}}*/
}; /*}}}*/
-class VersionSet : public std::set<pkgCache::VerIterator> { /*{{{*/
-/** \class APT::VersionSet
- Simple wrapper around a std::set to provide a similar interface to
- a set of versions as to the complete set of all versions in the
- pkgCache. */
-public: /*{{{*/
+template<> template<class Cont> void PackageContainer<std::list<pkgCache::PkgIterator> >::insert(PackageContainer<Cont> const &pkgcont) {
+ for (typename PackageContainer<Cont>::const_iterator p = pkgcont.begin(); p != pkgcont.end(); ++p)
+ _cont.push_back(*p);
+};
+// these two are 'inline' as otherwise the linker has problems with seeing these untemplated
+// specializations again and again - but we need to see them, so that library users can use them
+template<> inline bool PackageContainer<std::list<pkgCache::PkgIterator> >::insert(pkgCache::PkgIterator const &P) {
+ if (P.end() == true)
+ return false;
+ _cont.push_back(P);
+ return true;
+};
+template<> inline void PackageContainer<std::list<pkgCache::PkgIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator p = begin; p != end; ++p)
+ _cont.push_back(*p);
+};
+typedef PackageContainer<std::set<pkgCache::PkgIterator> > PackageSet;
+typedef PackageContainer<std::list<pkgCache::PkgIterator> > PackageList;
+
+class VersionContainerInterface { /*{{{*/
+/** \class APT::VersionContainerInterface
+
+ Same as APT::PackageContainerInterface, just for Versions */
+public:
/** \brief smell like a pkgCache::VerIterator */
- class const_iterator : public std::set<pkgCache::VerIterator>::const_iterator {/*{{{*/
+ class const_iterator { /*{{{*/
public:
- const_iterator(std::set<pkgCache::VerIterator>::const_iterator x) :
- std::set<pkgCache::VerIterator>::const_iterator(x) {}
-
- operator pkgCache::VerIterator(void) { return **this; }
-
- inline pkgCache *Cache() const { return (**this).Cache(); };
- inline unsigned long Index() const {return (**this).Index();};
+ virtual pkgCache::VerIterator getVer() const = 0;
+ operator pkgCache::VerIterator(void) { return getVer(); }
+
+ inline pkgCache *Cache() const { return getVer().Cache(); };
+ inline unsigned long Index() const {return getVer().Index();};
+ inline int CompareVer(const pkgCache::VerIterator &B) const { return getVer().CompareVer(B); };
+ inline const char *VerStr() const { return getVer().VerStr(); };
+ inline const char *Section() const { return getVer().Section(); };
+ inline const char *Arch() const { return getVer().Arch(); };
+ inline pkgCache::PkgIterator ParentPkg() const { return getVer().ParentPkg(); };
+ inline pkgCache::DescIterator DescriptionList() const { return getVer().DescriptionList(); };
+ inline pkgCache::DescIterator TranslatedDescription() const { return getVer().TranslatedDescription(); };
+ inline pkgCache::DepIterator DependsList() const { return getVer().DependsList(); };
+ inline pkgCache::PrvIterator ProvidesList() const { return getVer().ProvidesList(); };
+ inline pkgCache::VerFileIterator FileList() const { return getVer().FileList(); };
+ inline bool Downloadable() const { return getVer().Downloadable(); };
+ inline const char *PriorityType() const { return getVer().PriorityType(); };
+ inline std::string RelStr() const { return getVer().RelStr(); };
+ inline bool Automatic() const { return getVer().Automatic(); };
+ inline pkgCache::VerFileIterator NewestFile() const { return getVer().NewestFile(); };
// we have only valid iterators here
inline bool end() const { return false; };
- inline pkgCache::Version const * operator->() const {
- return &***this;
- };
-
- inline int CompareVer(const pkgCache::VerIterator &B) const { return (**this).CompareVer(B); };
- inline const char *VerStr() const { return (**this).VerStr(); };
- inline const char *Section() const { return (**this).Section(); };
- inline const char *Arch() const { return (**this).Arch(); };
- inline pkgCache::PkgIterator ParentPkg() const { return (**this).ParentPkg(); };
- inline pkgCache::DescIterator DescriptionList() const { return (**this).DescriptionList(); };
- inline pkgCache::DescIterator TranslatedDescription() const { return (**this).TranslatedDescription(); };
- inline pkgCache::DepIterator DependsList() const { return (**this).DependsList(); };
- inline pkgCache::PrvIterator ProvidesList() const { return (**this).ProvidesList(); };
- inline pkgCache::VerFileIterator FileList() const { return (**this).FileList(); };
- inline bool Downloadable() const { return (**this).Downloadable(); };
- inline const char *PriorityType() const { return (**this).PriorityType(); };
- inline std::string RelStr() const { return (**this).RelStr(); };
- inline bool Automatic() const { return (**this).Automatic(); };
- inline pkgCache::VerFileIterator NewestFile() const { return (**this).NewestFile(); };
+ inline pkgCache::Version const * operator->() const { return &*getVer(); };
};
/*}}}*/
- // 103. set::iterator is required to be modifiable, but this allows modification of keys
- typedef APT::VersionSet::const_iterator iterator;
- using std::set<pkgCache::VerIterator>::insert;
- inline void insert(pkgCache::VerIterator const &V) { if (V.end() == false) std::set<pkgCache::VerIterator>::insert(V); };
- inline void insert(VersionSet const &verset) { insert(verset.begin(), verset.end()); };
+ virtual bool insert(pkgCache::VerIterator const &V) = 0;
+ virtual bool empty() const = 0;
+ virtual void clear() = 0;
/** \brief specifies which version(s) will be returned if non is given */
enum Version {
NEWEST
};
+ struct Modifier {
+ enum Position { NONE, PREFIX, POSTFIX };
+ unsigned short ID;
+ const char * const Alias;
+ Position Pos;
+ Version SelectVersion;
+ Modifier (unsigned short const &id, const char * const alias, Position const &pos,
+ Version const &select) : ID(id), Alias(alias), Pos(pos),
+ SelectVersion(select) {};
+ };
+
+ static bool FromCommandLine(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ const char **cmdline, Version const &fallback,
+ CacheSetHelper &helper);
+
+ static bool FromString(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ std::string pkg, Version const &fallback, CacheSetHelper &helper,
+ bool const onlyFromName = false);
+
+ static bool FromPackage(VersionContainerInterface * const vci, pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &P, Version const &fallback,
+ CacheSetHelper &helper);
+
+ static bool FromModifierCommandLine(unsigned short &modID,
+ VersionContainerInterface * const vci,
+ pkgCacheFile &Cache, const char * cmdline,
+ std::list<Modifier> const &mods,
+ CacheSetHelper &helper);
+
+
+ static bool FromDependency(VersionContainerInterface * const vci,
+ pkgCacheFile &Cache,
+ pkgCache::DepIterator const &D,
+ Version const &selector,
+ CacheSetHelper &helper);
+
+protected: /*{{{*/
+
+ /** \brief returns the candidate version of the package
+
+ \param Cache to be used to query for information
+ \param Pkg we want the candidate version from this package */
+ static pkgCache::VerIterator getCandidateVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper);
+
+ /** \brief returns the installed version of the package
+
+ \param Cache to be used to query for information
+ \param Pkg we want the installed version from this package */
+ static pkgCache::VerIterator getInstalledVer(pkgCacheFile &Cache,
+ pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper);
+ /*}}}*/
+};
+ /*}}}*/
+template<class Container> class VersionContainer : public VersionContainerInterface {/*{{{*/
+/** \class APT::VersionContainer
+
+ Simple wrapper around a container class like std::set to provide a similar
+ interface to a set of versions as to the complete set of all versions in the
+ pkgCache. */
+ Container _cont;
+public: /*{{{*/
+ /** \brief smell like a pkgCache::VerIterator */
+ class const_iterator : public VersionContainerInterface::const_iterator,
+ public std::iterator<std::forward_iterator_tag, typename Container::const_iterator> {/*{{{*/
+ typename Container::const_iterator _iter;
+ public:
+ const_iterator(typename Container::const_iterator i) : _iter(i) {}
+ pkgCache::VerIterator getVer(void) const { return *_iter; }
+ inline pkgCache::VerIterator operator*(void) const { return *_iter; };
+ operator typename Container::const_iterator(void) const { return _iter; }
+ inline const_iterator& operator++() { ++_iter; return *this; }
+ inline const_iterator operator++(int) { const_iterator tmp(*this); operator++(); return tmp; }
+ inline bool operator!=(const_iterator const &i) const { return _iter != i._iter; };
+ inline bool operator==(const_iterator const &i) const { return _iter == i._iter; };
+ friend std::ostream& operator<<(std::ostream& out, const_iterator i) { return operator<<(out, *i); }
+ };
+ class iterator : public VersionContainerInterface::const_iterator,
+ public std::iterator<std::forward_iterator_tag, typename Container::iterator> {
+ typename Container::iterator _iter;
+ public:
+ iterator(typename Container::iterator i) : _iter(i) {}
+ pkgCache::VerIterator getVer(void) const { return *_iter; }
+ inline pkgCache::VerIterator operator*(void) const { return *_iter; };
+ operator typename Container::iterator(void) const { return _iter; }
+ operator typename VersionContainer<Container>::const_iterator() { return VersionContainer<Container>::const_iterator(_iter); }
+ inline iterator& operator++() { ++_iter; return *this; }
+ inline iterator operator++(int) { iterator tmp(*this); operator++(); return tmp; }
+ inline bool operator!=(iterator const &i) const { return _iter != i._iter; };
+ inline bool operator==(iterator const &i) const { return _iter == i._iter; };
+ friend std::ostream& operator<<(std::ostream& out, iterator i) { return operator<<(out, *i); }
+ };
+ /*}}}*/
+
+ bool insert(pkgCache::VerIterator const &V) { if (V.end() == true) return false; _cont.insert(V); return true; };
+ template<class Cont> void insert(VersionContainer<Cont> const &vercont) { _cont.insert((typename Cont::const_iterator)vercont.begin(), (typename Cont::const_iterator)vercont.end()); };
+ void insert(const_iterator begin, const_iterator end) { _cont.insert(begin, end); };
+ bool empty() const { return _cont.empty(); };
+ void clear() { return _cont.clear(); };
+ void erase(iterator position) { _cont.erase((typename Container::iterator)position); };
+ size_t erase(const pkgCache::VerIterator x) { return _cont.erase(x); };
+ void erase(iterator first, iterator last) { _cont.erase(first, last); };
+ size_t size() const { return _cont.size(); };
+
+ const_iterator begin() const { return const_iterator(_cont.begin()); };
+ const_iterator end() const { return const_iterator(_cont.end()); };
+ iterator begin() { return iterator(_cont.begin()); };
+ iterator end() { return iterator(_cont.end()); };
+ const_iterator find(pkgCache::VerIterator const &V) const { return const_iterator(_cont.find(V)); };
+
/** \brief returns all versions specified on the commandline
Get all versions from the commandline, uses given default version if
\param Cache the packages and versions are in
\param cmdline Command line the versions should be extracted from
\param helper responsible for error and message handling */
- static APT::VersionSet FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
- APT::VersionSet::Version const &fallback, CacheSetHelper &helper);
- static APT::VersionSet FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
- APT::VersionSet::Version const &fallback) {
+ static VersionContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
+ Version const &fallback, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromCommandLine(&vercon, Cache, cmdline, fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline,
+ Version const &fallback) {
CacheSetHelper helper;
return FromCommandLine(Cache, cmdline, fallback, helper);
}
- static APT::VersionSet FromCommandLine(pkgCacheFile &Cache, const char **cmdline) {
+ static VersionContainer FromCommandLine(pkgCacheFile &Cache, const char **cmdline) {
return FromCommandLine(Cache, cmdline, CANDINST);
}
- static APT::VersionSet FromString(pkgCacheFile &Cache, std::string pkg,
- APT::VersionSet::Version const &fallback, CacheSetHelper &helper,
- bool const &onlyFromName = false);
- static APT::VersionSet FromString(pkgCacheFile &Cache, std::string pkg,
- APT::VersionSet::Version const &fallback) {
+ static VersionContainer FromString(pkgCacheFile &Cache, std::string const &pkg,
+ Version const &fallback, CacheSetHelper &helper,
+ bool const onlyFromName = false) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromString(&vercon, Cache, pkg, fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromString(pkgCacheFile &Cache, std::string pkg,
+ Version const &fallback) {
CacheSetHelper helper;
return FromString(Cache, pkg, fallback, helper);
}
- static APT::VersionSet FromString(pkgCacheFile &Cache, std::string pkg) {
+ static VersionContainer FromString(pkgCacheFile &Cache, std::string pkg) {
return FromString(Cache, pkg, CANDINST);
}
\param P the package in question
\param fallback the version(s) you want to get
\param helper the helper used for display and error handling */
- static APT::VersionSet FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
- VersionSet::Version const &fallback, CacheSetHelper &helper);
- static APT::VersionSet FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
- APT::VersionSet::Version const &fallback) {
+ static VersionContainer FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
+ Version const &fallback, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromPackage(&vercon, Cache, P, fallback, helper);
+ return vercon;
+ }
+ static VersionContainer FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P,
+ Version const &fallback) {
CacheSetHelper helper;
return FromPackage(Cache, P, fallback, helper);
}
- static APT::VersionSet FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P) {
- return FromPackage(Cache, P, CANDINST);
+ static VersionContainer FromPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &P) {
+ return FromPackage(Cache, P, CANDIDATE);
}
- struct Modifier {
- enum Position { NONE, PREFIX, POSTFIX };
- unsigned short ID;
- const char * const Alias;
- Position Pos;
- VersionSet::Version SelectVersion;
- Modifier (unsigned short const &id, const char * const alias, Position const &pos,
- VersionSet::Version const &select) : ID(id), Alias(alias), Pos(pos),
- SelectVersion(select) {};
- };
+ static std::map<unsigned short, VersionContainer> GroupedFromCommandLine(
+ pkgCacheFile &Cache,
+ const char **cmdline,
+ std::list<Modifier> const &mods,
+ unsigned short const fallback,
+ CacheSetHelper &helper) {
+ std::map<unsigned short, VersionContainer> versets;
+ for (const char **I = cmdline; *I != 0; ++I) {
+ unsigned short modID = fallback;
+ VersionContainer verset;
+ VersionContainerInterface::FromModifierCommandLine(modID, &verset, Cache, *I, mods, helper);
+ versets[modID].insert(verset);
+ }
+ return versets;
- static std::map<unsigned short, VersionSet> GroupedFromCommandLine(
- pkgCacheFile &Cache, const char **cmdline,
- std::list<VersionSet::Modifier> const &mods,
- unsigned short const &fallback, CacheSetHelper &helper);
- static std::map<unsigned short, VersionSet> GroupedFromCommandLine(
+ }
+ static std::map<unsigned short, VersionContainer> GroupedFromCommandLine(
pkgCacheFile &Cache, const char **cmdline,
- std::list<VersionSet::Modifier> const &mods,
- unsigned short const &fallback) {
+ std::list<Modifier> const &mods,
+ unsigned short const fallback) {
CacheSetHelper helper;
return GroupedFromCommandLine(Cache, cmdline,
mods, fallback, helper);
}
- /*}}}*/
-protected: /*{{{*/
- /** \brief returns the candidate version of the package
-
- \param Cache to be used to query for information
- \param Pkg we want the candidate version from this package */
- static pkgCache::VerIterator getCandidateVer(pkgCacheFile &Cache,
- pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper);
-
- /** \brief returns the installed version of the package
-
- \param Cache to be used to query for information
- \param Pkg we want the installed version from this package */
- static pkgCache::VerIterator getInstalledVer(pkgCacheFile &Cache,
- pkgCache::PkgIterator const &Pkg, CacheSetHelper &helper);
+ static VersionContainer FromDependency(pkgCacheFile &Cache, pkgCache::DepIterator const &D,
+ Version const &selector, CacheSetHelper &helper) {
+ VersionContainer vercon;
+ VersionContainerInterface::FromDependency(&vercon, Cache, D, selector, helper);
+ return vercon;
+ }
+ static VersionContainer FromDependency(pkgCacheFile &Cache, pkgCache::DepIterator const &D,
+ Version const &selector) {
+ CacheSetHelper helper;
+ return FromPackage(Cache, D, selector, helper);
+ }
+ static VersionContainer FromDependency(pkgCacheFile &Cache, pkgCache::DepIterator const &D) {
+ return FromPackage(Cache, D, CANDIDATE);
+ }
/*}}}*/
}; /*}}}*/
+
+template<> template<class Cont> void VersionContainer<std::list<pkgCache::VerIterator> >::insert(VersionContainer<Cont> const &vercont) {
+ for (typename VersionContainer<Cont>::const_iterator v = vercont.begin(); v != vercont.end(); ++v)
+ _cont.push_back(*v);
+};
+// these two are 'inline' as otherwise the linker has problems with seeing these untemplated
+// specializations again and again - but we need to see them, so that library users can use them
+template<> inline bool VersionContainer<std::list<pkgCache::VerIterator> >::insert(pkgCache::VerIterator const &V) {
+ if (V.end() == true)
+ return false;
+ _cont.push_back(V);
+ return true;
+};
+template<> inline void VersionContainer<std::list<pkgCache::VerIterator> >::insert(const_iterator begin, const_iterator end) {
+ for (const_iterator v = begin; v != end; ++v)
+ _cont.push_back(*v);
+};
+typedef VersionContainer<std::set<pkgCache::VerIterator> > VersionSet;
+typedef VersionContainer<std::list<pkgCache::VerIterator> > VersionList;
}
#endif
return _error->Errno("chdir","Unable to change to %s",CD.c_str());
// Look for a .disk subdirectory
- struct stat Buf;
- if (stat(".disk",&Buf) == 0)
+ if (DirectoryExists(".disk") == true)
{
if (InfoDir.empty() == true)
InfoDir = CD + ".disk/";
}
// Don't look into directories that have been marked to ingore.
- if (stat(".aptignr",&Buf) == 0)
+ if (RealFileExists(".aptignr") == true)
return true;
-
/* Check _first_ for a signature file as apt-cdrom assumes that all files
under a Packages/Source file are in control of that file and stops
the scanning
*/
- if (stat("Release.gpg",&Buf) == 0)
+ if (RealFileExists("Release.gpg") == true || RealFileExists("InRelease") == true)
{
SigList.push_back(CD);
}
+
/* Aha! We found some package files. We assume that everything under
this dir is controlled by those package files so we don't look down
anymore */
- if (stat("Packages",&Buf) == 0 || stat("Packages.gz",&Buf) == 0)
+ std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
{
+ if (RealFileExists(std::string("Packages").append(c->Extension).c_str()) == false)
+ continue;
+
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ std::clog << "Found Packages in " << CD << std::endl;
List.push_back(CD);
-
+
// Continue down if thorough is given
if (_config->FindB("APT::CDROM::Thorough",false) == false)
return true;
+ break;
}
- if (stat("Sources.gz",&Buf) == 0 || stat("Sources",&Buf) == 0)
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
{
+ if (RealFileExists(std::string("Sources").append(c->Extension).c_str()) == false)
+ continue;
+
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ std::clog << "Found Sources in " << CD << std::endl;
SList.push_back(CD);
-
+
// Continue down if thorough is given
if (_config->FindB("APT::CDROM::Thorough",false) == false)
return true;
+ break;
}
- // see if we find translatin indexes
- if (stat("i18n",&Buf) == 0)
+ // see if we find translation indices
+ if (DirectoryExists("i18n") == true)
{
D = opendir("i18n");
for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
{
- if(strstr(Dir->d_name,"Translation") != NULL)
+ if(strncmp(Dir->d_name, "Translation-", strlen("Translation-")) != 0)
+ continue;
+ string file = Dir->d_name;
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
{
- if (_config->FindB("Debug::aptcdrom",false) == true)
- std::clog << "found translations: " << Dir->d_name << "\n";
- string file = Dir->d_name;
- if(file.substr(file.size()-3,file.size()) == ".gz")
- file = file.substr(0,file.size()-3);
- TransList.push_back(CD+"i18n/"+ file);
+ string fileext = flExtension(file);
+ if (file == fileext)
+ fileext.clear();
+ else if (fileext.empty() == false)
+ fileext = "." + fileext;
+
+ if (c->Extension == fileext)
+ {
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ std::clog << "Found translation " << Dir->d_name << " in " << CD << "i18n/" << std::endl;
+ file.erase(file.size() - fileext.size());
+ TransList.push_back(CD + "i18n/" + file);
+ break;
+ }
}
}
closedir(D);
}
-
D = opendir(".");
if (D == 0)
return _error->Errno("opendir","Unable to read %s",CD.c_str());
/* Here we go and stat every file that we found and strip dup inodes. */
bool pkgCdrom::DropRepeats(vector<string> &List,const char *Name)
{
+ bool couldFindAllFiles = true;
// Get a list of all the inodes
ino_t *Inodes = new ino_t[List.size()];
- for (unsigned int I = 0; I != List.size(); I++)
+ for (unsigned int I = 0; I != List.size(); ++I)
{
struct stat Buf;
- if (stat((List[I] + Name).c_str(),&Buf) != 0 &&
- stat((List[I] + Name + ".gz").c_str(),&Buf) != 0)
- _error->Errno("stat","Failed to stat %s%s",List[I].c_str(),
- Name);
- Inodes[I] = Buf.st_ino;
- }
-
- if (_error->PendingError() == true) {
- delete[] Inodes;
- return false;
+ bool found = false;
+
+ std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ std::string filename = std::string(List[I]).append(Name).append(c->Extension);
+ if (stat(filename.c_str(), &Buf) != 0)
+ continue;
+ Inodes[I] = Buf.st_ino;
+ found = true;
+ break;
+ }
+
+ if (found == false)
+ {
+ _error->Errno("stat","Failed to stat %s%s",List[I].c_str(), Name);
+ couldFindAllFiles = false;
+ Inodes[I] = 0;
+ }
}
-
+
// Look for dups
for (unsigned int I = 0; I != List.size(); I++)
{
+ if (Inodes[I] == 0)
+ continue;
for (unsigned int J = I+1; J < List.size(); J++)
{
// No match
- if (Inodes[J] != Inodes[I])
+ if (Inodes[J] == 0 || Inodes[J] != Inodes[I])
continue;
// We score the two paths.. and erase one
List.erase(List.begin()+I);
}
- return true;
+ return couldFindAllFiles;
}
/*}}}*/
// ReduceSourceList - Takes the path list and reduces it /*{{{*/
DropBinaryArch(List);
DropRepeats(List,"Packages");
DropRepeats(SourceList,"Sources");
+ // FIXME: We ignore stat() errors here as we usually have only one of those in use
+ // This has little potencial to drop 'valid' stat() errors as we know that one of these
+ // files need to exist, but it would be better if we would check it here
+ _error->PushToStack();
DropRepeats(SigList,"Release.gpg");
+ DropRepeats(SigList,"InRelease");
+ _error->RevertToStack();
DropRepeats(TransList,"");
if(log != NULL) {
msg.str("");
#include<string>
#include<vector>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/init.h>
+using namespace std;
+#endif
+
class Configuration;
class OpProgress;
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
// mount cdrom, DeviceName (e.g. /dev/sr0) is optional
bool MountCdrom(std::string Path, std::string DeviceName="");
bool UnmountCdrom(std::string Path);
#ifndef PKGLIB_CMNDLINE_H
#define PKGLIB_CMNDLINE_H
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/configuration.h>
+#endif
+
class Configuration;
class CommandLine
#include <vector>
#include <iostream>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
class Configuration
{
public:
#include <apt-pkg/strutl.h>
#include <apt-pkg/error.h>
#include <apt-pkg/sptr.h>
+#include <apt-pkg/aptconfiguration.h>
#include <apt-pkg/configuration.h>
#include <cstdlib>
#include <set>
#include <algorithm>
+// FIXME: Compressor Fds have some speed disadvantages and are a bit buggy currently,
+// so while the current implementation satisfies the testcases it is not a real option
+// to disable it for now
+#define APT_USE_ZLIB 1
+#if APT_USE_ZLIB
+#include <zlib.h>
+#else
+#pragma message "Usage of zlib is DISABLED!"
+#endif
+
#ifdef WORDS_BIGENDIAN
#include <inttypes.h>
#endif
using namespace std;
+class FileFdPrivate {
+ public:
+#if APT_USE_ZLIB
+ gzFile gz;
+#else
+ void* gz;
+#endif
+ int compressed_fd;
+ pid_t compressor_pid;
+ bool pipe;
+ APT::Configuration::Compressor compressor;
+ unsigned int openmode;
+ unsigned long long seekpos;
+ FileFdPrivate() : gz(NULL), compressed_fd(-1), compressor_pid(-1), pipe(false),
+ openmode(0), seekpos(0) {};
+};
+
// RunScripts - Run a set of scripts from a configuration subtree /*{{{*/
// ---------------------------------------------------------------------
/* */
// FileFd::Open - Open a file /*{{{*/
// ---------------------------------------------------------------------
/* The most commonly used open mode combinations are given with Mode */
-bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms)
+bool FileFd::Open(string FileName,unsigned int const Mode,CompressMode Compress, unsigned long const Perms)
{
- Close();
- Flags = AutoClose;
- switch (Mode)
+ if (Mode == ReadOnlyGzip)
+ return Open(FileName, ReadOnly, Gzip, Perms);
+
+ if (Compress == Auto && (Mode & WriteOnly) == WriteOnly)
+ return _error->Error("Autodetection on %s only works in ReadOnly openmode!", FileName.c_str());
+
+ // FIXME: Denote inbuilt compressors somehow - as we don't need to have the binaries for them
+ std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
+ std::vector<APT::Configuration::Compressor>::const_iterator compressor = compressors.begin();
+ if (Compress == Auto)
{
- case ReadOnly:
- iFd = open(FileName.c_str(),O_RDONLY);
- break;
-
- case ReadOnlyGzip:
- iFd = open(FileName.c_str(),O_RDONLY);
- if (iFd > 0) {
- gz = gzdopen (iFd, "r");
- if (gz == NULL) {
- close (iFd);
- iFd = -1;
- }
- }
- break;
-
- case WriteAtomic:
+ for (; compressor != compressors.end(); ++compressor)
{
- Flags |= Replace;
- char *name = strdup((FileName + ".XXXXXX").c_str());
- TemporaryFileName = string(mktemp(name));
- iFd = open(TemporaryFileName.c_str(),O_RDWR | O_CREAT | O_EXCL,Perms);
- free(name);
+ std::string file = std::string(FileName).append(compressor->Extension);
+ if (FileExists(file) == false)
+ continue;
+ FileName = file;
break;
}
-
- case WriteEmpty:
+ }
+ else if (Compress == Extension)
+ {
+ std::string::size_type const found = FileName.find_last_of('.');
+ std::string ext;
+ if (found != std::string::npos)
{
- struct stat Buf;
- if (lstat(FileName.c_str(),&Buf) == 0 && S_ISLNK(Buf.st_mode))
- unlink(FileName.c_str());
- iFd = open(FileName.c_str(),O_RDWR | O_CREAT | O_TRUNC,Perms);
- break;
+ ext = FileName.substr(found);
+ if (ext == ".new" || ext == ".bak")
+ {
+ std::string::size_type const found2 = FileName.find_last_of('.', found - 1);
+ if (found2 != std::string::npos)
+ ext = FileName.substr(found2, found - found2);
+ else
+ ext.clear();
+ }
}
-
- case WriteExists:
- iFd = open(FileName.c_str(),O_RDWR);
- break;
+ for (; compressor != compressors.end(); ++compressor)
+ if (ext == compressor->Extension)
+ break;
+ // no matching extension - assume uncompressed (imagine files like 'example.org_Packages')
+ if (compressor == compressors.end())
+ for (compressor = compressors.begin(); compressor != compressors.end(); ++compressor)
+ if (compressor->Name == ".")
+ break;
+ }
+ else
+ {
+ std::string name;
+ switch (Compress)
+ {
+ case None: name = "."; break;
+ case Gzip: name = "gzip"; break;
+ case Bzip2: name = "bzip2"; break;
+ case Lzma: name = "lzma"; break;
+ case Xz: name = "xz"; break;
+ case Auto:
+ case Extension:
+ // Unreachable
+ return _error->Error("Opening File %s in None, Auto or Extension should be already handled?!?", FileName.c_str());
+ }
+ for (; compressor != compressors.end(); ++compressor)
+ if (compressor->Name == name)
+ break;
+ if (compressor == compressors.end())
+ return _error->Error("Can't find a configured compressor %s for file %s", name.c_str(), FileName.c_str());
+ }
+
+ if (compressor == compressors.end())
+ return _error->Error("Can't find a match for specified compressor mode for file %s", FileName.c_str());
+ return Open(FileName, Mode, *compressor, Perms);
+}
+bool FileFd::Open(string FileName,unsigned int const Mode,APT::Configuration::Compressor const &compressor, unsigned long const Perms)
+{
+ Close();
+ d = new FileFdPrivate;
+ d->openmode = Mode;
+ Flags = AutoClose;
- case WriteAny:
- iFd = open(FileName.c_str(),O_RDWR | O_CREAT,Perms);
- break;
+ if ((Mode & WriteOnly) != WriteOnly && (Mode & (Atomic | Create | Empty | Exclusive)) != 0)
+ return _error->Error("ReadOnly mode for %s doesn't accept additional flags!", FileName.c_str());
+ if ((Mode & ReadWrite) == 0)
+ return _error->Error("No openmode provided in FileFd::Open for %s", FileName.c_str());
- case WriteTemp:
+ if ((Mode & Atomic) == Atomic)
+ {
+ Flags |= Replace;
+ char *name = strdup((FileName + ".XXXXXX").c_str());
+ TemporaryFileName = string(mktemp(name));
+ free(name);
+ }
+ else if ((Mode & (Exclusive | Create)) == (Exclusive | Create))
+ {
+ // for atomic, this will be done by rename in Close()
unlink(FileName.c_str());
- iFd = open(FileName.c_str(),O_RDWR | O_CREAT | O_EXCL,Perms);
- break;
- }
+ }
+ if ((Mode & Empty) == Empty)
+ {
+ struct stat Buf;
+ if (lstat(FileName.c_str(),&Buf) == 0 && S_ISLNK(Buf.st_mode))
+ unlink(FileName.c_str());
+ }
+
+ int fileflags = 0;
+ #define if_FLAGGED_SET(FLAG, MODE) if ((Mode & FLAG) == FLAG) fileflags |= MODE
+ if_FLAGGED_SET(ReadWrite, O_RDWR);
+ else if_FLAGGED_SET(ReadOnly, O_RDONLY);
+ else if_FLAGGED_SET(WriteOnly, O_WRONLY);
+
+ if_FLAGGED_SET(Create, O_CREAT);
+ if_FLAGGED_SET(Empty, O_TRUNC);
+ if_FLAGGED_SET(Exclusive, O_EXCL);
+ else if_FLAGGED_SET(Atomic, O_EXCL);
+ #undef if_FLAGGED_SET
+
+ if (TemporaryFileName.empty() == false)
+ iFd = open(TemporaryFileName.c_str(), fileflags, Perms);
+ else
+ iFd = open(FileName.c_str(), fileflags, Perms);
+
+ if (iFd == -1 || OpenInternDescriptor(Mode, compressor) == false)
+ {
+ if (iFd != -1)
+ {
+ close (iFd);
+ iFd = -1;
+ }
+ return _error->Errno("open",_("Could not open file %s"), FileName.c_str());
+ }
- if (iFd < 0)
- return _error->Errno("open",_("Could not open file %s"),FileName.c_str());
-
this->FileName = FileName;
SetCloseExec(iFd,true);
return true;
}
+ /*}}}*/
+// FileFd::OpenDescriptor - Open a filedescriptor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FileFd::OpenDescriptor(int Fd, unsigned int const Mode, CompressMode Compress, bool AutoClose)
+{
+ std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
+ std::vector<APT::Configuration::Compressor>::const_iterator compressor = compressors.begin();
+ std::string name;
+ switch (Compress)
+ {
+ case None: name = "."; break;
+ case Gzip: name = "gzip"; break;
+ case Bzip2: name = "bzip2"; break;
+ case Lzma: name = "lzma"; break;
+ case Xz: name = "xz"; break;
+ case Auto:
+ case Extension:
+ return _error->Error("Opening Fd %d in Auto or Extension compression mode is not supported", Fd);
+ }
+ for (; compressor != compressors.end(); ++compressor)
+ if (compressor->Name == name)
+ break;
+ if (compressor == compressors.end())
+ return _error->Error("Can't find a configured compressor %s for file %s", name.c_str(), FileName.c_str());
-bool FileFd::OpenDescriptor(int Fd, OpenMode Mode, bool AutoClose)
+ return OpenDescriptor(Fd, Mode, *compressor, AutoClose);
+}
+bool FileFd::OpenDescriptor(int Fd, unsigned int const Mode, APT::Configuration::Compressor const &compressor, bool AutoClose)
{
Close();
+ d = new FileFdPrivate;
+ d->openmode = Mode;
Flags = (AutoClose) ? FileFd::AutoClose : 0;
iFd = Fd;
- if (Mode == ReadOnlyGzip) {
- gz = gzdopen (iFd, "r");
- if (gz == NULL) {
- if (AutoClose)
- close (iFd);
- return _error->Errno("gzdopen",_("Could not open file descriptor %d"),
- Fd);
- }
+ if (OpenInternDescriptor(Mode, compressor) == false)
+ {
+ if (AutoClose)
+ close (iFd);
+ return _error->Errno("gzdopen",_("Could not open file descriptor %d"), Fd);
}
this->FileName = "";
return true;
+}
+bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor)
+{
+ d->compressor = compressor;
+ if (compressor.Name == "." || compressor.Binary.empty() == true)
+ return true;
+#if APT_USE_ZLIB
+ else if (compressor.Name == "gzip")
+ {
+ if ((Mode & ReadWrite) == ReadWrite)
+ d->gz = gzdopen(iFd, "r+");
+ else if ((Mode & WriteOnly) == WriteOnly)
+ d->gz = gzdopen(iFd, "w");
+ else
+ d->gz = gzdopen (iFd, "r");
+ if (d->gz == NULL)
+ return false;
+ Flags |= Compressed;
+ return true;
+ }
+#endif
+
+ if ((Mode & ReadWrite) == ReadWrite)
+ return _error->Error("ReadWrite mode is not supported for file %s", FileName.c_str());
+
+ bool const Comp = (Mode & WriteOnly) == WriteOnly;
+ // Handle 'decompression' of empty files
+ if (Comp == false)
+ {
+ struct stat Buf;
+ fstat(iFd, &Buf);
+ if (Buf.st_size == 0 && S_ISFIFO(Buf.st_mode) == false)
+ return true;
+
+ // We don't need the file open - instead let the compressor open it
+ // as he properly knows better how to efficiently read from 'his' file
+ if (FileName.empty() == false)
+ close(iFd);
+ }
+
+ // Create a data pipe
+ int Pipe[2] = {-1,-1};
+ if (pipe(Pipe) != 0)
+ return _error->Errno("pipe",_("Failed to create subprocess IPC"));
+ for (int J = 0; J != 2; J++)
+ SetCloseExec(Pipe[J],true);
+
+ d->compressed_fd = iFd;
+ d->pipe = true;
+
+ if (Comp == true)
+ iFd = Pipe[1];
+ else
+ iFd = Pipe[0];
+
+ // The child..
+ d->compressor_pid = ExecFork();
+ if (d->compressor_pid == 0)
+ {
+ if (Comp == true)
+ {
+ dup2(d->compressed_fd,STDOUT_FILENO);
+ dup2(Pipe[0],STDIN_FILENO);
+ }
+ else
+ {
+ if (FileName.empty() == true)
+ dup2(d->compressed_fd,STDIN_FILENO);
+ dup2(Pipe[1],STDOUT_FILENO);
+ }
+
+ SetCloseExec(STDOUT_FILENO,false);
+ SetCloseExec(STDIN_FILENO,false);
+
+ std::vector<char const*> Args;
+ Args.push_back(compressor.Binary.c_str());
+ std::vector<std::string> const * const addArgs =
+ (Comp == true) ? &(compressor.CompressArgs) : &(compressor.UncompressArgs);
+ for (std::vector<std::string>::const_iterator a = addArgs->begin();
+ a != addArgs->end(); ++a)
+ Args.push_back(a->c_str());
+ if (Comp == false && FileName.empty() == false)
+ {
+ Args.push_back("--stdout");
+ if (TemporaryFileName.empty() == false)
+ Args.push_back(TemporaryFileName.c_str());
+ else
+ Args.push_back(FileName.c_str());
+ }
+ Args.push_back(NULL);
+
+ execvp(Args[0],(char **)&Args[0]);
+ cerr << _("Failed to exec compressor ") << Args[0] << endl;
+ _exit(100);
+ }
+ if (Comp == true)
+ close(Pipe[0]);
+ else
+ close(Pipe[1]);
+ if (Comp == true || FileName.empty() == true)
+ close(d->compressed_fd);
+
+ return true;
}
/*}}}*/
// FileFd::~File - Closes the file /*{{{*/
errno = 0;
if (Actual != 0)
*Actual = 0;
-
+ *((char *)To) = '\0';
do
{
- if (gz != NULL)
- Res = gzread(gz,To,Size);
+#if APT_USE_ZLIB
+ if (d->gz != NULL)
+ Res = gzread(d->gz,To,Size);
else
+#endif
Res = read(iFd,To,Size);
if (Res < 0 && errno == EINTR)
continue;
To = (char *)To + Res;
Size -= Res;
+ d->seekpos += Res;
if (Actual != 0)
*Actual += Res;
}
return _error->Error(_("read, still have %llu to read but none left"), Size);
}
/*}}}*/
+// FileFd::ReadLine - Read a complete line from the file /*{{{*/
+// ---------------------------------------------------------------------
+/* Beware: This method can be quiet slow for big buffers on UNcompressed
+ files because of the naive implementation! */
+char* FileFd::ReadLine(char *To, unsigned long long const Size)
+{
+ *To = '\0';
+#if APT_USE_ZLIB
+ if (d->gz != NULL)
+ return gzgets(d->gz, To, Size);
+#endif
+
+ unsigned long long read = 0;
+ while ((Size - 1) != read)
+ {
+ unsigned long long done = 0;
+ if (Read(To + read, 1, &done) == false)
+ return NULL;
+ if (done == 0)
+ break;
+ if (To[read++] == '\n')
+ break;
+ }
+ if (read == 0)
+ return NULL;
+ To[read] = '\0';
+ return To;
+}
+ /*}}}*/
// FileFd::Write - Write to the file /*{{{*/
// ---------------------------------------------------------------------
/* */
errno = 0;
do
{
- if (gz != NULL)
- Res = gzwrite(gz,From,Size);
+#if APT_USE_ZLIB
+ if (d->gz != NULL)
+ Res = gzwrite(d->gz,From,Size);
else
+#endif
Res = write(iFd,From,Size);
if (Res < 0 && errno == EINTR)
continue;
From = (char *)From + Res;
Size -= Res;
+ d->seekpos += Res;
}
while (Res > 0 && Size > 0);
/* */
bool FileFd::Seek(unsigned long long To)
{
+ if (d->pipe == true)
+ {
+ // Our poor man seeking in pipes is costly, so try to avoid it
+ unsigned long long seekpos = Tell();
+ if (seekpos == To)
+ return true;
+ else if (seekpos < To)
+ return Skip(To - seekpos);
+
+ if ((d->openmode & ReadOnly) != ReadOnly)
+ return _error->Error("Reopen is only implemented for read-only files!");
+ close(iFd);
+ iFd = 0;
+ if (TemporaryFileName.empty() == false)
+ iFd = open(TemporaryFileName.c_str(), O_RDONLY);
+ else if (FileName.empty() == false)
+ iFd = open(FileName.c_str(), O_RDONLY);
+ else
+ {
+ if (d->compressed_fd > 0)
+ if (lseek(d->compressed_fd, 0, SEEK_SET) != 0)
+ iFd = d->compressed_fd;
+ if (iFd <= 0)
+ return _error->Error("Reopen is not implemented for pipes opened with FileFd::OpenDescriptor()!");
+ }
+
+ if (OpenInternDescriptor(d->openmode, d->compressor) == false)
+ return _error->Error("Seek on file %s because it couldn't be reopened", FileName.c_str());
+
+ if (To != 0)
+ return Skip(To);
+
+ d->seekpos = To;
+ return true;
+ }
int res;
- if (gz)
- res = gzseek(gz,To,SEEK_SET);
+#if APT_USE_ZLIB
+ if (d->gz)
+ res = gzseek(d->gz,To,SEEK_SET);
else
+#endif
res = lseek(iFd,To,SEEK_SET);
if (res != (signed)To)
{
Flags |= Fail;
return _error->Error("Unable to seek to %llu", To);
}
-
+
+ d->seekpos = To;
return true;
}
/*}}}*/
/* */
bool FileFd::Skip(unsigned long long Over)
{
+ if (d->pipe == true)
+ {
+ d->seekpos += Over;
+ char buffer[1024];
+ while (Over != 0)
+ {
+ unsigned long long toread = std::min((unsigned long long) sizeof(buffer), Over);
+ if (Read(buffer, toread) == false)
+ return _error->Error("Unable to seek ahead %llu",Over);
+ Over -= toread;
+ }
+ return true;
+ }
+
int res;
- if (gz)
- res = gzseek(gz,Over,SEEK_CUR);
+#if APT_USE_ZLIB
+ if (d->gz != NULL)
+ res = gzseek(d->gz,Over,SEEK_CUR);
else
+#endif
res = lseek(iFd,Over,SEEK_CUR);
if (res < 0)
{
Flags |= Fail;
return _error->Error("Unable to seek ahead %llu",Over);
}
-
+ d->seekpos = res;
+
return true;
}
/*}}}*/
/* */
bool FileFd::Truncate(unsigned long long To)
{
- if (gz)
+ if (d->gz != NULL)
{
Flags |= Fail;
return _error->Error("Truncating gzipped files is not implemented (%s)", FileName.c_str());
/* */
unsigned long long FileFd::Tell()
{
+ // In theory, we could just return seekpos here always instead of
+ // seeking around, but not all users of FileFd use always Seek() and co
+ // so d->seekpos isn't always true and we can just use it as a hint if
+ // we have nothing else, but not always as an authority…
+ if (d->pipe == true)
+ return d->seekpos;
+
off_t Res;
- if (gz)
- Res = gztell(gz);
+#if APT_USE_ZLIB
+ if (d->gz != NULL)
+ Res = gztell(d->gz);
else
+#endif
Res = lseek(iFd,0,SEEK_CUR);
if (Res == (off_t)-1)
_error->Errno("lseek","Failed to determine the current file position");
+ d->seekpos = Res;
return Res;
}
/*}}}*/
unsigned long long FileFd::FileSize()
{
struct stat Buf;
-
- if (fstat(iFd,&Buf) != 0)
+ if (d->pipe == false && fstat(iFd,&Buf) != 0)
return _error->Errno("fstat","Unable to determine the file size");
+
+ // for compressor pipes st_size is undefined and at 'best' zero
+ if (d->pipe == true || S_ISFIFO(Buf.st_mode))
+ {
+ // we set it here, too, as we get the info here for free
+ // in theory the Open-methods should take care of it already
+ d->pipe = true;
+ if (stat(FileName.c_str(), &Buf) != 0)
+ return _error->Errno("stat","Unable to determine the file size");
+ }
+
return Buf.st_size;
}
/*}}}*/
{
unsigned long long size = FileSize();
+ // for compressor pipes st_size is undefined and at 'best' zero,
+ // so we 'read' the content and 'seek' back - see there
+ if (d->pipe == true)
+ {
+ unsigned long long const oldSeek = Tell();
+ char ignore[1000];
+ unsigned long long read = 0;
+ do {
+ Read(ignore, sizeof(ignore), &read);
+ } while(read != 0);
+ size = Tell();
+ Seek(oldSeek);
+ }
+#if APT_USE_ZLIB
// only check gzsize if we are actually a gzip file, just checking for
- // "gz" is not sufficient as uncompressed files will be opened with
+ // "gz" is not sufficient as uncompressed files could be opened with
// gzopen in "direct" mode as well
- if (gz && !gzdirect(gz) && size > 0)
+ else if (d->gz && !gzdirect(d->gz) && size > 0)
{
/* unfortunately zlib.h doesn't provide a gzsize(), so we have to do
* this ourselves; the original (uncompressed) file size is the last 32
* bits of the file */
// FIXME: Size for gz-files is limited by 32bit… no largefile support
- off_t orig_pos = lseek(iFd, 0, SEEK_CUR);
if (lseek(iFd, -4, SEEK_END) < 0)
return _error->Errno("lseek","Unable to seek to end of gzipped file");
size = 0L;
size = tmp_size;
#endif
- if (lseek(iFd, orig_pos, SEEK_SET) < 0)
+ if (lseek(iFd, d->seekpos, SEEK_SET) < 0)
return _error->Errno("lseek","Unable to seek in gzipped file");
return size;
}
+#endif
return size;
}
/*}}}*/
+// FileFd::ModificationTime - Return the time of last touch /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+time_t FileFd::ModificationTime()
+{
+ struct stat Buf;
+ if (d->pipe == false && fstat(iFd,&Buf) != 0)
+ {
+ _error->Errno("fstat","Unable to determine the modification time of file %s", FileName.c_str());
+ return 0;
+ }
+
+ // for compressor pipes st_size is undefined and at 'best' zero
+ if (d->pipe == true || S_ISFIFO(Buf.st_mode))
+ {
+ // we set it here, too, as we get the info here for free
+ // in theory the Open-methods should take care of it already
+ d->pipe = true;
+ if (stat(FileName.c_str(), &Buf) != 0)
+ {
+ _error->Errno("fstat","Unable to determine the modification time of file %s", FileName.c_str());
+ return 0;
+ }
+ }
+
+ return Buf.st_mtime;
+}
+ /*}}}*/
// FileFd::Close - Close the file if the close flag is set /*{{{*/
// ---------------------------------------------------------------------
/* */
bool FileFd::Close()
{
+ if (iFd == -1)
+ return true;
+
bool Res = true;
if ((Flags & AutoClose) == AutoClose)
{
- if (gz != NULL) {
- int const e = gzclose(gz);
+#if APT_USE_ZLIB
+ if (d != NULL && d->gz != NULL) {
+ int const e = gzclose(d->gz);
// gzdopen() on empty files always fails with "buffer error" here, ignore that
if (e != 0 && e != Z_BUF_ERROR)
Res &= _error->Errno("close",_("Problem closing the gzip file %s"), FileName.c_str());
} else
+#endif
if (iFd > 0 && close(iFd) != 0)
Res &= _error->Errno("close",_("Problem closing the file %s"), FileName.c_str());
}
Res &= _error->Errno("rename",_("Problem renaming the file %s to %s"), TemporaryFileName.c_str(), FileName.c_str());
FileName = TemporaryFileName; // for the unlink() below.
+ TemporaryFileName.clear();
}
iFd = -1;
- gz = NULL;
if ((Flags & Fail) == Fail && (Flags & DelOnFail) == DelOnFail &&
FileName.empty() == false)
if (unlink(FileName.c_str()) != 0)
Res &= _error->WarningE("unlnk",_("Problem unlinking the file %s"), FileName.c_str());
+ if (d != NULL)
+ {
+ if (d->compressor_pid > 0)
+ ExecWait(d->compressor_pid, "FileFdCompressor", true);
+ delete d;
+ d = NULL;
+ }
return Res;
}
return true;
}
/*}}}*/
+
+gzFile FileFd::gzFd() { return (gzFile) d->gz; }
#define PKGLIB_FILEUTL_H
#include <apt-pkg/macros.h>
+#include <apt-pkg/aptconfiguration.h>
#include <string>
#include <vector>
#include <zlib.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
/* Define this for python-apt */
#define APT_HAS_GZIP 1
+class FileFdPrivate;
class FileFd
{
protected:
int iFd;
enum LocalFlags {AutoClose = (1<<0),Fail = (1<<1),DelOnFail = (1<<2),
- HitEof = (1<<3), Replace = (1<<4) };
+ HitEof = (1<<3), Replace = (1<<4), Compressed = (1<<5) };
unsigned long Flags;
std::string FileName;
std::string TemporaryFileName;
- gzFile gz;
public:
- enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny,WriteTemp,ReadOnlyGzip,
- WriteAtomic};
+ enum OpenMode {
+ ReadOnly = (1 << 0),
+ WriteOnly = (1 << 1),
+ ReadWrite = ReadOnly | WriteOnly,
+
+ Create = (1 << 2),
+ Exclusive = (1 << 3),
+ Atomic = Exclusive | (1 << 4),
+ Empty = (1 << 5),
+
+ WriteEmpty = ReadWrite | Create | Empty,
+ WriteExists = ReadWrite,
+ WriteAny = ReadWrite | Create,
+ WriteTemp = ReadWrite | Create | Exclusive,
+ ReadOnlyGzip,
+ WriteAtomic = ReadWrite | Create | Atomic
+ };
+ enum CompressMode { Auto = 'A', None = 'N', Extension = 'E', Gzip = 'G', Bzip2 = 'B', Lzma = 'L', Xz = 'X' };
inline bool Read(void *To,unsigned long long Size,bool AllowEof)
{
return Read(To,Size);
}
bool Read(void *To,unsigned long long Size,unsigned long long *Actual = 0);
+ char* ReadLine(char *To, unsigned long long const Size);
bool Write(const void *From,unsigned long long Size);
bool Seek(unsigned long long To);
bool Skip(unsigned long long To);
unsigned long long Tell();
unsigned long long Size();
unsigned long long FileSize();
+ time_t ModificationTime();
/* You want to use 'unsigned long long' if you are talking about a file
to be able to support large files (>2 or >4 GB) properly.
return T;
}
- bool Open(std::string FileName,OpenMode Mode,unsigned long Perms = 0666);
- bool OpenDescriptor(int Fd, OpenMode Mode, bool AutoClose=false);
+ bool Open(std::string FileName,unsigned int const Mode,CompressMode Compress,unsigned long const Perms = 0666);
+ bool Open(std::string FileName,unsigned int const Mode,APT::Configuration::Compressor const &compressor,unsigned long const Perms = 0666);
+ inline bool Open(std::string const &FileName,unsigned int const Mode, unsigned long const Perms = 0666) {
+ return Open(FileName, Mode, None, Perms);
+ };
+ bool OpenDescriptor(int Fd, unsigned int const Mode, CompressMode Compress, bool AutoClose=false);
+ bool OpenDescriptor(int Fd, unsigned int const Mode, APT::Configuration::Compressor const &compressor, bool AutoClose=false);
+ inline bool OpenDescriptor(int Fd, unsigned int const Mode, bool AutoClose=false) {
+ return OpenDescriptor(Fd, Mode, None, AutoClose);
+ };
bool Close();
bool Sync();
// Simple manipulators
inline int Fd() {return iFd;};
inline void Fd(int fd) {iFd = fd;};
- inline gzFile gzFd() {return gz;};
+ __deprecated gzFile gzFd();
+
inline bool IsOpen() {return iFd >= 0;};
inline bool Failed() {return (Flags & Fail) == Fail;};
inline void EraseOnFailure() {Flags |= DelOnFail;};
inline void OpFail() {Flags |= Fail;};
inline bool Eof() {return (Flags & HitEof) == HitEof;};
+ inline bool IsCompressed() {return (Flags & Compressed) == Compressed;};
inline std::string &Name() {return FileName;};
- FileFd(std::string FileName,OpenMode Mode,unsigned long Perms = 0666) : iFd(-1),
- Flags(0), gz(NULL)
+ FileFd(std::string FileName,unsigned int const Mode,unsigned long Perms = 0666) : iFd(-1), Flags(0), d(NULL)
{
- Open(FileName,Mode,Perms);
+ Open(FileName,Mode, None, Perms);
+ };
+ FileFd(std::string FileName,unsigned int const Mode, CompressMode Compress, unsigned long Perms = 0666) : iFd(-1), Flags(0), d(NULL)
+ {
+ Open(FileName,Mode, Compress, Perms);
+ };
+ FileFd() : iFd(-1), Flags(AutoClose), d(NULL) {};
+ FileFd(int const Fd, unsigned int const Mode = ReadWrite, CompressMode Compress = None) : iFd(-1), Flags(0), d(NULL)
+ {
+ OpenDescriptor(Fd, Mode, Compress);
+ };
+ FileFd(int const Fd, bool const AutoClose) : iFd(-1), Flags(0), d(NULL)
+ {
+ OpenDescriptor(Fd, ReadWrite, None, AutoClose);
};
- FileFd(int Fd = -1) : iFd(Fd), Flags(AutoClose), gz(NULL) {};
- FileFd(int Fd,bool) : iFd(Fd), Flags(0), gz(NULL) {};
virtual ~FileFd();
+
+ private:
+ FileFdPrivate* d;
+ bool OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor);
};
bool RunScripts(const char *Cnf);
if(Type == "MD5Sum")
{
MD5Summation MD5;
- MD5.AddFD(Fd.Fd(), Fd.Size());
+ MD5.AddFD(Fd);
fileHash = (std::string)MD5.Result();
}
else if (Type == "SHA1")
{
SHA1Summation SHA1;
- SHA1.AddFD(Fd.Fd(), Fd.Size());
+ SHA1.AddFD(Fd);
fileHash = (std::string)SHA1.Result();
}
else if (Type == "SHA256")
{
SHA256Summation SHA256;
- SHA256.AddFD(Fd.Fd(), Fd.Size());
+ SHA256.AddFD(Fd);
fileHash = (std::string)SHA256.Result();
}
else if (Type == "SHA512")
{
SHA512Summation SHA512;
- SHA512.AddFD(Fd.Fd(), Fd.Size());
+ SHA512.AddFD(Fd);
fileHash = (std::string)SHA512.Result();
}
Fd.Close();
SHA512.Add(Buf,Res);
}
return true;
+}
+bool Hashes::AddFD(FileFd &Fd,unsigned long long Size, bool const addMD5,
+ bool const addSHA1, bool const addSHA256, bool const addSHA512)
+{
+ unsigned char Buf[64*64];
+ bool const ToEOF = (Size == 0);
+ while (Size != 0 || ToEOF)
+ {
+ unsigned long long n = sizeof(Buf);
+ if (!ToEOF) n = std::min(Size, n);
+ unsigned long long a = 0;
+ if (Fd.Read(Buf, n, &a) == false) // error
+ return false;
+ if (ToEOF == false)
+ {
+ if (a != n) // short read
+ return false;
+ }
+ else if (a == 0) // EOF
+ break;
+ Size -= a;
+ if (addMD5 == true)
+ MD5.Add(Buf, a);
+ if (addSHA1 == true)
+ SHA1.Add(Buf, a);
+ if (addSHA256 == true)
+ SHA256.Add(Buf, a);
+ if (addSHA512 == true)
+ SHA512.Add(Buf, a);
+ }
+ return true;
}
/*}}}*/
-
#include <apt-pkg/md5.h>
#include <apt-pkg/sha1.h>
#include <apt-pkg/sha2.h>
+#include <apt-pkg/fileutl.h>
#include <algorithm>
#include <vector>
#include <cstring>
+
+#ifndef APT_8_CLEANER_HEADERS
+using std::min;
+using std::vector;
+#endif
+
// helper class that contains hash function name
// and hash
class HashString
{ return AddFD(Fd, Size, true, true, true, true); };
bool AddFD(int const Fd, unsigned long long Size, bool const addMD5,
bool const addSHA1, bool const addSHA256, bool const addSHA512);
+ inline bool AddFD(FileFd &Fd,unsigned long long Size = 0)
+ { return AddFD(Fd, Size, true, true, true, true); };
+ bool AddFD(FileFd &Fd, unsigned long long Size, bool const addMD5,
+ bool const addSHA1, bool const addSHA256, bool const addSHA512);
inline bool Add(const unsigned char *Beg,const unsigned char *End)
{return Add(Beg,End-Beg);};
};
Add(Buf,Res);
}
return true;
+}
+bool SummationImplementation::AddFD(FileFd &Fd, unsigned long long Size) {
+ unsigned char Buf[64 * 64];
+ bool ToEOF = (Size == 0);
+ while (Size != 0 || ToEOF)
+ {
+ unsigned long long n = sizeof(Buf);
+ if (!ToEOF) n = std::min(Size, n);
+ unsigned long long a = 0;
+ if (Fd.Read(Buf, n, &a) == false) // error
+ return false;
+ if (ToEOF == false)
+ {
+ if (a != n) // short read
+ return false;
+ }
+ else if (a == 0) // EOF
+ break;
+ Size -= a;
+ Add(Buf, a);
+ }
+ return true;
}
/*}}}*/
#ifndef APTPKG_HASHSUM_TEMPLATE_H
#define APTPKG_HASHSUM_TEMPLATE_H
+#include <apt-pkg/fileutl.h>
+
#include <string>
#include <cstring>
#include <algorithm>
#include <apt-pkg/strutl.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::min;
+#endif
+
template<int N>
class HashSumValue
{
{ return Add((const unsigned char *)Beg, End - Beg); };
bool AddFD(int Fd, unsigned long long Size = 0);
+ bool AddFD(FileFd &Fd, unsigned long long Size = 0);
};
#endif
#include "hashsum_template.h"
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::min;
+#endif
+
typedef HashSumValue<128> MD5SumValue;
class MD5Summation : public SummationImplementation
bool MMap::Map(FileFd &Fd)
{
iSize = Fd.Size();
-
+
// Set the permissions.
int Prot = PROT_READ;
int Map = MAP_SHARED;
if (iSize == 0)
return _error->Error(_("Can't mmap an empty file"));
-
+
+ // We can't mmap compressed fd's directly, so we need to read it completely
+ if (Fd.IsCompressed() == true)
+ {
+ if ((Flags & ReadOnly) != ReadOnly)
+ return _error->Error("Compressed file %s can only be mapped readonly", Fd.Name().c_str());
+ Base = new unsigned char[iSize];
+ if (Fd.Seek(0L) == false || Fd.Read(Base, iSize) == false)
+ return false;
+ return true;
+ }
+
// Map it.
Base = mmap(0,iSize,Prot,Map,Fd.Fd(),0);
if (Base == (void *)-1)
{
// The filesystem doesn't support this particular kind of mmap.
// So we allocate a buffer and read the whole file into it.
+ if ((Flags & ReadOnly) == ReadOnly)
+ {
+ // for readonly, we don't need sync, so make it simple
+ Base = new unsigned char[iSize];
+ return Fd.Read(Base, iSize);
+ }
+ // FIXME: Writing to compressed fd's ?
int const dupped_fd = dup(Fd.Fd());
if (dupped_fd == -1)
return _error->Errno("mmap", _("Couldn't duplicate file descriptor %i"), Fd.Fd());
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+using std::string;
+#endif
+
class FileFd;
/* This should be a 32 bit type, larger tyes use too much ram and smaller
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/strutl.h>
+#endif
+
#define DOT_CHAR "."
#define DIR_CHAR "/"
#include <string>
#include <sys/time.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
class Configuration;
class OpProgress
{
#include "hashsum_template.h"
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::min;
+#endif
+
typedef HashSumValue<160> SHA1SumValue;
class SHA1Summation : public SummationImplementation
#include "macros.h"
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::vector;
+using std::ostream;
+#endif
+
bool UTF8ToCodeset(const char *codeset, const std::string &orig, std::string *dest);
char *_strstrip(char *String);
char *_strtabexpand(char *String,size_t Len);
#include <sys/stat.h>
/*}}}*/
+using std::string;
+
// SourcesIndex::debSourcesIndex - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
/* we need to ignore errors here; if the lists are absent, just return 0 */
_error->PushToStack();
- FileFd f = FileFd (IndexFile("Sources"), FileFd::ReadOnlyGzip);
+ FileFd f = FileFd (IndexFile("Sources"), FileFd::ReadOnly, FileFd::Extension);
if (!f.Failed())
size = f.Size();
/* we need to ignore errors here; if the lists are absent, just return 0 */
_error->PushToStack();
- FileFd f = FileFd (IndexFile("Packages"), FileFd::ReadOnlyGzip);
+ FileFd f = FileFd (IndexFile("Packages"), FileFd::ReadOnly, FileFd::Extension);
if (!f.Failed())
size = f.Size();
bool debPackagesIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const
{
string PackageFile = IndexFile("Packages");
- FileFd Pkg(PackageFile,FileFd::ReadOnlyGzip);
+ FileFd Pkg(PackageFile,FileFd::ReadOnly, FileFd::Extension);
debListParser Parser(&Pkg, Architecture);
if (_error->PendingError() == true)
// Store the IMS information
pkgCache::PkgFileIterator File = Gen.GetCurFile();
pkgCacheGenerator::Dynamic<pkgCache::PkgFileIterator> DynFile(File);
- struct stat St;
- if (fstat(Pkg.Fd(),&St) != 0)
- return _error->Errno("fstat","Failed to stat");
- File->Size = St.st_size;
- File->mtime = St.st_mtime;
+ File->Size = Pkg.FileSize();
+ File->mtime = Pkg.ModificationTime();
if (Gen.MergeList(Parser) == false)
return _error->Error("Problem with MergeList %s",PackageFile.c_str());
/* we need to ignore errors here; if the lists are absent, just return 0 */
_error->PushToStack();
- FileFd f = FileFd (IndexFile(Language), FileFd::ReadOnlyGzip);
+ FileFd f = FileFd (IndexFile(Language), FileFd::ReadOnly, FileFd::Extension);
if (!f.Failed())
size = f.Size();
string TranslationFile = IndexFile(Language);
if (FileExists(TranslationFile))
{
- FileFd Trans(TranslationFile,FileFd::ReadOnlyGzip);
+ FileFd Trans(TranslationFile,FileFd::ReadOnly, FileFd::Extension);
debListParser TransParser(&Trans);
if (_error->PendingError() == true)
return false;
// Store the IMS information
pkgCache::PkgFileIterator TransFile = Gen.GetCurFile();
- struct stat TransSt;
- if (fstat(Trans.Fd(),&TransSt) != 0)
- return _error->Errno("fstat","Failed to stat");
- TransFile->Size = TransSt.st_size;
- TransFile->mtime = TransSt.st_mtime;
+ TransFile->Size = Trans.FileSize();
+ TransFile->mtime = Trans.ModificationTime();
if (Gen.MergeList(TransParser) == false)
return _error->Error("Problem with MergeList %s",TranslationFile.c_str());
/* */
bool debStatusIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const
{
- FileFd Pkg(File,FileFd::ReadOnlyGzip);
+ FileFd Pkg(File,FileFd::ReadOnly, FileFd::Extension);
if (_error->PendingError() == true)
return false;
debListParser Parser(&Pkg);
// Store the IMS information
pkgCache::PkgFileIterator CFile = Gen.GetCurFile();
- struct stat St;
- if (fstat(Pkg.Fd(),&St) != 0)
- return _error->Errno("fstat","Failed to stat");
- CFile->Size = St.st_size;
- CFile->mtime = St.st_mtime;
+ CFile->Size = Pkg.FileSize();
+ CFile->mtime = Pkg.ModificationTime();
CFile->Archive = Gen.WriteUniqString("now");
if (Gen.MergeList(Parser) == false)
// file. to provide Component pinning we use the section name now
FileI->Component = WriteUniqString(component);
+ // FIXME: Code depends on the fact that Release files aren't compressed
FILE* release = fdopen(dup(File.Fd()), "r");
if (release == NULL)
return false;
#include <apt-pkg/pkgcachegen.h>
#include <apt-pkg/tagfile.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/indexfile.h>
+#endif
+
class debListParser : public pkgCacheGenerator::ListParser
{
public:
#include <string>
#include <vector>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/sourcelist.h>
+#endif
+
class debReleaseIndex : public metaIndex {
public:
// ---------------------------------------------------------------------
/* */
debRecordParser::debRecordParser(string FileName,pkgCache &Cache) :
- File(FileName,FileFd::ReadOnlyGzip),
+ File(FileName,FileFd::ReadOnly, FileFd::Extension),
Tags(&File, std::max(Cache.Head().MaxVerFileSize,
Cache.Head().MaxDescFileSize) + 200)
{
#include <apt-pkg/tagfile.h>
#include <apt-pkg/fileutl.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/indexfile.h>
+#endif
+
class debRecordParser : public pkgRecords::Parser
{
/** \brief dpointer placeholder (for later in case we need it) */
virtual bool Files(std::vector<pkgSrcRecords::File> &F);
debSrcRecordParser(std::string const &File,pkgIndexFile const *Index)
- : Parser(Index), Fd(File,FileFd::ReadOnlyGzip), Tags(&Fd,102400),
+ : Parser(Index), Fd(File,FileFd::ReadOnly, FileFd::Extension), Tags(&Fd,102400),
Buffer(NULL) {}
virtual ~debSrcRecordParser();
};
#include <map>
#include <stdio.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::vector;
+using std::map;
+#endif
+
class pkgDPkgPMPrivate;
class pkgDPkgPM : public pkgPackageManager
#include <apt-pkg/pkgsystem.h>
#include <apt-pkg/tagfile.h>
#include <apt-pkg/progress.h>
+#include <apt-pkg/cacheset.h>
+#include <algorithm>
#include <iostream>
#include <sstream>
#include <set>
// DepCache::MarkInstall - Put the package in the install state /*{{{*/
// ---------------------------------------------------------------------
/* */
+struct CompareProviders {
+ pkgCache::PkgIterator const Pkg;
+ CompareProviders(pkgCache::DepIterator const &Dep) : Pkg(Dep.TargetPkg()) {};
+ //bool operator() (APT::VersionList::iterator const &AV, APT::VersionList::iterator const &BV)
+ bool operator() (pkgCache::VerIterator const &AV, pkgCache::VerIterator const &BV)
+ {
+ pkgCache::PkgIterator const A = AV.ParentPkg();
+ pkgCache::PkgIterator const B = BV.ParentPkg();
+ // Prefer packages in the same group as the target; e.g. foo:i386, foo:amd64
+ if (A->Group != B->Group)
+ {
+ if (A->Group == Pkg->Group && B->Group != Pkg->Group)
+ return false;
+ else if (B->Group == Pkg->Group && A->Group != Pkg->Group)
+ return true;
+ }
+ // we like essentials
+ if ((A->Flags & pkgCache::Flag::Essential) != (B->Flags & pkgCache::Flag::Essential))
+ {
+ if ((A->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ return false;
+ else if ((B->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
+ return true;
+ }
+ // higher priority seems like a good idea
+ if (AV->Priority != BV->Priority)
+ return AV->Priority < BV->Priority;
+ // prefer native architecture
+ if (strcmp(A.Arch(), B.Arch()) != 0)
+ {
+ if (strcmp(A.Arch(), A.Cache()->NativeArch()) == 0)
+ return false;
+ else if (strcmp(B.Arch(), B.Cache()->NativeArch()) == 0)
+ return true;
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ for (std::vector<std::string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
+ if (*a == A.Arch())
+ return false;
+ else if (*a == B.Arch())
+ return true;
+ }
+ // unable to decide…
+ return A->ID < B->ID;
+ }
+};
bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
unsigned long Depth, bool FromUser,
bool ForceImportantDeps)
/* This bit is for processing the possibilty of an install/upgrade
fixing the problem */
- SPtrArray<Version *> List = Start.AllTargets();
if (Start->Type != Dep::DpkgBreaks &&
(DepState[Start->ID] & DepCVer) == DepCVer)
{
- // Right, find the best version to install..
- Version **Cur = List;
- PkgIterator P = Start.TargetPkg();
- PkgIterator InstPkg(*Cache,0);
-
- // See if there are direct matches (at the start of the list)
- for (; *Cur != 0 && (*Cur)->ParentPkg == P.Index(); Cur++)
+ APT::VersionList verlist;
+ pkgCache::VerIterator Cand = PkgState[Start.TargetPkg()->ID].CandidateVerIter(*this);
+ if (Cand.end() == false && VS().CheckDep(Cand.VerStr(), Start->CompareOp, Start.TargetVer()) == true)
+ verlist.insert(Cand);
+ for (PrvIterator Prv = Start.TargetPkg().ProvidesList(); Prv.end() != true; ++Prv)
{
- PkgIterator Pkg(*Cache,Cache->PkgP + (*Cur)->ParentPkg);
- if (PkgState[Pkg->ID].CandidateVer != *Cur)
+ pkgCache::VerIterator V = Prv.OwnerVer();
+ pkgCache::VerIterator Cand = PkgState[Prv.OwnerPkg()->ID].CandidateVerIter(*this);
+ if (Cand.end() == true || V != Cand ||
+ VS().CheckDep(Cand.VerStr(), Start->CompareOp, Start.TargetVer()) == false)
continue;
- InstPkg = Pkg;
- break;
+ verlist.insert(Cand);
}
+ CompareProviders comp(Start);
+ APT::VersionList::iterator InstVer = std::max_element(verlist.begin(), verlist.end(), comp);
- // Select the highest priority providing package
- if (InstPkg.end() == true)
- {
- pkgPrioSortList(*Cache,Cur);
- for (; *Cur != 0; Cur++)
- {
- PkgIterator Pkg(*Cache,Cache->PkgP + (*Cur)->ParentPkg);
- if (PkgState[Pkg->ID].CandidateVer != *Cur)
- continue;
- InstPkg = Pkg;
- break;
- }
- }
-
- if (InstPkg.end() == false)
+ if (InstVer != verlist.end())
{
+ pkgCache::PkgIterator InstPkg = InstVer.ParentPkg();
if(DebugAutoInstall == true)
std::clog << OutputInDepth(Depth) << "Installing " << InstPkg.Name()
<< " as " << Start.DepType() << " of " << Pkg.Name()
// mark automatic dependency
MarkInstall(InstPkg,true,Depth + 1, false, ForceImportantDeps);
// Set the autoflag, after MarkInstall because MarkInstall unsets it
- if (P->CurrentVer == 0)
+ if (InstPkg->CurrentVer == 0)
PkgState[InstPkg->ID].Flags |= Flag::Auto;
}
}
upgrade the package. */
if (Start.IsNegative() == true)
{
+ SPtrArray<Version *> List = Start.AllTargets();
for (Version **I = List; *I != 0; I++)
{
VerIterator Ver(*this,*I);
#include <set>
#include <list>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/progress.h>
+#include <apt-pkg/error.h>
+#endif
+
class OpProgress;
class pkgDepCache : protected pkgCache::Namespace
#define PKGLIB_EDSP_H
#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheset.h>
#include <list>
#include <string>
-namespace APT {
- class PackageSet;
-};
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/depcache.h>
+#include <apt-pkg/progress.h>
+#endif
+
class pkgDepCache;
class OpProgress;
// edspIndex::edspIndex - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
-edspIndex::edspIndex(string File) : debStatusIndex(File)
+edspIndex::edspIndex(std::string File) : debStatusIndex(File)
{
}
/*}}}*/
if (Prog != NULL)
Prog->SubProgress(0,File);
- if (Gen.SelectFile(File,string(),*this) == false)
+ if (Gen.SelectFile(File,std::string(),*this) == false)
return _error->Error("Problem with SelectFile %s",File.c_str());
// Store the IMS information
pkgCache::PkgFileIterator CFile = Gen.GetCurFile();
- struct stat St;
- if (fstat(Pkg.Fd(),&St) != 0)
- return _error->Errno("fstat","Failed to stat");
- CFile->Size = St.st_size;
- CFile->mtime = St.st_mtime;
+ CFile->Size = Pkg.FileSize();
+ CFile->mtime = Pkg.ModificationTime();
CFile->Archive = Gen.WriteUniqString("edsp::scenario");
if (Gen.MergeList(Parser) == false)
#include <apt-pkg/debindexfile.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/indexfile.h>
+#endif
+
class edspIndex : public debStatusIndex
{
/** \brief dpointer placeholder (for later in case we need it) */
#include <apt-pkg/deblistparser.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/indexfile.h>
+#include <apt-pkg/tagfile.h>
+#endif
+
class FileFd;
class edspListParser : public debListParser
#include <apt-pkg/progress.h>
#include <apt-pkg/strutl.h>
#include <apt-pkg/fileutl.h>
+#include <apt-pkg/aptconfiguration.h>
#include <apt-pkg/configuration.h>
#include <apt-pkg/tagfile.h>
#include <apt-pkg/indexrecords.h>
using namespace std;
-
-
// IndexCopy::CopyPackages - Copy the package files from the CD /*{{{*/
// ---------------------------------------------------------------------
/* */
// Prepare the progress indicator
off_t TotalSize = 0;
+ std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
{
struct stat Buf;
- if (stat(string(*I + GetFileName()).c_str(),&Buf) != 0 &&
- stat(string(*I + GetFileName() + ".gz").c_str(),&Buf) != 0)
- return _error->Errno("stat","Stat failed for %s",
- string(*I + GetFileName()).c_str());
+ bool found = false;
+ std::string file = std::string(*I).append(GetFileName());
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ if (stat(std::string(file + c->Extension).c_str(), &Buf) != 0)
+ continue;
+ found = true;
+ break;
+ }
+
+ if (found == false)
+ return _error->Errno("stat", "Stat failed for %s", file.c_str());
TotalSize += Buf.st_size;
- }
+ }
off_t CurrentSize = 0;
unsigned int NotFound = 0;
for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
{
string OrigPath = string(*I,CDROM.length());
- off_t FileSize = 0;
// Open the package file
- FileFd Pkg;
- if (RealFileExists(*I + GetFileName()) == true)
- {
- Pkg.Open(*I + GetFileName(),FileFd::ReadOnly);
- FileSize = Pkg.Size();
- }
- else
- {
- FileFd From(*I + GetFileName() + ".gz",FileFd::ReadOnly);
- if (_error->PendingError() == true)
- return false;
- FileSize = From.Size();
-
- // Get a temp file
- FILE *tmp = tmpfile();
- if (tmp == 0)
- return _error->Errno("tmpfile","Unable to create a tmp file");
- Pkg.Fd(dup(fileno(tmp)));
- fclose(tmp);
-
- // Fork gzip
- pid_t Process = fork();
- if (Process < 0)
- return _error->Errno("fork","Couldn't fork gzip");
-
- // The child
- if (Process == 0)
- {
- dup2(From.Fd(),STDIN_FILENO);
- dup2(Pkg.Fd(),STDOUT_FILENO);
- SetCloseExec(STDIN_FILENO,false);
- SetCloseExec(STDOUT_FILENO,false);
-
- const char *Args[3];
- string Tmp = _config->Find("Dir::bin::gzip","gzip");
- Args[0] = Tmp.c_str();
- Args[1] = "-d";
- Args[2] = 0;
- execvp(Args[0],(char **)Args);
- exit(100);
- }
-
- // Wait for gzip to finish
- if (ExecWait(Process,_config->Find("Dir::bin::gzip","gzip").c_str(),false) == false)
- return _error->Error("gzip failed, perhaps the disk is full.");
-
- Pkg.Seek(0);
- }
+ FileFd Pkg(*I + GetFileName(), FileFd::ReadOnly, FileFd::Extension);
+ off_t const FileSize = Pkg.Size();
+
pkgTagFile Parser(&Pkg);
if (_error->PendingError() == true)
return false;
string const releasegpg = *I+"Release.gpg";
string const release = *I+"Release";
+ string const inrelease = *I+"InRelease";
+ bool useInRelease = true;
// a Release.gpg without a Release should never happen
- if(RealFileExists(release) == false)
+ if (RealFileExists(inrelease) == true)
+ ;
+ else if(RealFileExists(release) == false || RealFileExists(releasegpg) == false)
{
delete MetaIndex;
continue;
}
+ else
+ useInRelease = false;
pid_t pid = ExecFork();
if(pid < 0) {
return false;
}
if(pid == 0)
- RunGPGV(release, releasegpg);
+ {
+ if (useInRelease == true)
+ RunGPGV(inrelease, inrelease);
+ else
+ RunGPGV(release, releasegpg);
+ }
if(!ExecWait(pid, "gpgv")) {
_error->Warning("Signature verification failed for: %s",
- releasegpg.c_str());
+ (useInRelease ? inrelease.c_str() : releasegpg.c_str()));
// something went wrong, don't copy the Release.gpg
// FIXME: delete any existing gpg file?
continue;
delete MetaIndex;
// everything was fine, copy the Release and Release.gpg file
- CopyMetaIndex(CDROM, Name, prefix, "Release");
- CopyMetaIndex(CDROM, Name, prefix, "Release.gpg");
+ if (useInRelease == true)
+ CopyMetaIndex(CDROM, Name, prefix, "InRelease");
+ else
+ {
+ CopyMetaIndex(CDROM, Name, prefix, "Release");
+ CopyMetaIndex(CDROM, Name, prefix, "Release.gpg");
+ }
}
return true;
// Prepare the progress indicator
off_t TotalSize = 0;
+ std::vector<APT::Configuration::Compressor> const compressor = APT::Configuration::getCompressors();
for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
{
struct stat Buf;
- if (stat(string(*I).c_str(),&Buf) != 0 &&
- stat(string(*I + ".gz").c_str(),&Buf) != 0)
- return _error->Errno("stat","Stat failed for %s",
- string(*I).c_str());
+ bool found = false;
+ std::string file = *I;
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin();
+ c != compressor.end(); ++c)
+ {
+ if (stat(std::string(file + c->Extension).c_str(), &Buf) != 0)
+ continue;
+ found = true;
+ break;
+ }
+
+ if (found == false)
+ return _error->Errno("stat", "Stat failed for %s", file.c_str());
TotalSize += Buf.st_size;
- }
+ }
off_t CurrentSize = 0;
unsigned int NotFound = 0;
for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
{
string OrigPath = string(*I,CDROM.length());
- off_t FileSize = 0;
-
+
// Open the package file
- FileFd Pkg;
- if (RealFileExists(*I) == true)
- {
- Pkg.Open(*I,FileFd::ReadOnly);
- FileSize = Pkg.Size();
- }
- else
- {
- FileFd From(*I + ".gz",FileFd::ReadOnly);
- if (_error->PendingError() == true)
- return false;
- FileSize = From.Size();
-
- // Get a temp file
- FILE *tmp = tmpfile();
- if (tmp == 0)
- return _error->Errno("tmpfile","Unable to create a tmp file");
- Pkg.Fd(dup(fileno(tmp)));
- fclose(tmp);
-
- // Fork gzip
- pid_t Process = fork();
- if (Process < 0)
- return _error->Errno("fork","Couldn't fork gzip");
-
- // The child
- if (Process == 0)
- {
- dup2(From.Fd(),STDIN_FILENO);
- dup2(Pkg.Fd(),STDOUT_FILENO);
- SetCloseExec(STDIN_FILENO,false);
- SetCloseExec(STDOUT_FILENO,false);
-
- const char *Args[3];
- string Tmp = _config->Find("Dir::bin::gzip","gzip");
- Args[0] = Tmp.c_str();
- Args[1] = "-d";
- Args[2] = 0;
- execvp(Args[0],(char **)Args);
- exit(100);
- }
-
- // Wait for gzip to finish
- if (ExecWait(Process,_config->Find("Dir::bin::gzip","gzip").c_str(),false) == false)
- return _error->Error("gzip failed, perhaps the disk is full.");
-
- Pkg.Seek(0);
- }
+ FileFd Pkg(*I, FileFd::ReadOnly, FileFd::Extension);
+ off_t const FileSize = Pkg.Size();
+
pkgTagFile Parser(&Pkg);
if (_error->PendingError() == true)
return false;
#include <string>
#include <stdio.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::vector;
+#endif
+
class pkgTagSection;
class FileFd;
class indexRecords;
#include <apt-pkg/pkgrecords.h>
#include <apt-pkg/macros.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
class pkgAcquire;
class pkgCacheGenerator;
class OpProgress;
#include <vector>
#include <ctime>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#endif
+
class indexRecords
{
bool parseSumData(const char *&Start, const char *End, std::string &Name,
#ifndef PKGLIB_INIT_H
#define PKGLIB_INIT_H
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/pkgsystem.h>
+#endif
+
class pkgSystem;
class Configuration;
#include <apt-pkg/pkgcache.h>
#include <apt-pkg/indexfile.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/vendor.h>
+using std::string;
+#endif
+
class pkgAcquire;
class pkgCacheGenerator;
class OpProgress;
#include <iostream>
#include <set>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/depcache.h>
+using std::string;
+#endif
+
class pkgAcquire;
class pkgDepCache;
class pkgSourceList;
#ifndef PKGLIB_PKGCACHE_H
#define PKGLIB_PKGCACHE_H
-
#include <string>
#include <time.h>
#include <apt-pkg/mmap.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
class pkgVersioningSystem;
class pkgCache /*{{{*/
{
inline PkgFileIterator FileEnd();
inline bool MultiArchCache() const { return MultiArchEnabled; };
+ inline char const * const NativeArch() const;
// Make me a function
pkgVersioningSystem *VS;
private:
bool MultiArchEnabled;
PkgIterator SingleArchFindPkg(const std::string &Name);
- inline char const * const NativeArch() const;
};
/*}}}*/
// Header structure /*{{{*/
#include <apti18n.h>
/*}}}*/
-typedef vector<pkgIndexFile *>::iterator FileIterator;
+typedef std::vector<pkgIndexFile *>::iterator FileIterator;
template <typename Iter> std::vector<Iter*> pkgCacheGenerator::Dynamic<Iter>::toReMap;
bool IsDuplicateDescription(pkgCache::DescIterator Desc,
MD5SumValue const &CurMd5, std::string const &CurLang);
+using std::string;
+
// CacheGenerator::pkgCacheGenerator - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* We set the dirty flag and make sure that is written to the disk */
MMap **OutMap,bool AllowMem)
{
bool const Debug = _config->FindB("Debug::pkgCacheGen", false);
-
- vector<pkgIndexFile *> Files;
- for (vector<metaIndex *>::const_iterator i = List.begin();
+
+ std::vector<pkgIndexFile *> Files;
+ for (std::vector<metaIndex *>::const_iterator i = List.begin();
i != List.end();
++i)
{
- vector <pkgIndexFile *> *Indexes = (*i)->GetIndexFiles();
- for (vector<pkgIndexFile *>::const_iterator j = Indexes->begin();
+ std::vector <pkgIndexFile *> *Indexes = (*i)->GetIndexFiles();
+ for (std::vector<pkgIndexFile *>::const_iterator j = Indexes->begin();
j != Indexes->end();
++j)
Files.push_back (*j);
{ return pkgCacheGenerator::MakeOnlyStatusCache(&Progress, OutMap); }
bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **OutMap)
{
- vector<pkgIndexFile *> Files;
+ std::vector<pkgIndexFile *> Files;
unsigned long EndOfSource = Files.size();
if (_system->AddStatusFiles(Files) == false)
return false;
#include <vector>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/depcache.h>
+#endif
+
class pkgDepCache;
class pkgPackageManager;
class pkgVersioningSystem;
#include <apt-pkg/versionmatch.h>
#include <vector>
+#ifndef APT_8_CLEANER_HEADERS
+using std::vector;
+#endif
+
class pkgPolicy : public pkgDepCache::Policy
{
protected:
#include <map>
#include <apt-pkg/pkgcache.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/metaindex.h>
using std::string;
using std::vector;
-
+#endif
class pkgAcquire;
class pkgIndexFile;
const char *Name;
const char *Label;
- bool FixupURI(string &URI) const;
- virtual bool ParseLine(vector<metaIndex *> &List,
+ bool FixupURI(std::string &URI) const;
+ virtual bool ParseLine(std::vector<metaIndex *> &List,
const char *Buffer,
- unsigned long const &CurLine,string const &File) const;
- virtual bool CreateItem(vector<metaIndex *> &List,string const &URI,
- string const &Dist,string const &Section,
- std::map<string, string> const &Options) const = 0;
+ unsigned long const &CurLine,std::string const &File) const;
+ virtual bool CreateItem(std::vector<metaIndex *> &List,std::string const &URI,
+ std::string const &Dist,std::string const &Section,
+ std::map<std::string, std::string> const &Options) const = 0;
Type();
virtual ~Type() {};
};
- typedef vector<metaIndex *>::const_iterator const_iterator;
+ typedef std::vector<metaIndex *>::const_iterator const_iterator;
protected:
- vector<metaIndex *> SrcList;
+ std::vector<metaIndex *> SrcList;
public:
bool ReadMainList();
- bool Read(string File);
+ bool Read(std::string File);
// CNC:2003-03-03
void Reset();
- bool ReadAppend(string File);
- bool ReadSourceDir(string Dir);
+ bool ReadAppend(std::string File);
+ bool ReadSourceDir(std::string Dir);
// List accessors
inline const_iterator begin() const {return SrcList.begin();};
time_t GetLastModifiedTime();
pkgSourceList();
- pkgSourceList(string File);
+ pkgSourceList(std::string File);
~pkgSourceList();
};
{
for (pkgSourceList::const_iterator I = List.begin(); I != List.end(); ++I)
{
- vector<pkgIndexFile *> *Indexes = (*I)->GetIndexFiles();
- for (vector<pkgIndexFile *>::const_iterator J = Indexes->begin();
+ std::vector<pkgIndexFile *> *Indexes = (*I)->GetIndexFiles();
+ for (std::vector<pkgIndexFile *>::const_iterator J = Indexes->begin();
J != Indexes->end(); ++J)
{
Parser* P = (*J)->CreateSrcParser();
pkgSrcRecords::~pkgSrcRecords()
{
// Blow away all the parser objects
- for(vector<Parser*>::iterator I = Files.begin(); I != Files.end(); ++I)
+ for(std::vector<Parser*>::iterator I = Files.begin(); I != Files.end(); ++I)
delete *I;
}
/*}}}*/
bool pkgSrcRecords::Restart()
{
Current = Files.begin();
- for (vector<Parser*>::iterator I = Files.begin();
+ for (std::vector<Parser*>::iterator I = Files.begin();
I != Files.end(); ++I)
(*I)->Restart();
#include <string>
#include <vector>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+using std::vector;
+#endif
+
class pkgSourceList;
class pkgIndexFile;
class pkgSrcRecords
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/fileutl.h>
+#endif
+
class FileFd;
class pkgTagSection
#include <apt-pkg/macros.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
// A class representing a particular software provider.
class __deprecated Vendor
{
#include <vector>
#include <apt-pkg/macros.h>
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/vendor.h>
+#include <apt-pkg/configuration.h>
+using std::string;
+using std::vector;
+#endif
+
class Vendor;
class Configuration;
#include <apt-pkg/strutl.h>
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
class pkgVersioningSystem
{
public:
#include <string>
#include <apt-pkg/pkgcache.h>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
class pkgVersionMatch
{
// Version Matching
/* The package name string */
#undef PACKAGE
+
+#define APT_8_CLEANER_HEADERS
return CacheSetHelper::canNotFindNewestVer(Cache, Pkg);
}
- virtual APT::VersionSet canNotFindAllVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) {
+ virtual void canNotFindAllVer(APT::VersionContainerInterface * vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) {
virtualPkgs.insert(Pkg);
- return CacheSetHelper::canNotFindAllVer(Cache, Pkg);
+ CacheSetHelper::canNotFindAllVer(vci, Cache, Pkg);
}
- CacheSetHelperVirtuals(bool const &ShowErrors = true, GlobalError::MsgType const &ErrorType = GlobalError::NOTICE) : CacheSetHelper(ShowErrors, ErrorType) {}
+ CacheSetHelperVirtuals(bool const ShowErrors = true, GlobalError::MsgType const &ErrorType = GlobalError::NOTICE) : CacheSetHelper(ShowErrors, ErrorType) {}
};
/*}}}*/
// LocalitySort - Sort a version list by package file locality /*{{{*/
// UnMet - Show unmet dependencies /*{{{*/
// ---------------------------------------------------------------------
/* */
-bool ShowUnMet(pkgCache::VerIterator const &V, bool const &Important)
+bool ShowUnMet(pkgCache::VerIterator const &V, bool const Important)
{
bool Header = false;
for (pkgCache::DepIterator D = V.DependsList(); D.end() == false;)
else
{
CacheSetHelperVirtuals helper(true, GlobalError::NOTICE);
- APT::VersionSet verset = APT::VersionSet::FromCommandLine(CacheFile, CmdL.FileList + 1,
- APT::VersionSet::CANDIDATE, helper);
- for (APT::VersionSet::iterator V = verset.begin(); V != verset.end(); ++V)
+ APT::VersionList verset = APT::VersionList::FromCommandLine(CacheFile, CmdL.FileList + 1,
+ APT::VersionList::CANDIDATE, helper);
+ for (APT::VersionList::iterator V = verset.begin(); V != verset.end(); ++V)
if (ShowUnMet(V, Important) == false)
return false;
}
{
pkgCacheFile CacheFile;
APT::CacheSetHelper helper(true, GlobalError::NOTICE);
- APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1, helper);
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1, helper);
- for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
{
cout << "Package: " << Pkg.FullName(true) << endl;
cout << "Versions: " << endl;
return false;
CacheSetHelperVirtuals helper(false);
- APT::VersionSet verset = APT::VersionSet::FromCommandLine(CacheFile, CmdL.FileList + 1, APT::VersionSet::CANDIDATE, helper);
+ APT::VersionList verset = APT::VersionList::FromCommandLine(CacheFile, CmdL.FileList + 1, APT::VersionList::CANDIDATE, helper);
if (verset.empty() == true && helper.virtualPkgs.empty() == true)
return _error->Error(_("No packages found"));
std::vector<bool> Shown(Cache->Head().PackageCount);
return _error->Error(_("Package file %s is out of sync."),I.FileName());
FileFd PkgF;
- if (PkgF.Open(I.FileName(), FileFd::ReadOnlyGzip) == false)
+ if (PkgF.Open(I.FileName(), FileFd::ReadOnly, FileFd::Extension) == false)
return false;
// Read the record
{
pkgCacheFile CacheFile;
CacheSetHelperVirtuals helper(true, GlobalError::NOTICE);
- APT::VersionSet::Version const select = _config->FindB("APT::Cache::AllVersions", true) ?
- APT::VersionSet::ALL : APT::VersionSet::CANDIDATE;
- APT::VersionSet const verset = APT::VersionSet::FromCommandLine(CacheFile, CmdL.FileList + 1, select, helper);
- for (APT::VersionSet::const_iterator Ver = verset.begin(); Ver != verset.end(); ++Ver)
+ APT::VersionList::Version const select = _config->FindB("APT::Cache::AllVersions", true) ?
+ APT::VersionList::ALL : APT::VersionList::CANDIDATE;
+ APT::VersionList const verset = APT::VersionList::FromCommandLine(CacheFile, CmdL.FileList + 1, select, helper);
+ for (APT::VersionList::const_iterator Ver = verset.begin(); Ver != verset.end(); ++Ver)
if (DisplayRecord(CacheFile, Ver) == false)
return false;
// Print out detailed information for each package
APT::CacheSetHelper helper(true, GlobalError::NOTICE);
- APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1, helper);
- for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1, helper);
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
{
cout << Pkg.FullName(true) << ":" << endl;
for (const char **I = CmdL.FileList + 1; *I != 0; I++)
{
_error->PushToStack();
- APT::PackageSet pkgset = APT::PackageSet::FromString(CacheFile, *I, helper);
- for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ APT::PackageList pkgset = APT::PackageList::FromString(CacheFile, *I, helper);
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
{
for (pkgCache::VerIterator V = Pkg.VersionList(); V.end() == false; ++V)
{
for (std::vector<std::string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
_config->Set("APT::Architectures::", *a);
+ std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
+ _config->Clear("APT::Compressor");
+ string conf = "APT::Compressor::";
+ for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressors.begin(); c != compressors.end(); ++c)
+ {
+ string comp = conf + c->Name + "::";
+ _config->Set(comp + "Name", c->Name);
+ _config->Set(comp + "Extension", c->Extension);
+ _config->Set(comp + "Binary", c->Binary);
+ _config->Set(std::string(comp + "Cost").c_str(), c->Cost);
+ for (std::vector<std::string>::const_iterator a = c->CompressArgs.begin(); a != c->CompressArgs.end(); ++a)
+ _config->Set(comp + "CompressArg::", *a);
+ for (std::vector<std::string>::const_iterator a = c->UncompressArgs.begin(); a != c->UncompressArgs.end(); ++a)
+ _config->Set(comp + "UncompressArg::", *a);
+ }
+
// Match the operation
CmdL.DispatchArg(Cmds);
#include <apt-pkg/pkgcache.h>
#include <apt-pkg/dirstream.h>
+#include <string>
+
class DebFile : public pkgDirStream
{
FileFd File;
bool Go();
bool ParseInfo();
- static string GetInstalledVer(const string &package);
+ static std::string GetInstalledVer(const std::string &package);
- string Package;
- string Version;
- string DepVer, PreDepVer;
+ std::string Package;
+ std::string Version;
+ std::string DepVer, PreDepVer;
unsigned int DepOp, PreDepOp;
char *Config;
explicitlyNamed = true;
}
- virtual void showTaskSelection(APT::PackageSet const &pkgset, string const &pattern) {
- for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
- ioprintf(out, _("Note, selecting '%s' for task '%s'\n"),
- Pkg.FullName(true).c_str(), pattern.c_str());
+ virtual void showTaskSelection(pkgCache::PkgIterator const &Pkg, string const &pattern) {
+ ioprintf(out, _("Note, selecting '%s' for task '%s'\n"),
+ Pkg.FullName(true).c_str(), pattern.c_str());
explicitlyNamed = false;
}
- virtual void showRegExSelection(APT::PackageSet const &pkgset, string const &pattern) {
- for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
- ioprintf(out, _("Note, selecting '%s' for regex '%s'\n"),
- Pkg.FullName(true).c_str(), pattern.c_str());
+ virtual void showRegExSelection(pkgCache::PkgIterator const &Pkg, string const &pattern) {
+ ioprintf(out, _("Note, selecting '%s' for regex '%s'\n"),
+ Pkg.FullName(true).c_str(), pattern.c_str());
explicitlyNamed = false;
}
virtual void showSelectedVersion(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const Ver,
- string const &ver, bool const &verIsRel) {
+ string const &ver, bool const verIsRel) {
if (ver == Ver.VerStr())
return;
selectedByRelease.push_back(make_pair(Ver, ver));
APT::VersionSet const verset = tryVirtualPackage(Cache, Pkg, APT::VersionSet::CANDIDATE);
if (verset.empty() == false)
return *(verset.begin());
- if (ShowError == true) {
+ else if (ShowError == true) {
_error->Error(_("Package '%s' has no installation candidate"),Pkg.FullName(true).c_str());
virtualPkgs.insert(Pkg);
}
Prov = PPkg;
found_one = true;
} else if (PPkg != Prov) {
+ // same group, so it's a foreign package
+ if (PPkg->Group == Prov->Group) {
+ // do we already have the requested arch?
+ if (strcmp(Pkg.Arch(), Prov.Arch()) == 0 ||
+ strcmp(Prov.Arch(), "all") == 0 ||
+ unlikely(strcmp(PPkg.Arch(), Prov.Arch()) == 0)) // packages have only on candidate, but just to be sure
+ continue;
+ // see which architecture we prefer more and switch to it
+ std::vector<std::string> archs = APT::Configuration::getArchitectures();
+ if (std::find(archs.begin(), archs.end(), PPkg.Arch()) < std::find(archs.begin(), archs.end(), Prov.Arch()))
+ Prov = PPkg;
+ continue;
+ }
found_one = false; // we found at least two
break;
}
unsigned long AutoMarkChanged;
APT::PackageSet doAutoInstallLater;
- TryToInstall(pkgCacheFile &Cache, pkgProblemResolver *PM, bool const &FixBroken) : Cache(&Cache), Fix(PM),
+ TryToInstall(pkgCacheFile &Cache, pkgProblemResolver *PM, bool const FixBroken) : Cache(&Cache), Fix(PM),
FixBroken(FixBroken), AutoMarkChanged(0) {};
void operator() (pkgCache::VerIterator const &Ver) {
return false;
APT::CacheSetHelper helper(c0out);
- APT::VersionSet verset = APT::VersionSet::FromCommandLine(Cache,
- CmdL.FileList + 1, APT::VersionSet::CANDIDATE, helper);
+ APT::VersionList verset = APT::VersionList::FromCommandLine(Cache,
+ CmdL.FileList + 1, APT::VersionList::CANDIDATE, helper);
if (verset.empty() == true)
return false;
pkgRecords Recs(Cache);
pkgSourceList *SrcList = Cache.GetSourceList();
- for (APT::VersionSet::const_iterator Ver = verset.begin();
+ for (APT::VersionList::const_iterator Ver = verset.begin();
Ver != verset.end();
++Ver)
{
return false;
APT::CacheSetHelper helper(c0out);
- APT::VersionSet verset = APT::VersionSet::FromCommandLine(Cache,
- CmdL.FileList + 1, APT::VersionSet::CANDIDATE, helper);
+ APT::VersionList verset = APT::VersionList::FromCommandLine(Cache,
+ CmdL.FileList + 1, APT::VersionList::CANDIDATE, helper);
if (verset.empty() == true)
return false;
pkgAcquire Fetcher;
if (_config->FindB("APT::Get::Print-URIs", false) == true)
- for (APT::VersionSet::const_iterator Ver = verset.begin();
+ for (APT::VersionList::const_iterator Ver = verset.begin();
Ver != verset.end(); ++Ver)
return DownloadChangelog(Cache, Fetcher, Ver, "");
return _error->Errno("mkdtemp", "mkdtemp failed");
}
- for (APT::VersionSet::const_iterator Ver = verset.begin();
+ for (APT::VersionList::const_iterator Ver = verset.begin();
Ver != verset.end();
++Ver)
{
if (unlikely(Cache == NULL || DepCache == NULL))
return false;
- APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1);
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1);
if (pkgset.empty() == true)
return _error->Error(_("No packages found"));
bool MarkAuto = strcasecmp(CmdL.FileList[0],"auto") == 0;
int AutoMarkChanged = 0;
- for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
{
if (Pkg->CurrentVer == 0)
{
if (unlikely(Cache == NULL || DepCache == NULL))
return false;
- APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1);
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1);
if (pkgset.empty() == true)
return _error->Error(_("No packages found"));
bool const Verbose = _config->FindB("APT::MarkAuto::Verbose", false);
int AutoMarkChanged = 0;
- for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ for (APT::PackageList::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
{
if (Pkg->CurrentVer == 0 ||
(((*DepCache)[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) == MarkAuto)
if (unlikely(Cache == NULL))
return false;
- APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1);
+ APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1);
if (pkgset.empty() == true)
return _error->Error(_("No packages found"));
bool const MarkHold = strcasecmp(CmdL.FileList[0],"hold") == 0;
- for (APT::PackageSet::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ for (APT::PackageList::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
{
if ((Pkg->SelectedState == pkgCache::State::Hold) == MarkHold)
{
if (_config->FindB("APT::Mark::Simulate", false) == true)
{
- for (APT::PackageSet::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ for (APT::PackageList::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
{
if (MarkHold == false)
ioprintf(c1out,_("%s set on hold.\n"), Pkg.FullName(true).c_str());
if (dpkg == NULL)
return _error->Errno("DoHold", "fdopen on dpkg stdin failed");
- for (APT::PackageSet::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
+ for (APT::PackageList::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg)
{
if (MarkHold == true)
{
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.8.16~exp6")
+AC_DEFINE_UNQUOTED(VERSION,"0.8.16~exp9")
PACKAGE="apt"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_SUBST(PACKAGE)
+apt (0.8.16~exp9) UNRELEASED; urgency=low
+
+ [ Julian Andres Klode ]
+ * apt-pkg/cdrom.cc:
+ - Accept .bz2, .xz files in addition to .gz files (Closes: #649451)
+
+ [ Michael Vogt ]
+ * apt-pkg/cdrom.cc:
+ - use aptconfiguration to get the supported compression types
+ * debian/control:
+ - bump debhelper build-dep to debhelper (>= 8.1.3~)
+ - set libapt-pkg-dev to multi-arch: same too
+
+ [ Colin Watson ]
+ * Convert libapt-pkg4.12 and libapt-inst1.4 to Multi-Arch: same.
+
+ [ David Kalnischkies ]
+ * apt-pkg/cacheset.cc:
+ - make the cachesets real containers which can embedding any container
+ to be able to use the same interface regardless of set or list usage
+ - provide a {Package,Version}List similar to {Package,Version}Set
+ * cmdline/apt-{get,cache,mark}.cc:
+ - use Lists instead of Sets if input order should be preserved for
+ commands accepting lists of packages, e.g. policy (Closes: #625960)
+ * apt-pkg/depcache.cc:
+ - prefer native providers over foreigns even if the chain is foreign
+ * cmdline/apt-get.cc:
+ - ignore foreign architectures if we check if a provides has only one
+ resolver as it's basically the same for the user, so no need to choose
+ * cmdline/apt-config.cc:
+ - dump the APT::Compressor settings correctly and completely
+ * apt-pkg/contrib/fileutl.{h,cc}:
+ - implement a ModificationTime method for FileFd
+ - add a ReadLine method
+ - drop the explicit export of gz-compression handling
+ * apt-pkg/cdrom.cc:
+ - support InRelease files on cdrom
+
+ [ Michael Vogt ]
+ * g++ 4.7 fixes
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Sun, 11 Dec 2011 19:34:58 +0100
+
apt (0.8.16~exp8) experimental; urgency=low
[ David Kalnischkies ]
+ * algorithms.cc:
+ - show a debug why a package was kept by ResolveByKeep()
* apt-pkg/packagemanager.cc:
- do not fail on unpacked packages in SmartUnPack, just don't
shedule them for unpack, but do all checks and configure them
- use a pointer-union to peace gcc strict-aliasing warning
* apt-pkg/deb/deblistparser.cc:
- M-A: foreign packages provide for other archs, too
-
- [ Michael Vogt ]
- * g++ 4.7 fixes
-- David Kalnischkies <kalnischkies@gmail.com> Thu, 03 Nov 2011 09:40:29 -0500
-- Michael Vogt <mvo@debian.org> Wed, 29 Jun 2011 12:40:31 +0200
-apt (1.8.15.9+nmu1) unstable; urgency=low
+apt (0.8.15.10) UNRELEASEDunstable; urgency=low
[ David Kalnischkies ]
* algorithms.cc:
- show a debug why a package was kept by ResolveByKeep()
+ * doc/manpage-style.xml:
+ - put <brackets> around email addresses
+ * doc/po/de.po:
+ - apply typo-fix from Michael Basse, thanks! (LP: #900770)
+
+ [ Chris Leick ]
+ * German manpage translation update
+ * doc/*.xml:
+ - find and fix a bunch of misspellings
+
+ [ Program translation updatex ]
+ * Dutch (Jeroen Schot). Closes: #652230
- -- David Kalnischkies <kalnischkies@gmail.com> Mon, 17 Oct 2011 16:36:22 +0200
+ -- David Kalnischkies <kalnischkies@gmail.com> Tue, 06 Dec 2011 16:35:39 +0100
apt (0.8.15.9) unstable; urgency=low
Christian Perrier <bubulle@debian.org>, Daniel Burrows <dburrows@debian.org>,
Julian Andres Klode <jak@debian.org>
Standards-Version: 3.9.2
-Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 7.2.3~), libdb-dev,
+Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 8.1.3~), libdb-dev,
gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.0),
zlib1g-dev | libz-dev, debiandoc-sgml, xsltproc, docbook-xsl, docbook-xml,
po4a (>= 0.34-2), autotools-dev, autoconf, automake, doxygen
Package: libapt-pkg4.12
Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: APT's package managment runtime library
This library provides the common functionality for searching and
Package: libapt-inst1.4
Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: APT's deb package format runtime library
This library provides methods to query and extract information
Package: libapt-pkg-dev
Architecture: any
+Multi-Arch: same
Priority: optional
+Pre-Depends: ${misc:Pre-Depends}
Depends: ${libapt-pkg-name} (= ${binary:Version}), ${libapt-inst-name} (= ${binary:Version}), ${misc:Depends}, zlib1g-dev | zlib-dev
Section: libdevel
Description: Development files for APT's libapt-pkg and libapt-inst
+++ /dev/null
-bin/libapt-inst*.so.* usr/lib/
-usr/share/locale/*/*/libapt-inst*.mo
--- /dev/null
+bin/libapt-inst*.so.* usr/lib/@DEB_HOST_MULTIARCH@/
+usr/share/locale/*/*/libapt-inst*.mo
+++ /dev/null
-usr/lib
-usr/include/apt-pkg
+++ /dev/null
-bin/libapt-pkg*.so usr/lib/
-bin/libapt-inst*.so usr/lib/
-include/apt-pkg/*.h usr/include/apt-pkg/
--- /dev/null
+bin/libapt-pkg*.so usr/lib/@DEB_HOST_MULTIARCH@/
+bin/libapt-inst*.so usr/lib/@DEB_HOST_MULTIARCH@/
+include/apt-pkg/*.h usr/include/apt-pkg/
+++ /dev/null
-bin/libapt-pkg*.so.* usr/lib/
-usr/share/locale/*/*/libapt-pkg*.mo
--- /dev/null
+bin/libapt-pkg*.so.* usr/lib/@DEB_HOST_MULTIARCH@/
+usr/share/locale/*/*/libapt-pkg*.mo
export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
# FOR AUTOCONF 2.52 AND NEWER ONLY
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
[ ! -f Makefile ] || $(MAKE) clean distclean
rm -rf build
+ rm -f debian/$(LIBAPT_PKG).install debian/$(LIBAPT_INST).install \
+ debian/libapt-pkg-dev.install
+
+debian/%.install: debian/%.install.in
+ sed 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' $< > $@
binary-indep: apt-doc libapt-pkg-doc
# Build architecture-independent files here.
dh_md5sums -p$@
dh_builddeb -p$@
-libapt-pkg-dev: build
+libapt-pkg-dev: build debian/libapt-pkg-dev.install
dh_testdir -p$@
dh_testroot -p$@
dh_prep -p$@
dh_md5sums -p$@
dh_builddeb -p$@
-$(LIBAPT_PKG): build
+$(LIBAPT_PKG): build debian/$(LIBAPT_PKG).install
dh_testdir -p$@
dh_testroot -p$@
dh_prep -p$@
dh_md5sums -p$@
dh_builddeb -p$@
-$(LIBAPT_INST): build
+$(LIBAPT_INST): build debian/$(LIBAPT_INST).install
dh_testdir -p$@
dh_testroot -p$@
dh_prep -p$@
<varlistentry><term>build-dep</term>
<listitem><para><literal>build-dep</literal> causes apt-get to install/remove packages in an
attempt to satisfy the build dependencies for a source package. By default the dependencies are
- satisfied to build the package nativly. If desired a host-architecture can be specified
+ satisfied to build the package natively. If desired a host-architecture can be specified
with the <option>--host-architecture</option> option instead.</para></listitem>
</varlistentry>
<term><option>--host-architecture</option></term>
<listitem><para>This option controls the architecture packages are built for
by <command>apt-get source --compile</command> and how cross-builddependencies
- are satisfied. By default is not set which means that the host architecture
- is the same as the build architecture (which is defined by <literal>APT::Architecture</literal>)
+ are satisfied. By default is it not set which means that the host architecture
+ is the same as the build architecture (which is defined by <literal>APT::Architecture</literal>).
Configuration Item: <literal>APT::Get::Host-Architecture</literal>
</para></listitem>
</varlistentry>
<listitem><para>With this option it is possible to specify a specific keyring
file the command should operate on. The default is that a command is executed
on the <filename>trusted.gpg</filename> file as well as on all parts in the
- <filename>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</filename>
+ <filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</filename>
is the primary keyring which means that e.g. new keys are added to this one.
</para></listitem>
</varlistentry>
valid after it was created (indicated by the <literal>Date</literal> header).
Use this if you need to use a seldomly updated (local) mirror of a more
regular updated archive with a <literal>Valid-Until</literal> header
- instead of competely disabling the expiration date checking.
+ instead of completely disabling the expiration date checking.
Archive specific settings can and should be used by appending the label of
the archive to the option name.
</para></listitem>
<xsl:param name="man.output.encoding" select="'UTF-8'" />
+<xsl:template match="email"><<xsl:apply-templates/>></xsl:template>
+
</xsl:stylesheet>
#
msgid ""
msgstr ""
-"Project-Id-Version: apt-doc 0.8.14-1\n"
+"Project-Id-Version: apt-doc 0.8.15-9\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
"POT-Creation-Date: 2011-06-08 16:54+0300\n"
-"PO-Revision-Date: 2011-05-31 21:00+0100\n"
+"PO-Revision-Date: 2011-11-13 11:21+0100\n"
"Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
"Language: de\n"
#. type: Plain text
#: apt.8:40
msgid "apt returns zero on normal operation, decimal 100 on error."
-msgstr "apt gibt bei normalen Operationen 0 zurück, dezimal 100 bei Fehlern."
+msgstr "APT gibt bei normalen Operationen 0 zurück, dezimal 100 bei Fehlern."
#. type: SH
#: apt.8:40
#. type: Plain text
#: apt.8:52
msgid "apt was written by the APT team E<lt>apt@packages.debian.orgE<gt>."
-msgstr "apt wurde vom APT-Team E<lt>apt@packages.debian.orgE<gt> geschrieben."
+msgstr "APT wurde vom APT-Team E<lt>apt@packages.debian.orgE<gt> geschrieben."
#. type: Plain text
#: apt.ent:2
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-cache.8.xml:197
msgid "search <replaceable>regex [ regex ... ]</replaceable>"
-msgstr "search <replaceable>regex [ regex ... ]</replaceable>"
+msgstr "search <replaceable>regex [ regex … ]</replaceable>"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-cache.8.xml:198
#, fuzzy
#| msgid ""
#| "Per default the <literal>depends</literal> and <literal>rdepends</"
-#| "literal> print all dependencies. This can be twicked with these flags "
+#| "literal> print all dependencies. This can be tweaked with these flags "
#| "which will omit the specified dependency type. Configuration Item: "
#| "<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></"
#| "literal> e.g. <literal>APT::Cache::ShowRecommends</literal>."
"Cache::ShowRecommends</literal>."
msgstr ""
"Standardmäßig geben <literal>depends</literal> und <literal>rdepends</"
-"literal> alle Abhängigkeiten aus. Dies kann mit diesen Schaltern überlistet "
+"literal> alle Abhängigkeiten aus. Dies kann mit diesen Schaltern optimiert "
"werden, die den angegebenen Abhängigkeitstyp weglassen. "
-"Konfigurationselement: <literal>APT::Cache::Show<replaceable>DependencyType</"
-"replaceable></literal> z.B. <literal>APT::Cache::ShowRecommends</literal>."
+"Konfigurationselement: <literal>APT::Cache::"
+"Show<replaceable>Abhängigkeitstyp</replaceable></literal> z.B. <literal>APT::"
+"Cache::ShowRecommends</literal>."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350
"<command>apt-config</command><arg><option>-hv</option></arg><arg><option>-"
"o=<replaceable>Konfigurationszeichenkette</replaceable></option></"
"arg><arg><option>-c=<replaceable>Datei</replaceable></option></arg><group "
-"choice=\"req\"> <arg>shell</arg> <arg>Abbild</arg> </group>"
+"choice=\"req\"> <arg>shell</arg> <arg>dump</arg> </group>"
#. type: Content of: <refentry><refsect1><para>
#: apt-config.8.xml:51
#| "<option>-o= <replaceable>config_string</replaceable> </option> </arg> "
#| "<arg> <option>-c= <replaceable>config_file</replaceable> </option> </arg> "
#| "<arg> <option>-t=</option> <arg choice='plain'> "
-#| "<replaceable>target_release</replaceable> </arg> </arg> <group choice="
-#| "\"req\"> <arg choice='plain'>update</arg> <arg choice='plain'>upgrade</"
-#| "arg> <arg choice='plain'>dselect-upgrade</arg> <arg choice='plain'>dist-"
-#| "upgrade</arg> <arg choice='plain'>install <arg choice=\"plain\" rep="
-#| "\"repeat\"><replaceable>pkg</replaceable> <arg> <group choice='req'> <arg "
+#| "<replaceable>target_release</replaceable> </arg> </arg> <arg> <option>-"
+#| "a=</option> <arg choice='plain'> <replaceable>default_architecture</"
+#| "replaceable> </arg> </arg> <group choice=\"req\"> <arg "
+#| "choice='plain'>update</arg> <arg choice='plain'>upgrade</arg> <arg "
+#| "choice='plain'>dselect-upgrade</arg> <arg choice='plain'>dist-upgrade</"
+#| "arg> <arg choice='plain'>install <arg choice=\"plain\" rep=\"repeat"
+#| "\"><replaceable>pkg</replaceable> <arg> <group choice='req'> <arg "
#| "choice='plain'> =<replaceable>pkg_version_number</replaceable> </arg> "
#| "<arg choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
#| "group> </arg> </arg> </arg> <arg choice='plain'>remove <arg choice=\"plain"
"<option>-o= <replaceable>Konfigurationszeichenkette</replaceable> </option> "
"</arg> <arg> <option>-c= <replaceable>Konfigurationsdatei</replaceable> </"
"option> </arg> <arg> <option>-t=</option> <arg choice='plain'> "
-"<replaceable>Ziel-Release</replaceable> </arg> </arg> <group choice=\"req\"> "
-"<arg choice='plain'>update</arg> <arg choice='plain'>upgrade</arg> <arg "
-"choice='plain'>dselect-upgrade</arg> <arg choice='plain'>dist-upgrade</arg> "
-"<arg choice='plain'>install <arg choice=\"plain\" rep=\"repeat"
-"\"><replaceable>Paket</replaceable> <arg> <group choice='req'> <arg "
-"choice='plain'> =<replaceable>Paket-Versionsnummer</replaceable> </arg> <arg "
-"choice='plain'> /<replaceable>Ziel-Release</replaceable> </arg> </group> </"
-"arg> </arg> </arg> <arg choice='plain'>remove <arg choice=\"plain\" rep="
-"\"repeat\"><replaceable>Paket</replaceable></arg></arg> <arg "
-"choice='plain'>purge <arg choice=\"plain\" rep=\"repeat"
+"<replaceable>Ziel-Release</replaceable> </arg> </arg> <arg> <option>-a=</"
+"option> <arg choice='plain'> <replaceable>Vorgabearchitektur</replaceable> </"
+"arg> </arg> <group choice=\"req\"> <arg choice='plain'>update</arg> <arg "
+"choice='plain'>upgrade</arg> <arg choice='plain'>dselect-upgrade</arg> <arg "
+"choice='plain'>dist-upgrade</arg> <arg choice='plain'>install <arg choice="
+"\"plain\" rep=\"repeat\"><replaceable>Paket</replaceable> <arg> <group "
+"choice='req'> <arg choice='plain'> =<replaceable>Paket-Versionsnummer</"
+"replaceable> </arg> <arg choice='plain'> /<replaceable>Ziel-Release</"
+"replaceable> </arg> </group> </arg> </arg> </arg> <arg choice='plain'>remove "
+"<arg choice=\"plain\" rep=\"repeat\"><replaceable>Paket</replaceable></arg></"
+"arg> <arg choice='plain'>purge <arg choice=\"plain\" rep=\"repeat"
"\"><replaceable>Paket</replaceable></arg></arg> <arg choice='plain'>source "
"<arg choice=\"plain\" rep=\"repeat\"><replaceable>Paket</replaceable> <arg> "
"<group choice='req'> <arg choice='plain'> =<replaceable>Paket-"
#| msgid ""
#| "If the <option>--compile</option> option is specified then the package "
#| "will be compiled to a binary .deb using <command>dpkg-buildpackage</"
-#| "command>, if <option>--download-only</option> is specified then the "
-#| "source package will not be unpacked."
+#| "command> for the architecture as defined by the <command>--host-"
+#| "architecture</command> option. If <option>--download-only</option> is "
+#| "specified then the source package will not be unpacked."
msgid ""
"If the <option>--compile</option> option is specified then the package will "
"be compiled to a binary .deb using <command>dpkg-buildpackage</command>, if "
"<option>--download-only</option> is specified then the source package will "
"not be unpacked."
msgstr ""
-"Wenn die <option>--compile</option>-Option angegeben ist, dann wird das "
-"Paket unter Benutzung von <command>dpkg-buildpackage</command> zu einem "
-"binären .deb kompiliert, wenn <option>--download-only</option> angegeben "
-"ist, wird das Quellpaket nicht entpackt."
+"Falls die Option <option>--compile</option> angegeben ist, dann wird das "
+"Paket unter Benutzung von <command>dpkg-buildpackage</command> für die "
+"Architektur, die durch <command>--host-architecture</command> definiert ist, "
+"zu einem binären .deb kompiliert. Falls <option>--download-only</option> "
+"angegeben ist, wird das Quellpaket nicht entpackt."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:260
#, fuzzy
#| msgid ""
#| "<literal>build-dep</literal> causes apt-get to install/remove packages in "
-#| "an attempt to satisfy the build dependencies for a source package."
+#| "an attempt to satisfy the build dependencies for a source package. By "
+#| "default the dependencies are satisfied to build the package natively. If "
+#| "desired a host-architecture can be specified with the <option>--host-"
+#| "architecture</option> option instead."
msgid ""
"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
"attempt to satisfy the build dependencies for a source package."
msgstr ""
"<literal>build-dep</literal> veranlasst apt-get, Pakete zu installieren/"
-"entfernen, um zu versuchen, die Bauabhängigkeiten eines Quellpakets zu "
-"erfüllen."
+"entfernen, um zu versuchen, die Bau-Abhängigkeiten eines Quellpakets zu "
+"erfüllen. Standardmäßig werden die Abhängigkeiten erfüllt, um das Paket auf "
+"native Art zu bauen. Falls gewünscht, kann stattdessen eine "
+"Rechnerarchitektur mit der Option <option>--host-architecture</option> "
+"angegeben werden."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-get.8.xml:276
#, fuzzy
#| msgid ""
#| "<literal>autoremove</literal> is used to remove packages that were "
-#| "automatically installed to satisfy dependencies for some package and that "
-#| "are no more needed."
+#| "automatically installed to satisfy dependencies for other packages and "
+#| "are now no longer needed."
msgid ""
"<literal>autoremove</literal> is used to remove packages that were "
"automatically installed to satisfy dependencies for some package and that "
"are no more needed."
msgstr ""
-"<literal>autoremove</literal> wird benutzt, um Pakete, die automatisch "
-"installiert wurden, um Abhängigkeiten für einige Pakete zu erfüllen und die "
-"nicht mehr benötigt werden, zu entfernen."
+"<literal>autoremove</literal> wird benutzt, um Pakete zu entfernen, die "
+"automatisch installiert wurden, um Abhängigkeiten für andere Pakete zu "
+"erfüllen und die nicht mehr benötigt werden."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-get.8.xml:312
"Download only; package files are only retrieved, not unpacked or installed. "
"Configuration Item: <literal>APT::Get::Download-Only</literal>."
msgstr ""
-"Nur herunterladen; Paketdateien werde nur heruntergeladen, nicht entpackt "
+"Nur herunterladen; Paketdateien werden nur heruntergeladen, nicht entpackt "
"oder installiert. Konfigurationselement: <literal>APT::Get::Download-Only</"
"literal>."
"Update the local keyring with the keyring of Debian archive keys and removes "
"from the keyring the archive keys which are no longer valid."
msgstr ""
-"Den lokalen Schlüsselbund mit dem Schlüsselbund der Debian-Archivschlüssel "
-"aktualisieren und aus dem Schlüsselbund die Archivschlüssel entfernen, die "
-"nicht länger gültig sind."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-key.8.xml:140
-#, fuzzy
-#| msgid "update"
msgid "net-update"
-msgstr "update"
+msgstr "net-update"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-key.8.xml:144
+#, fuzzy
+#| msgid ""
+#| "Work similar to the <command>update</command> command above, but get the "
+#| "archive keyring from an URI instead and validate it against a master "
+#| "key. This requires an installed &wget; and an APT build configured to "
+#| "have a server to fetch from and a master keyring to validate. APT in "
+#| "Debian does not support this command and relies on <command>update</"
+#| "command> instead, but Ubuntu's APT does."
msgid ""
"Update the local keyring with the keys of a key server and removes from the "
"keyring the archive keys which are no longer valid. This requires an "
"installed wget and an APT build configured to have a server to fetch from. "
"APT in Debian does not support this command, but Ubuntu's APT does."
msgstr ""
+"funktioniert ähnlich dem vorhergehenden Befehl <command>update</command>, "
+"bezieht aber den Archivschlüsselbund stattdessen von einer URI und bestätigt "
+"ihn anhand eines Master-Schlüssels. Dies erfordert ein installiertes &wget; "
+"und einen derart gebauten APT, bei dem ein Server konfiguriert ist, um den "
+"Master-Schlüsselbund zur Bestätigung abzuholen. APT unterstützt in Debian "
+"diesen Befehl nicht und beruht stattdessen auf <command>update</command>, in "
+"Ubuntu funktioniert dies aber."
#. type: Content of: <refentry><refsect1><para>
#: apt-key.8.xml:159
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-key.8.xml:162
+#, fuzzy
+#| msgid ""
+#| "With this option it is possible to specify a specific keyring file the "
+#| "command should operate on. The default is that a command is executed on "
+#| "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#| "<filename>trusted.gpg.d</filename> directory, though <filename>trusted."
+#| "gpg</filename> is the primary keyring which means that e.g. new keys are "
+#| "added to this one."
msgid ""
"With this option it is possible to specify a specific keyring file the "
"command should operate on. The default is that a command is executed on the "
#. The last update date
#. type: Content of: <refentry><refentryinfo>
#: apt-mark.8.xml:16
-#, fuzzy
-#| msgid ""
-#| "&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9 "
-#| "August 2009</date>"
msgid ""
"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21 "
"April 2011</date>"
msgstr ""
-"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>9. "
-"August 2009</date>"
+"&apt-author.moconnor; &apt-author.team; &apt-email; &apt-product; <date>21. "
+"April 2011</date>"
#. type: Content of: <refentry><refnamediv><refname>
#: apt-mark.8.xml:25 apt-mark.8.xml:32
#. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
#: apt-mark.8.xml:39
-#, fuzzy
-#| msgid ""
-#| " <command>apt-mark</command> <arg><option>-hv</option></arg> "
-#| "<arg><option>-f=<replaceable>FILENAME</replaceable></option></arg> <group "
-#| "choice=\"plain\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg "
-#| "choice=\"plain\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </"
-#| "group> <arg choice=\"plain\" rep=\"repeat\"><replaceable>package</"
-#| "replaceable></arg> </arg> <arg choice=\"plain\">showauto</arg> </group>"
msgid ""
" <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-"
"f=<replaceable>FILENAME</replaceable></option></arg> <group choice=\"plain"
" <command>apt-mark</command> <arg><option>-hv</option></arg> <arg><option>-"
"f=<replaceable>DATEINAME</replaceable></option></arg> <group choice=\"plain"
"\"> <arg choice=\"plain\"> <group choice=\"req\"> <arg choice=\"plain"
-"\">markauto</arg> <arg choice=\"plain\">unmarkauto</arg> </group> <arg "
+"\">auto</arg> <arg choice=\"plain\">manual</arg> <arg choice=\"plain"
+"\">showauto</arg> <arg choice=\"plain\">showmanual</arg> </group> <arg "
"choice=\"plain\" rep=\"repeat\"><replaceable>Paket</replaceable></arg> </"
-"arg> <arg choice=\"plain\">showauto</arg> </group>"
+"arg> </group>"
#. type: Content of: <refentry><refsect1><para>
#: apt-mark.8.xml:57
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-mark.8.xml:69
-#, fuzzy
-#| msgid "markauto"
msgid "auto"
-msgstr "markauto"
+msgstr "auto"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-mark.8.xml:70
-#, fuzzy
-#| msgid ""
-#| "<literal>markauto</literal> is used to mark a package as being "
-#| "automatically installed, which will cause the package to be removed when "
-#| "no more manually installed packages depend on this package."
msgid ""
"<literal>auto</literal> is used to mark a package as being automatically "
"installed, which will cause the package to be removed when no more manually "
"installed packages depend on this package."
msgstr ""
-"<literal>markauto</literal> wird benutzt, um ein Paket als automatisch "
+"<literal>auto</literal> wird benutzt, um ein Paket als automatisch "
"installiert zu markieren, was veranlasst, dass das Paket entfernt wird, wenn "
"keine manuell installierten Pakete von ihm abhängen."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-mark.8.xml:77
msgid "manual"
-msgstr ""
+msgstr "manual"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-mark.8.xml:78
-#, fuzzy
-#| msgid ""
-#| "<literal>unmarkauto</literal> is used to mark a package as being manually "
-#| "installed, which will prevent the package from being automatically "
-#| "removed if no other packages depend on it."
msgid ""
"<literal>manual</literal> is used to mark a package as being manually "
"installed, which will prevent the package from being automatically removed "
"if no other packages depend on it."
msgstr ""
-"<literal>markauto</literal> wird benutzt, um ein Paket als manuell "
-"installiert zu markieren, was verhindert, dass das Paket automatisch "
-"entfernt wird, wenn kein anderes Paket von ihm abhängt."
+"<literal>manual</literal> wird benutzt, um ein Paket als manuell installiert "
+"zu markieren, was verhindert, dass das Paket automatisch entfernt wird, wenn "
+"kein anderes Paket von ihm abhängt."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-mark.8.xml:85
msgid "hold"
-msgstr ""
+msgstr "hold"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-mark.8.xml:86
"selections</command> and the state is therefore maintained by &dpkg; and not "
"effected by the <option>--filename</option> option."
msgstr ""
+"<literal>hold</literal> wird benutzt, um ein Paket als zurückgehalten zu "
+"markieren, was verhindert, dass das Paket automatisch installiert, ein "
+"Upgrade davon durchgeführt oder es entfernt wird. Der Befehl ist nur ein "
+"Wrapper um <command>dpkg --set-selections</command> und der Status wird "
+"daher durch &dpkg; verwaltet und nicht durch die Option <option>--filename</"
+"option>."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-mark.8.xml:95
msgid "unhold"
-msgstr ""
+msgstr "unhold"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-mark.8.xml:96
-#, fuzzy
-#| msgid ""
-#| "<literal>showauto</literal> is used to print a list of automatically "
-#| "installed packages with each package on a new line."
msgid ""
"<literal>unhold</literal> is used to cancel a previously set hold on a "
"package to allow all actions again."
msgstr ""
-"<literal>showauto</literal> wird benutzt, um eine Liste automatisch "
-"installierter Pakete mit einem Paket in jeder neuen Zeile, auszugeben."
+"<literal>unhold</literal> wird benutzt, um ein vorher gesetztes »hold« auf "
+"ein Paket aufzuheben, um alle Aktionen wieder zu erlauben."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-mark.8.xml:101
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-mark.8.xml:102
-#, fuzzy
-#| msgid ""
-#| "<literal>showauto</literal> is used to print a list of automatically "
-#| "installed packages with each package on a new line."
msgid ""
"<literal>showauto</literal> is used to print a list of automatically "
"installed packages with each package on a new line. All automatically "
"given only those which are automatically installed will be shown."
msgstr ""
"<literal>showauto</literal> wird benutzt, um eine Liste automatisch "
-"installierter Pakete mit einem Paket in jeder neuen Zeile, auszugeben."
+"installierter Pakete – mit einem Paket in jeder neuen Zeile – auszugeben. "
+"Wenn kein Paket angegeben ist, werden alle automatisch installierten Pakete "
+"aufgelistet. Falls Pakete angegeben sind, werden nur diejenigen angezeigt, "
+"die automatisch installiert wurden."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-mark.8.xml:109
-#, fuzzy
-#| msgid "showauto"
msgid "showmanual"
-msgstr "showauto"
+msgstr "showmanual"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-mark.8.xml:110
"<literal>showauto</literal> except that it will print a list of manually "
"installed packages instead."
msgstr ""
+"<literal>showmanual</literal> kann auf die gleiche Weise wie "
+"<literal>showauto</literal> benutzt werden, mit der Ausnahme, dass es "
+"stattdessen eine Liste manuell installierter Pakete ausgibt."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-mark.8.xml:116
-#, fuzzy
-#| msgid "showauto"
msgid "showhold"
-msgstr "showauto"
+msgstr "showhold"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-mark.8.xml:117
-#, fuzzy
-#| msgid ""
-#| "<literal>showauto</literal> is used to print a list of automatically "
-#| "installed packages with each package on a new line."
msgid ""
"<literal>showhold</literal> is used to print a list of packages on hold in "
"the same way as for the other show commands."
msgstr ""
-"<literal>showauto</literal> wird benutzt, um eine Liste automatisch "
-"installierter Pakete mit einem Paket in jeder neuen Zeile, auszugeben."
+"<literal>showhold</literal> wird benutzt, um eine Liste auf »hold« gesetzter "
+"Pakete auf die gleiche Art wie für andere Anzeigebefehle auszugeben."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
#: apt-mark.8.xml:130
#, fuzzy
#| msgid ""
#| "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
-#| "order which have no or \"<literal>conf</literal>\" as filename extension "
-#| "and which only contain alphanumeric, hyphen (-), underscore (_) and "
-#| "period (.) characters. Otherwise APT will print a notice that it has "
+#| "order which have either no or \"<literal>conf</literal>\" as filename "
+#| "extension and which only contain alphanumeric, hyphen (-), underscore (_) "
+#| "and period (.) characters. Otherwise APT will print a notice that it has "
#| "ignored a file if the file doesn't match a pattern in the <literal>Dir::"
#| "Ignore-Files-Silently</literal> configuration list - in this case it will "
#| "be silently ignored."
"literal> configuration list - in this case it will be silently ignored."
msgstr ""
"alle Dateien in <literal>Dir::Etc::Parts</literal> in aufsteigender "
-"alphanumerischer Reihenfolge, die kein »<literal>conf</literal>« als "
-"Dateinamenserweiterung haben und die nur alphanumerische Zeichen, "
-"Bindestriche (-), Unterstriche (_) und Punkte (.) enthalten. Andernfalls "
-"wird APT einen Hinweis ausgeben, dass es eine Datei ignoriert hat, falls die "
-"Datei nicht auf ein Muster in der Konfigurationsliste <literal>Dir::Ignore-"
-"Files-Silently</literal> passt – in diesem Fall wird sie stillschweigend "
-"ignoriert."
+"alphanumerischer Reihenfolge, die entweder keine oder »<literal>conf</"
+"literal>« als Dateinamenserweiterung haben und die nur alphanumerische "
+"Zeichen, Bindestriche (-), Unterstriche (_) und Punkte (.) enthalten. "
+"Andernfalls wird APT einen Hinweis ausgeben, dass es eine Datei ignoriert "
+"hat, falls die Datei nicht auf ein Muster in der Konfigurationsliste "
+"<literal>Dir::Ignore-Files-Silently</literal> passt – in diesem Fall wird "
+"sie stillschweigend ignoriert."
#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
#: apt.conf.5.xml:59
#: apt.conf.5.xml:261
#, fuzzy
#| msgid ""
-#| "Seconds the Release file should be considered valid after it was created. "
-#| "The default is \"for ever\" (0) if the Release file of the archive "
-#| "doesn't include a <literal>Valid-Until</literal> header. If it does then "
-#| "this date is the default. The date from the Release file or the date "
-#| "specified by the creation time of the Release file (<literal>Date</"
-#| "literal> header) plus the seconds specified with this options are used to "
-#| "check if the validation of a file has expired by using the earlier date "
-#| "of the two. Archive specific settings can be made by appending the label "
-#| "of the archive to the option name."
+#| "Seconds the Release file should be considered valid after it was created "
+#| "(indicated by the <literal>Date</literal> header). If the Release file "
+#| "itself includes a <literal>Valid-Until</literal> header the earlier date "
+#| "of the two is used as the expiration date. The default value is "
+#| "<literal>0</literal> which stands for \"for ever\". Archive specific "
+#| "settings can be made by appending the label of the archive to the option "
+#| "name."
msgid ""
"Seconds the Release file should be considered valid after it was created. "
"The default is \"for ever\" (0) if the Release file of the archive doesn't "
"name."
msgstr ""
"Sekunden, die die Release-Datei als gültig betrachtet werden sollte, nachdem "
-"sie erzeugt wurde. Vorgabe ist »für immer« (0), falls die Release-Datei des "
-"Archivs keine <literal>Valid-Until</literal>-Kopfzeile enthält. Falls dies "
-"so ist, ist dieses Datum vorgegeben. Das Datum aus der Release-Datei oder "
-"das Datum, das durch die Erstellungszeit der Release-Datei angegeben wurde "
-"(<literal>Date</literal>-Kopfzeile) plus die mit diesen Optionen angegebenen "
-"Sekunden werden benutzt, um zu prüfen, ob die Bestätigung einer Datei "
-"abgelaufen ist indem das neuere Datum der beiden benutzt wird. "
+"sie erzeugt wurde (angezeigt durch die Kopfzeile <literal>Date</literal>). "
+"Falls die Release-Datei selbst eine <literal>Valid-Until</literal>-Kopfzeile "
+"enhält, wird der frühere von beiden Terminen als Verfallsdatum benutzt. "
+"Vorgabewert ist <literal>0</literal>, was »für immer« bedeutet. "
"Archivspezifische Einstellungen können durch Anhängen des Archivetiketts an "
"die Option »name« vorgenommen werden."
#| "Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</"
#| "replaceable></literal> will be checked: If this setting exists the method "
#| "will only be used if this file exists, e.g. for the bzip2 method (the "
-#| "inbuilt) setting is <placeholder type=\"literallayout\" id=\"0\"/> Note "
+#| "inbuilt) setting is: <placeholder type=\"literallayout\" id=\"0\"/> Note "
#| "also that list entries specified on the command line will be added at the "
#| "end of the list specified in the configuration files, but before the "
#| "default entries. To prefer a type in this case over the ones specified in "
msgstr ""
"Beachten Sie, dass <literal>Dir::Bin::<replaceable>Methodenname</"
"replaceable></literal> zur Laufzeit geprüft wird: Falls diese Einstellung "
-"existiert, wird die Methode nur benutzt, wenn die Datei existiert, z.B. für "
-"die (integrierte) bzip2-Methode ist die Einstellung <placeholder type="
+"existiert, wird die Methode nur benutzt, wenn die Datei existiert, z.B. ist "
+"die Einstellung für die (integrierte) bzip2-Methode: <placeholder type="
"\"literallayout\" id=\"0\"/>. Beachten Sie auch, dass auf der Befehlszeile "
"eingegebenen Einträge an das Ende der Liste angehängt werden, die in den "
"Konfigurationsdateien angegeben wurde, aber vor den Vorgabeeinträgen. Um "
#| msgid ""
#| "Note that the files in the <filename>/etc/apt/preferences.d</filename> "
#| "directory are parsed in alphanumeric ascending order and need to obey the "
-#| "following naming convention: The files have no or \"<literal>pref</"
-#| "literal>\" as filename extension and which only contain alphanumeric, "
-#| "hyphen (-), underscore (_) and period (.) characters. Otherwise APT will "
-#| "print a notice that it has ignored a file if the file doesn't match a "
-#| "pattern in the <literal>Dir::Ignore-Files-Silently</literal> "
-#| "configuration list - in this case it will be silently ignored."
+#| "following naming convention: The files have either no or \"<literal>pref</"
+#| "literal>\" as filename extension and only contain alphanumeric, hyphen "
+#| "(-), underscore (_) and period (.) characters. Otherwise APT will print "
+#| "a notice that it has ignored a file if the file doesn't match a pattern "
+#| "in the <literal>Dir::Ignore-Files-Silently</literal> configuration list - "
+#| "in this case it will be silently ignored."
msgid ""
"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
"directory are parsed in alphanumeric ascending order and need to obey the "
msgstr ""
"Beachten Sie, dass die Dateien im Verzeichnis <filename>/etc/apt/preferences."
"d</filename> in alphanumerisch aufsteigender Reihenfolge ausgewertet werden "
-"und der folgenden Namenskonvention unterliegen: Die Dateien haben keine oder "
-"<literal>»pref«</literal> als Dateierweiterung und sie enthalten nur "
-"alphanumerische Zeichen, Bindestriche (-), Unterstriche (_) oder Punkte (.). "
-"Andernfalls wird APT einen Hinweis ausgeben, dass es eine Datei ignoriert "
-"hat, falls die Datei nicht auf ein Muster in der Konfigurationsliste "
-"<literal>Dir::Ignore-Files-Silently</literal> passt – in diesem Fall wird "
-"sie stillschweigend ignoriert."
+"und der folgenden Namenskonvention unterliegen: Die Dateien haben entweder "
+"keine oder <literal>»pref«</literal> als Dateierweiterung und sie enthalten "
+"nur alphanumerische Zeichen, Bindestriche (-), Unterstriche (_) oder Punkte "
+"(.). Andernfalls wird APT einen Hinweis ausgeben, dass es eine Datei "
+"ignoriert hat, falls die Datei nicht auf ein Muster in der "
+"Konfigurationsliste <literal>Dir::Ignore-Files-Silently</literal> passt – in "
+"diesem Fall wird sie stillschweigend ignoriert."
#. type: Content of: <refentry><refsect1><refsect2><title>
#: apt_preferences.5.xml:79
#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
#: apt_preferences.5.xml:107
-#, fuzzy
-#| msgid ""
-#| "to the versions coming from archives which in their <filename>Release</"
-#| "filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
-#| "emphasis> as \"ButAutomaticUpgrades: yes\" like the debian "
-#| "<literal>experimental</literal> archive."
msgid ""
"to the versions coming from archives which in their <filename>Release</"
"filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</"
#. type: Content of: <refentry><refsect1><refsect2><para>
#: apt_preferences.5.xml:132
-#, fuzzy
-#| msgid ""
-#| "If the target release has not been specified then APT simply assigns "
-#| "priority 100 to all installed package versions and priority 500 to all "
-#| "uninstalled package versions, except versions coming from archives which "
-#| "in their <filename>Release</filename> files are marked as \"NotAutomatic: "
-#| "yes\" - these versions get the priority 1 or priority 100 if it is "
-#| "additionally marked as \"ButAutomaticUpgrades: yes\"."
msgid ""
"If the target release has not been specified then APT simply assigns "
"priority 100 to all installed package versions and priority 500 to all "
"Wenn das Ziel-Release nicht angegeben wurde, dann weist APT einfach allen "
"installierten Paketversionen eine Priorität von 100 und allen nicht "
"installierten Paketversionen eine Priorität von 500 zu, außer wenn Versionen "
-"aus Archiven kommen, die in deren <filename>Release<filename>-Dateien "
+"aus Archiven kommen, die in deren <filename>Release</filename>-Dateien mit "
"»NotAutomatic: yes« markiert sind – diese Versionen erhalten die Priorität 1 "
"oder die Priorität 100, falls sie zusätzlich als »ButAutomaticUpgrades: yes« "
"markiert sind."
"\"0\"/>"
msgstr ""
"Die <filename>Packages</filename>-Datei wird normalerweise im Verzeichnis "
-"<filename>.../dists/<replaceable>Distributions-Name</replaceable>/"
+"<filename>…/dists/<replaceable>Distributions-Name</replaceable>/"
"<replaceable>Komponente</replaceable>/<replaceable>Architektur</"
-"replaceable></filename> gefunden, zum Beispiel <filename>.../dists/stable/"
-"main/binary-i386/Packages</filename>. Sie besteht aus einer Serie "
-"mehrzeiliger Datensätze, einem für jedes verfügbare Paket in diesem "
-"Verzeichnis. In jedem Datensatz sind nur zwei Zeilen zum Setzen der APT-"
-"Prioritäten relevant: <placeholder type=\"variablelist\" id=\"0\"/>"
+"replaceable></filename> gefunden, zum Beispiel <filename>…/dists/stable/main/"
+"binary-i386/Packages</filename>. Sie besteht aus einer Serie mehrzeiliger "
+"Datensätze, einem für jedes verfügbare Paket in diesem Verzeichnis. In jedem "
+"Datensatz sind nur zwei Zeilen zum Setzen der APT-Prioritäten relevant: "
+"<placeholder type=\"variablelist\" id=\"0\"/>"
#. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
#: apt_preferences.5.xml:427
"\"0\"/>"
msgstr ""
"Die <filename>Release</filename>-Datei ist normalerweise im Verzeichnis "
-"<filename>.../dists/<replaceable>Distributionsname</replaceable></filename> "
-"zu finden, zum Beispiel <filename>.../dists/stable/Release</filename> oder "
-"<filename>.../dists/&stable-codename;/Release</filename>. Sie besteht aus "
+"<filename>…/dists/<replaceable>Distributionsname</replaceable></filename> zu "
+"finden, zum Beispiel <filename>…/dists/stable/Release</filename> oder "
+"<filename>…/dists/&stable-codename;/Release</filename>. Sie besteht aus "
"einem einzelnen mehrzeiligen Datensatz, der auf <emphasis>alle</emphasis> "
"Pakete im Verzeichnisbaum unterhalb des übergeordneten Verzeichnisses "
"zutrifft. Anders als die <filename>Packages</filename>-Datei sind nahezu "
#. type: Content of: <refentry><refsect1><literallayout>
#: sources.list.5.xml:81
#, fuzzy, no-wrap
-#| msgid "deb uri distribution [component1] [component2] [...]"
+#| msgid "deb [ options ] uri distribution [component1] [component2] [...]"
msgid "deb uri distribution [component1] [component2] [...]"
-msgstr "deb URI Distribution [Komponente1] [Komponente2] [...]"
+msgstr "deb [ Optionen ] URI Distribution [Komponente1] [Komponente2] […]"
#. type: Content of: <refentry><refsect1><para>
#: sources.list.5.xml:83
"of interest when specifying an exact path, <literal>APT</literal> will "
"automatically generate a URI with the current architecture otherwise."
msgstr ""
-"<literal> distribution</literal> könnte außerdem eine Variable, <literal>"
+"<literal>Distribution</literal> könnte außerdem eine Variable, <literal>"
"$(ARCH)</literal>, enthalten, die zur Debian-Architektur (i386, m68k, "
-"powerpc, ...) expandiert wird, die auf dem System benutzt wird. Dies erlaubt "
+"powerpc, …) expandiert wird, die auf dem System benutzt wird. Dies erlaubt "
"es, architekturabhängige <filename>sources.list</filename>-Dateien zu "
"benutzen. Im Allgemeinen ist dies nur von Interesse, wenn ein genauer Pfad "
"angegeben wird, andernfalls wird <literal>APT</literal> automatisch eine URI "
"# apt-get update\n"
"OK http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n"
"OK http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n"
-"Paketlisten werden gelesen... Fertig\n"
-"Abhängigkeitsbaum wird aufgebaut... Fertig"
+"Paketlisten werden gelesen … Fertig\n"
+"Abhängigkeitsbaum wird aufgebaut … Fertig"
#. type: <p><taglist>
#: guide.sgml:120
"Building Dependency Tree... Done"
msgstr ""
"# apt-get check\n"
-"Paketlisten werden gelesen... Fertig\n"
-"Abhängigkeitsbaum wird aufgebaut"
+"Paketlisten werden gelesen … Fertig\n"
+"Abhängigkeitsbaum wird aufgebaut … Fertig"
#. type: <p></p>
#: guide.sgml:297
" libreadlineg2: Conflicts:libreadline2 (<< 2.1-2.1)"
msgstr ""
"# apt-get check\n"
-"Paketlisten werden gelesen... Fertig\n"
+"Paketlisten werden gelesen … Fertig Fertig\n"
"Abhängigkeitsbaum wird aufgebaut\n"
-"Status-Informationen einlesen... Fertig\n"
+"Status-Informationen einlesen … Fertig Fertig\n"
"Probieren Sie „apt-get -f install“, um diese zu korrigieren:\n"
"Die folgenden Pakete haben nichterfüllte Abhängigkeiten:\n"
" 9fonts: Hängt ab: xlib6g ist aber nicht installiert\n"
msgstr ""
" # cd /Platte\n"
" # sh -x ./wget-script\n"
-" [ warten ... ]"
+" [ warten … Fertig ]"
#. type: </example><example>
#: offline.sgml:228
msgid "Which will use the already fetched archives on the disc."
msgstr "Es wird die bereits auf die Platte heruntergeladenen Archive benutzen."
-#, fuzzy
-#~| msgid "<option>--recurse</option>"
#~ msgid "<option>--host-architecture</option>"
-#~ msgstr "<option>--recurse</option>"
-
-#, fuzzy
-#~| msgid "Max-ValidTime"
-#~ msgid "Min-ValidTime"
-#~ msgstr "Max-ValidTime"
-
-#, fuzzy
-#~| msgid ""
-#~| "Seconds the Release file should be considered valid after it was "
-#~| "created. The default is \"for ever\" (0) if the Release file of the "
-#~| "archive doesn't include a <literal>Valid-Until</literal> header. If it "
-#~| "does then this date is the default. The date from the Release file or "
-#~| "the date specified by the creation time of the Release file "
-#~| "(<literal>Date</literal> header) plus the seconds specified with this "
-#~| "options are used to check if the validation of a file has expired by "
-#~| "using the earlier date of the two. Archive specific settings can be made "
-#~| "by appending the label of the archive to the option name."
-#~ msgid ""
-#~ "Minimum of seconds the Release file should be considered valid after it "
-#~ "was created (indicated by the <literal>Date</literal> header). Use this "
-#~ "if you need to use a seldomly updated (local) mirror of a more regular "
-#~ "updated archive with a <literal>Valid-Until</literal> header instead of "
-#~ "competely disabling the expiration date checking. Archive specific "
-#~ "settings can and should be used by appending the label of the archive to "
-#~ "the option name."
-#~ msgstr ""
-#~ "Sekunden, die die Release-Datei als gültig betrachtet werden sollte, "
-#~ "nachdem sie erzeugt wurde. Vorgabe ist »für immer« (0), falls die Release-"
-#~ "Datei des Archivs keine <literal>Valid-Until</literal>-Kopfzeile enthält. "
-#~ "Falls dies so ist, ist dieses Datum vorgegeben. Das Datum aus der Release-"
-#~ "Datei oder das Datum, das durch die Erstellungszeit der Release-Datei "
-#~ "angegeben wurde (<literal>Date</literal>-Kopfzeile) plus die mit diesen "
-#~ "Optionen angegebenen Sekunden werden benutzt, um zu prüfen, ob die "
-#~ "Bestätigung einer Datei abgelaufen ist indem das neuere Datum der beiden "
-#~ "benutzt wird. Archivspezifische Einstellungen können durch Anhängen des "
-#~ "Archivetiketts an die Option »name« vorgenommen werden."
+#~ msgstr "<option>--host-architecture</option>"
-#, fuzzy
-#~| msgid ""
-#~| "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
-#~| "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
-#~| " "
#~ msgid ""
-#~ "deb http://ftp.debian.org/debian &stable-codename; main\n"
-#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main"
-#~ msgstr ""
-#~ "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
-#~ "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
-#~ " "
-
-#~ msgid "<option>--md5</option>"
-#~ msgstr "<option>--md5</option>"
-
-#~ msgid ""
-#~ "Generate MD5 sums. This defaults to on, when turned off the generated "
-#~ "index files will not have MD5Sum fields where possible. Configuration "
-#~ "Item: <literal>APT::FTPArchive::MD5</literal>"
-#~ msgstr ""
-#~ "Generiert MD5-Summen. Dies ist standardmäßig an, wenn es ausgeschaltet "
-#~ "ist, haben die generierten Indexdateien keine MD5Sum-Felder, sofern dies "
-#~ "möglich ist. Konfigurationselement: <literal>APT::FTPArchive::MD5</"
-#~ "literal>"
-
-#~ msgid "unmarkauto"
-#~ msgstr "unmarkauto"
-
-#~ msgid "<option>-h</option>"
-#~ msgstr "<option>-h</option>"
-
-#~ msgid "<option>--help</option>"
-#~ msgstr "<option>--help</option>"
-
-#~ msgid "Show a short usage summary."
-#~ msgstr "Eine kurze Zusammenfassung anzeigen."
-
-#~ msgid "<option>-v</option>"
-#~ msgstr "<option>-v</option>"
-
-#~ msgid "<option>--version</option>"
-#~ msgstr "<option>--version</option>"
-
-#~ msgid "Show the program version."
-#~ msgstr "Die Programmversion anzeigen."
-
-#~ msgid "to the version that is already installed (if any)."
-#~ msgstr "zu der Version, die bereits installiert ist (wenn vorhanden)."
-
-#~ msgid "APT package handling utility -- cache manipulator"
+#~ "This option controls the architecture packages are built for by "
+#~ "<command>apt-get source --compile</command> and how cross-"
+#~ "builddependencies are satisfied. By default is it not set which means "
+#~ "that the host architecture is the same as the build architecture (which "
+#~ "is defined by <literal>APT::Architecture</literal>). Configuration Item: "
+#~ "<literal>APT::Get::Host-Architecture</literal>"
#~ msgstr ""
-#~ "APT-Werkzeug zur Handhabung von Paketen -- Zwischenspeichermanipulierer"
-
-#~ msgid "add <replaceable>file(s)</replaceable>"
-#~ msgstr "add <replaceable>Datei(en)</replaceable>"
+#~ "Diese Option steuert, wie die Architekturpakete durch <command>apt-get "
+#~ "source --compile</command> gebaut und wie Cross-Bau-Abhängigkeiten "
+#~ "erfüllt werden. Standardmäßig ist sie nicht gesetze, was bedeutet, dass "
+#~ "die Rechnerarchitektur die gleiche wie die Bau-Architektur ist (die durch "
+#~ "<literal>APT::Architecture</literal>) definiert wird). "
+#~ "Konfigurationselement: <literal>APT::Get::Host-Architecture</literal>"
#~ msgid ""
-#~ "<literal>add</literal> adds the named package index files to the package "
-#~ "cache. This is for debugging only."
+#~ "Update the local keyring with the archive keyring and remove from the "
+#~ "local keyring the archive keys which are no longer valid. The archive "
+#~ "keyring is shipped in the <literal>archive-keyring</literal> package of "
+#~ "your distribution, e.g. the <literal>debian-archive-keyring</literal> "
+#~ "package in Debian."
#~ msgstr ""
-#~ "<literal>add</literal> fügt die genannten Paket-Index-Dateien zum "
-#~ "Paketzwischenspeicher hinzu. Dies dient nur der Fehlersuche."
+#~ "Aktualisiert den lokalen Schlüsselbund mit dem Archivschlüsselbund und "
+#~ "entfernt die Archivschlüssel, die nicht länger gültig sind, aus dem "
+#~ "lokalen Schlüsselbund. Der Archivschlüsselbund wird im Paket "
+#~ "<literal>archive-keyring</literal> Ihrer Distribution mitgeliefert, z.B. "
+#~ "dem Paket <literal>debian-archive-keyring</literal> in Debian."
#~ msgid ""
-#~ "The <literal>release</literal> command generates a Release file from a "
-#~ "directory tree. It recursively searches the given directory for Packages, "
-#~ "Packages.gz, Packages.bz2, Sources, Sources.gz, Sources.bz2, Release and "
-#~ "md5sum.txt files. It then writes to stdout a Release file containing an "
-#~ "MD5 digest and SHA1 digest for each file."
+#~ "All Architectures the system supports. Processors implementing the "
+#~ "<literal>amd64</literal> are e.g. also able to execute binaries compiled "
+#~ "for <literal>i386</literal>; This list is use when fetching files and "
+#~ "parsing package lists. The internal default is always the native "
+#~ "architecture (<literal>APT::Architecture</literal>) and all foreign "
+#~ "architectures it can retrieve by calling <command>dpkg --print-foreign-"
+#~ "architectures</command>."
#~ msgstr ""
-#~ "Der <literal>release</literal>-Befehl generiert eine Release-Datei aus "
-#~ "einem Verzeichnisbaum. Er durchsucht das vorgegebene Verzeichnis rekursiv "
-#~ "nach Packages-, Packages.gz-, Packages.bz2-, Sources-, Sources.gz-, "
-#~ "Sources.bz2-, Release- und md5sum.txt-Dateien. Dann schreibt es eine "
-#~ "Release-Datei nach stdout, die einen MD5- und SHA1-Hash für jede Datei "
-#~ "enthält."
-
-#~ msgid "<option>--install-recommends</option>"
-#~ msgstr "<option>--install-recommends</option>"
-
-#~ msgid "Also install recommended packages."
-#~ msgstr "Installiert außerdem empfohlene Pakete."
-
-#~ msgid "Do not install recommended packages."
-#~ msgstr "Keine empfohlenen Pakete installieren."
+#~ "Alle Architekturen, die das System unterstützt. Prozessoren, die "
+#~ "<literal>amd64</literal> implementieren sind beispielsweise ebenso in der "
+#~ "Lage, Programme auszuführen, die für <literal>i386</literal> kompiliert "
+#~ "wurden. Diese Liste wird benutzt, wenn Dateien abgerufen und Paketlisten "
+#~ "ausgewertet werden. Die interne Vorgabe ist immer die native Architektur "
+#~ "(<literal>APT::Architecture</literal>) und alle fremden Architekturen, "
+#~ "die durch Aufruf von <command>dpkg --print-foreign-architectures</"
+#~ "command> abgefragt werden können."
-#~ msgid ""
-#~ "While it is possible to add an empty compression type to the order list, "
-#~ "but APT in its current version doesn't understand it correctly and will "
-#~ "display many warnings about not downloaded files - these warnings are "
-#~ "most of the time false negatives. Future versions will maybe include a "
-#~ "way to really prefer uncompressed files to support the usage of local "
-#~ "mirrors."
-#~ msgstr ""
-#~ "Obwohl es möglich ist, einen leeren Komprimierungstyp zu der "
-#~ "Reihenfolgenliste hinzuzufügen, versteht dies APT in der aktuellen "
-#~ "Version nicht richtig und wird viele Warnungen wegen nicht "
-#~ "heruntergeladener Dateien anzeigen – diese Warnungen sind meistens "
-#~ "inkorrekte Treffer. Zukünftige Versionen werden möglicherweise eine "
-#~ "Möglichkeit enthalten, um wirklich unkomprimierte Dateien vorzuziehen, um "
-#~ "den Gebrauch lokaler Spiegel zu unterstützen."
+#~ msgid "Min-ValidTime"
+#~ msgstr "Min-ValidTime"
#~ msgid ""
-#~ "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-"
-#~ "US directory."
+#~ "Minimum of seconds the Release file should be considered valid after it "
+#~ "was created (indicated by the <literal>Date</literal> header). Use this "
+#~ "if you need to use a seldomly updated (local) mirror of a more regular "
+#~ "updated archive with a <literal>Valid-Until</literal> header instead of "
+#~ "completely disabling the expiration date checking. Archive specific "
+#~ "settings can and should be used by appending the label of the archive to "
+#~ "the option name."
#~ msgstr ""
-#~ "Benutzt HTTP, um auf das Archiv auf nonus.debian.org unter dem debian-non-"
-#~ "US-Verzeichnis zuzugreifen."
+#~ "Minimale Anzahl der Sekunden, die die Release-Datei als gültig betrachtet "
+#~ "werden sollte, nachdem sie erzeugt wurde (angezeigt durch die Kopfzeile "
+#~ "<literal>Date</literal>). Benutzen Sie dies, falls Sie einen selten "
+#~ "aktualisierten (lokalen) Spiegel eines regelmäßiger aktualisierten "
+#~ "Archivs mit einer <literal>Valid-Until</literal>-Kopfzeile haben, anstatt "
+#~ "die Überprüfung des Ablaufdatum komplett zu deaktivieren. "
+#~ "Archivspezifische Einstellungen können und sollten durch Anhängen des "
+#~ "Archivetiketts an die Option »name« vorgenommen werden."
#~ msgid ""
-#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-"
-#~ "free"
+#~ "<literal>options</literal> is always optional and needs to be surounded "
+#~ "by square brackets. It can consist of multiple settings in the form "
+#~ "<literal><replaceable>setting</replaceable>=<replaceable>value</"
+#~ "replaceable></literal>. Multiple settings are separated by spaces. The "
+#~ "following settings are supported by APT, note though that unsupported "
+#~ "settings will be ignored silently:"
#~ msgstr ""
-#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-"
-#~ "free"
-
-#~ msgid "OPTIONS"
-#~ msgstr "OPTIONEN"
-
-#~ msgid "None."
-#~ msgstr "Keine"
-
-#~ msgid "FILES"
-#~ msgstr "DATEIEN"
-
-#~ msgid "<filename>/var/lib/apt/extended_states</filename>"
-#~ msgstr "<filename>/var/lib/apt/extended_states</filename>"
+#~ "<literal>options</literal> ist immer optional und muss in eckige Klammern "
+#~ "eingeschlossen werden. Es kann aus mehreren Einstellungen in der Form "
+#~ "<literal><replaceable>Einstellung</replaceable>=<replaceable>Wert</"
+#~ "replaceable></literal> bestehen. Mehrere Einstellungen werden durch "
+#~ "Leerzeichen getrennt. Die folgenden Einstellungen werden von APT "
+#~ "unterstützt. Beachten Sie allerdings, dass nicht unterstützte "
+#~ "Einstellungen stillschweigend ignoriert werden."
#~ msgid ""
-#~ "Status list of auto-installed packages. Configuration Item: "
-#~ "<literal>Dir::State</literal> sets the path to the "
-#~ "<filename>extended_states</filename> file."
+#~ "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</"
+#~ "replaceable>,…</literal> can be used to specify for which architectures "
+#~ "packages information should be downloaded. If this option is not set all "
+#~ "architectures defined by the <literal>APT::Architectures</literal> option "
+#~ "will be downloaded."
#~ msgstr ""
-#~ "Statusliste automatisch installierter Pakete. Konfigurationselement: "
-#~ "<literal>Dir::State</literal> setzt den Pfad zur Datei "
-#~ "<filename>extended_states</filename>."
-
-#~ msgid "Cache-Limit"
-#~ msgstr "Cache-Limit"
+#~ "<literal>arch=<replaceable>Architektur1</replaceable>,"
+#~ "<replaceable>Architektur2</replaceable>, …</literal> kann benutzt werden, "
+#~ "um anzugeben, für welche Architekturen Paketinformationen heruntergeladen "
+#~ "werden sollen. Falls diese Option nicht gesetzt ist, werden alle durch "
+#~ "die Option <literal>APT::Architectures</literal> definierten "
+#~ "Architekturen heruntergeladen."
#~ msgid ""
-#~ "APT uses a fixed size memory mapped cache file to store the 'available' "
-#~ "information. This sets the size of that cache (in bytes)."
+#~ "The first line gets package information for the architectures in "
+#~ "<literal>APT::Architectures</literal> while the second always retrieves "
+#~ "<literal>amd64</literal> and <literal>armel</literal>."
#~ msgstr ""
-#~ "APT benutzt eine Zwischenspeicherdatei mit fester Größe, um die "
-#~ "»verfügbar«-Informationen zu speichern. Dies setzt die Größe dieses "
-#~ "Zwischenspeichers (in Bytes)."
-
-#~ msgid "Pin: release n=squeeze\n"
-#~ msgstr "Pin: release n=squeeze\n"
+#~ "Die erste Zeile bekommt Paketinformationen für die Architekturen in "
+#~ "<literal>APT::Architectures</literal>, während die zweite immer "
+#~ "<literal>amd64</literal> und <literal>armel</literal> holt."
#~ msgid ""
-#~ "The <literal>Pin-Priority:</literal> line in each APT preferences record "
-#~ "is optional. If omitted, APT assigns a priority of 1 less than the last "
-#~ "value specified on a line beginning with <literal>Pin-Priority: "
-#~ "release ...</literal>."
+#~ "deb http://ftp.debian.org/debian &stable-codename; main\n"
+#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main"
#~ msgstr ""
-#~ "Die <literal>Pin-Priority:</literal>-Zeile in jedem APT-"
-#~ "Einstellungsdatensatz ist optional. Wenn diese weggelassen wird, weist "
-#~ "APT ein Priorität zu, die um 1 kleiner ist, als der letzte Wert, der in "
-#~ "einer Zeile angegeben wurde, die mit <literal>Pin-Priority: release ...</"
-#~ "literal> anfängt."
+#~ "deb http://ftp.debian.org/debian &stable-codename; main\n"
+#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-cache.8.xml:317
+#, fuzzy
+#| msgid ""
+#| "Per default the <literal>depends</literal> and <literal>rdepends</"
+#| "literal> print all dependencies. This can be twicked with these flags "
+#| "which will omit the specified dependency type. Configuration Item: "
+#| "<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></"
+#| "literal> e.g. <literal>APT::Cache::ShowRecommends</literal>."
msgid ""
"Per default the <literal>depends</literal> and <literal>rdepends</literal> "
"print all dependencies. This can be twicked with these flags which will omit "
#. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
#: apt-get.8.xml:39
+#, fuzzy
+#| msgid ""
+#| "<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> "
+#| "<option>-o= <replaceable>config_string</replaceable> </option> </arg> "
+#| "<arg> <option>-c= <replaceable>config_file</replaceable> </option> </arg> "
+#| "<arg> <option>-t=</option> <arg choice='plain'> "
+#| "<replaceable>target_release</replaceable> </arg> </arg> <group choice="
+#| "\"req\"> <arg choice='plain'>update</arg> <arg choice='plain'>upgrade</"
+#| "arg> <arg choice='plain'>dselect-upgrade</arg> <arg choice='plain'>dist-"
+#| "upgrade</arg> <arg choice='plain'>install <arg choice=\"plain\" rep="
+#| "\"repeat\"><replaceable>pkg</replaceable> <arg> <group choice='req'> <arg "
+#| "choice='plain'> =<replaceable>pkg_version_number</replaceable> </arg> "
+#| "<arg choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
+#| "group> </arg> </arg> </arg> <arg choice='plain'>remove <arg choice=\"plain"
+#| "\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> <arg "
+#| "choice='plain'>purge <arg choice=\"plain\" rep=\"repeat"
+#| "\"><replaceable>pkg</replaceable></arg></arg> <arg choice='plain'>source "
+#| "<arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable> <arg> "
+#| "<group choice='req'> <arg choice='plain'> "
+#| "=<replaceable>pkg_version_number</replaceable> </arg> <arg "
+#| "choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
+#| "group> </arg> </arg> </arg> <arg choice='plain'>build-dep <arg choice="
+#| "\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> <arg "
+#| "choice='plain'>check</arg> <arg choice='plain'>clean</arg> <arg "
+#| "choice='plain'>autoclean</arg> <arg choice='plain'>autoremove</arg> <arg "
+#| "choice='plain'> <group choice='req'> <arg choice='plain'>-v</arg> <arg "
+#| "choice='plain'>--version</arg> </group> </arg> <arg choice='plain'> "
+#| "<group choice='req'> <arg choice='plain'>-h</arg> <arg choice='plain'>--"
+#| "help</arg> </group> </arg> </group>"
msgid ""
"<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> "
"<option>-o= <replaceable>config_string</replaceable> </option> </arg> <arg> "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:255
+#, fuzzy
+#| msgid ""
+#| "If the <option>--compile</option> option is specified then the package "
+#| "will be compiled to a binary .deb using <command>dpkg-buildpackage</"
+#| "command>, if <option>--download-only</option> is specified then the "
+#| "source package will not be unpacked."
msgid ""
"If the <option>--compile</option> option is specified then the package will "
"be compiled to a binary .deb using <command>dpkg-buildpackage</command>, if "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:272
+#, fuzzy
+#| msgid ""
+#| "<literal>build-dep</literal> causes apt-get to install/remove packages in "
+#| "an attempt to satisfy the build dependencies for a source package."
msgid ""
"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
"attempt to satisfy the build dependencies for a source package."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:308
+#, fuzzy
+#| msgid ""
+#| "<literal>autoremove</literal> is used to remove packages that were "
+#| "automatically installed to satisfy dependencies for some package and that "
+#| "are no more needed."
msgid ""
"<literal>autoremove</literal> is used to remove packages that were "
"automatically installed to satisfy dependencies for some package and that "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-key.8.xml:162
+#, fuzzy
+#| msgid ""
+#| "With this option it is possible to specify a specific keyring file the "
+#| "command should operate on. The default is that a command is executed on "
+#| "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#| "<filename>trusted.gpg.d</filename> directory, though <filename>trusted."
+#| "gpg</filename> is the primary keyring which means that e.g. new keys are "
+#| "added to this one."
msgid ""
"With this option it is possible to specify a specific keyring file the "
"command should operate on. The default is that a command is executed on the "
#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml:261
+#, fuzzy
+#| msgid ""
+#| "Seconds the Release file should be considered valid after it was created. "
+#| "The default is \"for ever\" (0) if the Release file of the archive "
+#| "doesn't include a <literal>Valid-Until</literal> header. If it does then "
+#| "this date is the default. The date from the Release file or the date "
+#| "specified by the creation time of the Release file (<literal>Date</"
+#| "literal> header) plus the seconds specified with this options are used to "
+#| "check if the validation of a file has expired by using the earlier date "
+#| "of the two. Archive specific settings can be made by appending the label "
+#| "of the archive to the option name."
msgid ""
"Seconds the Release file should be considered valid after it was created. "
"The default is \"for ever\" (0) if the Release file of the archive doesn't "
#. type: Content of: <refentry><refsect1><literallayout>
#: sources.list.5.xml:81
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid "deb uri distribution [component1] [component2] [...]"
msgid "deb uri distribution [component1] [component2] [...]"
msgstr "deb uri distribución [componente1] [componente2] [...]"
msgid "Which will use the already fetched archives on the disc."
msgstr "Ésto usará los archivos del disco previamente obtenidos."
+#, fuzzy
+#~| msgid "<option>--recurse</option>"
+#~ msgid "<option>--host-architecture</option>"
+#~ msgstr "<option>--recurse</option>"
+
+#, fuzzy
+#~| msgid "Max-ValidTime"
+#~ msgid "Min-ValidTime"
+#~ msgstr "Max-ValidTime"
+
+#, fuzzy
+#~| msgid ""
+#~| "Seconds the Release file should be considered valid after it was "
+#~| "created. The default is \"for ever\" (0) if the Release file of the "
+#~| "archive doesn't include a <literal>Valid-Until</literal> header. If it "
+#~| "does then this date is the default. The date from the Release file or "
+#~| "the date specified by the creation time of the Release file "
+#~| "(<literal>Date</literal> header) plus the seconds specified with this "
+#~| "options are used to check if the validation of a file has expired by "
+#~| "using the earlier date of the two. Archive specific settings can be made "
+#~| "by appending the label of the archive to the option name."
+#~ msgid ""
+#~ "Minimum of seconds the Release file should be considered valid after it "
+#~ "was created (indicated by the <literal>Date</literal> header). Use this "
+#~ "if you need to use a seldomly updated (local) mirror of a more regular "
+#~ "updated archive with a <literal>Valid-Until</literal> header instead of "
+#~ "completely disabling the expiration date checking. Archive specific "
+#~ "settings can and should be used by appending the label of the archive to "
+#~ "the option name."
+#~ msgstr ""
+#~ "Los segundos que el fichero «Release» se considerará válido después de su "
+#~ "creación. El valor predeterminado es «para siempre» (cero) si el fichero "
+#~ "«Release» del archivo no incluye una cabecera <literal>Valid-Until</"
+#~ "literal>. Si lo incluye, el valor predeterminado es esta fecha. La fecha "
+#~ "del fichero «Release» o la fecha definida por la hora de creación del "
+#~ "fichero «Release» (cabecera <literal>Date</literal>), a lo que se añaden "
+#~ "los segundos definidos con estas opciones, se usan para comprobar si la "
+#~ "validez de un fichero a expirado, usando la fecha más antigua de las dos "
+#~ "anteriormente mencionadas. Se pueden definir opciones de configuración "
+#~ "específicas al archivo añadiendo la etiqueta del archivo al nombre de la "
+#~ "opción."
+
+#, fuzzy
+#~| msgid ""
+#~| "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
+#~| "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
+#~| " "
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main\n"
+#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main"
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
+#~ "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
+#~ " "
+
#~ msgid "<option>--md5</option>"
#~ msgstr "<option>--md5</option>"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-cache.8.xml:317
+#, fuzzy
+#| msgid ""
+#| "Per default the <literal>depends</literal> and <literal>rdepends</"
+#| "literal> print all dependencies. This can be twicked with these flags "
+#| "which will omit the specified dependency type. Configuration Item: "
+#| "<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></"
+#| "literal> e.g. <literal>APT::Cache::ShowRecommends</literal>."
msgid ""
"Per default the <literal>depends</literal> and <literal>rdepends</literal> "
"print all dependencies. This can be twicked with these flags which will omit "
#. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
#: apt-get.8.xml:39
+#, fuzzy
+#| msgid ""
+#| "<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> "
+#| "<option>-o= <replaceable>config_string</replaceable> </option> </arg> "
+#| "<arg> <option>-c= <replaceable>config_file</replaceable> </option> </arg> "
+#| "<arg> <option>-t=</option> <arg choice='plain'> "
+#| "<replaceable>target_release</replaceable> </arg> </arg> <group choice="
+#| "\"req\"> <arg choice='plain'>update</arg> <arg choice='plain'>upgrade</"
+#| "arg> <arg choice='plain'>dselect-upgrade</arg> <arg choice='plain'>dist-"
+#| "upgrade</arg> <arg choice='plain'>install <arg choice=\"plain\" rep="
+#| "\"repeat\"><replaceable>pkg</replaceable> <arg> <group choice='req'> <arg "
+#| "choice='plain'> =<replaceable>pkg_version_number</replaceable> </arg> "
+#| "<arg choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
+#| "group> </arg> </arg> </arg> <arg choice='plain'>remove <arg choice=\"plain"
+#| "\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> <arg "
+#| "choice='plain'>purge <arg choice=\"plain\" rep=\"repeat"
+#| "\"><replaceable>pkg</replaceable></arg></arg> <arg choice='plain'>source "
+#| "<arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable> <arg> "
+#| "<group choice='req'> <arg choice='plain'> "
+#| "=<replaceable>pkg_version_number</replaceable> </arg> <arg "
+#| "choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
+#| "group> </arg> </arg> </arg> <arg choice='plain'>build-dep <arg choice="
+#| "\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> <arg "
+#| "choice='plain'>check</arg> <arg choice='plain'>clean</arg> <arg "
+#| "choice='plain'>autoclean</arg> <arg choice='plain'>autoremove</arg> <arg "
+#| "choice='plain'> <group choice='req'> <arg choice='plain'>-v</arg> <arg "
+#| "choice='plain'>--version</arg> </group> </arg> <arg choice='plain'> "
+#| "<group choice='req'> <arg choice='plain'>-h</arg> <arg choice='plain'>--"
+#| "help</arg> </group> </arg> </group>"
msgid ""
"<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> "
"<option>-o= <replaceable>config_string</replaceable> </option> </arg> <arg> "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:255
+#, fuzzy
+#| msgid ""
+#| "If the <option>--compile</option> option is specified then the package "
+#| "will be compiled to a binary .deb using <command>dpkg-buildpackage</"
+#| "command>, if <option>--download-only</option> is specified then the "
+#| "source package will not be unpacked."
msgid ""
"If the <option>--compile</option> option is specified then the package will "
"be compiled to a binary .deb using <command>dpkg-buildpackage</command>, if "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:272
+#, fuzzy
+#| msgid ""
+#| "<literal>build-dep</literal> causes apt-get to install/remove packages in "
+#| "an attempt to satisfy the build dependencies for a source package."
msgid ""
"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
"attempt to satisfy the build dependencies for a source package."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:282
+#, fuzzy
+#| msgid ""
+#| "<literal>download</literal> will download the given binary package into "
+#| "the current directory."
msgid ""
"<literal>download</literal> will download the given binary package into the "
"current directoy."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:308
+#, fuzzy
+#| msgid ""
+#| "<literal>autoremove</literal> is used to remove packages that were "
+#| "automatically installed to satisfy dependencies for some package and that "
+#| "are no more needed."
msgid ""
"<literal>autoremove</literal> is used to remove packages that were "
"automatically installed to satisfy dependencies for some package and that "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-key.8.xml:162
+#, fuzzy
+#| msgid ""
+#| "With this option it is possible to specify a specific keyring file the "
+#| "command should operate on. The default is that a command is executed on "
+#| "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#| "<filename>trusted.gpg.d</filename> directory, though <filename>trusted."
+#| "gpg</filename> is the primary keyring which means that e.g. new keys are "
+#| "added to this one."
msgid ""
"With this option it is possible to specify a specific keyring file the "
"command should operate on. The default is that a command is executed on the "
#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
#: apt.conf.5.xml:52
+#, fuzzy
+#| msgid ""
+#| "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
+#| "order which have no or \"<literal>conf</literal>\" as filename extension "
+#| "and which only contain alphanumeric, hyphen (-), underscore (_) and "
+#| "period (.) characters. Otherwise APT will print a notice that it has "
+#| "ignored a file if the file doesn't match a pattern in the <literal>Dir::"
+#| "Ignore-Files-Silently</literal> configuration list - in this case it will "
+#| "be silently ignored."
msgid ""
"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
"order which have no or \"<literal>conf</literal>\" as filename extension and "
#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml:261
+#, fuzzy
+#| msgid ""
+#| "Seconds the Release file should be considered valid after it was created. "
+#| "The default is \"for ever\" (0) if the Release file of the archive "
+#| "doesn't include a <literal>Valid-Until</literal> header. If it does then "
+#| "this date is the default. The date from the Release file or the date "
+#| "specified by the creation time of the Release file (<literal>Date</"
+#| "literal> header) plus the seconds specified with this options are used to "
+#| "check if the validation of a file has expired by using the earlier date "
+#| "of the two. Archive specific settings can be made by appending the label "
+#| "of the archive to the option name."
msgid ""
"Seconds the Release file should be considered valid after it was created. "
"The default is \"for ever\" (0) if the Release file of the archive doesn't "
#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml:442
+#, fuzzy
+#| msgid ""
+#| "Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</"
+#| "replaceable></literal> will be checked: If this setting exists the method "
+#| "will only be used if this file exists, e.g. for the bzip2 method (the "
+#| "inbuilt) setting is <placeholder type=\"literallayout\" id=\"0\"/> Note "
+#| "also that list entries specified on the command line will be added at the "
+#| "end of the list specified in the configuration files, but before the "
+#| "default entries. To prefer a type in this case over the ones specified in "
+#| "the configuration files you can set the option direct - not in list "
+#| "style. This will not override the defined list, it will only prefix the "
+#| "list with this type."
msgid ""
"Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</"
"replaceable></literal> will be checked: If this setting exists the method "
#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml:449
+#, fuzzy
+#| msgid ""
+#| "The special type <literal>uncompressed</literal> can be used to give "
+#| "uncompressed files a preference, but note that most archives don't "
+#| "provide uncompressed files so this is mostly only useable for local "
+#| "mirrors."
msgid ""
"The special type <literal>uncompressed</literal> can be used to give "
"uncompressed files a preference, but note that most archives doesn't provide "
#. type: Content of: <refentry><refsect1><para>
#: apt_preferences.5.xml:70
+#, fuzzy
+#| msgid ""
+#| "Note that the files in the <filename>/etc/apt/preferences.d</filename> "
+#| "directory are parsed in alphanumeric ascending order and need to obey the "
+#| "following naming convention: The files have no or \"<literal>pref</"
+#| "literal>\" as filename extension and which only contain alphanumeric, "
+#| "hyphen (-), underscore (_) and period (.) characters. Otherwise APT will "
+#| "print a notice that it has ignored a file if the file doesn't match a "
+#| "pattern in the <literal>Dir::Ignore-Files-Silently</literal> "
+#| "configuration list - in this case it will be silently ignored."
msgid ""
"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
"directory are parsed in alphanumeric ascending order and need to obey the "
#. type: Content of: <refentry><refsect1><literallayout>
#: sources.list.5.xml:81
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid "deb uri distribution [component1] [component2] [...]"
msgid "deb uri distribution [component1] [component2] [...]"
msgstr "deb uri distribution [composant1] [composant2] [...]"
msgid "Which will use the already fetched archives on the disc."
msgstr "Cette commande utilisera les fichiers récupérés sur le disque."
+#, fuzzy
+#~| msgid "<option>--recurse</option>"
+#~ msgid "<option>--host-architecture</option>"
+#~ msgstr "<option>--recurse</option>"
+
+#, fuzzy
+#~| msgid "Max-ValidTime"
+#~ msgid "Min-ValidTime"
+#~ msgstr "Max-ValidTime"
+
+#, fuzzy
+#~| msgid ""
+#~| "Seconds the Release file should be considered valid after it was "
+#~| "created. The default is \"for ever\" (0) if the Release file of the "
+#~| "archive doesn't include a <literal>Valid-Until</literal> header. If it "
+#~| "does then this date is the default. The date from the Release file or "
+#~| "the date specified by the creation time of the Release file "
+#~| "(<literal>Date</literal> header) plus the seconds specified with this "
+#~| "options are used to check if the validation of a file has expired by "
+#~| "using the earlier date of the two. Archive specific settings can be made "
+#~| "by appending the label of the archive to the option name."
+#~ msgid ""
+#~ "Minimum of seconds the Release file should be considered valid after it "
+#~ "was created (indicated by the <literal>Date</literal> header). Use this "
+#~ "if you need to use a seldomly updated (local) mirror of a more regular "
+#~ "updated archive with a <literal>Valid-Until</literal> header instead of "
+#~ "completely disabling the expiration date checking. Archive specific "
+#~ "settings can and should be used by appending the label of the archive to "
+#~ "the option name."
+#~ msgstr ""
+#~ "Durée (en secondes) pendant laquelle un fichier Release est considéré "
+#~ "comme valable, à partir du moment de sa création. La valeur par défaut "
+#~ "est 0 (fichier valable indéfiniment) si le fichier Release de l'archive "
+#~ "ne comporte pas d'en-tête <literal>Valid-Until</literal>. Dans le cas "
+#~ "contraire, c'est la valeur de cet en-tête qui est la valeur par défaut du "
+#~ "paramètre. La date du fichier Release ou la date indiquée dans l'en-tête "
+#~ "<literal>Date</literal>, augmentées du nombre de secondes indiquées sont "
+#~ "comparées à la date courante pour déterminer si un fichier Release donné "
+#~ "est obsolète ou pas. Un réglage spécifique pour une archive donnée peut "
+#~ "être défini en ajoutant l'étiquette de l'archive au nom de l'option."
+
+#, fuzzy
+#~| msgid ""
+#~| "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
+#~| "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
+#~| " "
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main\n"
+#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main"
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
+#~ "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
+#~ " "
+
#~ msgid "<option>--md5</option>"
#~ msgstr "<option>--md5</option>"
#. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
#: apt-get.8.xml:39
+#, fuzzy
+#| msgid ""
+#| "<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> "
+#| "<option>-o= <replaceable>config_string</replaceable> </option> </arg> "
+#| "<arg> <option>-c= <replaceable>config_file</replaceable> </option> </arg> "
+#| "<arg> <option>-t=</option> <arg choice='plain'> "
+#| "<replaceable>target_release</replaceable> </arg> </arg> <group choice="
+#| "\"req\"> <arg choice='plain'>update</arg> <arg choice='plain'>upgrade</"
+#| "arg> <arg choice='plain'>dselect-upgrade</arg> <arg choice='plain'>dist-"
+#| "upgrade</arg> <arg choice='plain'>install <arg choice=\"plain\" rep="
+#| "\"repeat\"><replaceable>pkg</replaceable> <arg> <group choice='req'> <arg "
+#| "choice='plain'> =<replaceable>pkg_version_number</replaceable> </arg> "
+#| "<arg choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
+#| "group> </arg> </arg> </arg> <arg choice='plain'>remove <arg choice=\"plain"
+#| "\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> <arg "
+#| "choice='plain'>purge <arg choice=\"plain\" rep=\"repeat"
+#| "\"><replaceable>pkg</replaceable></arg></arg> <arg choice='plain'>source "
+#| "<arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable> <arg> "
+#| "<group choice='req'> <arg choice='plain'> "
+#| "=<replaceable>pkg_version_number</replaceable> </arg> <arg "
+#| "choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
+#| "group> </arg> </arg> </arg> <arg choice='plain'>build-dep <arg choice="
+#| "\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> <arg "
+#| "choice='plain'>check</arg> <arg choice='plain'>clean</arg> <arg "
+#| "choice='plain'>autoclean</arg> <arg choice='plain'>autoremove</arg> <arg "
+#| "choice='plain'> <group choice='req'> <arg choice='plain'>-v</arg> <arg "
+#| "choice='plain'>--version</arg> </group> </arg> <arg choice='plain'> "
+#| "<group choice='req'> <arg choice='plain'>-h</arg> <arg choice='plain'>--"
+#| "help</arg> </group> </arg> </group>"
msgid ""
"<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> "
"<option>-o= <replaceable>config_string</replaceable> </option> </arg> <arg> "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:255
+#, fuzzy
+#| msgid ""
+#| "If the <option>--compile</option> option is specified then the package "
+#| "will be compiled to a binary .deb using <command>dpkg-buildpackage</"
+#| "command>, if <option>--download-only</option> is specified then the "
+#| "source package will not be unpacked."
msgid ""
"If the <option>--compile</option> option is specified then the package will "
"be compiled to a binary .deb using <command>dpkg-buildpackage</command>, if "
# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:272
+#, fuzzy
+#| msgid ""
+#| "<literal>build-dep</literal> causes apt-get to install/remove packages in "
+#| "an attempt to satisfy the build dependencies for a source package."
msgid ""
"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
"attempt to satisfy the build dependencies for a source package."
# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:308
+#, fuzzy
+#| msgid ""
+#| "<literal>autoremove</literal> is used to remove packages that were "
+#| "automatically installed to satisfy dependencies for some package and that "
+#| "are no more needed."
msgid ""
"<literal>autoremove</literal> is used to remove packages that were "
"automatically installed to satisfy dependencies for some package and that "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-key.8.xml:162
+#, fuzzy
+#| msgid ""
+#| "With this option it is possible to specify a specific keyring file the "
+#| "command should operate on. The default is that a command is executed on "
+#| "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#| "<filename>trusted.gpg.d</filename> directory, though <filename>trusted."
+#| "gpg</filename> is the primary keyring which means that e.g. new keys are "
+#| "added to this one."
msgid ""
"With this option it is possible to specify a specific keyring file the "
"command should operate on. The default is that a command is executed on the "
#. type: Content of: <refentry><refsect1><literallayout>
#: sources.list.5.xml:81
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid "deb uri distribution [component1] [component2] [...]"
msgid "deb uri distribution [component1] [component2] [...]"
msgstr "deb uri distribution [component1] [component2] [...]"
msgid "Which will use the already fetched archives on the disc."
msgstr "これで、disc にある取得済みのアーカイブを使用するようになります。"
+#, fuzzy
+#~| msgid "<option>--recurse</option>"
+#~ msgid "<option>--host-architecture</option>"
+#~ msgstr "<option>--recurse</option>"
+
+#, fuzzy
+#~| msgid "Max-ValidTime"
+#~ msgid "Min-ValidTime"
+#~ msgstr "Max-ValidTime"
+
+#, fuzzy
+#~| msgid ""
+#~| "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
+#~| "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
+#~| " "
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main\n"
+#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main"
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
+#~ "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
+#~ " "
+
#~ msgid "<option>--md5</option>"
#~ msgstr "<option>--md5</option>"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:255
+#, fuzzy
+#| msgid ""
+#| "If the <option>--compile</option> option is specified then the package "
+#| "will be compiled to a binary .deb using <command>dpkg-buildpackage</"
+#| "command>, if <option>--download-only</option> is specified then the "
+#| "source package will not be unpacked."
msgid ""
"If the <option>--compile</option> option is specified then the package will "
"be compiled to a binary .deb using <command>dpkg-buildpackage</command>, if "
#
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:272
+#, fuzzy
+#| msgid ""
+#| "<literal>build-dep</literal> causes apt-get to install/remove packages in "
+#| "an attempt to satisfy the build dependencies for a source package."
msgid ""
"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
"attempt to satisfy the build dependencies for a source package."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:308
+#, fuzzy
+#| msgid ""
+#| "<literal>autoremove</literal> is used to remove packages that were "
+#| "automatically installed to satisfy dependencies for some package and that "
+#| "are no more needed."
msgid ""
"<literal>autoremove</literal> is used to remove packages that were "
"automatically installed to satisfy dependencies for some package and that "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-key.8.xml:162
+#, fuzzy
+#| msgid ""
+#| "With this option it is possible to specify a specific keyring file the "
+#| "command should operate on. The default is that a command is executed on "
+#| "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#| "<filename>trusted.gpg.d</filename> directory, though <filename>trusted."
+#| "gpg</filename> is the primary keyring which means that e.g. new keys are "
+#| "added to this one."
msgid ""
"With this option it is possible to specify a specific keyring file the "
"command should operate on. The default is that a command is executed on the "
#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
#: apt.conf.5.xml:52
+#, fuzzy
+#| msgid ""
+#| "The <filename>/etc/apt/sources.list.d</filename> directory provides a way "
+#| "to add sources.list entries in separate files. The format is the same as "
+#| "for the regular <filename>sources.list</filename> file. File names need "
+#| "to end with <filename>.list</filename> and may only contain letters (a-z "
+#| "and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) "
+#| "characters. Otherwise they will be silently ignored."
msgid ""
"all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending "
"order which have no or \"<literal>conf</literal>\" as filename extension and "
"the file doesn't match a pattern in the <literal>Dir::Ignore-Files-Silently</"
"literal> configuration list - in this case it will be silently ignored."
msgstr ""
+"Katalog <filename>/etc/apt/sources.list.d</filename> umożliwia podzielenie "
+"pliku źródeł na osobne pliki. Format jest dokładnie taki sam, jak w "
+"przypadku zwykłego pliku <filename>sources.list</filename>. Nazwy plików w "
+"tym katalogu muszą się kończyć rozszerzeniem <filename>.list</filename> i "
+"mogą składać się tylko z liter (a-z i A-Z), cyfr (0-9), znaku podkreślenia "
+"(_), pauzy (-) i kropki (.). Inne pliki zostaną zignorowane."
#. type: Content of: <refentry><refsect1><orderedlist><listitem><para>
#: apt.conf.5.xml:59
#. type: Content of: <refentry><refsect1><para>
#: apt_preferences.5.xml:70
+#, fuzzy
+#| msgid ""
+#| "The <filename>/etc/apt/sources.list.d</filename> directory provides a way "
+#| "to add sources.list entries in separate files. The format is the same as "
+#| "for the regular <filename>sources.list</filename> file. File names need "
+#| "to end with <filename>.list</filename> and may only contain letters (a-z "
+#| "and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) "
+#| "characters. Otherwise they will be silently ignored."
msgid ""
"Note that the files in the <filename>/etc/apt/preferences.d</filename> "
"directory are parsed in alphanumeric ascending order and need to obey the "
"<literal>Dir::Ignore-Files-Silently</literal> configuration list - in this "
"case it will be silently ignored."
msgstr ""
+"Katalog <filename>/etc/apt/sources.list.d</filename> umożliwia podzielenie "
+"pliku źródeł na osobne pliki. Format jest dokładnie taki sam, jak w "
+"przypadku zwykłego pliku <filename>sources.list</filename>. Nazwy plików w "
+"tym katalogu muszą się kończyć rozszerzeniem <filename>.list</filename> i "
+"mogą składać się tylko z liter (a-z i A-Z), cyfr (0-9), znaku podkreślenia "
+"(_), pauzy (-) i kropki (.). Inne pliki zostaną zignorowane."
#. type: Content of: <refentry><refsect1><refsect2><title>
#: apt_preferences.5.xml:79
#. type: Content of: <refentry><refsect1><literallayout>
#: sources.list.5.xml:81
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid "deb uri distribution [component1] [component2] [...]"
msgid "deb uri distribution [component1] [component2] [...]"
msgstr "deb URI dystrybucja [komponent1] [komponent2] [...]"
msgid "Which will use the already fetched archives on the disc."
msgstr "Które użyje pobranych uprzednio archiwów z dysku."
+#, fuzzy
+#~| msgid "<option>--recurse</option>"
+#~ msgid "<option>--host-architecture</option>"
+#~ msgstr "<option>--recurse</option>"
+
+#, fuzzy
+#~| msgid ""
+#~| "deb http://http.us.debian.org/debian stable main contrib non-free\n"
+#~| "deb http://http.us.debian.org/debian dists/stable-updates/\n"
+#~| " "
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main\n"
+#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main"
+#~ msgstr ""
+#~ "deb http://http.us.debian.org/debian stable main contrib non-free\n"
+#~ "deb http://http.us.debian.org/debian dists/stable-updates/\n"
+#~ " "
+
#~ msgid "<option>--md5</option>"
#~ msgstr "<option>--md5</option>"
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-cache.8.xml:317
+#, fuzzy
+#| msgid ""
+#| "Per default the <literal>depends</literal> and <literal>rdepends</"
+#| "literal> print all dependencies. This can be twicked with these flags "
+#| "which will omit the specified dependency type. Configuration Item: "
+#| "<literal>APT::Cache::Show<replaceable>DependencyType</replaceable></"
+#| "literal> e.g. <literal>APT::Cache::ShowRecommends</literal>."
msgid ""
"Per default the <literal>depends</literal> and <literal>rdepends</literal> "
"print all dependencies. This can be twicked with these flags which will omit "
#. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
#: apt-get.8.xml:39
+#, fuzzy
+#| msgid ""
+#| "<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> "
+#| "<option>-o= <replaceable>config_string</replaceable> </option> </arg> "
+#| "<arg> <option>-c= <replaceable>config_file</replaceable> </option> </arg> "
+#| "<arg> <option>-t=</option> <arg choice='plain'> "
+#| "<replaceable>target_release</replaceable> </arg> </arg> <group choice="
+#| "\"req\"> <arg choice='plain'>update</arg> <arg choice='plain'>upgrade</"
+#| "arg> <arg choice='plain'>dselect-upgrade</arg> <arg choice='plain'>dist-"
+#| "upgrade</arg> <arg choice='plain'>install <arg choice=\"plain\" rep="
+#| "\"repeat\"><replaceable>pkg</replaceable> <arg> <group choice='req'> <arg "
+#| "choice='plain'> =<replaceable>pkg_version_number</replaceable> </arg> "
+#| "<arg choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
+#| "group> </arg> </arg> </arg> <arg choice='plain'>remove <arg choice=\"plain"
+#| "\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> <arg "
+#| "choice='plain'>purge <arg choice=\"plain\" rep=\"repeat"
+#| "\"><replaceable>pkg</replaceable></arg></arg> <arg choice='plain'>source "
+#| "<arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable> <arg> "
+#| "<group choice='req'> <arg choice='plain'> "
+#| "=<replaceable>pkg_version_number</replaceable> </arg> <arg "
+#| "choice='plain'> /<replaceable>target_release</replaceable> </arg> </"
+#| "group> </arg> </arg> </arg> <arg choice='plain'>build-dep <arg choice="
+#| "\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> <arg "
+#| "choice='plain'>check</arg> <arg choice='plain'>clean</arg> <arg "
+#| "choice='plain'>autoclean</arg> <arg choice='plain'>autoremove</arg> <arg "
+#| "choice='plain'> <group choice='req'> <arg choice='plain'>-v</arg> <arg "
+#| "choice='plain'>--version</arg> </group> </arg> <arg choice='plain'> "
+#| "<group choice='req'> <arg choice='plain'>-h</arg> <arg choice='plain'>--"
+#| "help</arg> </group> </arg> </group>"
msgid ""
"<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> "
"<option>-o= <replaceable>config_string</replaceable> </option> </arg> <arg> "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:255
+#, fuzzy
+#| msgid ""
+#| "If the <option>--compile</option> option is specified then the package "
+#| "will be compiled to a binary .deb using <command>dpkg-buildpackage</"
+#| "command>, if <option>--download-only</option> is specified then the "
+#| "source package will not be unpacked."
msgid ""
"If the <option>--compile</option> option is specified then the package will "
"be compiled to a binary .deb using <command>dpkg-buildpackage</command>, if "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:272
+#, fuzzy
+#| msgid ""
+#| "<literal>build-dep</literal> causes apt-get to install/remove packages in "
+#| "an attempt to satisfy the build dependencies for a source package."
msgid ""
"<literal>build-dep</literal> causes apt-get to install/remove packages in an "
"attempt to satisfy the build dependencies for a source package."
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-get.8.xml:308
+#, fuzzy
+#| msgid ""
+#| "<literal>autoremove</literal> is used to remove packages that were "
+#| "automatically installed to satisfy dependencies for some package and that "
+#| "are no more needed."
msgid ""
"<literal>autoremove</literal> is used to remove packages that were "
"automatically installed to satisfy dependencies for some package and that "
#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
#: apt-key.8.xml:162
+#, fuzzy
+#| msgid ""
+#| "With this option it is possible to specify a specific keyring file the "
+#| "command should operate on. The default is that a command is executed on "
+#| "the <filename>trusted.gpg</filename> file as well as on all parts in the "
+#| "<filename>trusted.gpg.d</filename> directory, though <filename>trusted."
+#| "gpg</filename> is the primary keyring which means that e.g. new keys are "
+#| "added to this one."
msgid ""
"With this option it is possible to specify a specific keyring file the "
"command should operate on. The default is that a command is executed on the "
#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
#: apt.conf.5.xml:261
+#, fuzzy
+#| msgid ""
+#| "Seconds the Release file should be considered valid after it was created. "
+#| "The default is \"for ever\" (0) if the Release file of the archive "
+#| "doesn't include a <literal>Valid-Until</literal> header. If it does then "
+#| "this date is the default. The date from the Release file or the date "
+#| "specified by the creation time of the Release file (<literal>Date</"
+#| "literal> header) plus the seconds specified with this options are used to "
+#| "check if the validation of a file has expired by using the earlier date "
+#| "of the two. Archive specific settings can be made by appending the label "
+#| "of the archive to the option name."
msgid ""
"Seconds the Release file should be considered valid after it was created. "
"The default is \"for ever\" (0) if the Release file of the archive doesn't "
#. type: Content of: <refentry><refsect1><literallayout>
#: sources.list.5.xml:81
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid "deb uri distribution [component1] [component2] [...]"
msgid "deb uri distribution [component1] [component2] [...]"
msgstr "deb uri distribuição [componente1] [componente2] [...]"
msgid "Which will use the already fetched archives on the disc."
msgstr "O qual irá usar os arquivos já obtidos e que estão no disco."
+#, fuzzy
+#~| msgid "<option>--recurse</option>"
+#~ msgid "<option>--host-architecture</option>"
+#~ msgstr "<option>--recurse</option>"
+
+#, fuzzy
+#~| msgid "Max-ValidTime"
+#~ msgid "Min-ValidTime"
+#~ msgstr "Max-ValidTime"
+
+#, fuzzy
+#~| msgid ""
+#~| "Seconds the Release file should be considered valid after it was "
+#~| "created. The default is \"for ever\" (0) if the Release file of the "
+#~| "archive doesn't include a <literal>Valid-Until</literal> header. If it "
+#~| "does then this date is the default. The date from the Release file or "
+#~| "the date specified by the creation time of the Release file "
+#~| "(<literal>Date</literal> header) plus the seconds specified with this "
+#~| "options are used to check if the validation of a file has expired by "
+#~| "using the earlier date of the two. Archive specific settings can be made "
+#~| "by appending the label of the archive to the option name."
+#~ msgid ""
+#~ "Minimum of seconds the Release file should be considered valid after it "
+#~ "was created (indicated by the <literal>Date</literal> header). Use this "
+#~ "if you need to use a seldomly updated (local) mirror of a more regular "
+#~ "updated archive with a <literal>Valid-Until</literal> header instead of "
+#~ "completely disabling the expiration date checking. Archive specific "
+#~ "settings can and should be used by appending the label of the archive to "
+#~ "the option name."
+#~ msgstr ""
+#~ "Segundos em que o ficheiro Release deve considerado válido após ser "
+#~ "criado. A predefinição é \"para sempre\" (0) se o ficheiro Release do "
+#~ "arquivo não conter um cabeçalho <literal>Valid-Until</literal>. Se o "
+#~ "tiver então esta data é a predefinida. A data do ficheiro Release ou a "
+#~ "data especificada pela hora de criação do do ficheiro Release (cabeçalho "
+#~ "<literal>Date</literal>) mais os segundos especificados com esta opção "
+#~ "são usados para verificar se a validação de um ficheiro já expirou ao "
+#~ "usar uma data anterior às duas. Definições específicas do Arquivo podem "
+#~ "ser feitas ao adicionar a etiqueta do arquivo ao nome da opção. "
+
+#, fuzzy
+#~| msgid ""
+#~| "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
+#~| "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
+#~| " "
+#~ msgid ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main\n"
+#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main"
+#~ msgstr ""
+#~ "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n"
+#~ "deb http://security.debian.org/ &stable-codename;/updates main contrib non-free\n"
+#~ " "
+
#~ msgid "<option>--md5</option>"
#~ msgstr "<option>--md5</option>"
square brackets. It can consist of multiple settings in the form
<literal><replaceable>setting</replaceable>=<replaceable>value</replaceable></literal>.
Multiple settings are separated by spaces. The following settings are supported by APT,
- note through that unsupported settings will be ignored silently:
+ note though that unsupported settings will be ignored silently:
<itemizedlist><listitem><para><literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</replaceable>,…</literal>
can be used to specify for which architectures packages information should
be downloaded. If this option is not set all architectures defined by the
return false;
}
MD5Summation MD5;
- if (Fd->Seek(0) == false || MD5.AddFD(Fd->Fd(),CurStat.FileSize) == false)
+ if (Fd->Seek(0) == false || MD5.AddFD(*Fd, CurStat.FileSize) == false)
return false;
MD5Res = MD5.Result();
return false;
}
SHA1Summation SHA1;
- if (Fd->Seek(0) == false || SHA1.AddFD(Fd->Fd(),CurStat.FileSize) == false)
+ if (Fd->Seek(0) == false || SHA1.AddFD(*Fd, CurStat.FileSize) == false)
return false;
SHA1Res = SHA1.Result();
return false;
}
SHA256Summation SHA256;
- if (Fd->Seek(0) == false || SHA256.AddFD(Fd->Fd(),CurStat.FileSize) == false)
+ if (Fd->Seek(0) == false || SHA256.AddFD(*Fd, CurStat.FileSize) == false)
return false;
SHA256Res = SHA256.Result();
return false;
}
SHA512Summation SHA512;
- if (Fd->Seek(0) == false || SHA512.AddFD(Fd->Fd(),CurStat.FileSize) == false)
+ if (Fd->Seek(0) == false || SHA512.AddFD(*Fd, CurStat.FileSize) == false)
return false;
SHA512Res = SHA512.Result();
// Include Files /*{{{*/
#include <config.h>
+#include <apt-pkg/fileutl.h>
#include <apt-pkg/strutl.h>
#include <apt-pkg/error.h>
#include <apt-pkg/md5.h>
/* Open all the temp files now so we can report any errors. File is
made unreable to prevent people from touching it during creating. */
for (Files *I = Outputs; I != 0; I = I->Next)
- I->TmpFile.Open(I->Output + ".new",FileFd::WriteEmpty,0600);
+ I->TmpFile.Open(I->Output + ".new", FileFd::WriteOnly | FileFd::Create | FileFd::Empty, FileFd::Extension, 0600);
if (_error->PendingError() == true)
return;
_exit(0);
};
- /* Tidy up the temp files, we open them in the constructor so as to
- get proper error reporting. Close them now. */
- for (Files *I = Outputs; I != 0; I = I->Next)
- I->TmpFile.Close();
-
close(Pipe[0]);
Input = fdopen(Pipe[1],"w");
if (Input == 0)
return true;
}
/*}}}*/
-// MultiCompress::OpenCompress - Open the compressor /*{{{*/
-// ---------------------------------------------------------------------
-/* This opens the compressor, either in compress mode or decompress
- mode. FileFd is always the compressor input/output file,
- OutFd is the created pipe, Input for Compress, Output for Decompress. */
-bool MultiCompress::OpenCompress(APT::Configuration::Compressor const &Prog,
- pid_t &Pid,int const &FileFd,int &OutFd,bool const &Comp)
-{
- Pid = -1;
-
- // No compression
- if (Prog.Binary.empty() == true)
- {
- OutFd = dup(FileFd);
- return true;
- }
-
- // Create a data pipe
- int Pipe[2] = {-1,-1};
- if (pipe(Pipe) != 0)
- return _error->Errno("pipe",_("Failed to create subprocess IPC"));
- for (int J = 0; J != 2; J++)
- SetCloseExec(Pipe[J],true);
-
- if (Comp == true)
- OutFd = Pipe[1];
- else
- OutFd = Pipe[0];
-
- // The child..
- Pid = ExecFork();
- if (Pid == 0)
- {
- if (Comp == true)
- {
- dup2(FileFd,STDOUT_FILENO);
- dup2(Pipe[0],STDIN_FILENO);
- }
- else
- {
- dup2(FileFd,STDIN_FILENO);
- dup2(Pipe[1],STDOUT_FILENO);
- }
-
- SetCloseExec(STDOUT_FILENO,false);
- SetCloseExec(STDIN_FILENO,false);
-
- std::vector<char const*> Args;
- Args.push_back(Prog.Binary.c_str());
- std::vector<std::string> const * const addArgs =
- (Comp == true) ? &(Prog.CompressArgs) : &(Prog.UncompressArgs);
- for (std::vector<std::string>::const_iterator a = addArgs->begin();
- a != addArgs->end(); ++a)
- Args.push_back(a->c_str());
- Args.push_back(NULL);
-
- execvp(Args[0],(char **)&Args[0]);
- cerr << _("Failed to exec compressor ") << Args[0] << endl;
- _exit(100);
- };
- if (Comp == true)
- close(Pipe[0]);
- else
- close(Pipe[1]);
- return true;
-}
- /*}}}*/
// MultiCompress::OpenOld - Open an old file /*{{{*/
// ---------------------------------------------------------------------
/* This opens one of the original output files, possibly decompressing it. */
-bool MultiCompress::OpenOld(int &Fd,pid_t &Proc)
+bool MultiCompress::OpenOld(FileFd &Fd)
{
Files *Best = Outputs;
for (Files *I = Outputs; I != 0; I = I->Next)
Best = I;
// Open the file
- FileFd F(Best->Output,FileFd::ReadOnly);
- if (_error->PendingError() == true)
- return false;
-
- // Decompress the file so we can read it
- if (OpenCompress(Best->CompressProg,Proc,F.Fd(),Fd,false) == false)
- return false;
-
- return true;
+ return Fd.Open(Best->Output, FileFd::ReadOnly, FileFd::Extension);
}
/*}}}*/
-// MultiCompress::CloseOld - Close the old file /*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool MultiCompress::CloseOld(int Fd,pid_t Proc)
-{
- close(Fd);
- if (Proc != -1)
- if (ExecWait(Proc,_("decompressor"),false) == false)
- return false;
- return true;
-}
- /*}}}*/
// MultiCompress::Child - The writer child /*{{{*/
// ---------------------------------------------------------------------
/* The child process forks a bunch of compression children and takes
is new then the temp files are renamed, otherwise they are erased. */
bool MultiCompress::Child(int const &FD)
{
- // Start the compression children.
- for (Files *I = Outputs; I != 0; I = I->Next)
- {
- if (OpenCompress(I->CompressProg,I->CompressProc,I->TmpFile.Fd(),
- I->Fd,true) == false)
- return false;
- }
-
/* Okay, now we just feed data from FD to all the other FDs. Also
stash a hash of the data to use later. */
SetNonBlock(FD,false);
FileSize += Res;
for (Files *I = Outputs; I != 0; I = I->Next)
{
- if (write(I->Fd,Buffer,Res) != Res)
+ if (I->TmpFile.Write(Buffer, Res) == false)
{
_error->Errno("write",_("IO to subprocess/file failed"));
break;
}
}
}
-
- // Close all the writers
- for (Files *I = Outputs; I != 0; I = I->Next)
- close(I->Fd);
-
- // Wait for the compressors to exit
- for (Files *I = Outputs; I != 0; I = I->Next)
- {
- if (I->CompressProc != -1)
- ExecWait(I->CompressProc, I->CompressProg.Binary.c_str(), false);
- }
-
+
if (_error->PendingError() == true)
return false;
// Check the MD5 of the lowest cost entity.
while (Missing == false)
{
- int CompFd = -1;
- pid_t Proc = -1;
- if (OpenOld(CompFd,Proc) == false)
+ FileFd CompFd;
+ if (OpenOld(CompFd) == false)
{
_error->Discard();
break;
}
-
+
// Compute the hash
MD5Summation OldMD5;
unsigned long long NewFileSize = 0;
while (1)
{
- int Res = read(CompFd,Buffer,sizeof(Buffer));
+ unsigned long long Res = 0;
+ if (CompFd.Read(Buffer,sizeof(Buffer), &Res) == false)
+ return _error->Errno("read",_("Failed to read while computing MD5"));
if (Res == 0)
break;
- if (Res < 0)
- return _error->Errno("read",_("Failed to read while computing MD5"));
NewFileSize += Res;
OldMD5.Add(Buffer,Res);
}
-
- // Tidy the compressor
- if (CloseOld(CompFd,Proc) == false)
- return false;
+ CompFd.Close();
// Check the hash
if (OldMD5.Result() == MD5.Result() &&
FileFd TmpFile;
pid_t CompressProc;
time_t OldMTime;
- int Fd;
};
Files *Outputs;
pid_t Outputter;
mode_t Permissions;
- bool OpenCompress(APT::Configuration::Compressor const &Prog,
- pid_t &Pid,int const &FileFd, int &OutFd,bool const &Comp);
bool Child(int const &Fd);
bool Start();
bool Die();
unsigned long UpdateMTime;
bool Finalize(unsigned long long &OutSize);
- bool OpenOld(int &Fd,pid_t &Proc);
- bool CloseOld(int Fd,pid_t Proc);
+ bool OpenOld(FileFd &Fd);
static bool GetStat(std::string const &Output,std::string const &Compress,struct stat &St);
MultiCompress(std::string const &Output,std::string const &Compress,
MultiCompress Pkgs(PkgFile,PkgCompress,0,false);
if (_error->PendingError() == true)
return false;
-
+
// Open the package file
- int CompFd = -1;
- pid_t Proc = -1;
- if (Pkgs.OpenOld(CompFd,Proc) == false)
+ FileFd Fd;
+ if (Pkgs.OpenOld(Fd) == false)
return false;
-
- // No auto-close FD
- FileFd Fd(CompFd,false);
+
pkgTagFile Tags(&Fd);
if (_error->PendingError() == true)
- {
- Pkgs.CloseOld(CompFd,Proc);
return false;
- }
-
+
// Parse.
pkgTagSection Section;
while (Tags.Step(Section) == true)
_error->DumpErrors();
}
}
-
+
// Tidy the compressor
- if (Pkgs.CloseOld(CompFd,Proc) == false)
- return false;
-
+ Fd.Close();
+
return true;
}
CheckSums[NewFileName].size = fd.Size();
Hashes hs;
- hs.AddFD(fd.Fd(), 0, DoMD5, DoSHA1, DoSHA256, DoSHA512);
+ hs.AddFD(fd, 0, DoMD5, DoSHA1, DoSHA256, DoSHA512);
if (DoMD5 == true)
CheckSums[NewFileName].MD5 = hs.MD5.Result();
if (DoSHA1 == true)
Hashes Hash;
FileFd Fd(Res.Filename, FileFd::ReadOnly);
- Hash.AddFD(Fd.Fd(), Fd.Size());
+ Hash.AddFD(Fd);
Res.TakeHashes(Hash);
URIDone(Res);
Hashes Hash;
FileFd Fd(Res.Filename, FileFd::ReadOnly);
- Hash.AddFD(Fd.Fd(), Fd.Size());
+ Hash.AddFD(Fd);
Res.TakeHashes(Hash);
URIDone(Res);
Hashes Hash;
FileFd Fd(Res.Filename, FileFd::ReadOnly);
- Hash.AddFD(Fd.Fd(), Fd.Size());
+ Hash.AddFD(Fd);
Res.TakeHashes(Hash);
URIDone(Res);
return true;
if (Resume != 0)
{
- if (Hash.AddFD(To.Fd(),Resume) == false)
+ if (Hash.AddFD(To,Resume) == false)
{
_error->Errno("read",_("Problem hashing file"));
return false;
URIStart(Res);
// Open the source and destination files
- FileFd From(Path,FileFd::ReadOnlyGzip);
+ FileFd From(Path,FileFd::ReadOnly, FileFd::Gzip);
if(From.FileSize() == 0)
return _error->Error(_("Empty files can't be valid archives"));
FailFile.c_str(); // Make sure we dont do a malloc in the signal handler
FailFd = File->Fd();
FailTime = Srv->Date;
-
- // Set the expected size
- if (Srv->StartPos >= 0)
- {
- Res.ResumePoint = Srv->StartPos;
- if (ftruncate(File->Fd(),Srv->StartPos) < 0)
- _error->Errno("ftruncate", _("Failed to truncate file"));
- }
-
- // Set the start point
- lseek(File->Fd(),0,SEEK_END);
delete Srv->In.Hash;
Srv->In.Hash = new Hashes;
-
- // Fill the Hash if the file is non-empty (resume)
- if (Srv->StartPos > 0)
+
+ // Set the expected size and read file for the hashes
+ if (Srv->StartPos >= 0)
{
- lseek(File->Fd(),0,SEEK_SET);
- if (Srv->In.Hash->AddFD(File->Fd(),Srv->StartPos) == false)
+ Res.ResumePoint = Srv->StartPos;
+ File->Truncate(Srv->StartPos);
+
+ if (Srv->In.Hash->AddFD(*File,Srv->StartPos) == false)
{
_error->Errno("read",_("Problem hashing file"));
return ERROR_NOT_FROM_SERVER;
}
- lseek(File->Fd(),0,SEEK_END);
}
SetNonBlock(File->Fd(),true);
// take hashes
Hashes Hash;
FileFd Fd(Res.Filename, FileFd::ReadOnly);
- Hash.AddFD(Fd.Fd(), Fd.Size());
+ Hash.AddFD(Fd);
Res.TakeHashes(Hash);
// keep apt updated
// return values
enum State {ED_OK, ED_ORDERING, ED_PARSER, ED_FAILURE, MMAP_FAILED};
- State applyFile(gzFile &ed_cmds, FILE *in_file, FILE *out_file,
+ State applyFile(FileFd &ed_cmds, FileFd &in_file, FileFd &out_file,
unsigned long &line, char *buffer, Hashes *hash) const;
- void ignoreLineInFile(FILE *fin, char *buffer) const;
- void ignoreLineInFile(gzFile &fin, char *buffer) const;
- void copyLinesFromFileToFile(FILE *fin, FILE *fout, unsigned int lines,
- Hashes *hash, char *buffer) const;
- void copyLinesFromFileToFile(gzFile &fin, FILE *fout, unsigned int lines,
+ void ignoreLineInFile(FileFd &fin, char *buffer) const;
+ void copyLinesFromFileToFile(FileFd &fin, FileFd &fout, unsigned int lines,
Hashes *hash, char *buffer) const;
State patchFile(FileFd &Patch, FileFd &From, FileFd &out_file, Hashes *hash) const;
* \param hash the created file for correctness
* \return the success State of the ed command executor
*/
-RredMethod::State RredMethod::applyFile(gzFile &ed_cmds, FILE *in_file, FILE *out_file,
+RredMethod::State RredMethod::applyFile(FileFd &ed_cmds, FileFd &in_file, FileFd &out_file,
unsigned long &line, char *buffer, Hashes *hash) const {
// get the current command and parse it
- if (gzgets(ed_cmds, buffer, BUF_SIZE) == NULL) {
+ if (ed_cmds.ReadLine(buffer, BUF_SIZE) == NULL) {
if (Debug == true)
std::clog << "rred: encounter end of file - we can start patching now." << std::endl;
line = 0;
unsigned char mode = *idx;
// save the current position
- unsigned const long pos = gztell(ed_cmds);
+ unsigned const long long pos = ed_cmds.Tell();
// if this is add or change then go to the next full stop
unsigned int data_length = 0;
// include data from ed script
if (mode == MODE_CHANGED || mode == MODE_ADDED) {
- gzseek(ed_cmds, pos, SEEK_SET);
+ ed_cmds.Seek(pos);
copyLinesFromFileToFile(ed_cmds, out_file, data_length, hash, buffer);
}
return ED_OK;
}
/*}}}*/
-void RredMethod::copyLinesFromFileToFile(FILE *fin, FILE *fout, unsigned int lines,/*{{{*/
- Hashes *hash, char *buffer) const {
- while (0 < lines--) {
- do {
- fgets(buffer, BUF_SIZE, fin);
- size_t const written = fwrite(buffer, 1, strlen(buffer), fout);
- hash->Add((unsigned char*)buffer, written);
- } while (strlen(buffer) == (BUF_SIZE - 1) &&
- buffer[BUF_SIZE - 2] != '\n');
- }
-}
- /*}}}*/
-void RredMethod::copyLinesFromFileToFile(gzFile &fin, FILE *fout, unsigned int lines,/*{{{*/
+void RredMethod::copyLinesFromFileToFile(FileFd &fin, FileFd &fout, unsigned int lines,/*{{{*/
Hashes *hash, char *buffer) const {
while (0 < lines--) {
do {
- gzgets(fin, buffer, BUF_SIZE);
- size_t const written = fwrite(buffer, 1, strlen(buffer), fout);
- hash->Add((unsigned char*)buffer, written);
+ fin.ReadLine(buffer, BUF_SIZE);
+ unsigned long long const towrite = strlen(buffer);
+ fout.Write(buffer, towrite);
+ hash->Add((unsigned char*)buffer, towrite);
} while (strlen(buffer) == (BUF_SIZE - 1) &&
buffer[BUF_SIZE - 2] != '\n');
}
}
/*}}}*/
-void RredMethod::ignoreLineInFile(FILE *fin, char *buffer) const { /*{{{*/
- fgets(buffer, BUF_SIZE, fin);
+void RredMethod::ignoreLineInFile(FileFd &fin, char *buffer) const { /*{{{*/
+ fin.ReadLine(buffer, BUF_SIZE);
while (strlen(buffer) == (BUF_SIZE - 1) &&
buffer[BUF_SIZE - 2] != '\n') {
- fgets(buffer, BUF_SIZE, fin);
- buffer[0] = ' ';
- }
-}
- /*}}}*/
-void RredMethod::ignoreLineInFile(gzFile &fin, char *buffer) const { /*{{{*/
- gzgets(fin, buffer, BUF_SIZE);
- while (strlen(buffer) == (BUF_SIZE - 1) &&
- buffer[BUF_SIZE - 2] != '\n') {
- gzgets(fin, buffer, BUF_SIZE);
+ fin.ReadLine(buffer, BUF_SIZE);
buffer[0] = ' ';
}
}
RredMethod::State RredMethod::patchFile(FileFd &Patch, FileFd &From, /*{{{*/
FileFd &out_file, Hashes *hash) const {
char buffer[BUF_SIZE];
- FILE* fFrom = fdopen(From.Fd(), "r");
- gzFile fPatch = Patch.gzFd();
- FILE* fTo = fdopen(out_file.Fd(), "w");
/* we do a tail recursion to read the commands in the right order */
unsigned long line = -1; // assign highest possible value
- State const result = applyFile(fPatch, fFrom, fTo, line, buffer, hash);
+ State const result = applyFile(Patch, From, out_file, line, buffer, hash);
/* read the rest from infile */
if (result == ED_OK) {
- while (fgets(buffer, BUF_SIZE, fFrom) != NULL) {
- size_t const written = fwrite(buffer, 1, strlen(buffer), fTo);
- hash->Add((unsigned char*)buffer, written);
+ while (From.ReadLine(buffer, BUF_SIZE) != NULL) {
+ unsigned long long const towrite = strlen(buffer);
+ out_file.Write(buffer, towrite);
+ hash->Add((unsigned char*)buffer, towrite);
}
- fflush(fTo);
}
return result;
}
RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/
FileFd &out_file, Hashes *hash) const {
#ifdef _POSIX_MAPPED_FILES
- MMap ed_cmds(MMap::ReadOnly);
- if (Patch.gzFd() != NULL) {
- unsigned long long mapSize = Patch.Size();
- DynamicMMap* dyn = new DynamicMMap(0, mapSize, 0);
- if (dyn->validData() == false) {
- delete dyn;
- return MMAP_FAILED;
- }
- dyn->AddSize(mapSize);
- gzread(Patch.gzFd(), dyn->Data(), mapSize);
- ed_cmds = *dyn;
- } else
- ed_cmds = MMap(Patch, MMap::ReadOnly);
-
+ MMap ed_cmds(Patch, MMap::ReadOnly);
MMap in_file(From, MMap::ReadOnly);
if (ed_cmds.Size() == 0 || in_file.Size() == 0)
// Open the source and destination files (the d'tor of FileFd will do
// the cleanup/closing of the fds)
FileFd From(Path,FileFd::ReadOnly);
- FileFd Patch(Path+".ed",FileFd::ReadOnlyGzip);
+ FileFd Patch(Path+".ed",FileFd::ReadOnly, FileFd::Gzip);
FileFd To(Itm->DestFile,FileFd::WriteAtomic);
To.EraseOnFailure();
if (_error->PendingError() == true)
return false;
if (Resume != 0) {
- if (Hash.AddFD(To.Fd(),Resume) == false) {
+ if (Hash.AddFD(To,Resume) == false) {
_error->Errno("read",_("Problem hashing file"));
return false;
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-30 13:46-0500\n"
+"POT-Creation-Date: 2011-12-19 14:28+0100\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"
msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
msgstr ""
-#: cmdline/apt-cache.cc:1452 apt-pkg/cacheset.cc:445
+#: cmdline/apt-cache.cc:1452 apt-pkg/cacheset.cc:459
#, c-format
msgid "Unable to locate package %s"
msgstr ""
#: cmdline/apt-cache.cc:1679 cmdline/apt-cdrom.cc:199 cmdline/apt-config.cc:75
#: cmdline/apt-extracttemplates.cc:227 ftparchive/apt-ftparchive.cc:590
-#: cmdline/apt-get.cc:3244 cmdline/apt-internal-solver.cc:32
+#: cmdline/apt-get.cc:3255 cmdline/apt-internal-solver.cc:32
#: cmdline/apt-mark.cc:266 cmdline/apt-sortpkgs.cc:147
#, c-format
msgid "%s %s for %s compiled on %s %s\n"
" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
msgstr ""
-#: cmdline/apt-extracttemplates.cc:269 apt-pkg/pkgcachegen.cc:1269
+#: cmdline/apt-extracttemplates.cc:269 apt-pkg/pkgcachegen.cc:1271
#, c-format
msgid "Unable to write to %s"
msgstr ""
msgid "Failed to read the override file %s"
msgstr ""
-#: ftparchive/multicompress.cc:69
+#: ftparchive/multicompress.cc:70
#, c-format
msgid "Unknown compression algorithm '%s'"
msgstr ""
-#: ftparchive/multicompress.cc:99
+#: ftparchive/multicompress.cc:100
#, c-format
msgid "Compressed output %s needs a compression set"
msgstr ""
-#: ftparchive/multicompress.cc:167 methods/rsh.cc:97
+#: ftparchive/multicompress.cc:168 methods/rsh.cc:97
msgid "Failed to create IPC pipe to subprocess"
msgstr ""
-#: ftparchive/multicompress.cc:193
+#: ftparchive/multicompress.cc:189
msgid "Failed to create FILE*"
msgstr ""
-#: ftparchive/multicompress.cc:196
+#: ftparchive/multicompress.cc:192
msgid "Failed to fork"
msgstr ""
-#: ftparchive/multicompress.cc:210
+#: ftparchive/multicompress.cc:206
msgid "Compress child"
msgstr ""
-#: ftparchive/multicompress.cc:233
+#: ftparchive/multicompress.cc:229
#, c-format
msgid "Internal error, failed to create %s"
msgstr ""
-#: ftparchive/multicompress.cc:284
-msgid "Failed to create subprocess IPC"
-msgstr ""
-
-#: ftparchive/multicompress.cc:321
-msgid "Failed to exec compressor "
-msgstr ""
-
-#: ftparchive/multicompress.cc:360
-msgid "decompressor"
-msgstr ""
-
-#: ftparchive/multicompress.cc:403
+#: ftparchive/multicompress.cc:304
msgid "IO to subprocess/file failed"
msgstr ""
-#: ftparchive/multicompress.cc:455
+#: ftparchive/multicompress.cc:342
msgid "Failed to read while computing MD5"
msgstr ""
-#: ftparchive/multicompress.cc:472
+#: ftparchive/multicompress.cc:358
#, c-format
msgid "Problem unlinking %s"
msgstr ""
-#: ftparchive/multicompress.cc:487 apt-inst/extract.cc:188
+#: ftparchive/multicompress.cc:373 apt-inst/extract.cc:188
#, c-format
msgid "Failed to rename %s to %s"
msgstr ""
msgid "%lu not fully installed or removed.\n"
msgstr ""
-#: cmdline/apt-get.cc:633
+#: cmdline/apt-get.cc:632
#, c-format
msgid "Note, selecting '%s' for task '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:639
+#: cmdline/apt-get.cc:637
#, c-format
msgid "Note, selecting '%s' for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:656
+#: cmdline/apt-get.cc:654
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr ""
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:665
msgid " [Installed]"
msgstr ""
-#: cmdline/apt-get.cc:676
+#: cmdline/apt-get.cc:674
msgid " [Not candidate version]"
msgstr ""
-#: cmdline/apt-get.cc:678
+#: cmdline/apt-get.cc:676
msgid "You should explicitly select one to install."
msgstr ""
-#: cmdline/apt-get.cc:681
+#: cmdline/apt-get.cc:679
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
"is only available from another source\n"
msgstr ""
-#: cmdline/apt-get.cc:699
+#: cmdline/apt-get.cc:697
msgid "However the following packages replace it:"
msgstr ""
-#: cmdline/apt-get.cc:711
+#: cmdline/apt-get.cc:709
#, c-format
msgid "Package '%s' has no installation candidate"
msgstr ""
-#: cmdline/apt-get.cc:722
+#: cmdline/apt-get.cc:720
#, c-format
msgid "Virtual packages like '%s' can't be removed\n"
msgstr ""
-#: cmdline/apt-get.cc:753
+#: cmdline/apt-get.cc:764
#, c-format
msgid "Note, selecting '%s' instead of '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:783
+#: cmdline/apt-get.cc:794
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
-#: cmdline/apt-get.cc:787
+#: cmdline/apt-get.cc:798
#, c-format
msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
msgstr ""
-#: cmdline/apt-get.cc:799
+#: cmdline/apt-get.cc:810
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr ""
-#: cmdline/apt-get.cc:804
+#: cmdline/apt-get.cc:815
#, c-format
msgid "%s is already the newest version.\n"
msgstr ""
-#: cmdline/apt-get.cc:823 cmdline/apt-get.cc:2103 cmdline/apt-mark.cc:61
+#: cmdline/apt-get.cc:834 cmdline/apt-get.cc:2114 cmdline/apt-mark.cc:61
#, c-format
msgid "%s set to manually installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:849
+#: cmdline/apt-get.cc:860
#, c-format
msgid "Selected version '%s' (%s) for '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:854
+#: cmdline/apt-get.cc:865
#, c-format
msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:896
+#: cmdline/apt-get.cc:907
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr ""
-#: cmdline/apt-get.cc:974
+#: cmdline/apt-get.cc:985
msgid "Correcting dependencies..."
msgstr ""
-#: cmdline/apt-get.cc:977
+#: cmdline/apt-get.cc:988
msgid " failed."
msgstr ""
-#: cmdline/apt-get.cc:980
+#: cmdline/apt-get.cc:991
msgid "Unable to correct dependencies"
msgstr ""
-#: cmdline/apt-get.cc:983
+#: cmdline/apt-get.cc:994
msgid "Unable to minimize the upgrade set"
msgstr ""
-#: cmdline/apt-get.cc:985
+#: cmdline/apt-get.cc:996
msgid " Done"
msgstr ""
-#: cmdline/apt-get.cc:989
+#: cmdline/apt-get.cc:1000
msgid "You might want to run 'apt-get -f install' to correct these."
msgstr ""
-#: cmdline/apt-get.cc:992
+#: cmdline/apt-get.cc:1003
msgid "Unmet dependencies. Try using -f."
msgstr ""
-#: cmdline/apt-get.cc:1017
+#: cmdline/apt-get.cc:1028
msgid "WARNING: The following packages cannot be authenticated!"
msgstr ""
-#: cmdline/apt-get.cc:1021
+#: cmdline/apt-get.cc:1032
msgid "Authentication warning overridden.\n"
msgstr ""
-#: cmdline/apt-get.cc:1028
+#: cmdline/apt-get.cc:1039
msgid "Install these packages without verification [y/N]? "
msgstr ""
-#: cmdline/apt-get.cc:1030
+#: cmdline/apt-get.cc:1041
msgid "Some packages could not be authenticated"
msgstr ""
-#: cmdline/apt-get.cc:1039 cmdline/apt-get.cc:1200
+#: cmdline/apt-get.cc:1050 cmdline/apt-get.cc:1211
msgid "There are problems and -y was used without --force-yes"
msgstr ""
-#: cmdline/apt-get.cc:1080
+#: cmdline/apt-get.cc:1091
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr ""
-#: cmdline/apt-get.cc:1089
+#: cmdline/apt-get.cc:1100
msgid "Packages need to be removed but remove is disabled."
msgstr ""
-#: cmdline/apt-get.cc:1100
+#: cmdline/apt-get.cc:1111
msgid "Internal error, Ordering didn't finish"
msgstr ""
-#: cmdline/apt-get.cc:1138
+#: cmdline/apt-get.cc:1149
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:1145
+#: cmdline/apt-get.cc:1156
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr ""
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:1150
+#: cmdline/apt-get.cc:1161
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr ""
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:1157
+#: cmdline/apt-get.cc:1168
#, c-format
msgid "After this operation, %sB of additional disk space will be used.\n"
msgstr ""
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:1162
+#: cmdline/apt-get.cc:1173
#, c-format
msgid "After this operation, %sB disk space will be freed.\n"
msgstr ""
-#: cmdline/apt-get.cc:1177 cmdline/apt-get.cc:1180 cmdline/apt-get.cc:2523
-#: cmdline/apt-get.cc:2526
+#: cmdline/apt-get.cc:1188 cmdline/apt-get.cc:1191 cmdline/apt-get.cc:2534
+#: cmdline/apt-get.cc:2537
#, c-format
msgid "Couldn't determine free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:1190
+#: cmdline/apt-get.cc:1201
#, c-format
msgid "You don't have enough free space in %s."
msgstr ""
-#: cmdline/apt-get.cc:1206 cmdline/apt-get.cc:1226
+#: cmdline/apt-get.cc:1217 cmdline/apt-get.cc:1237
msgid "Trivial Only specified but this is not a trivial operation."
msgstr ""
-#: cmdline/apt-get.cc:1208
+#: cmdline/apt-get.cc:1219
msgid "Yes, do as I say!"
msgstr ""
-#: cmdline/apt-get.cc:1210
+#: cmdline/apt-get.cc:1221
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
" ?] "
msgstr ""
-#: cmdline/apt-get.cc:1216 cmdline/apt-get.cc:1235
+#: cmdline/apt-get.cc:1227 cmdline/apt-get.cc:1246
msgid "Abort."
msgstr ""
-#: cmdline/apt-get.cc:1231
+#: cmdline/apt-get.cc:1242
msgid "Do you want to continue [Y/n]? "
msgstr ""
-#: cmdline/apt-get.cc:1303 cmdline/apt-get.cc:2588 apt-pkg/algorithms.cc:1492
+#: cmdline/apt-get.cc:1314 cmdline/apt-get.cc:2599 apt-pkg/algorithms.cc:1492
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1321
+#: cmdline/apt-get.cc:1332
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:1322 cmdline/apt-get.cc:2600
+#: cmdline/apt-get.cc:1333 cmdline/apt-get.cc:2611
msgid "Download complete and in download only mode"
msgstr ""
-#: cmdline/apt-get.cc:1328
+#: cmdline/apt-get.cc:1339
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
msgstr ""
-#: cmdline/apt-get.cc:1332
+#: cmdline/apt-get.cc:1343
msgid "--fix-missing and media swapping is not currently supported"
msgstr ""
-#: cmdline/apt-get.cc:1337
+#: cmdline/apt-get.cc:1348
msgid "Unable to correct missing packages."
msgstr ""
-#: cmdline/apt-get.cc:1338
+#: cmdline/apt-get.cc:1349
msgid "Aborting install."
msgstr ""
-#: cmdline/apt-get.cc:1366
+#: cmdline/apt-get.cc:1377
msgid ""
"The following package disappeared from your system as\n"
"all files have been overwritten by other packages:"
msgstr[0] ""
msgstr[1] ""
-#: cmdline/apt-get.cc:1370
+#: cmdline/apt-get.cc:1381
msgid "Note: This is done automatic and on purpose by dpkg."
msgstr ""
-#: cmdline/apt-get.cc:1508
+#: cmdline/apt-get.cc:1519
#, c-format
msgid "Ignore unavailable target release '%s' of package '%s'"
msgstr ""
-#: cmdline/apt-get.cc:1540
+#: cmdline/apt-get.cc:1551
#, c-format
msgid "Picking '%s' as source package instead of '%s'\n"
msgstr ""
#. if (VerTag.empty() == false && Last == 0)
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1589
#, c-format
msgid "Ignore unavailable version '%s' of package '%s'"
msgstr ""
-#: cmdline/apt-get.cc:1594
+#: cmdline/apt-get.cc:1605
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1657
+#: cmdline/apt-get.cc:1668
msgid "We are not supposed to delete stuff, can't start AutoRemover"
msgstr ""
-#: cmdline/apt-get.cc:1761
+#: cmdline/apt-get.cc:1772
msgid ""
"Hmm, seems like the AutoRemover destroyed something which really\n"
"shouldn't happen. Please file a bug report against apt."
#. "that package should be filed.") << endl;
#. }
#.
-#: cmdline/apt-get.cc:1764 cmdline/apt-get.cc:1933
+#: cmdline/apt-get.cc:1775 cmdline/apt-get.cc:1944
msgid "The following information may help to resolve the situation:"
msgstr ""
-#: cmdline/apt-get.cc:1768
+#: cmdline/apt-get.cc:1779
msgid "Internal Error, AutoRemover broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1775
+#: cmdline/apt-get.cc:1786
msgid ""
"The following package was automatically installed and is no longer required:"
msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: cmdline/apt-get.cc:1779
+#: cmdline/apt-get.cc:1790
#, c-format
msgid "%lu package was automatically installed and is no longer required.\n"
msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: cmdline/apt-get.cc:1781
+#: cmdline/apt-get.cc:1792
msgid "Use 'apt-get autoremove' to remove them."
msgstr ""
-#: cmdline/apt-get.cc:1800
+#: cmdline/apt-get.cc:1811
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1899
+#: cmdline/apt-get.cc:1910
msgid "You might want to run 'apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1903
+#: cmdline/apt-get.cc:1914
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
msgstr ""
-#: cmdline/apt-get.cc:1918
+#: cmdline/apt-get.cc:1929
msgid ""
"Some packages could not be installed. This may mean that you have\n"
"requested an impossible situation or if you are using the unstable\n"
"or been moved out of Incoming."
msgstr ""
-#: cmdline/apt-get.cc:1939
+#: cmdline/apt-get.cc:1950
msgid "Broken packages"
msgstr ""
-#: cmdline/apt-get.cc:1965
+#: cmdline/apt-get.cc:1976
msgid "The following extra packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:2055
+#: cmdline/apt-get.cc:2066
msgid "Suggested packages:"
msgstr ""
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2067
msgid "Recommended packages:"
msgstr ""
-#: cmdline/apt-get.cc:2098
+#: cmdline/apt-get.cc:2109
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:2105 cmdline/apt-mark.cc:63
+#: cmdline/apt-get.cc:2116 cmdline/apt-mark.cc:63
#, c-format
msgid "%s set to automatically installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2113 cmdline/apt-mark.cc:107
+#: cmdline/apt-get.cc:2124 cmdline/apt-mark.cc:107
msgid ""
"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
"instead."
msgstr ""
-#: cmdline/apt-get.cc:2129
+#: cmdline/apt-get.cc:2140
msgid "Calculating upgrade... "
msgstr ""
-#: cmdline/apt-get.cc:2132 methods/ftp.cc:711 methods/connect.cc:115
+#: cmdline/apt-get.cc:2143 methods/ftp.cc:711 methods/connect.cc:115
msgid "Failed"
msgstr ""
-#: cmdline/apt-get.cc:2137
+#: cmdline/apt-get.cc:2148
msgid "Done"
msgstr ""
-#: cmdline/apt-get.cc:2204 cmdline/apt-get.cc:2212
+#: cmdline/apt-get.cc:2215 cmdline/apt-get.cc:2223
msgid "Internal error, problem resolver broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:2240 cmdline/apt-get.cc:2276
+#: cmdline/apt-get.cc:2251 cmdline/apt-get.cc:2287
msgid "Unable to lock the download directory"
msgstr ""
-#: cmdline/apt-get.cc:2327
+#: cmdline/apt-get.cc:2338
#, c-format
msgid "Downloading %s %s"
msgstr ""
-#: cmdline/apt-get.cc:2385
+#: cmdline/apt-get.cc:2396
msgid "Must specify at least one package to fetch source for"
msgstr ""
-#: cmdline/apt-get.cc:2425 cmdline/apt-get.cc:2737
+#: cmdline/apt-get.cc:2436 cmdline/apt-get.cc:2748
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:2442
+#: cmdline/apt-get.cc:2453
#, c-format
msgid ""
"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
"%s\n"
msgstr ""
-#: cmdline/apt-get.cc:2447
+#: cmdline/apt-get.cc:2458
#, c-format
msgid ""
"Please use:\n"
"to retrieve the latest (possibly unreleased) updates to the package.\n"
msgstr ""
-#: cmdline/apt-get.cc:2500
+#: cmdline/apt-get.cc:2511
#, c-format
msgid "Skipping already downloaded file '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:2537
+#: cmdline/apt-get.cc:2548
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:2546
+#: cmdline/apt-get.cc:2557
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:2551
+#: cmdline/apt-get.cc:2562
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:2557
+#: cmdline/apt-get.cc:2568
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2595
+#: cmdline/apt-get.cc:2606
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2626
+#: cmdline/apt-get.cc:2637
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2638
+#: cmdline/apt-get.cc:2649
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2639
+#: cmdline/apt-get.cc:2650
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2661
+#: cmdline/apt-get.cc:2672
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2681
+#: cmdline/apt-get.cc:2692
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2700
+#: cmdline/apt-get.cc:2711
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2725
+#: cmdline/apt-get.cc:2736
#, c-format
msgid ""
"No architecture information available for %s. See apt.conf(5) APT::"
"Architectures for setup"
msgstr ""
-#: cmdline/apt-get.cc:2742
+#: cmdline/apt-get.cc:2753
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2762
+#: cmdline/apt-get.cc:2773
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2892
+#: cmdline/apt-get.cc:2903
#, c-format
msgid ""
"%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
"packages"
msgstr ""
-#: cmdline/apt-get.cc:2913
+#: cmdline/apt-get.cc:2924
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr ""
-#: cmdline/apt-get.cc:2936
+#: cmdline/apt-get.cc:2947
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
-#: cmdline/apt-get.cc:2975
+#: cmdline/apt-get.cc:2986
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because candidate version of "
"package %s can't satisfy version requirements"
msgstr ""
-#: cmdline/apt-get.cc:2981
+#: cmdline/apt-get.cc:2992
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because package %s has no candidate "
"version"
msgstr ""
-#: cmdline/apt-get.cc:3004
+#: cmdline/apt-get.cc:3015
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:3020
+#: cmdline/apt-get.cc:3031
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:3025
+#: cmdline/apt-get.cc:3036
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:3118 cmdline/apt-get.cc:3130
+#: cmdline/apt-get.cc:3129 cmdline/apt-get.cc:3141
#, c-format
msgid "Changelog for %s (%s)"
msgstr ""
-#: cmdline/apt-get.cc:3249
+#: cmdline/apt-get.cc:3260
msgid "Supported modules:"
msgstr ""
-#: cmdline/apt-get.cc:3290
+#: cmdline/apt-get.cc:3301
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
" This APT has Super Cow Powers.\n"
msgstr ""
-#: cmdline/apt-get.cc:3455
+#: cmdline/apt-get.cc:3466
msgid ""
"NOTE: This is only a simulation!\n"
" apt-get needs root privileges for real execution.\n"
#. Only warn if there are no sources.list.d.
#. Only warn if there is no sources.list file.
#: apt-inst/extract.cc:465 apt-pkg/contrib/cdromutl.cc:183
-#: apt-pkg/contrib/fileutl.cc:344 apt-pkg/sourcelist.cc:208
+#: apt-pkg/contrib/fileutl.cc:372 apt-pkg/sourcelist.cc:208
#: apt-pkg/sourcelist.cc:214 apt-pkg/acquire.cc:456 apt-pkg/init.cc:108
#: apt-pkg/init.cc:116 apt-pkg/clean.cc:36 apt-pkg/policy.cc:359
#: methods/mirror.cc:95
msgid "The info and temp directories need to be on the same filesystem"
msgstr ""
-#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:1168
-#: apt-pkg/pkgcachegen.cc:1272 apt-pkg/pkgcachegen.cc:1278
-#: apt-pkg/pkgcachegen.cc:1434
+#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:1170
+#: apt-pkg/pkgcachegen.cc:1274 apt-pkg/pkgcachegen.cc:1280
+#: apt-pkg/pkgcachegen.cc:1436
msgid "Reading package lists"
msgstr ""
msgstr ""
#: methods/bzip2.cc:143 methods/bzip2.cc:152 methods/copy.cc:46
-#: methods/gzip.cc:94 methods/gzip.cc:103 methods/rred.cc:530
-#: methods/rred.cc:539
+#: methods/gzip.cc:94 methods/gzip.cc:103 methods/rred.cc:491
+#: methods/rred.cc:500
msgid "Failed to stat"
msgstr ""
#: methods/bzip2.cc:149 methods/copy.cc:83 methods/gzip.cc:100
-#: methods/rred.cc:536
+#: methods/rred.cc:497
msgid "Failed to set modification time"
msgstr ""
msgid "Server closed the connection"
msgstr ""
-#: methods/ftp.cc:348 apt-pkg/contrib/fileutl.cc:832 methods/rsh.cc:197
+#: methods/ftp.cc:348 apt-pkg/contrib/fileutl.cc:1065 methods/rsh.cc:197
msgid "Read error"
msgstr ""
msgid "Protocol corruption"
msgstr ""
-#: methods/ftp.cc:456 apt-pkg/contrib/fileutl.cc:874 methods/rsh.cc:239
+#: methods/ftp.cc:456 apt-pkg/contrib/fileutl.cc:1139 methods/rsh.cc:239
msgid "Write error"
msgstr ""
msgid "Unable to accept connection"
msgstr ""
-#: methods/ftp.cc:873 methods/http.cc:1031 methods/rsh.cc:309
+#: methods/ftp.cc:873 methods/http.cc:1022 methods/rsh.cc:309
msgid "Problem hashing file"
msgstr ""
msgid "Error reading from server"
msgstr ""
-#: methods/http.cc:1016 apt-pkg/contrib/mmap.cc:293
-msgid "Failed to truncate file"
-msgstr ""
-
-#: methods/http.cc:1191
+#: methods/http.cc:1181
msgid "Bad header data"
msgstr ""
-#: methods/http.cc:1208 methods/http.cc:1263
+#: methods/http.cc:1198 methods/http.cc:1253
msgid "Connection failed"
msgstr ""
-#: methods/http.cc:1355
+#: methods/http.cc:1345
msgid "Internal error"
msgstr ""
msgid "Can't mmap an empty file"
msgstr ""
-#: apt-pkg/contrib/mmap.cc:91
+#: apt-pkg/contrib/mmap.cc:109
#, c-format
msgid "Couldn't duplicate file descriptor %i"
msgstr ""
-#: apt-pkg/contrib/mmap.cc:99
+#: apt-pkg/contrib/mmap.cc:117
#, c-format
msgid "Couldn't make mmap of %llu bytes"
msgstr ""
-#: apt-pkg/contrib/mmap.cc:126
+#: apt-pkg/contrib/mmap.cc:144
msgid "Unable to close mmap"
msgstr ""
-#: apt-pkg/contrib/mmap.cc:154 apt-pkg/contrib/mmap.cc:182
+#: apt-pkg/contrib/mmap.cc:172 apt-pkg/contrib/mmap.cc:200
msgid "Unable to synchronize mmap"
msgstr ""
-#: apt-pkg/contrib/mmap.cc:260
+#: apt-pkg/contrib/mmap.cc:278
#, c-format
msgid "Couldn't make mmap of %lu bytes"
msgstr ""
-#: apt-pkg/contrib/mmap.cc:312
+#: apt-pkg/contrib/mmap.cc:311
+msgid "Failed to truncate file"
+msgstr ""
+
+#: apt-pkg/contrib/mmap.cc:330
#, c-format
msgid ""
"Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. "
"Current value: %lu. (man 5 apt.conf)"
msgstr ""
-#: apt-pkg/contrib/mmap.cc:411
+#: apt-pkg/contrib/mmap.cc:429
#, c-format
msgid ""
"Unable to increase the size of the MMap as the limit of %lu bytes is already "
"reached."
msgstr ""
-#: apt-pkg/contrib/mmap.cc:414
+#: apt-pkg/contrib/mmap.cc:432
msgid ""
"Unable to increase size of the MMap as automatic growing is disabled by user."
msgstr ""
msgid "Failed to stat the cdrom"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:169
+#: apt-pkg/contrib/fileutl.cc:197
#, c-format
msgid "Not using locking for read only lock file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:174
+#: apt-pkg/contrib/fileutl.cc:202
#, c-format
msgid "Could not open lock file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:192
+#: apt-pkg/contrib/fileutl.cc:220
#, c-format
msgid "Not using locking for nfs mounted lock file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:196
+#: apt-pkg/contrib/fileutl.cc:224
#, c-format
msgid "Could not get lock %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:336
+#: apt-pkg/contrib/fileutl.cc:364
#, c-format
msgid "List of files can't be created as '%s' is not a directory"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:363
+#: apt-pkg/contrib/fileutl.cc:391
#, c-format
msgid "Ignoring '%s' in directory '%s' as it is not a regular file"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:381
+#: apt-pkg/contrib/fileutl.cc:409
#, c-format
msgid "Ignoring file '%s' in directory '%s' as it has no filename extension"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:390
+#: apt-pkg/contrib/fileutl.cc:418
#, c-format
msgid ""
"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:691
+#: apt-pkg/contrib/fileutl.cc:719
#, c-format
msgid "Waited for %s but it wasn't there"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:703
+#: apt-pkg/contrib/fileutl.cc:731
#, c-format
msgid "Sub-process %s received a segmentation fault."
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:705
+#: apt-pkg/contrib/fileutl.cc:733
#, c-format
msgid "Sub-process %s received signal %u."
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:709
+#: apt-pkg/contrib/fileutl.cc:737
#, c-format
msgid "Sub-process %s returned an error code (%u)"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:711
+#: apt-pkg/contrib/fileutl.cc:739
#, c-format
msgid "Sub-process %s exited unexpectedly"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:776 apt-pkg/indexcopy.cc:676
+#: apt-pkg/contrib/fileutl.cc:877 apt-pkg/indexcopy.cc:655
#, c-format
msgid "Could not open file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:793
+#: apt-pkg/contrib/fileutl.cc:923
#, c-format
msgid "Could not open file descriptor %d"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:853
+#: apt-pkg/contrib/fileutl.cc:970
+msgid "Failed to create subprocess IPC"
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:1019
+msgid "Failed to exec compressor "
+msgstr ""
+
+#: apt-pkg/contrib/fileutl.cc:1087
#, c-format
msgid "read, still have %llu to read but none left"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:886
+#: apt-pkg/contrib/fileutl.cc:1152
#, c-format
msgid "write, still have %llu to write but couldn't"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:1023
+#: apt-pkg/contrib/fileutl.cc:1410
#, c-format
msgid "Problem closing the gzip file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:1026
+#: apt-pkg/contrib/fileutl.cc:1414
#, c-format
msgid "Problem closing the file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:1031
+#: apt-pkg/contrib/fileutl.cc:1419
#, c-format
msgid "Problem renaming the file %s to %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:1042
+#: apt-pkg/contrib/fileutl.cc:1430
#, c-format
msgid "Problem unlinking the file %s"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:1055
+#: apt-pkg/contrib/fileutl.cc:1450
msgid "Problem syncing the file"
msgstr ""
msgid "extra"
msgstr ""
-#: apt-pkg/depcache.cc:130 apt-pkg/depcache.cc:159
+#: apt-pkg/depcache.cc:132 apt-pkg/depcache.cc:161
msgid "Building dependency tree"
msgstr ""
-#: apt-pkg/depcache.cc:131
+#: apt-pkg/depcache.cc:133
msgid "Candidate versions"
msgstr ""
-#: apt-pkg/depcache.cc:160
+#: apt-pkg/depcache.cc:162
msgid "Dependency generation"
msgstr ""
-#: apt-pkg/depcache.cc:180 apt-pkg/depcache.cc:213 apt-pkg/depcache.cc:217
+#: apt-pkg/depcache.cc:182 apt-pkg/depcache.cc:215 apt-pkg/depcache.cc:219
msgid "Reading state information"
msgstr ""
-#: apt-pkg/depcache.cc:242
+#: apt-pkg/depcache.cc:244
#, c-format
msgid "Failed to open StateFile %s"
msgstr ""
-#: apt-pkg/depcache.cc:248
+#: apt-pkg/depcache.cc:250
#, c-format
msgid "Failed to write temporary StateFile %s"
msgstr ""
msgid "Opening %s"
msgstr ""
-#: apt-pkg/sourcelist.cc:265 apt-pkg/cdrom.cc:447
+#: apt-pkg/sourcelist.cc:265 apt-pkg/cdrom.cc:485
#, c-format
msgid "Line %u too long in source list %s."
msgstr ""
msgid "Type '%s' is not known on line %u in source list %s"
msgstr ""
-#: apt-pkg/packagemanager.cc:298 apt-pkg/packagemanager.cc:770
+#: apt-pkg/packagemanager.cc:298 apt-pkg/packagemanager.cc:775
#, c-format
msgid ""
"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
"under APT::Immediate-Configure for details. (%d)"
msgstr ""
-#: apt-pkg/packagemanager.cc:432 apt-pkg/packagemanager.cc:462
+#: apt-pkg/packagemanager.cc:437 apt-pkg/packagemanager.cc:467
#, c-format
msgid "Could not configure '%s'. "
msgstr ""
-#: apt-pkg/packagemanager.cc:502
+#: apt-pkg/packagemanager.cc:507
#, c-format
msgid ""
"This installation run will require temporarily removing the essential "
msgid "No priority (or zero) specified for pin"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:83
+#: apt-pkg/pkgcachegen.cc:85
msgid "Cache has an incompatible versioning system"
msgstr ""
#. TRANSLATOR: The first placeholder is a package name,
#. the other two should be copied verbatim as they include debug info
-#: apt-pkg/pkgcachegen.cc:209 apt-pkg/pkgcachegen.cc:275
-#: apt-pkg/pkgcachegen.cc:311 apt-pkg/pkgcachegen.cc:353
-#: apt-pkg/pkgcachegen.cc:357 apt-pkg/pkgcachegen.cc:374
-#: apt-pkg/pkgcachegen.cc:384 apt-pkg/pkgcachegen.cc:388
-#: apt-pkg/pkgcachegen.cc:392 apt-pkg/pkgcachegen.cc:413
-#: apt-pkg/pkgcachegen.cc:418 apt-pkg/pkgcachegen.cc:463
-#: apt-pkg/pkgcachegen.cc:494 apt-pkg/pkgcachegen.cc:508
+#: apt-pkg/pkgcachegen.cc:211 apt-pkg/pkgcachegen.cc:277
+#: apt-pkg/pkgcachegen.cc:313 apt-pkg/pkgcachegen.cc:355
+#: apt-pkg/pkgcachegen.cc:359 apt-pkg/pkgcachegen.cc:376
+#: apt-pkg/pkgcachegen.cc:386 apt-pkg/pkgcachegen.cc:390
+#: apt-pkg/pkgcachegen.cc:394 apt-pkg/pkgcachegen.cc:415
+#: apt-pkg/pkgcachegen.cc:420 apt-pkg/pkgcachegen.cc:465
+#: apt-pkg/pkgcachegen.cc:496 apt-pkg/pkgcachegen.cc:510
#, c-format
msgid "Error occurred while processing %s (%s%d)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:232
+#: apt-pkg/pkgcachegen.cc:234
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:235
+#: apt-pkg/pkgcachegen.cc:237
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:238
+#: apt-pkg/pkgcachegen.cc:240
msgid "Wow, you exceeded the number of descriptions this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:241
+#: apt-pkg/pkgcachegen.cc:243
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:515
+#: apt-pkg/pkgcachegen.cc:517
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:1080
+#: apt-pkg/pkgcachegen.cc:1082
#, c-format
msgid "Couldn't stat source package list %s"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:1185
+#: apt-pkg/pkgcachegen.cc:1187
msgid "Collecting File Provides"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:1376 apt-pkg/pkgcachegen.cc:1383
+#: apt-pkg/pkgcachegen.cc:1378 apt-pkg/pkgcachegen.cc:1385
msgid "IO Error saving source cache"
msgstr ""
msgid "Vendor block %s contains no fingerprint"
msgstr ""
-#: apt-pkg/cdrom.cc:528
+#: apt-pkg/cdrom.cc:566
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"Mounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:537 apt-pkg/cdrom.cc:634
+#: apt-pkg/cdrom.cc:575 apt-pkg/cdrom.cc:672
msgid "Identifying.. "
msgstr ""
-#: apt-pkg/cdrom.cc:565
+#: apt-pkg/cdrom.cc:603
#, c-format
msgid "Stored label: %s\n"
msgstr ""
-#: apt-pkg/cdrom.cc:574 apt-pkg/cdrom.cc:850
+#: apt-pkg/cdrom.cc:612 apt-pkg/cdrom.cc:894
msgid "Unmounting CD-ROM...\n"
msgstr ""
-#: apt-pkg/cdrom.cc:594
+#: apt-pkg/cdrom.cc:632
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr ""
-#: apt-pkg/cdrom.cc:612
+#: apt-pkg/cdrom.cc:650
msgid "Unmounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:617
+#: apt-pkg/cdrom.cc:655
msgid "Waiting for disc...\n"
msgstr ""
-#: apt-pkg/cdrom.cc:626
+#: apt-pkg/cdrom.cc:664
msgid "Mounting CD-ROM...\n"
msgstr ""
-#: apt-pkg/cdrom.cc:645
+#: apt-pkg/cdrom.cc:683
msgid "Scanning disc for index files..\n"
msgstr ""
-#: apt-pkg/cdrom.cc:687
+#: apt-pkg/cdrom.cc:731
#, c-format
msgid ""
"Found %zu package indexes, %zu source indexes, %zu translation indexes and "
"%zu signatures\n"
msgstr ""
-#: apt-pkg/cdrom.cc:698
+#: apt-pkg/cdrom.cc:742
msgid ""
"Unable to locate any package files, perhaps this is not a Debian Disc or the "
"wrong architecture?"
msgstr ""
-#: apt-pkg/cdrom.cc:725
+#: apt-pkg/cdrom.cc:769
#, c-format
msgid "Found label '%s'\n"
msgstr ""
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:798
msgid "That is not a valid name, try again.\n"
msgstr ""
-#: apt-pkg/cdrom.cc:771
+#: apt-pkg/cdrom.cc:815
#, c-format
msgid ""
"This disc is called: \n"
"'%s'\n"
msgstr ""
-#: apt-pkg/cdrom.cc:773
+#: apt-pkg/cdrom.cc:817
msgid "Copying package lists..."
msgstr ""
-#: apt-pkg/cdrom.cc:800
+#: apt-pkg/cdrom.cc:844
msgid "Writing new source list\n"
msgstr ""
-#: apt-pkg/cdrom.cc:808
+#: apt-pkg/cdrom.cc:852
msgid "Source list entries for this disc are:\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:273 apt-pkg/indexcopy.cc:930
+#: apt-pkg/indexcopy.cc:236 apt-pkg/indexcopy.cc:873
#, c-format
msgid "Wrote %i records.\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:932
+#: apt-pkg/indexcopy.cc:238 apt-pkg/indexcopy.cc:875
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:935
+#: apt-pkg/indexcopy.cc:241 apt-pkg/indexcopy.cc:878
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:281 apt-pkg/indexcopy.cc:938
+#: apt-pkg/indexcopy.cc:244 apt-pkg/indexcopy.cc:881
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:540
+#: apt-pkg/indexcopy.cc:503
#, c-format
msgid "Skipping nonexistent file %s"
msgstr ""
-#: apt-pkg/indexcopy.cc:546
+#: apt-pkg/indexcopy.cc:509
#, c-format
msgid "Can't find authentication record for: %s"
msgstr ""
-#: apt-pkg/indexcopy.cc:552
+#: apt-pkg/indexcopy.cc:515
#, c-format
msgid "Hash mismatch for: %s"
msgstr ""
-#: apt-pkg/indexcopy.cc:680
+#: apt-pkg/indexcopy.cc:659
#, c-format
msgid "File %s doesn't start with a clearsigned message"
msgstr ""
#. TRANSLATOR: %s is the trusted keyring parts directory
-#: apt-pkg/indexcopy.cc:711
+#: apt-pkg/indexcopy.cc:690
#, c-format
msgid "No keyring installed in %s."
msgstr ""
-#: apt-pkg/cacheset.cc:342
+#: apt-pkg/cacheset.cc:352
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr ""
-#: apt-pkg/cacheset.cc:345
+#: apt-pkg/cacheset.cc:355
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr ""
-#: apt-pkg/cacheset.cc:452
+#: apt-pkg/cacheset.cc:466
#, c-format
msgid "Couldn't find task '%s'"
msgstr ""
-#: apt-pkg/cacheset.cc:459
+#: apt-pkg/cacheset.cc:472
#, c-format
msgid "Couldn't find any package by regex '%s'"
msgstr ""
-#: apt-pkg/cacheset.cc:472
+#: apt-pkg/cacheset.cc:483
#, c-format
msgid "Can't select versions from package '%s' as it is purely virtual"
msgstr ""
-#: apt-pkg/cacheset.cc:480 apt-pkg/cacheset.cc:488
+#: apt-pkg/cacheset.cc:490 apt-pkg/cacheset.cc:497
#, c-format
msgid ""
"Can't select installed nor candidate version from package '%s' as it has "
"neither of them"
msgstr ""
-#: apt-pkg/cacheset.cc:496
+#: apt-pkg/cacheset.cc:504
#, c-format
msgid "Can't select newest version from package '%s' as it is purely virtual"
msgstr ""
-#: apt-pkg/cacheset.cc:504
+#: apt-pkg/cacheset.cc:512
#, c-format
msgid "Can't select candidate version from package %s as it has no candidate"
msgstr ""
-#: apt-pkg/cacheset.cc:512
+#: apt-pkg/cacheset.cc:520
#, c-format
msgid "Can't select installed version from package %s as it is not installed"
msgstr ""
msgid "[Mirror: %s]"
msgstr ""
-#: methods/rred.cc:509
+#: methods/rred.cc:470
#, c-format
msgid ""
"Could not patch %s with mmap and with file operation usage - the patch seems "
"to be corrupt."
msgstr ""
-#: methods/rred.cc:514
+#: methods/rred.cc:475
#, c-format
msgid ""
"Could not patch %s with mmap (but no mmap specific fail) - the patch seems "
"Project-Id-Version: fr\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-07-26 12:05+0200\n"
-"PO-Revision-Date: 2011-02-16 07:44+0100\n"
+"PO-Revision-Date: 2011-10-24 22:52+0100\n"
"Last-Translator: Christian Perrier <bubulle@debian.org>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.0\n"
+"X-Generator: Lokalize 1.2\n"
"Plural-Forms: Plural-Forms: nplurals=2; plural=n>1;\n"
#: cmdline/apt-cache.cc:154
#: cmdline/apt-cache.cc:1353
msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
-msgstr ""
+msgstr "Cette commande est obsolète. Veuillez utiliser « apt-mark showauto »."
#: cmdline/apt-cache.cc:1448 apt-pkg/cacheset.cc:440
#, c-format
msgstr "%s %s pour %s compilé sur %s %s\n"
#: cmdline/apt-cache.cc:1682
-#, fuzzy
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] showpkg pkg1 [pkg2 ...]\n"
" unmet - Affiche les dépendances manquantes\n"
" search - Cherche une expression rationnelle dans la liste des paquets\n"
" show - Affiche la description du paquet\n"
-" showauto - Affiche la liste des paquets installés automatiquement\n"
" depends - Affiche toutes les dépendances d'un paquet\n"
" rdepends - Affiche les dépendances inverses d'un paquet\n"
" pkgnames - Liste le nom de tous les paquets du système\n"
"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
"instead."
msgstr ""
+"Cette commande est obsolète. Veuillez utiliser « apt-mark auto » et "
+"« apt-mark manual »."
#: cmdline/apt-get.cc:2114
msgid "Calculating upgrade... "
"No architecture information available for %s. See apt.conf(5) APT::"
"Architectures for setup"
msgstr ""
+"Aucune information sur l'architecture n'est disponible pour %s. Veuillez "
+"consulter la section à propos de APT::Architectures dans la page de manuel "
+"apt.conf(5)."
#: cmdline/apt-get.cc:2718
#, c-format
msgstr "%s n'a pas de dépendance de construction.\n"
#: cmdline/apt-get.cc:2868
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
"packages"
msgstr ""
-"La dépendance %s vis-à-vis de %s ne peut être satisfaite car le paquet %s ne "
-"peut être trouvé"
+"La dépendance %s vis-à-vis de %s ne peut être satisfaite car %s n'est pas "
+"autorisé avec les paquets « %s »."
#: cmdline/apt-get.cc:2889
#, c-format
"est trop récent"
#: cmdline/apt-get.cc:2951
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because candidate version of "
"package %s can't satisfy version requirements"
msgstr ""
"La dépendance %s vis-à-vis de %s ne peut être satisfaite car aucune version "
-"du paquet %s ne peut satisfaire à la version requise"
+"disponible du paquet %s ne peut satisfaire les prérequis de version."
#: cmdline/apt-get.cc:2957
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because package %s has no candidate "
"version"
msgstr ""
-"La dépendance %s vis-à-vis de %s ne peut être satisfaite car le paquet %s ne "
-"peut être trouvé"
+"La dépendance %s vis-à-vis de %s ne peut être satisfaite car le paquet %s n'a "
+"pas de version disponible."
#: cmdline/apt-get.cc:2980
#, c-format
msgstr "Modules reconnus :"
#: cmdline/apt-get.cc:3266
-#, fuzzy
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
" clean - Supprime dans le cache local tous les fichiers téléchargés\n"
" autoclean - Supprime dans le cache local les fichiers inutiles\n"
" check - Vérifie qu'il n'y a pas de rupture de dépendances\n"
-" markauto - Marque les paquets indiqués comme installés automatiquement\n"
-" unmarkauto - Marque les paquets indiqués comme installés manuellement\n"
" changelog - Télécharge et affiche le journal des modifications\n"
" (« changelog ») du paquet indiqué\n"
" download - Télécharge le paquet dinaire dans le répertoire courant\n"
"dans le lecteur « %s » et appuyez sur la touche Entrée\n"
#: cmdline/apt-mark.cc:46
-#, fuzzy, c-format
+#, c-format
msgid "%s can not be marked as it is not installed.\n"
-msgstr "mais il n'est pas installé"
+msgstr "%s ne peut pas être marqué car il n'est pas installé.\n"
#: cmdline/apt-mark.cc:52
-#, fuzzy, c-format
+#, c-format
msgid "%s was already set to manually installed.\n"
-msgstr "%s passé en « installé manuellement ».\n"
+msgstr "%s était déjà marqué comme installé manuellement.\n"
#: cmdline/apt-mark.cc:54
-#, fuzzy, c-format
+#, c-format
msgid "%s was already set to automatically installed.\n"
-msgstr "%s passé en « installé automatiquement ».\n"
+msgstr "%s était déjà marqué comme installé automatiquement.\n"
#: cmdline/apt-mark.cc:169
-#, fuzzy, c-format
+#, c-format
msgid "%s was already set on hold.\n"
-msgstr "%s est déjà la plus récente version disponible.\n"
+msgstr "%s était déjà marqué comme figé (« hold »).\n"
#: cmdline/apt-mark.cc:171
-#, fuzzy, c-format
+#, c-format
msgid "%s was already not hold.\n"
-msgstr "%s est déjà la plus récente version disponible.\n"
+msgstr "%s était déjà marqué comme non figé.\n"
#: cmdline/apt-mark.cc:185 cmdline/apt-mark.cc:207
-#, fuzzy, c-format
+#, c-format
msgid "%s set on hold.\n"
-msgstr "%s passé en « installé manuellement ».\n"
+msgstr "%s passé en figé (« hold »).\n"
#: cmdline/apt-mark.cc:187 cmdline/apt-mark.cc:212
-#, fuzzy, c-format
+#, c-format
msgid "Canceled hold on %s.\n"
-msgstr "Impossible d'ouvrir %s"
+msgstr "Annulation de l'état figé pour %s.\n"
#: cmdline/apt-mark.cc:220
msgid "Executing dpkg failed. Are you root?"
msgstr ""
+"Échec de l'exécution de dpkg. Possédez-vous les privilèges du "
+"superutilisateur ?"
#: cmdline/apt-mark.cc:268
msgid ""
"The value '%s' is invalid for APT::Default-Release as such a release is not "
"available in the sources"
msgstr ""
+"La valeur « %s » n'est pas valable pour APT::Default-Release car cette "
+"version ne fait pas partie des sources disponibles."
#: apt-pkg/policy.cc:389
#, c-format
"Release file for %s is expired (invalid since %s). Updates for this "
"repository will not be applied."
msgstr ""
+"Le fichier « Release » pour %s a expiré (plus valable depuis %s). Les mises à "
+"jour depuis ce dépôt ne s'effectueront pas."
#: apt-pkg/acquire-item.cc:1499
#, c-format
#: apt-pkg/indexcopy.cc:677
#, c-format
msgid "File %s doesn't start with a clearsigned message"
-msgstr ""
+msgstr "Le fichier %s ne commence pas par un message signé en clair."
#. TRANSLATOR: %s is the trusted keyring parts directory
#: apt-pkg/indexcopy.cc:708
#. FIXME: fallback to a default mirror here instead
#. and provide a config option to define that default
#: methods/mirror.cc:267
-#, fuzzy, c-format
+#, c-format
msgid "Can not read mirror file '%s'"
-msgstr "Aucun fichier miroir « %s » n'a été trouvé"
+msgstr "Impossible de lire le fichier de miroir « %s »."
#: methods/mirror.cc:422
#, c-format
-# translation of nl.po to Dutch
-# advanced package transfer - apt message translation catalog
-#
-# guus sliepen <guus@sliepen.warande.net>, 2002.
-# jochem berends <j@jochem.net>, 2002.
-# wannes soenen <wannes@wannes.cjb.net>, 2002.
+# Dutch translation of apt.
+# Copyright (C) 2002-2011 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the apt package.
+# Guus Sliepen <guus@sliepen.warande.net>, 2002.
+# Jochem Berends <j@jochem.net>, 2002.
+# Wannes Soenen <wannes@wannes.cjb.net>, 2002.
# Frans Pop <elendil@planet.nl>, 2010.
+# Jeroen Schot <schot@a-eskwadraat.nl>, 2011.
+#
msgid ""
msgstr ""
-"Project-Id-Version: nl\n"
+"Project-Id-Version: apt 0.8.15.9\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-26 12:05+0200\n"
-"PO-Revision-Date: 2010-03-16 06:52+0100\n"
-"Last-Translator: Frans Pop <elendil@planet.nl>\n"
-"Language-Team: Dutch <debian-l10n-dutch@lists.debian.org>\n"
+"POT-Creation-Date: 2011-10-14 12:59+0200\n"
+"PO-Revision-Date: 2011-12-05 17:10+0100\n"
+"Last-Translator: Jeroen Schot <schot@a-eskwadraat.nl>\n"
+"Language-Team: Debian l10n Dutch <debian-l10n-dutch@lists.debian.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Dutch\n"
-"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: cmdline/apt-cache.cc:154
#, c-format
msgstr "Totaal aantal pakketnamen: "
#: cmdline/apt-cache.cc:284
-#, fuzzy
msgid "Total package structures: "
-msgstr "Totaal aantal pakketnamen: "
+msgstr "Totaal aantal pakketstructuren: "
#: cmdline/apt-cache.cc:324
msgid " Normal packages: "
msgstr "Geen pakketten gevonden"
#: cmdline/apt-cache.cc:1218
-#, fuzzy
msgid "You must give at least one search pattern"
-msgstr "U dient precies één patroon op te geven"
+msgstr "U dient precies één zoekpatroon op te geven"
#: cmdline/apt-cache.cc:1353
msgid "This command is deprecated. Please use 'apt-mark showauto' instead."
#: cmdline/apt-cache.cc:1675 cmdline/apt-cdrom.cc:197 cmdline/apt-config.cc:73
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:589
-#: cmdline/apt-get.cc:3220 cmdline/apt-mark.cc:264 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:3235 cmdline/apt-mark.cc:264 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s compiled on %s %s\n"
msgstr "%s %s voor %s gecompileerd op %s %s\n"
#: cmdline/apt-cache.cc:1682
#, fuzzy
+#| msgid ""
+#| "Usage: apt-cache [options] command\n"
+#| " apt-cache [options] add file1 [file2 ...]\n"
+#| " apt-cache [options] showpkg pkg1 [pkg2 ...]\n"
+#| " apt-cache [options] showsrc pkg1 [pkg2 ...]\n"
+#| "\n"
+#| "apt-cache is a low-level tool used to manipulate APT's binary\n"
+#| "cache files, and query information from them\n"
+#| "\n"
+#| "Commands:\n"
+#| " add - Add a package file to the source cache\n"
+#| " gencaches - Build both the package and source cache\n"
+#| " showpkg - Show some general information for a single package\n"
+#| " showsrc - Show source records\n"
+#| " stats - Show some basic statistics\n"
+#| " dump - Show the entire file in a terse form\n"
+#| " dumpavail - Print an available file to stdout\n"
+#| " unmet - Show unmet dependencies\n"
+#| " search - Search the package list for a regex pattern\n"
+#| " show - Show a readable record for the package\n"
+#| " showauto - Display a list of automatically installed packages\n"
+#| " depends - Show raw dependency information for a package\n"
+#| " rdepends - Show reverse dependency information for a package\n"
+#| " pkgnames - List the names of all packages in the system\n"
+#| " dotty - Generate package graphs for GraphViz\n"
+#| " xvcg - Generate package graphs for xvcg\n"
+#| " policy - Show policy settings\n"
+#| "\n"
+#| "Options:\n"
+#| " -h This help text.\n"
+#| " -p=? The package cache.\n"
+#| " -s=? The source cache.\n"
+#| " -q Disable progress indicator.\n"
+#| " -i Show only important deps for the unmet command.\n"
+#| " -c=? Read this configuration file\n"
+#| " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#| "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] showpkg pkg1 [pkg2 ...]\n"
"van APT kunt manipuleren en informatie daaruit kunt opvragen.\n"
"\n"
"Opdrachten:\n"
-" add - Voeg een pakketbestand toe aan de broncache\n"
-" gencaches - Bouw zowel de pakket- als de broncache\n"
-" showpkg - Toon algemene informatie over een enkel pakket\n"
-" showsrc - Toon bronrecords\n"
-" stats - Toon enkele basisstatistieken\n"
-" dump - Toon het gehele bestand in een compacte vorm\n"
-" dumpavail - Print een beschikbaarheidsbestand op stdout\n"
-" unmet - Toon niet voldane vereisten\n"
-" search - Toon lijst met pakketten die met regexpatroon overeenkomen\n"
-" show - Toon een leesbaar overzicht voor het pakket\n"
-" depends - Toon de afhankelijkheden van een pakket\n"
-" rdepends - Toon de pakketten die afhankelijk zijn van een pakket\n"
-" pkgnames - Toon de namen van alle pakketten op het systeem\n"
-" dotty - Genereer pakketgrafen voor GraphViz\n"
-" xvcg - Genereer pakketgrafen voor xvcg\n"
-" policy - Toon beleidsinstellingen\n"
+" add - Voeg een pakketbestand toe aan de broncache.\n"
+" gencaches - Bouw zowel de pakket- als de broncache.\n"
+" showpkg - Toon algemene informatie over een enkel pakket.\n"
+" showsrc - Toon bronrecords.\n"
+" stats - Toon enkele basisstatistieken.\n"
+" dump - Toon het gehele bestand in een compacte vorm.\n"
+" dumpavail - Print een beschikbaarheidsbestand op de standaarduitvoer.\n"
+" unmet - Toon niet-voldane vereisten.\n"
+" search - Toon lijst met pakketten die met regexpatroon overeenkomen.\n"
+" show - Toon een leesbaar overzicht voor het pakket.\n"
+" showauto - Toon een lijst van automatisch geïnstalleerde pakketten.\n"
+" depends - Toon de afhankelijkheden van een pakket.\n"
+" rdepends - Toon de pakketten die afhankelijk zijn van een pakket.\n"
+" pkgnames - Toon de namen van alle pakketten op het systeem.\n"
+" dotty - Genereer pakketgrafen voor GraphViz.\n"
+" xvcg - Genereer pakketgrafen voor xvcg.\n"
+" policy - Toon beleidsinstellingen.\n"
"\n"
"Opties:\n"
-" -h Deze hulptekst\n"
-" -p=? De pakketcache\n"
-" -s=? De broncache\n"
-" -q Voortgangsindicator uitschakelen\n"
-" -i Toon alleen belangrijke vereisten voor de 'unmet' opdracht\n"
-" -c=? Lees dit configuratiebestand\n"
-" -o=? Stel een willekeurige optie in, b.v. -o dir::cache=/tmp\n"
-"Zie de apt-cache(8) en apt.conf(5) handleidingen voor meer informatie.\n"
+" -h Deze hulptekst.\n"
+" -p=? De pakketcache.\n"
+" -s=? De broncache.\n"
+" -q Voortgangsindicator uitschakelen.\n"
+" -i Toon alleen belangrijke vereisten voor de 'unmet'-opdracht.\n"
+" -c=? Lees dit configuratiebestand.\n"
+" -o=? Stel een willekeurige optie in, b.v. -o dir::cache=/tmp.\n"
+"Zie de man-pagina's van apt-cache(8) en apt.conf(5) voor meer informatie.\n"
#: cmdline/apt-cdrom.cc:77
msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'"
msgstr "Gelieve een schijf in het station te plaatsen en op 'enter' te drukken"
#: cmdline/apt-cdrom.cc:127
-#, fuzzy, c-format
+#, c-format
msgid "Failed to mount '%s' to '%s'"
-msgstr "Hernoemen van %s naar %s is mislukt"
+msgstr "Aankoppelen van '%s' op '%s' is mislukt"
#: cmdline/apt-cdrom.cc:162
msgid "Repeat this process for the rest of the CDs in your set."
" -c=? Lees dit configuratiebestand.\n"
" -o=? Stel een willekeurige optie in, b.v. -o dir::cache=/tmp\n"
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1149
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1164
#, c-format
msgid "Unable to write to %s"
msgstr "Kan niet naar %s schrijven"
msgid "Archive has no control record"
msgstr "Archief heeft geen 'control'-record"
-#: ftparchive/cachedb.cc:448
+#: ftparchive/cachedb.cc:452
msgid "Unable to get a cursor"
msgstr "Kan geen cursor verkrijgen"
msgstr "%lu pakketten niet volledig geïnstalleerd of verwijderd.\n"
#: cmdline/apt-get.cc:628
-#, fuzzy, c-format
+#, c-format
msgid "Note, selecting '%s' for task '%s'\n"
-msgstr "Let op, %s wordt geselecteerd omwille van de regex '%s'\n"
+msgstr "Let op, '%s' wordt geselecteerd omwille van de taak '%s'\n"
#: cmdline/apt-get.cc:634
-#, fuzzy, c-format
+#, c-format
msgid "Note, selecting '%s' for regex '%s'\n"
-msgstr "Let op, %s wordt geselecteerd omwille van de regex '%s'\n"
+msgstr "Let op, '%s' wordt geselecteerd omwille van de regex '%s'\n"
#: cmdline/apt-get.cc:651
#, c-format
msgstr " [Geïnstalleerd]"
#: cmdline/apt-get.cc:671
-#, fuzzy
msgid " [Not candidate version]"
-msgstr "Kandidaat-versies"
+msgstr "[Niet de kandidaat-versie]"
#: cmdline/apt-get.cc:673
msgid "You should explicitly select one to install."
msgstr "Echter, de volgende pakketten vervangen dit:"
#: cmdline/apt-get.cc:706
-#, fuzzy, c-format
+#, c-format
msgid "Package '%s' has no installation candidate"
-msgstr "Pakket %s heeft geen installeerbare kandidaat"
+msgstr "Pakket '%s' heeft geen kandidaat voor installatie"
#: cmdline/apt-get.cc:717
#, c-format
msgid "Virtual packages like '%s' can't be removed\n"
-msgstr ""
+msgstr "Virtuele pakketten zoals '%s' kunnen niet worden verwijderd\n"
#: cmdline/apt-get.cc:748
-#, fuzzy, c-format
+#, c-format
msgid "Note, selecting '%s' instead of '%s'\n"
-msgstr "Let op, %s wordt geselecteerd in plaats van %s\n"
+msgstr "Let op, '%s' wordt geselecteerd in plaats van '%s'\n"
#: cmdline/apt-get.cc:778
#, c-format
"gevraagd.\n"
#: cmdline/apt-get.cc:782
-#, fuzzy, c-format
+#, c-format
msgid "Skipping %s, it is not installed and only upgrades are requested.\n"
msgstr ""
-"%s wordt overgeslagen, het is al geïnstalleerd en opwaardering is niet "
+"%s wordt overgeslagen, het is niet geïnstalleerd en alleen opwaardering is "
"gevraagd.\n"
#: cmdline/apt-get.cc:794
msgid "%s is already the newest version.\n"
msgstr "%s is reeds de nieuwste versie.\n"
-#: cmdline/apt-get.cc:818 cmdline/apt-get.cc:2088 cmdline/apt-mark.cc:59
+#: cmdline/apt-get.cc:818 cmdline/apt-get.cc:2096 cmdline/apt-mark.cc:59
#, c-format
msgid "%s set to manually installed.\n"
msgstr "%s is ingesteld voor handmatige installatie.\n"
#: cmdline/apt-get.cc:844
-#, fuzzy, c-format
+#, c-format
msgid "Selected version '%s' (%s) for '%s'\n"
-msgstr "Versie %s (%s) geselecteerd voor %s\n"
+msgstr "Versie '%s' (%s) geselecteerd voor '%s'\n"
#: cmdline/apt-get.cc:849
#, fuzzy, c-format
+#| msgid "Selected version '%s' (%s) for '%s'\n"
msgid "Selected version '%s' (%s) for '%s' because of '%s'\n"
-msgstr "Versie %s (%s) geselecteerd voor %s\n"
+msgstr "Versie '%s' (%s) geselecteerd voor '%s'\n"
-#: cmdline/apt-get.cc:893
+#: cmdline/apt-get.cc:891
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr "Pakket %s is niet geïnstalleerd, en wordt dus niet verwijderd\n"
-#: cmdline/apt-get.cc:971
+#: cmdline/apt-get.cc:969
msgid "Correcting dependencies..."
msgstr "Vereisten worden gecorrigeerd..."
-#: cmdline/apt-get.cc:974
+#: cmdline/apt-get.cc:972
msgid " failed."
msgstr " mislukt."
-#: cmdline/apt-get.cc:977
+#: cmdline/apt-get.cc:975
msgid "Unable to correct dependencies"
msgstr "Kan vereisten niet corrigeren"
-#: cmdline/apt-get.cc:980
+#: cmdline/apt-get.cc:978
msgid "Unable to minimize the upgrade set"
msgstr "Kon de verzameling op te waarderen pakketten niet minimaliseren"
-#: cmdline/apt-get.cc:982
+#: cmdline/apt-get.cc:980
msgid " Done"
msgstr " Klaar"
-#: cmdline/apt-get.cc:986
+#: cmdline/apt-get.cc:984
msgid "You might want to run 'apt-get -f install' to correct these."
msgstr "U kunt 'apt-get -f install' uitvoeren om dit op te lossen."
-#: cmdline/apt-get.cc:989
+#: cmdline/apt-get.cc:987
msgid "Unmet dependencies. Try using -f."
msgstr "Er zijn vereisten waaraan niet voldaan is. Probeer -f te gebruiken."
-#: cmdline/apt-get.cc:1014
+#: cmdline/apt-get.cc:1012
msgid "WARNING: The following packages cannot be authenticated!"
msgstr ""
"WAARSCHUWING: De volgende pakketten kunnen niet geauthentificeerd worden:"
-#: cmdline/apt-get.cc:1018
+#: cmdline/apt-get.cc:1016
msgid "Authentication warning overridden.\n"
msgstr "Authentificatiewaarschuwing is genegeerd.\n"
-#: cmdline/apt-get.cc:1025
+#: cmdline/apt-get.cc:1023
msgid "Install these packages without verification [y/N]? "
msgstr "Wilt u deze pakketten installeren zonder verificatie [j/N]? "
-#: cmdline/apt-get.cc:1027
+#: cmdline/apt-get.cc:1025
msgid "Some packages could not be authenticated"
msgstr "Sommige pakketten konden niet geauthentificeerd worden"
-#: cmdline/apt-get.cc:1036 cmdline/apt-get.cc:1197
+#: cmdline/apt-get.cc:1034 cmdline/apt-get.cc:1195
msgid "There are problems and -y was used without --force-yes"
msgstr "Er zijn problemen en -y was gebruikt zonder --force-yes"
-#: cmdline/apt-get.cc:1077
+#: cmdline/apt-get.cc:1075
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr "Interne fout, InstallPackages is aangeroepen met defecte pakketten!"
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1084
msgid "Packages need to be removed but remove is disabled."
msgstr "Pakketten moeten verwijderd worden maar verwijderen is uitgeschakeld."
-#: cmdline/apt-get.cc:1097
+#: cmdline/apt-get.cc:1095
msgid "Internal error, Ordering didn't finish"
msgstr "Interne fout, rangschikken is niet voltooid"
-#: cmdline/apt-get.cc:1135
+#: cmdline/apt-get.cc:1133
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
"Merkwaardig... De groottes kwamen niet overeen, gelieve apt@packages.debian."
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:1142
+#: cmdline/apt-get.cc:1140
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr "Er moeten %sB/%sB aan archieven opgehaald worden.\n"
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:1147
+#: cmdline/apt-get.cc:1145
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr "Er moeten %sB aan archieven opgehaald worden.\n"
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:1154
+#: cmdline/apt-get.cc:1152
#, c-format
msgid "After this operation, %sB of additional disk space will be used.\n"
msgstr "Door deze operatie zal er %sB extra schijfruimte gebruikt worden.\n"
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:1159
+#: cmdline/apt-get.cc:1157
#, c-format
msgid "After this operation, %sB disk space will be freed.\n"
msgstr "Door deze operatie zal er %sB schijfruimte vrijkomen.\n"
-#: cmdline/apt-get.cc:1174 cmdline/apt-get.cc:1177 cmdline/apt-get.cc:2499
-#: cmdline/apt-get.cc:2502
+#: cmdline/apt-get.cc:1172 cmdline/apt-get.cc:1175 cmdline/apt-get.cc:2514
+#: cmdline/apt-get.cc:2517
#, c-format
msgid "Couldn't determine free space in %s"
msgstr "Kon de hoeveelheid vrije schijfruimte op %s niet bepalen"
-#: cmdline/apt-get.cc:1187
+#: cmdline/apt-get.cc:1185
#, c-format
msgid "You don't have enough free space in %s."
msgstr "U heeft onvoldoende vrije schijfruimte op %s."
-#: cmdline/apt-get.cc:1203 cmdline/apt-get.cc:1223
+#: cmdline/apt-get.cc:1201 cmdline/apt-get.cc:1221
msgid "Trivial Only specified but this is not a trivial operation."
msgstr "'Trivial Only' is opgegeven, dit is echter geen triviale bewerking."
-#: cmdline/apt-get.cc:1205
+#: cmdline/apt-get.cc:1203
msgid "Yes, do as I say!"
msgstr "Ja, doe wat ik zeg!"
-#: cmdline/apt-get.cc:1207
+#: cmdline/apt-get.cc:1205
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
"Als u wilt doorgaan, dient u de zin '%s' in te typen.\n"
" ?] "
-#: cmdline/apt-get.cc:1213 cmdline/apt-get.cc:1232
+#: cmdline/apt-get.cc:1211 cmdline/apt-get.cc:1230
msgid "Abort."
msgstr "Afbreken."
-#: cmdline/apt-get.cc:1228
+#: cmdline/apt-get.cc:1226
msgid "Do you want to continue [Y/n]? "
msgstr "Wilt u doorgaan [J/n]? "
-#: cmdline/apt-get.cc:1300 cmdline/apt-get.cc:2564 apt-pkg/algorithms.cc:1438
+#: cmdline/apt-get.cc:1298 cmdline/apt-get.cc:2579 apt-pkg/algorithms.cc:1445
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr "Ophalen van %s is mislukt %s\n"
-#: cmdline/apt-get.cc:1318
+#: cmdline/apt-get.cc:1316
msgid "Some files failed to download"
msgstr "Ophalen van sommige bestanden is mislukt"
-#: cmdline/apt-get.cc:1319 cmdline/apt-get.cc:2576
+#: cmdline/apt-get.cc:1317 cmdline/apt-get.cc:2591
msgid "Download complete and in download only mode"
msgstr "Ophalen klaar en alleen-ophalen-modus staat aan"
-#: cmdline/apt-get.cc:1325
+#: cmdline/apt-get.cc:1323
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
"Kon sommige archieven niet ophalen, misschien kunt u 'apt-get update' of --"
"fix-missing proberen?"
-#: cmdline/apt-get.cc:1329
+#: cmdline/apt-get.cc:1327
msgid "--fix-missing and media swapping is not currently supported"
msgstr "--fix-missing en medium wisselen wordt op dit moment niet ondersteund"
-#: cmdline/apt-get.cc:1334
+#: cmdline/apt-get.cc:1332
msgid "Unable to correct missing packages."
msgstr "Geen oplossing voor de missende pakketten gevonden."
-#: cmdline/apt-get.cc:1335
+#: cmdline/apt-get.cc:1333
msgid "Aborting install."
msgstr "Installatie wordt afgebroken."
-#: cmdline/apt-get.cc:1363
+#: cmdline/apt-get.cc:1361
msgid ""
"The following package disappeared from your system as\n"
"all files have been overwritten by other packages:"
"The following packages disappeared from your system as\n"
"all files have been overwritten by other packages:"
msgstr[0] ""
+"Het volgende pakket is van uw systeem verdwenen omdat\n"
+"alle bestanden zijn overschreven door andere pakketten:"
msgstr[1] ""
+"De volgende pakketten zijn van uw systeem verdwenen omdat\n"
+"alle bestanden zijn overschreven door andere pakketten:"
-#: cmdline/apt-get.cc:1367
+#: cmdline/apt-get.cc:1365
msgid "Note: This is done automatic and on purpose by dpkg."
-msgstr ""
+msgstr "Let op: Dit wordt automatische en bewust door dpkg gedaan."
-#: cmdline/apt-get.cc:1505
+#: cmdline/apt-get.cc:1503
#, c-format
msgid "Ignore unavailable target release '%s' of package '%s'"
msgstr "Negeer niet beschikbare doelrelease '%s' van pakket '%s'"
-#: cmdline/apt-get.cc:1537
+#: cmdline/apt-get.cc:1535
#, c-format
msgid "Picking '%s' as source package instead of '%s'\n"
msgstr "'%s' wordt genomen als bronpakket in plaats van '%s'\n"
#. if (VerTag.empty() == false && Last == 0)
-#: cmdline/apt-get.cc:1575
+#: cmdline/apt-get.cc:1573
#, c-format
msgid "Ignore unavailable version '%s' of package '%s'"
msgstr "Negeer niet beschikbare versie '%s' van pakket '%s'"
-#: cmdline/apt-get.cc:1591
+#: cmdline/apt-get.cc:1589
msgid "The update command takes no arguments"
msgstr "De opdracht 'update' aanvaard geen argumenten"
-#: cmdline/apt-get.cc:1653
+#: cmdline/apt-get.cc:1652
msgid "We are not supposed to delete stuff, can't start AutoRemover"
msgstr "We mogen geen dingen verwijderen, kan AutoRemover niet starten"
-#: cmdline/apt-get.cc:1748
+#: cmdline/apt-get.cc:1756
msgid ""
"Hmm, seems like the AutoRemover destroyed something which really\n"
"shouldn't happen. Please file a bug report against apt."
#. "that package should be filed.") << endl;
#. }
#.
-#: cmdline/apt-get.cc:1751 cmdline/apt-get.cc:1921
+#: cmdline/apt-get.cc:1759 cmdline/apt-get.cc:1929
msgid "The following information may help to resolve the situation:"
msgstr "De volgende informatie helpt u mogelijk verder:"
-#: cmdline/apt-get.cc:1755
+#: cmdline/apt-get.cc:1763
msgid "Internal Error, AutoRemover broke stuff"
msgstr "Interne fout, AutoRemover heeft dingen stukgemaakt"
-#: cmdline/apt-get.cc:1762
-#, fuzzy
+#: cmdline/apt-get.cc:1770
msgid ""
"The following package was automatically installed and is no longer required:"
msgid_plural ""
"The following packages were automatically installed and are no longer "
"required:"
msgstr[0] ""
-"De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer "
-"nodig:"
+"Het volgende pakket is automatisch geïnstalleerd en is niet langer nodig:"
msgstr[1] ""
"De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer "
"nodig:"
-#: cmdline/apt-get.cc:1766
-#, fuzzy, c-format
+#: cmdline/apt-get.cc:1774
+#, c-format
msgid "%lu package was automatically installed and is no longer required.\n"
msgid_plural ""
"%lu packages were automatically installed and are no longer required.\n"
-msgstr[0] ""
-"%lu pakketten zijn automatisch geïnstalleerd en zijn niet langer nodig.\n"
+msgstr[0] "%lu pakket is automatisch geïnstalleerd en is niet langer nodig.\n"
msgstr[1] ""
"%lu pakketten zijn automatisch geïnstalleerd en zijn niet langer nodig.\n"
-#: cmdline/apt-get.cc:1768
+#: cmdline/apt-get.cc:1776
msgid "Use 'apt-get autoremove' to remove them."
msgstr "U kunt deze verwijderen via 'apt-get autoremove'."
-#: cmdline/apt-get.cc:1787
+#: cmdline/apt-get.cc:1795
msgid "Internal error, AllUpgrade broke stuff"
msgstr "Interne fout, AllUpgrade heeft dingen stukgemaakt"
-#: cmdline/apt-get.cc:1886
+#: cmdline/apt-get.cc:1894
msgid "You might want to run 'apt-get -f install' to correct these:"
msgstr ""
"U wilt waarschijnlijk 'apt-get -f install' uitvoeren om volgende op te "
"lossen:"
-#: cmdline/apt-get.cc:1890
+#: cmdline/apt-get.cc:1898
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
"Er zijn niet-voldane vereisten. U kunt best 'apt-get -f install' uitvoeren "
"zonder pakketten op te geven, (of u kunt zelf een oplossing specificeren)."
-#: cmdline/apt-get.cc:1906
+#: cmdline/apt-get.cc:1914
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"
"een onmogelijke situatie gevraagd hebt of dat u de 'unstable'-distributie \n"
"gebruikt en sommige benodigde pakketten nog vastzitten in 'incoming'."
-#: cmdline/apt-get.cc:1924
+#: cmdline/apt-get.cc:1932
msgid "Broken packages"
msgstr "Niet-werkende pakketten:"
-#: cmdline/apt-get.cc:1950
+#: cmdline/apt-get.cc:1958
msgid "The following extra packages will be installed:"
msgstr "De volgende extra pakketten zullen geïnstalleerd worden:"
-#: cmdline/apt-get.cc:2040
+#: cmdline/apt-get.cc:2048
msgid "Suggested packages:"
msgstr "Voorgestelde pakketten:"
-#: cmdline/apt-get.cc:2041
+#: cmdline/apt-get.cc:2049
msgid "Recommended packages:"
msgstr "Aanbevolen pakketten:"
-#: cmdline/apt-get.cc:2083
+#: cmdline/apt-get.cc:2091
#, c-format
msgid "Couldn't find package %s"
msgstr "Kon pakket %s niet vinden"
-#: cmdline/apt-get.cc:2090 cmdline/apt-mark.cc:61
-#, fuzzy, c-format
+#: cmdline/apt-get.cc:2098 cmdline/apt-mark.cc:61
+#, c-format
msgid "%s set to automatically installed.\n"
-msgstr "%s is ingesteld voor handmatige installatie.\n"
+msgstr "%s is ingesteld op automatische geïnstalleerd.\n"
-#: cmdline/apt-get.cc:2098 cmdline/apt-mark.cc:105
+#: cmdline/apt-get.cc:2106 cmdline/apt-mark.cc:105
msgid ""
"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' "
"instead."
msgstr ""
-#: cmdline/apt-get.cc:2114
+#: cmdline/apt-get.cc:2122
msgid "Calculating upgrade... "
msgstr "Opwaardering wordt doorgerekend... "
-#: cmdline/apt-get.cc:2117 methods/ftp.cc:707 methods/connect.cc:111
+#: cmdline/apt-get.cc:2125 methods/ftp.cc:708 methods/connect.cc:111
msgid "Failed"
msgstr "Mislukt"
-#: cmdline/apt-get.cc:2122
+#: cmdline/apt-get.cc:2130
msgid "Done"
msgstr "Klaar"
-#: cmdline/apt-get.cc:2189 cmdline/apt-get.cc:2197
+#: cmdline/apt-get.cc:2197 cmdline/apt-get.cc:2205
msgid "Internal error, problem resolver broke stuff"
msgstr "Interne fout, probleemoplosser heeft dingen stukgemaakt"
-#: cmdline/apt-get.cc:2221 cmdline/apt-get.cc:2254
+#: cmdline/apt-get.cc:2233 cmdline/apt-get.cc:2269
msgid "Unable to lock the download directory"
msgstr "Kon de ophaalmap niet vergrendelen"
-#: cmdline/apt-get.cc:2305
+#: cmdline/apt-get.cc:2320
#, c-format
msgid "Downloading %s %s"
msgstr ""
-#: cmdline/apt-get.cc:2361
+#: cmdline/apt-get.cc:2376
msgid "Must specify at least one package to fetch source for"
msgstr ""
"U dient minstens 1 pakket op te geven waarvan de broncode opgehaald moet "
"worden"
-#: cmdline/apt-get.cc:2401 cmdline/apt-get.cc:2713
+#: cmdline/apt-get.cc:2416 cmdline/apt-get.cc:2728
#, c-format
msgid "Unable to find a source package for %s"
msgstr "Kan geen bronpakket vinden voor %s"
-#: cmdline/apt-get.cc:2418
+#: cmdline/apt-get.cc:2433
#, c-format
msgid ""
"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n"
"%s\n"
msgstr ""
+"MERK OP: Het verpakken van '%s' wordt bijgehouden in het versiebeheersysteem "
+"'%s' op:\n"
+"%s\n"
-#: cmdline/apt-get.cc:2423
+#: cmdline/apt-get.cc:2438
#, c-format
msgid ""
"Please use:\n"
"bzr get %s\n"
"to retrieve the latest (possibly unreleased) updates to the package.\n"
msgstr ""
+"Gebruik:\n"
+"bzr get %s\n"
+"om de nieuwste (mogelijk nog niet uit uitgebrachte) versie van het pakket op "
+"te halen.\n"
-#: cmdline/apt-get.cc:2476
+#: cmdline/apt-get.cc:2491
#, c-format
msgid "Skipping already downloaded file '%s'\n"
msgstr "Reeds opgehaald bestand '%s' wordt overgeslagen\n"
-#: cmdline/apt-get.cc:2513
+#: cmdline/apt-get.cc:2528
#, c-format
msgid "You don't have enough free space in %s"
msgstr "U heeft niet voldoende vrije schijfruimte op %s"
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:2522
+#: cmdline/apt-get.cc:2537
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr "Moet %sB/%sB aan bronarchieven ophalen.\n"
#. TRANSLATOR: The required space between number and unit is already included
#. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB
-#: cmdline/apt-get.cc:2527
+#: cmdline/apt-get.cc:2542
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr "Moet %sB aan bronarchieven ophalen.\n"
-#: cmdline/apt-get.cc:2533
+#: cmdline/apt-get.cc:2548
#, c-format
msgid "Fetch source %s\n"
msgstr "Ophalen bron %s\n"
-#: cmdline/apt-get.cc:2571
+#: cmdline/apt-get.cc:2586
msgid "Failed to fetch some archives."
msgstr "Ophalen van sommige archieven is mislukt."
-#: cmdline/apt-get.cc:2602
+#: cmdline/apt-get.cc:2617
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr "Het uitpakken van de reeds uitgepakte bron in %s wordt overgeslagen\n"
-#: cmdline/apt-get.cc:2614
+#: cmdline/apt-get.cc:2629
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr "Uitpakopdracht '%s' is mislukt.\n"
-#: cmdline/apt-get.cc:2615
+#: cmdline/apt-get.cc:2630
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr "Gelieve na te gaan of het 'dpkg-dev'-pakket geïnstalleerd is.\n"
-#: cmdline/apt-get.cc:2637
+#: cmdline/apt-get.cc:2652
#, c-format
msgid "Build command '%s' failed.\n"
msgstr "Bouwopdracht '%s' is mislukt.\n"
-#: cmdline/apt-get.cc:2657
+#: cmdline/apt-get.cc:2672
msgid "Child process failed"
msgstr "Dochterproces is mislukt"
-#: cmdline/apt-get.cc:2676
+#: cmdline/apt-get.cc:2691
msgid "Must specify at least one package to check builddeps for"
msgstr ""
"U dient tenminste één pakket op te geven om de bouwvereisten van te "
"controleren"
-#: cmdline/apt-get.cc:2701
+#: cmdline/apt-get.cc:2716
#, c-format
msgid ""
"No architecture information available for %s. See apt.conf(5) APT::"
"Architectures for setup"
msgstr ""
-#: cmdline/apt-get.cc:2718
+#: cmdline/apt-get.cc:2733
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr "Kan de informatie over de bouwvereisten voor %s niet ophalen"
-#: cmdline/apt-get.cc:2738
+#: cmdline/apt-get.cc:2753
#, c-format
msgid "%s has no build depends.\n"
msgstr "%s heeft geen bouwvereisten.\n"
-#: cmdline/apt-get.cc:2868
+#: cmdline/apt-get.cc:2883
#, fuzzy, c-format
+#| msgid ""
+#| "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#| "found"
msgid ""
"%s dependency for %s can't be satisfied because %s is not allowed on '%s' "
"packages"
"De vereiste %s van pakket %s kan niet voldaan worden omdat pakket %s "
"onvindbaar is"
-#: cmdline/apt-get.cc:2889
+#: cmdline/apt-get.cc:2904
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"De vereiste %s van pakket %s kan niet voldaan worden omdat pakket %s "
"onvindbaar is"
-#: cmdline/apt-get.cc:2912
+#: cmdline/apt-get.cc:2927
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
"Voldoen van Vereiste %s van pakket %s is mislukt: geïnstalleerde versie %s "
"is te nieuw"
-#: cmdline/apt-get.cc:2951
+#: cmdline/apt-get.cc:2966
#, fuzzy, c-format
+#| msgid ""
+#| "%s dependency for %s cannot be satisfied because no available versions of "
+#| "package %s can satisfy version requirements"
msgid ""
"%s dependency for %s cannot be satisfied because candidate version of "
"package %s can't satisfy version requirements"
"De vereiste %s van pakket %s kan niet voldaan worden omdat er geen "
"beschikbare versies zijn van pakket %s die aan de versievereisten voldoen"
-#: cmdline/apt-get.cc:2957
+#: cmdline/apt-get.cc:2972
#, fuzzy, c-format
+#| msgid ""
+#| "%s dependency for %s cannot be satisfied because the package %s cannot be "
+#| "found"
msgid ""
"%s dependency for %s cannot be satisfied because package %s has no candidate "
"version"
"De vereiste %s van pakket %s kan niet voldaan worden omdat pakket %s "
"onvindbaar is"
-#: cmdline/apt-get.cc:2980
+#: cmdline/apt-get.cc:2995
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr "Voldoen van de vereiste %s van pakket %s is mislukt: %s"
-#: cmdline/apt-get.cc:2996
+#: cmdline/apt-get.cc:3011
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr "Bouwvereisten voor %s konden niet voldaan worden."
-#: cmdline/apt-get.cc:3001
+#: cmdline/apt-get.cc:3016
msgid "Failed to process build dependencies"
msgstr "Verwerken van de bouwvereisten is mislukt"
-#: cmdline/apt-get.cc:3094 cmdline/apt-get.cc:3106
+#: cmdline/apt-get.cc:3109 cmdline/apt-get.cc:3121
#, fuzzy, c-format
+#| msgid "Connecting to %s (%s)"
msgid "Changelog for %s (%s)"
msgstr "Er wordt verbinding gemaakt met %s (%s)"
-#: cmdline/apt-get.cc:3225
+#: cmdline/apt-get.cc:3240
msgid "Supported modules:"
msgstr "Ondersteunde modules:"
-#: cmdline/apt-get.cc:3266
+#: cmdline/apt-get.cc:3281
#, fuzzy
+#| msgid ""
+#| "Usage: apt-get [options] command\n"
+#| " apt-get [options] install|remove pkg1 [pkg2 ...]\n"
+#| " apt-get [options] source pkg1 [pkg2 ...]\n"
+#| "\n"
+#| "apt-get is a simple command line interface for downloading and\n"
+#| "installing packages. The most frequently used commands are update\n"
+#| "and install.\n"
+#| "\n"
+#| "Commands:\n"
+#| " update - Retrieve new lists of packages\n"
+#| " upgrade - Perform an upgrade\n"
+#| " install - Install new packages (pkg is libc6 not libc6.deb)\n"
+#| " remove - Remove packages\n"
+#| " autoremove - Remove automatically all unused packages\n"
+#| " purge - Remove 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"
+#| " dselect-upgrade - Follow dselect selections\n"
+#| " clean - Erase downloaded archive files\n"
+#| " autoclean - Erase old downloaded archive files\n"
+#| " check - Verify that there are no broken dependencies\n"
+#| " markauto - Mark the given packages as automatically installed\n"
+#| " unmarkauto - Mark the given packages as manually installed\n"
+#| "\n"
+#| "Options:\n"
+#| " -h This help text.\n"
+#| " -q Loggable output - no progress indicator\n"
+#| " -qq No output except for errors\n"
+#| " -d Download only - do NOT install or unpack archives\n"
+#| " -s No-act. Perform ordering simulation\n"
+#| " -y Assume Yes to all queries and do not prompt\n"
+#| " -f Attempt to correct a system with broken dependencies in place\n"
+#| " -m Attempt to continue if archives are unlocatable\n"
+#| " -u Show a list of upgraded packages as well\n"
+#| " -b Build the source package after fetching it\n"
+#| " -V Show verbose version numbers\n"
+#| " -c=? Read this configuration file\n"
+#| " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
+#| "See the apt-get(8), sources.list(5) and apt.conf(5) manual\n"
+#| "pages for more information and options.\n"
+#| " This APT has Super Cow Powers.\n"
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
"voor meer informatie en opties.\n"
" Deze APT heeft Super Koe kracht.\n"
-#: cmdline/apt-get.cc:3429
+#: cmdline/apt-get.cc:3444
msgid ""
"NOTE: This is only a simulation!\n"
" apt-get needs root privileges for real execution.\n"
#: cmdline/apt-mark.cc:46
#, fuzzy, c-format
+#| msgid "but it is not installed"
msgid "%s can not be marked as it is not installed.\n"
msgstr "maar het is niet geïnstalleerd"
#: cmdline/apt-mark.cc:52
#, fuzzy, c-format
+#| msgid "%s set to manually installed.\n"
msgid "%s was already set to manually installed.\n"
msgstr "%s is ingesteld voor handmatige installatie.\n"
#: cmdline/apt-mark.cc:54
#, fuzzy, c-format
+#| msgid "%s set to automatically installed.\n"
msgid "%s was already set to automatically installed.\n"
-msgstr "%s is ingesteld voor handmatige installatie.\n"
+msgstr "%s is ingesteld op automatische geïnstalleerd.\n"
#: cmdline/apt-mark.cc:169
#, fuzzy, c-format
+#| msgid "%s is already the newest version.\n"
msgid "%s was already set on hold.\n"
msgstr "%s is reeds de nieuwste versie.\n"
#: cmdline/apt-mark.cc:171
#, fuzzy, c-format
+#| msgid "%s is already the newest version.\n"
msgid "%s was already not hold.\n"
msgstr "%s is reeds de nieuwste versie.\n"
#: cmdline/apt-mark.cc:185 cmdline/apt-mark.cc:207
#, fuzzy, c-format
+#| msgid "%s set to manually installed.\n"
msgid "%s set on hold.\n"
msgstr "%s is ingesteld voor handmatige installatie.\n"
#: cmdline/apt-mark.cc:187 cmdline/apt-mark.cc:212
#, fuzzy, c-format
+#| msgid "Failed to open %s"
msgid "Canceled hold on %s.\n"
msgstr "Openen van %s is mislukt"
#. Only warn if there is no sources.list file.
#: apt-inst/extract.cc:462 apt-pkg/contrib/cdromutl.cc:179
#: apt-pkg/contrib/fileutl.cc:343 apt-pkg/sourcelist.cc:204
-#: apt-pkg/sourcelist.cc:210 apt-pkg/acquire.cc:450 apt-pkg/init.cc:104
-#: apt-pkg/init.cc:112 apt-pkg/clean.cc:33 apt-pkg/policy.cc:352
+#: apt-pkg/sourcelist.cc:210 apt-pkg/acquire.cc:454 apt-pkg/init.cc:103
+#: apt-pkg/init.cc:111 apt-pkg/clean.cc:33 apt-pkg/policy.cc:353
#: methods/mirror.cc:91
#, c-format
msgid "Unable to read %s"
msgstr ""
"De 'info'- en de 'temp'-mappen dienen op hetzelfde bestandsysteem te staan"
-#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1048
-#: apt-pkg/pkgcachegen.cc:1152 apt-pkg/pkgcachegen.cc:1158
-#: apt-pkg/pkgcachegen.cc:1320
+#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1063
+#: apt-pkg/pkgcachegen.cc:1167 apt-pkg/pkgcachegen.cc:1173
+#: apt-pkg/pkgcachegen.cc:1335
msgid "Reading package lists"
msgstr "Pakketlijsten worden ingelezen"
msgstr "Leesfout door proces %s"
#: methods/bzip2.cc:140 methods/bzip2.cc:149 methods/copy.cc:43
-#: methods/gzip.cc:92 methods/gzip.cc:101 methods/rred.cc:524
-#: methods/rred.cc:533
+#: methods/gzip.cc:92 methods/gzip.cc:101 methods/rred.cc:527
+#: methods/rred.cc:536
msgid "Failed to stat"
msgstr "stat is mislukt"
#: methods/bzip2.cc:146 methods/copy.cc:80 methods/gzip.cc:98
-#: methods/rred.cc:530
+#: methods/rred.cc:533
msgid "Failed to set modification time"
msgstr "Instellen van de aanpassingstijd is mislukt"
-#: methods/cdrom.cc:199
+#: methods/cdrom.cc:200
#, c-format
msgid "Unable to read the cdrom database %s"
msgstr "Kan de cd databank %s niet lezen"
-#: methods/cdrom.cc:208
+#: methods/cdrom.cc:209
msgid ""
"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
"cannot be used to add new CD-ROMs"
"Om deze APT deze CD te laten herkennen kunt u best apt-cdrom gebruiken. 'apt-"
"get update' is niet in staat om nieuwe CDs toe te voegen"
-#: methods/cdrom.cc:218
+#: methods/cdrom.cc:219
msgid "Wrong CD-ROM"
msgstr "Verkeerde CD"
-#: methods/cdrom.cc:245
+#: methods/cdrom.cc:246
#, c-format
msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
msgstr ""
"Kan de CD in %s niet loskoppelen, mogelijk wordt die nog steeds gebruikt."
-#: methods/cdrom.cc:250
+#: methods/cdrom.cc:251
msgid "Disk not found."
msgstr "Schijf niet gevonden"
-#: methods/cdrom.cc:258 methods/file.cc:79 methods/rsh.cc:265
+#: methods/cdrom.cc:259 methods/file.cc:79 methods/rsh.cc:265
msgid "File not found"
msgstr "Bestand niet gevonden"
msgstr "Ongeldige URI, lokale URIs mogen niet beginnen met //"
#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc:168
+#: methods/ftp.cc:169
msgid "Logging in"
msgstr "Bezig met aanmelden"
-#: methods/ftp.cc:174
+#: methods/ftp.cc:175
msgid "Unable to determine the peer name"
msgstr "Kan de 'peer'-naam niet bepalen"
-#: methods/ftp.cc:179
+#: methods/ftp.cc:180
msgid "Unable to determine the local name"
msgstr "Kan de lokale naam niet bepalen"
-#: methods/ftp.cc:210 methods/ftp.cc:238
+#: methods/ftp.cc:211 methods/ftp.cc:239
#, c-format
msgid "The server refused the connection and said: %s"
msgstr "Onze verbinding is door de server geweigerd met bericht: %s"
-#: methods/ftp.cc:216
+#: methods/ftp.cc:217
#, c-format
msgid "USER failed, server said: %s"
msgstr "USER mislukt; bericht van server: %s"
-#: methods/ftp.cc:223
+#: methods/ftp.cc:224
#, c-format
msgid "PASS failed, server said: %s"
msgstr "PASS mislukt; bericht van server: %s"
-#: methods/ftp.cc:243
+#: methods/ftp.cc:244
msgid ""
"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
"is empty."
"Er was een proxy-server opgegeven, maar geen aanmeldscript, Acquire::ftp::"
"ProxyLogin is leeg."
-#: methods/ftp.cc:271
+#: methods/ftp.cc:272
#, c-format
msgid "Login script command '%s' failed, server said: %s"
msgstr "Aanmeldscriptopdracht '%s' is mislukt; bericht van server: %s"
-#: methods/ftp.cc:297
+#: methods/ftp.cc:298
#, c-format
msgid "TYPE failed, server said: %s"
msgstr "TYPE mislukt; bericht van server: %s"
-#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:184 methods/rsh.cc:227
+#: methods/ftp.cc:336 methods/ftp.cc:447 methods/rsh.cc:184 methods/rsh.cc:227
msgid "Connection timeout"
msgstr "Verbinding is verlopen"
-#: methods/ftp.cc:341
+#: methods/ftp.cc:342
msgid "Server closed the connection"
msgstr "Verbinding is verbroken door de server"
-#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:820 methods/rsh.cc:191
+#: methods/ftp.cc:345 apt-pkg/contrib/fileutl.cc:831 methods/rsh.cc:191
msgid "Read error"
msgstr "Leesfout"
-#: methods/ftp.cc:351 methods/rsh.cc:198
+#: methods/ftp.cc:352 methods/rsh.cc:198
msgid "A response overflowed the buffer."
msgstr "Een reactie deed de buffer overlopen"
-#: methods/ftp.cc:368 methods/ftp.cc:380
+#: methods/ftp.cc:369 methods/ftp.cc:381
msgid "Protocol corruption"
msgstr "Protocolcorruptie"
-#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:862 methods/rsh.cc:233
+#: methods/ftp.cc:453 apt-pkg/contrib/fileutl.cc:873 methods/rsh.cc:233
msgid "Write error"
msgstr "Schrijffout"
-#: methods/ftp.cc:692 methods/ftp.cc:698 methods/ftp.cc:734
+#: methods/ftp.cc:693 methods/ftp.cc:699 methods/ftp.cc:735
msgid "Could not create a socket"
msgstr "Kon geen socket aanmaken"
-#: methods/ftp.cc:703
+#: methods/ftp.cc:704
msgid "Could not connect data socket, connection timed out"
msgstr "Kon de datasocket niet verbinden, de verbinding verliep"
-#: methods/ftp.cc:709
+#: methods/ftp.cc:710
msgid "Could not connect passive socket."
msgstr "Kon de passieve socket niet verbinden."
-#: methods/ftp.cc:727
+#: methods/ftp.cc:728
msgid "getaddrinfo was unable to get a listening socket"
msgstr "getaddrinfo kon geen luistersocket verkrijgen"
-#: methods/ftp.cc:741
+#: methods/ftp.cc:742
msgid "Could not bind a socket"
msgstr "Kon geen socket binden"
-#: methods/ftp.cc:745
+#: methods/ftp.cc:746
msgid "Could not listen on the socket"
msgstr "Kon niet op de socket niet luisteren"
-#: methods/ftp.cc:752
+#: methods/ftp.cc:753
msgid "Could not determine the socket's name"
msgstr "Kon de socketnaam niet bepalen"
-#: methods/ftp.cc:784
+#: methods/ftp.cc:785
msgid "Unable to send PORT command"
msgstr "Kan PORT-commando niet verzenden"
-#: methods/ftp.cc:794
+#: methods/ftp.cc:795
#, c-format
msgid "Unknown address family %u (AF_*)"
msgstr "Onbekende adresfamilie %u (AF_*)"
-#: methods/ftp.cc:803
+#: methods/ftp.cc:804
#, c-format
msgid "EPRT failed, server said: %s"
msgstr "EPRT is mislukt; bericht van server: %s"
-#: methods/ftp.cc:823
+#: methods/ftp.cc:824
msgid "Data socket connect timed out"
msgstr "Datasocket verbinding is verlopen"
-#: methods/ftp.cc:830
+#: methods/ftp.cc:831
msgid "Unable to accept connection"
msgstr "Kan de verbinding niet aanvaarden"
-#: methods/ftp.cc:869 methods/http.cc:1023 methods/rsh.cc:303
+#: methods/ftp.cc:870 methods/http.cc:1023 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr "Probleem bij het hashen van het bestand"
-#: methods/ftp.cc:882
+#: methods/ftp.cc:883
#, c-format
msgid "Unable to fetch file, server said '%s'"
msgstr "Kan bestand niet ophalen; bericht van server: %s"
-#: methods/ftp.cc:897 methods/rsh.cc:322
+#: methods/ftp.cc:898 methods/rsh.cc:322
msgid "Data socket timed out"
msgstr "Datasocket verliep"
-#: methods/ftp.cc:927
+#: methods/ftp.cc:928
#, c-format
msgid "Data transfer failed, server said '%s'"
msgstr "Data transfer is mislukt, server zei: %s"
#. Get the files information
-#: methods/ftp.cc:1004
+#: methods/ftp.cc:1005
msgid "Query"
msgstr "Zoekopdracht"
-#: methods/ftp.cc:1116
+#: methods/ftp.cc:1117
msgid "Unable to invoke "
msgstr "Aanroepen mislukt van "
msgstr "Er is tenminste één ongeldige ondertekening gevonden."
#: methods/gpgv.cc:175
-#, fuzzy
msgid "Could not execute 'gpgv' to verify signature (is gpgv installed?)"
msgstr ""
-"Kon '%s' niet uitvoeren om ondertekening te verifiëren (is gpgv "
+"Kon 'gpgv' niet uitvoeren om ondertekening te verifiëren (is gpgv "
"geïnstalleerd?)"
#: methods/gpgv.cc:180
msgstr "Kan een leeg bestand niet mmappen"
#: apt-pkg/contrib/mmap.cc:89
-#, fuzzy, c-format
+#, c-format
msgid "Couldn't duplicate file descriptor %i"
-msgstr "Kon geen pijp openen voor %s"
+msgstr "Kon de bestandsindicator %i niet dupliceren"
#: apt-pkg/contrib/mmap.cc:97 apt-pkg/contrib/mmap.cc:258
#, c-format
msgstr "Kon van %lu bytes geen mmap maken"
#: apt-pkg/contrib/mmap.cc:124
-#, fuzzy
msgid "Unable to close mmap"
-msgstr "Kan %s niet openen"
+msgstr "Kan mmap niet sluiten"
#: apt-pkg/contrib/mmap.cc:152 apt-pkg/contrib/mmap.cc:180
-#, fuzzy
msgid "Unable to synchronize mmap"
-msgstr "Aanroepen mislukt van "
+msgstr "Kan mmap niet synchronizeren"
#: apt-pkg/contrib/mmap.cc:310
#, c-format
"Unable to increase the size of the MMap as the limit of %lu bytes is already "
"reached."
msgstr ""
+"Kan het formaat van de MMap niet vergroten omdat de grens van %lu bytes al "
+"is bereikt"
#: apt-pkg/contrib/mmap.cc:412
msgid ""
"Unable to increase size of the MMap as automatic growing is disabled by user."
msgstr ""
+"Kan het formaat van de MMap niet vergroten omdat het automatisch vergroten "
+"door de gebruiker is uitgeschakeld."
#. d means days, h means hours, min means minutes, s means seconds
#: apt-pkg/contrib/strutl.cc:371
msgid "%lis"
msgstr "%lis"
-#: apt-pkg/contrib/strutl.cc:1138
+#: apt-pkg/contrib/strutl.cc:1137
#, c-format
msgid "Selection %s not found"
msgstr "Selectie %s niet gevonden"
msgstr "Syntaxfout %s:%u: Niet-ondersteunde richtlijn '%s'"
#: apt-pkg/contrib/configuration.cc:790
-#, fuzzy, c-format
+#, c-format
msgid "Syntax error %s:%u: clear directive requires an option tree as argument"
msgstr ""
-"Syntaxfout %s:%u: Richtlijnen kunnen enkel op het hoogste niveau gegeven "
-"worden"
+"Syntaxfout %s:%u: De richtlijn 'clear' vereist een optieboom als argument"
#: apt-pkg/contrib/configuration.cc:840
#, c-format
msgid "Command line option '%c' [from %s] is not known."
msgstr "Commandoregel-optie '%c' [van %s] is onbekend."
-#: apt-pkg/contrib/cmndline.cc:103 apt-pkg/contrib/cmndline.cc:111
-#: apt-pkg/contrib/cmndline.cc:119
+#: apt-pkg/contrib/cmndline.cc:101 apt-pkg/contrib/cmndline.cc:109
+#: apt-pkg/contrib/cmndline.cc:117
#, c-format
msgid "Command line option %s is not understood"
msgstr "Commandoregel-optie %s wordt niet begrepen"
-#: apt-pkg/contrib/cmndline.cc:124
+#: apt-pkg/contrib/cmndline.cc:122
#, c-format
msgid "Command line option %s is not boolean"
msgstr "Commandoregel-optie %s is niet booleaans"
-#: apt-pkg/contrib/cmndline.cc:165 apt-pkg/contrib/cmndline.cc:186
+#: apt-pkg/contrib/cmndline.cc:163 apt-pkg/contrib/cmndline.cc:184
#, c-format
msgid "Option %s requires an argument."
msgstr "Optie %s vereist een argument."
-#: apt-pkg/contrib/cmndline.cc:200 apt-pkg/contrib/cmndline.cc:206
+#: apt-pkg/contrib/cmndline.cc:197 apt-pkg/contrib/cmndline.cc:203
#, c-format
msgid "Option %s: Configuration item specification must have an =<val>."
msgstr ""
"Optie %s: De specificatie van het configuratie-item dient een =<waarde> te "
"bevatten."
-#: apt-pkg/contrib/cmndline.cc:236
+#: apt-pkg/contrib/cmndline.cc:232
#, c-format
msgid "Option %s requires an integer argument, not '%s'"
msgstr "Optie %s vereist een integer getal als argument, niet '%s'"
-#: apt-pkg/contrib/cmndline.cc:267
+#: apt-pkg/contrib/cmndline.cc:263
#, c-format
msgid "Option '%s' is too long"
msgstr "Optie '%s' is te lang"
-#: apt-pkg/contrib/cmndline.cc:300
+#: apt-pkg/contrib/cmndline.cc:295
#, c-format
msgid "Sense %s is not understood, try true or false."
msgstr "Waarde %s wordt niet begrepen, probeer 'true' of 'false'."
-#: apt-pkg/contrib/cmndline.cc:350
+#: apt-pkg/contrib/cmndline.cc:345
#, c-format
msgid "Invalid operation %s"
msgstr "Ongeldige operatie %s"
msgstr "Kan de status van het aanhechtpunt %s niet opvragen"
#: apt-pkg/contrib/cdromutl.cc:175 apt-pkg/contrib/cdromutl.cc:209
-#: apt-pkg/acquire.cc:456 apt-pkg/acquire.cc:481 apt-pkg/clean.cc:39
+#: apt-pkg/acquire.cc:460 apt-pkg/acquire.cc:485 apt-pkg/clean.cc:39
#: methods/mirror.cc:97
#, c-format
msgid "Unable to change to %s"
"Ignoring file '%s' in directory '%s' as it has an invalid filename extension"
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:679
+#: apt-pkg/contrib/fileutl.cc:690
#, c-format
msgid "Waited for %s but it wasn't there"
msgstr "Er is gewacht op %s, maar die kwam niet"
-#: apt-pkg/contrib/fileutl.cc:691
+#: apt-pkg/contrib/fileutl.cc:702
#, c-format
msgid "Sub-process %s received a segmentation fault."
msgstr "Subproces %s ontving een segmentatiefout."
-#: apt-pkg/contrib/fileutl.cc:693
+#: apt-pkg/contrib/fileutl.cc:704
#, c-format
msgid "Sub-process %s received signal %u."
msgstr "Subproces %s ontving signaal %u."
-#: apt-pkg/contrib/fileutl.cc:697
+#: apt-pkg/contrib/fileutl.cc:708
#, c-format
msgid "Sub-process %s returned an error code (%u)"
msgstr "Subproces %s gaf de foutcode %u terug"
-#: apt-pkg/contrib/fileutl.cc:699
+#: apt-pkg/contrib/fileutl.cc:710
#, c-format
msgid "Sub-process %s exited unexpectedly"
msgstr "Subproces %s sloot onverwacht af"
-#: apt-pkg/contrib/fileutl.cc:764 apt-pkg/indexcopy.cc:673
+#: apt-pkg/contrib/fileutl.cc:775 apt-pkg/indexcopy.cc:673
#, c-format
msgid "Could not open file %s"
msgstr "Kon het bestand %s niet openen"
-#: apt-pkg/contrib/fileutl.cc:781
-#, fuzzy, c-format
+#: apt-pkg/contrib/fileutl.cc:792
+#, c-format
msgid "Could not open file descriptor %d"
-msgstr "Kon geen pijp openen voor %s"
+msgstr "Kon de bestandsindicator %d niet openen"
-#: apt-pkg/contrib/fileutl.cc:841
+#: apt-pkg/contrib/fileutl.cc:852
#, c-format
msgid "read, still have %lu to read but none left"
msgstr "lees, de laatste te lezen %lu zijn niet beschikbaar"
-#: apt-pkg/contrib/fileutl.cc:874
+#: apt-pkg/contrib/fileutl.cc:885
#, c-format
msgid "write, still have %lu to write but couldn't"
msgstr "schrijf, de laatste %lu konden niet weggeschreven worden"
-#: apt-pkg/contrib/fileutl.cc:1010
-#, fuzzy, c-format
+#: apt-pkg/contrib/fileutl.cc:1021
+#, c-format
msgid "Problem closing the gzip file %s"
-msgstr "Probleem bij het afsluiten van het bestand"
+msgstr "Probleem bij het afsluiten van het gzip-bestand %s"
-#: apt-pkg/contrib/fileutl.cc:1013
-#, fuzzy, c-format
+#: apt-pkg/contrib/fileutl.cc:1024
+#, c-format
msgid "Problem closing the file %s"
-msgstr "Probleem bij het afsluiten van het bestand"
+msgstr "Probleem bij het afsluiten van het bestand %s"
-#: apt-pkg/contrib/fileutl.cc:1018
-#, fuzzy, c-format
+#: apt-pkg/contrib/fileutl.cc:1029
+#, c-format
msgid "Problem renaming the file %s to %s"
-msgstr "Probleem bij het synchroniseren van het bestand"
+msgstr "Probleem bij het hernoemen van '%s' naar '%s'"
-#: apt-pkg/contrib/fileutl.cc:1029
-#, fuzzy, c-format
+#: apt-pkg/contrib/fileutl.cc:1040
+#, c-format
msgid "Problem unlinking the file %s"
-msgstr "Probleem bij het ontlinken van het bestand"
+msgstr "Probleem bij het ontlinken van het bestand %s"
-#: apt-pkg/contrib/fileutl.cc:1042
+#: apt-pkg/contrib/fileutl.cc:1053
msgid "Problem syncing the file"
msgstr "Probleem bij het synchroniseren van het bestand"
msgstr "Kon pakketbestand %s niet ontleden (2)"
#: apt-pkg/sourcelist.cc:92
-#, fuzzy, c-format
+#, c-format
msgid "Malformed line %lu in source list %s ([option] unparseable)"
-msgstr "Misvormde regel %lu in bronlijst %s (dist parse)"
+msgstr "Misvormde regel %lu in bronlijst %s ([optie] onbegrijpelijk)"
#: apt-pkg/sourcelist.cc:95
-#, fuzzy, c-format
+#, c-format
msgid "Malformed line %lu in source list %s ([option] too short)"
-msgstr "Misvormde regel %lu in bronlijst %s (dist)"
+msgstr "Misvormde regel %lu in bronlijst %s ([optie] te kort)"
#: apt-pkg/sourcelist.cc:106
-#, fuzzy, c-format
+#, c-format
msgid "Malformed line %lu in source list %s ([%s] is not an assignment)"
-msgstr "Misvormde regel %lu in bronlijst %s (dist parse)"
+msgstr "Misvormde regel %lu in bronlijst %s ([%s] is geen toekenning)"
#: apt-pkg/sourcelist.cc:112
-#, fuzzy, c-format
+#, c-format
msgid "Malformed line %lu in source list %s ([%s] has no key)"
-msgstr "Misvormde regel %lu in bronlijst %s (dist parse)"
+msgstr "Misvormde regel %lu in bronlijst %s ([%s] heeft geen sleutel)"
#: apt-pkg/sourcelist.cc:115
-#, fuzzy, c-format
+#, c-format
msgid "Malformed line %lu in source list %s ([%s] key %s has no value)"
-msgstr "Misvormde regel %lu in bronlijst %s (dist parse)"
+msgstr ""
+"Misvormde regel %lu in bronlijst %s ([%s] sleutel %s heeft geen waarde)"
#: apt-pkg/sourcelist.cc:128
#, c-format
msgid "Type '%s' is not known on line %u in source list %s"
msgstr "Type '%s' op regel %u in bronlijst %s is onbekend"
-#: apt-pkg/packagemanager.cc:335 apt-pkg/packagemanager.cc:623
-#, fuzzy, c-format
+#: apt-pkg/packagemanager.cc:335 apt-pkg/packagemanager.cc:645
+#, c-format
msgid ""
"Could not perform immediate configuration on '%s'. Please see man 5 apt.conf "
"under APT::Immediate-Configure for details. (%d)"
"te activeren."
#: apt-pkg/packagemanager.cc:501
-#, fuzzy, c-format
+#, c-format
msgid ""
"Could not perform immediate configuration on already unpacked '%s'. Please "
"see man 5 apt.conf under APT::Immediate-Configure for details."
msgid "Unable to correct problems, you have held broken packages."
msgstr "Kan problemen niet verhelpen, u houdt defecte pakketten vast."
-#: apt-pkg/algorithms.cc:1464 apt-pkg/algorithms.cc:1466
+#: apt-pkg/algorithms.cc:1471 apt-pkg/algorithms.cc:1473
#, fuzzy
+#| msgid ""
+#| "Some index files failed to download, they have been ignored, or old ones "
+#| "used instead."
msgid ""
"Some index files failed to download. They have been ignored, or old ones "
"used instead."
"zijn oudere versies van gebruikt."
#: apt-pkg/acquire.cc:79
-#, fuzzy, c-format
+#, c-format
msgid "List directory %spartial is missing."
msgstr "Lijstmap %spartial is afwezig."
#: apt-pkg/acquire.cc:83
-#, fuzzy, c-format
+#, c-format
msgid "Archives directory %spartial is missing."
msgstr "Archiefmap %spartial is afwezig."
#: apt-pkg/acquire.cc:91
-#, fuzzy, c-format
+#, c-format
msgid "Unable to lock directory %s"
-msgstr "Kon de lijst-map niet vergrendelen"
+msgstr "Kan de map %s niet vergrendelen"
#. only show the ETA if it makes sense
#. two days
-#: apt-pkg/acquire.cc:857
+#: apt-pkg/acquire.cc:861
#, c-format
msgid "Retrieving file %li of %li (%s remaining)"
msgstr "Bestand %li van %li wordt opgehaald (nog %s te gaan)"
-#: apt-pkg/acquire.cc:859
+#: apt-pkg/acquire.cc:863
#, c-format
msgid "Retrieving file %li of %li"
msgstr "Bestand %li van %li wordt opgehaald"
"Gelieve de schijf met label '%s' in het station '%s' te plaatsen en op "
"'enter' te drukken."
-#: apt-pkg/init.cc:147
+#: apt-pkg/init.cc:146
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr "Pakketbeheersysteem '%s' wordt niet ondersteund"
-#: apt-pkg/init.cc:163
+#: apt-pkg/init.cc:162
msgid "Unable to determine a suitable packaging system type"
msgstr "Kan geen geschikt pakketsysteemtype bepalen"
msgid "The list of sources could not be read."
msgstr "De lijst van bronnen kon niet gelezen worden."
-#: apt-pkg/policy.cc:71
+#: apt-pkg/policy.cc:72
#, c-format
msgid ""
"The value '%s' is invalid for APT::Default-Release as such a release is not "
"available in the sources"
msgstr ""
-#: apt-pkg/policy.cc:389
+#: apt-pkg/policy.cc:390
#, c-format
msgid "Invalid record in the preferences file %s, no Package header"
msgstr ""
"Ongeldige record in het voorkeurenbestand %s, 'Package' koptekst ontbreekt"
-#: apt-pkg/policy.cc:411
+#: apt-pkg/policy.cc:412
#, c-format
msgid "Did not understand pin type %s"
msgstr "Pintype %s wordt niet begrepen"
-#: apt-pkg/policy.cc:419
+#: apt-pkg/policy.cc:420
msgid "No priority (or zero) specified for pin"
msgstr "Er is geen prioriteit (of nul) opgegeven voor deze pin"
msgid "Cache has an incompatible versioning system"
msgstr "Cache heeft een niet-compatibel versienummeringssysteem"
-#: apt-pkg/pkgcachegen.cc:187
+#: apt-pkg/pkgcachegen.cc:190
#, c-format
msgid "Error occurred while processing %s (NewPackage)"
msgstr "Fout tijdens verwerken van %s (NewPackage)"
-#: apt-pkg/pkgcachegen.cc:204
+#: apt-pkg/pkgcachegen.cc:207
#, c-format
msgid "Error occurred while processing %s (UsePackage1)"
msgstr "Fout tijdens verwerken van %s (UsePackage1)"
-#: apt-pkg/pkgcachegen.cc:242
+#: apt-pkg/pkgcachegen.cc:245
#, c-format
msgid "Error occurred while processing %s (NewFileDesc1)"
msgstr "Fout tijdens verwerken van %s (NewFileDesc1)"
-#: apt-pkg/pkgcachegen.cc:274
+#: apt-pkg/pkgcachegen.cc:277
#, c-format
msgid "Error occurred while processing %s (UsePackage2)"
msgstr "Fout tijdens verwerken van %s (UsePackage2)"
-#: apt-pkg/pkgcachegen.cc:278
+#: apt-pkg/pkgcachegen.cc:281
#, c-format
msgid "Error occurred while processing %s (NewFileVer1)"
msgstr "Fout tijdens verwerken van %s (NewFileVer1)"
-#: apt-pkg/pkgcachegen.cc:295 apt-pkg/pkgcachegen.cc:305
-#: apt-pkg/pkgcachegen.cc:313
-#, fuzzy, c-format
+#: apt-pkg/pkgcachegen.cc:298 apt-pkg/pkgcachegen.cc:308
+#: apt-pkg/pkgcachegen.cc:316
+#, c-format
msgid "Error occurred while processing %s (NewVersion%d)"
-msgstr "Fout tijdens verwerken van %s (NewVersion1)"
+msgstr "Fout tijdens verwerken van %s (NewVersion%d)"
-#: apt-pkg/pkgcachegen.cc:309
+#: apt-pkg/pkgcachegen.cc:312
#, c-format
msgid "Error occurred while processing %s (UsePackage3)"
msgstr "Fout tijdens verwerken van %s (UsePackage3)"
-#: apt-pkg/pkgcachegen.cc:342
+#: apt-pkg/pkgcachegen.cc:345
#, c-format
msgid "Error occurred while processing %s (NewFileDesc2)"
msgstr "Fout tijdens verwerken van %s (NewFileDesc2)"
-#: apt-pkg/pkgcachegen.cc:348
+#: apt-pkg/pkgcachegen.cc:351
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr "Wauw, u heeft meer pakketten dan deze APT aan kan."
-#: apt-pkg/pkgcachegen.cc:351
+#: apt-pkg/pkgcachegen.cc:354
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr "Wauw, u heeft meer versies dan deze APT aan kan."
-#: apt-pkg/pkgcachegen.cc:354
+#: apt-pkg/pkgcachegen.cc:357
msgid "Wow, you exceeded the number of descriptions this APT is capable of."
msgstr ""
"Wauw, u heeft het maximum aantal beschrijvingen dat deze APT aan kan "
"overschreden."
-#: apt-pkg/pkgcachegen.cc:357
+#: apt-pkg/pkgcachegen.cc:360
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr "Wauw, u heeft meer afhankelijkheden dan deze APT aan kan."
-#: apt-pkg/pkgcachegen.cc:386
+#: apt-pkg/pkgcachegen.cc:389
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr "Fout tijdens verwerken van %s (FindPkg)"
-#: apt-pkg/pkgcachegen.cc:400
+#: apt-pkg/pkgcachegen.cc:403
#, c-format
msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr "Fout tijdens verwerken van %s (CollectFileProvides)"
-#: apt-pkg/pkgcachegen.cc:406
+#: apt-pkg/pkgcachegen.cc:409
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr ""
"Pakket %s %s werd niet gevonden bij het verwerken van de "
"bestandsafhankelijkheden"
-#: apt-pkg/pkgcachegen.cc:960
+#: apt-pkg/pkgcachegen.cc:975
#, c-format
msgid "Couldn't stat source package list %s"
msgstr "Kon de status van de bronpakketlijst %s niet opvragen"
-#: apt-pkg/pkgcachegen.cc:1065
+#: apt-pkg/pkgcachegen.cc:1080
msgid "Collecting File Provides"
msgstr "Voorziene bestanden worden verzameld"
-#: apt-pkg/pkgcachegen.cc:1259 apt-pkg/pkgcachegen.cc:1266
+#: apt-pkg/pkgcachegen.cc:1274 apt-pkg/pkgcachegen.cc:1281
msgid "IO Error saving source cache"
msgstr "Invoer/Uitvoer-fout tijdens wegschrijven bronpakket-cache"
msgid "MD5Sum mismatch"
msgstr "MD5-som komt niet overeen"
-#: apt-pkg/acquire-item.cc:900 apt-pkg/acquire-item.cc:1848
-#: apt-pkg/acquire-item.cc:1991
+#: apt-pkg/acquire-item.cc:900 apt-pkg/acquire-item.cc:1847
+#: apt-pkg/acquire-item.cc:1990
msgid "Hash Sum mismatch"
msgstr "Hash-som komt niet overeen"
-#: apt-pkg/acquire-item.cc:1388
+#: apt-pkg/acquire-item.cc:1387
#, c-format
msgid ""
"Unable to find expected entry '%s' in Release file (Wrong sources.list entry "
#: apt-pkg/acquire-item.cc:1403
#, fuzzy, c-format
+#| msgid "Unable to parse Release file %s"
msgid "Unable to find hash sum for '%s' in Release file"
msgstr "Kon Release-bestand %s niet ontleden"
-#: apt-pkg/acquire-item.cc:1439
+#: apt-pkg/acquire-item.cc:1438
msgid "There is no public key available for the following key IDs:\n"
msgstr ""
"Er zijn geen publieke sleutels beschikbaar voor de volgende sleutel-IDs:\n"
-#: apt-pkg/acquire-item.cc:1477
+#: apt-pkg/acquire-item.cc:1476
#, c-format
msgid ""
"Release file for %s is expired (invalid since %s). Updates for this "
"repository will not be applied."
msgstr ""
-#: apt-pkg/acquire-item.cc:1499
+#: apt-pkg/acquire-item.cc:1498
#, c-format
msgid "Conflicting distribution: %s (expected %s but got %s)"
-msgstr ""
+msgstr "Conflicterende distributie: %s (verwachtte %s, maar kreeg %s)"
-#: apt-pkg/acquire-item.cc:1532
+#: apt-pkg/acquire-item.cc:1531
#, c-format
msgid ""
"A error occurred during the signature verification. The repository is not "
"updated and the previous index files will be used. GPG error: %s: %s\n"
msgstr ""
+"Er is een fout opgetreden bij de handtekeningcontrole. De pakketbron is niet "
+"bijgewerkt en de oude indexbestanden zullen worden gebruikt. GPG-fout: %s: "
+"%s\n"
#. Invalid signature file, reject (LP: #346386) (Closes: #627642)
-#: apt-pkg/acquire-item.cc:1542 apt-pkg/acquire-item.cc:1547
+#: apt-pkg/acquire-item.cc:1541 apt-pkg/acquire-item.cc:1546
#, c-format
msgid "GPG error: %s: %s"
-msgstr ""
+msgstr "GPG-fout: %s: %s"
-#: apt-pkg/acquire-item.cc:1639
+#: apt-pkg/acquire-item.cc:1638
#, c-format
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"Er kon geen bestand gevonden worden voor pakket %s. Dit kan betekenen dat u "
"dit pakket handmatig moet repareren (wegens missende architectuur)"
-#: apt-pkg/acquire-item.cc:1698
-#, c-format
+#: apt-pkg/acquire-item.cc:1697
+#, fuzzy, c-format
+#| msgid ""
+#| "I wasn't able to locate file for the %s package. This might mean you need "
+#| "to manually fix this package."
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"to manually fix this package."
"Er kon geen bestand gevonden worden voor pakket %s. Dit kan betekenen dat u "
"dit pakket handmatig moet repareren."
-#: apt-pkg/acquire-item.cc:1753
+#: apt-pkg/acquire-item.cc:1752
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
"De pakketindex-bestanden zijn beschadigd. Er is geen 'Filename:'-veld voor "
"pakket %s."
-#: apt-pkg/acquire-item.cc:1840
+#: apt-pkg/acquire-item.cc:1839
msgid "Size mismatch"
msgstr "Grootte komt niet overeen"
msgstr "Geen Hash-vermelding in Release-bestand %s"
#: apt-pkg/indexrecords.cc:110
-#, fuzzy, c-format
+#, c-format
msgid "Invalid 'Valid-Until' entry in Release file %s"
-msgstr "Geen Hash-vermelding in Release-bestand %s"
+msgstr "Geen 'Valid-Until'-vermelding in Release-bestand %s"
-#: apt-pkg/indexrecords.cc:125
-#, fuzzy, c-format
+#: apt-pkg/indexrecords.cc:129
+#, c-format
msgid "Invalid 'Date' entry in Release file %s"
-msgstr "Geen Hash-vermelding in Release-bestand %s"
+msgstr "Geen 'Date'-vermelding in Release-bestand %s"
#: apt-pkg/vendorlist.cc:71
#, c-format
msgid "Source list entries for this disc are:\n"
msgstr "Bronlijst-ingangen voor de schijf zijn:\n"
-#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:928
+#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:927
#, c-format
msgid "Wrote %i records.\n"
msgstr "%i records weggeschreven.\n"
-#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:930
+#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:929
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr "%i records weggeschreven met %i missende bestanden.\n"
-#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:933
+#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:932
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr "%i records weggeschreven met %i niet overeenkomende bestanden\n"
-#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:936
+#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:935
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
msgstr "Versie '%s' voor '%s' is niet gevonden"
#: apt-pkg/cacheset.cc:447
-#, fuzzy, c-format
+#, c-format
msgid "Couldn't find task '%s'"
-msgstr "Kon taak %s niet vinden"
+msgstr "Kon taak '%s' niet vinden"
#: apt-pkg/cacheset.cc:454
-#, fuzzy, c-format
+#, c-format
msgid "Couldn't find any package by regex '%s'"
-msgstr "Kon pakket %s niet vinden"
+msgstr "Kon geen enkel pakket vinden bij regex '%s'"
#: apt-pkg/cacheset.cc:467
-#, c-format
+#, fuzzy, c-format
+#| msgid "Can't select versions from package '%s' as it purely virtual"
msgid "Can't select versions from package '%s' as it is purely virtual"
msgstr ""
+"Kan geen versies selecteren voor pakket '%s' omdat deze zuiver virtueel is"
#: apt-pkg/cacheset.cc:475 apt-pkg/cacheset.cc:483
#, c-format
"Can't select installed nor candidate version from package '%s' as it has "
"neither of them"
msgstr ""
+"Kan noch de geïnstalleerde, noch de kandidaat-versie van het pakket '%s' "
+"selecteren omdat deze geen van beide heeft"
#: apt-pkg/cacheset.cc:491
#, c-format
msgid "Can't select newest version from package '%s' as it is purely virtual"
msgstr ""
+"Kan de nieuwste versie van het pakket '%s' niet selecteren omdat deze zuiver "
+"virtueel is"
#: apt-pkg/cacheset.cc:499
#, c-format
msgid "Can't select candidate version from package %s as it has no candidate"
msgstr ""
+"Kan de kandidaat-versie van het pakket %s niet selecteren omdat deze geen "
+"kandidaat heeft"
#: apt-pkg/cacheset.cc:507
#, c-format
msgid "Can't select installed version from package %s as it is not installed"
msgstr ""
+"Kan de geïnstalleerde versie van het pakket %s niet selecteren omdat deze "
+"niet geïnstalleerd is"
#: apt-pkg/deb/dpkgpm.cc:54
#, c-format
#: apt-pkg/deb/dpkgpm.cc:58
#, c-format
msgid "Noting disappearance of %s"
-msgstr ""
+msgstr "De verdwijning van %s wordt opgemerkt"
#: apt-pkg/deb/dpkgpm.cc:59
#, c-format
msgstr "Map '%s' ontbreekt"
#: apt-pkg/deb/dpkgpm.cc:669 apt-pkg/deb/dpkgpm.cc:689
-#, fuzzy, c-format
+#, c-format
msgid "Could not open file '%s'"
-msgstr "Kon het bestand %s niet openen"
+msgstr "Kon het bestand '%s' niet openen"
#: apt-pkg/deb/dpkgpm.cc:841
#, c-format
msgid "Completely removed %s"
msgstr "%s is volledig verwijderd"
-#: apt-pkg/deb/dpkgpm.cc:1082
+#: apt-pkg/deb/dpkgpm.cc:1087
msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
msgstr ""
"Kon logbestand niet wegschrijven, openpty() is mislukt (/dev/pts niet "
"aangekoppeld?)\n"
-#: apt-pkg/deb/dpkgpm.cc:1113
+#: apt-pkg/deb/dpkgpm.cc:1118
msgid "Running dpkg"
msgstr "dpkg wordt uitgevoerd"
-#: apt-pkg/deb/dpkgpm.cc:1338
+#: apt-pkg/deb/dpkgpm.cc:1344
msgid "No apport report written because MaxReports is reached already"
msgstr ""
+"Er is geen apport-verslag weggeschreven omdat het maximum aantal verslagen "
+"(MaxReports) al is bereikt"
#. check if its not a follow up error
-#: apt-pkg/deb/dpkgpm.cc:1343
+#: apt-pkg/deb/dpkgpm.cc:1349
msgid "dependency problems - leaving unconfigured"
-msgstr ""
+msgstr "problemen met vereisten - wordt niet geconfigureerd"
-#: apt-pkg/deb/dpkgpm.cc:1345
+#: apt-pkg/deb/dpkgpm.cc:1351
msgid ""
"No apport report written because the error message indicates its a followup "
"error from a previous failure."
msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding volgt op een "
+"eerdere mislukking."
-#: apt-pkg/deb/dpkgpm.cc:1351
+#: apt-pkg/deb/dpkgpm.cc:1357
msgid ""
"No apport report written because the error message indicates a disk full "
"error"
msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding een fout is "
+"over een volle schijf."
-#: apt-pkg/deb/dpkgpm.cc:1357
+#: apt-pkg/deb/dpkgpm.cc:1363
msgid ""
"No apport report written because the error message indicates a out of memory "
"error"
msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding een fout is "
+"over onvoldoende-geheugen."
-#: apt-pkg/deb/dpkgpm.cc:1364
+#: apt-pkg/deb/dpkgpm.cc:1370
msgid ""
"No apport report written because the error message indicates a dpkg I/O error"
msgstr ""
+"Er is geen apport-verslag weggeschreven omdat de foutmelding een fout over "
+"dpkg-I/O is."
#: apt-pkg/deb/debsystem.cc:69
#, c-format
#. TRANSLATORS: the %s contains the recovery command, usually
#. dpkg --configure -a
#: apt-pkg/deb/debsystem.cc:88
-#, fuzzy, c-format
+#, c-format
msgid ""
"dpkg was interrupted, you must manually run '%s' to correct the problem. "
msgstr ""
-"dpkg werd onderbroken; voer handmatig 'dpkg --configure -a' uit om het "
-"probleem te verhelpen. "
+"dpkg werd onderbroken; voer handmatig '%s' uit om het probleem te verhelpen. "
#: apt-pkg/deb/debsystem.cc:106
msgid "Not locked"
#: methods/mirror.cc:260
#, c-format
msgid "No mirror file '%s' found "
-msgstr ""
+msgstr "Geen spiegelbestand '%s' gevonden "
#. FIXME: fallback to a default mirror here instead
#. and provide a config option to define that default
#: methods/mirror.cc:267
#, fuzzy, c-format
+#| msgid "No mirror file '%s' found "
msgid "Can not read mirror file '%s'"
-msgstr "Kon het bestand %s niet openen"
+msgstr "Geen spiegelbestand '%s' gevonden "
#: methods/mirror.cc:422
#, c-format
msgid "[Mirror: %s]"
-msgstr ""
+msgstr "[Spiegelserver: %s]"
-#: methods/rred.cc:503
+#: methods/rred.cc:506
#, c-format
msgid ""
"Could not patch %s with mmap and with file operation usage - the patch seems "
"Kon %s niet patchen met mmap of met een bestandsoperatie - de patch lijkt "
"beschadigd te zijn."
-#: methods/rred.cc:508
+#: methods/rred.cc:511
#, c-format
msgid ""
"Could not patch %s with mmap (but no mmap specific fail) - the patch seems "
#~ msgid "Internal error, could not locate member"
#~ msgstr "Interne fout, kon onderdeel niet vinden"
-#~ msgid "E: Too many keyrings should be passed to gpgv. Exiting."
-#~ msgstr ""
-#~ "E: Te veel sleutelringen om door te geven aan gpgv. Er wordt afgesloten."
-
-#~ msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-#~ msgstr ""
-#~ "F: argumentenlijst van Acquire::gpv::Options was te lang. Er wordt "
-#~ "afgesloten."
-
-#~ msgid ""
-#~ "The size of a MMap has already reached the defined limit of %lu bytes,"
-#~ "abort the try to grow the MMap."
-#~ msgstr ""
-#~ "De omvang van een MMap heeft de gedefinieerde limiet van %lu bytes al "
-#~ "bereikt; de MMap wordt niet verder vergroot."
-
-#~ msgid "Error occurred while processing %s (NewVersion2)"
-#~ msgstr "Fout tijdens verwerken van %s (NewVersion2)"
+#~ msgid "Internal error, group '%s' has no installable pseudo package"
+#~ msgstr "Interne fout, de groep '%s' heeft geen installeerbaar pseudopakket"
-#~ msgid "Malformed line %u in source list %s (vendor id)"
-#~ msgstr "Misvormde regel %u in bronlijst %s (verkopers-ID)"
+#~ msgid "Release file expired, ignoring %s (invalid since %s)"
+#~ msgstr "Release-bestand is verlopen, %s (ongeldig sinds %s) wordt genegeerd"
-Package: newstuff
-Version: 1.0
-Architecture: i386
-Maintainer: Joe Sixpack <joe@example.org>
-Installed-Size: 101
-Filename: pool/newstuff_1.0_i386.deb
-Size: 101100
-MD5sum: 311aeeadf78324aaff1ceaf3e1f76671
-SHA1: 3c695e028f7a1ae324deeddaaa1242desa81088c
-SHA256: b46fd154615edefab321cc56a5cc0e7deaef23e2da3e4f129727fd660f28f050
-Description: some cool and shiny new stuff
- This package will appear in the next mirror update
-
Package: apt
Priority: important
Section: admin
.
APT features complete installation ordering, multiple source capability
and several other unique features, see the Users Guide in apt-doc.
+
+Package: newstuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 101
+Filename: pool/newstuff_1.0_i386.deb
+Size: 101100
+MD5sum: 311aeeadf78324aaff1ceaf3e1f76671
+SHA1: 3c695e028f7a1ae324deeddaaa1242desa81088c
+SHA256: b46fd154615edefab321cc56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some cool and shiny new stuff
+ This package will appear in the next mirror update
addtrap() {
CURRENTTRAP="$CURRENTTRAP $1"
- trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+ trap "$CURRENTTRAP exit;" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
}
setupenvironment() {
--- /dev/null
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo'
+insertpackage 'unstable' 'foo' 'amd64,i386,armel' '1.0' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'cool-bar' 'amd64,i386' '1.0' 'Depends: bar-provider'
+insertpackage 'unstable' 'bar' 'amd64,i386,armel' '1.0' 'Provides: bar-provider
+Multi-Arch: foreign'
+
+setupaptarchive
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following extra packages will be installed:
+ foo
+The following NEW packages will be installed:
+ cool-foo:i386 foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo:i386 (1.0 unstable [i386])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo:i386 (1.0 unstable [i386])' aptget install cool-foo:i386 -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following extra packages will be installed:
+ foo
+The following NEW packages will be installed:
+ cool-foo foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:amd64 -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1.0 unstable [i386])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo:i386 (1.0 unstable [i386])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:i386 -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:armel (1.0 unstable [armel])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo:armel (1.0 unstable [armel])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:armel -s
+
+
+
+
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following extra packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar cool-bar:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar:i386 (1.0 unstable [i386])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar:i386 (1.0 unstable [i386])' aptget install cool-bar:i386 -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following extra packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:amd64 -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar:i386 cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:i386 (1.0 unstable [i386])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:i386 (1.0 unstable [i386])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:i386 -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar:armel cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:armel (1.0 unstable [armel])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:armel (1.0 unstable [armel])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:armel -s
+
+testequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'bar' instead of 'bar-provider'
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider -s -q=0
+
+testequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'bar:i386' instead of 'bar-provider:i386'
+The following NEW packages will be installed:
+ bar:i386 cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:i386 (1.0 unstable [i386])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:i386 (1.0 unstable [i386])
+Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider:i386 -s -q=0
--- /dev/null
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/error.h>
+
+#include <algorithm>
+#include <string>
+#include <vector>
+
+#include "assert.h"
+
+class Cdrom : public pkgCdrom {
+ public:
+ bool FindPackages(std::string const &CD,
+ std::vector<std::string> &List,
+ std::vector<std::string> &SList,
+ std::vector<std::string> &SigList,
+ std::vector<std::string> &TransList,
+ std::string &InfoDir) {
+ bool const result = pkgCdrom::FindPackages(CD, List, SList, SigList, TransList, InfoDir, NULL, 0);
+ std::sort(List.begin(), List.end());
+ std::sort(SList.begin(), SList.end());
+ std::sort(SigList.begin(), SigList.end());
+ std::sort(TransList.begin(), TransList.end());
+ return result;
+ }
+
+ bool DropRepeats(std::vector<std::string> &List, char const *Name) {
+ return pkgCdrom::DropRepeats(List, Name);
+ }
+};
+
+int main(int argc, char const *argv[]) {
+ if (argc != 2) {
+ std::cout << "One parameter expected - given " << argc << std::endl;
+ return 100;
+ }
+
+ Cdrom cd;
+ std::vector<std::string> Packages, Sources, Signatur, Translation;
+ std::string InfoDir;
+ std::string path = argv[1];
+ equals(true, cd.FindPackages(path, Packages, Sources, Signatur, Translation, InfoDir));
+ equals(4, Packages.size());
+ equals(path + "/dists/sid/main/binary-i386/", Packages[0]);
+ equals(path + "/dists/stable/contrib/binary-amd64/", Packages[1]);
+ equals(path + "/dists/stable/main/binary-i386/", Packages[2]);
+ equals(path + "/dists/unstable/main/binary-i386/", Packages[3]);
+ equals(3, Sources.size());
+ equals(path + "/dists/sid/main/source/", Sources[0]);
+ equals(path + "/dists/stable/main/source/", Sources[1]);
+ equals(path + "/dists/unstable/main/source/", Sources[2]);
+ equals(3, Signatur.size());
+ equals(path + "/dists/sid/", Signatur[0]);
+ equals(path + "/dists/stable/", Signatur[1]);
+ equals(path + "/dists/unstable/", Signatur[2]);
+ equals(4, Translation.size());
+ equals(path + "/dists/sid/main/i18n/Translation-de", Translation[0]);
+ equals(path + "/dists/sid/main/i18n/Translation-en", Translation[1]);
+ equals(path + "/dists/unstable/main/i18n/Translation-de", Translation[2]);
+ equals(path + "/dists/unstable/main/i18n/Translation-en", Translation[3]);
+ equals(path + "/.disk/", InfoDir);
+
+ cd.DropRepeats(Packages, "Packages");
+ cd.DropRepeats(Sources, "Sources");
+ _error->PushToStack();
+ cd.DropRepeats(Signatur, "InRelease");
+ cd.DropRepeats(Signatur, "Release.gpg");
+ _error->RevertToStack();
+ _error->DumpErrors();
+ cd.DropRepeats(Translation, "");
+
+ equals(3, Packages.size());
+ equals(path + "/dists/stable/contrib/binary-amd64/", Packages[0]);
+ equals(path + "/dists/stable/main/binary-i386/", Packages[1]);
+ equals(path + "/dists/unstable/main/binary-i386/", Packages[2]);
+ equals(2, Sources.size());
+ equals(path + "/dists/stable/main/source/", Sources[0]);
+ equals(path + "/dists/unstable/main/source/", Sources[1]);
+ equals(2, Signatur.size());
+ equals(path + "/dists/stable/", Signatur[0]);
+ equals(path + "/dists/unstable/", Signatur[1]);
+ equals(2, Translation.size());
+ equals(path + "/dists/unstable/main/i18n/Translation-de", Translation[0]);
+ equals(path + "/dists/unstable/main/i18n/Translation-en", Translation[1]);
+
+ return 0;
+}
SLIBS = -lapt-pkg
SOURCE = configuration_test.cc
include $(PROGRAM_H)
+
+# test cdroms core FindPackages
+PROGRAM = CdromFindPackages${BASENAME}
+SLIBS = -lapt-pkg
+SOURCE = cdromfindpackages_test.cc
+include $(PROGRAM_H)
continue
elif [ $name = "CompareVersion${EXT}" ]; then
tmppath="${DIR}/versions.lst"
+ elif [ $name = "CdromFindPackages${EXT}" ]; then
+ tmppath=$(mktemp -d)
+ mkdir -p "${tmppath}/.disk" "${tmppath}/pool" \
+ "${tmppath}/dists/stable/main/binary-i386" \
+ "${tmppath}/dists/stable/main/source" \
+ "${tmppath}/dists/stable/contrib/binary-amd64" \
+ "${tmppath}/dists/stable/contrib/binary-all" \
+ "${tmppath}/dists/unstable/main/binary-i386" \
+ "${tmppath}/dists/unstable/main/i18n" \
+ "${tmppath}/dists/unstable/main/source" \
+ "${tmppath}/dists/broken/non-free/source"
+ touch "${tmppath}/dists/broken/.aptignr" \
+ "${tmppath}/dists/stable/main/binary-i386/Packages" \
+ "${tmppath}/dists/stable/main/binary-i386/Packages.bz2" \
+ "${tmppath}/dists/stable/main/source/Sources.xz" \
+ "${tmppath}/dists/stable/contrib/binary-amd64/Packages" \
+ "${tmppath}/dists/stable/contrib/binary-amd64/Packages.gz" \
+ "${tmppath}/dists/stable/contrib/binary-all/Packages" \
+ "${tmppath}/dists/unstable/main/binary-i386/Packages.xz" \
+ "${tmppath}/dists/unstable/main/binary-i386/Packages.lzma" \
+ "${tmppath}/dists/unstable/main/i18n/Translation-en" \
+ "${tmppath}/dists/unstable/main/i18n/Translation-de.bz2" \
+ "${tmppath}/dists/unstable/main/source/Sources.xz" \
+ "${tmppath}/dists/broken/non-free/source/Sources.gz" \
+ "${tmppath}/dists/stable/Release.gpg" \
+ "${tmppath}/dists/stable/Release" \
+ "${tmppath}/dists/unstable/InRelease" \
+ "${tmppath}/dists/broken/Release.gpg"
+ ln -s "${tmppath}/dists/unstable" "${tmppath}/dists/sid"
fi
echo -n "Testing with ${NAME} "